diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000000..c674631b17 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,238 @@ +name: CI for AssemblyScript + +on: + push: + branches: + - 'v*' + tags: + - 'v*' + pull_request: + branches: + - 'v*' + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Setup Node.js + uses: actions/setup-node@v6 + with: + node-version: '24.x' + + - name: Update npm + run: npm install -g npm@latest + + - name: Install dependencies + run: npm install + + - name: Build + run: npm run build + + - name: Run tests + run: npm test + + publish: + runs-on: ubuntu-latest + needs: test + if: startsWith(github.ref, 'refs/tags/v') + + permissions: + contents: write + id-token: write + + steps: + - name: Checkout code + uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Setup Node.js + uses: actions/setup-node@v6 + with: + node-version: '24.x' + registry-url: 'https://registry.npmjs.org' + + - name: Update npm + run: npm install -g npm@latest + + - name: Patch package.json for @btc-vision/assemblyscript + run: | + # Extract version from tag + VERSION="${{ github.ref_name }}" + VERSION="${VERSION#v}" # Remove 'v' prefix if present + + # Update package.json: change name and version + jq --arg name "@btc-vision/assemblyscript" \ + --arg version "$VERSION" \ + '.name = $name | .version = $version' \ + package.json > package.json.tmp + mv package.json.tmp package.json + + echo "Updated package.json:" + cat package.json | head -20 + + - name: Install dependencies + run: npm install + + - name: Build + run: npm run build + + - name: Determine npm tag + id: npm_tag + run: | + VERSION="${{ github.ref_name }}" + if [[ "$VERSION" == *"-alpha"* ]]; then + echo "tag=alpha" >> $GITHUB_OUTPUT + elif [[ "$VERSION" == *"-beta"* ]]; then + echo "tag=beta" >> $GITHUB_OUTPUT + elif [[ "$VERSION" == *"-rc"* ]]; then + echo "tag=rc" >> $GITHUB_OUTPUT + else + echo "tag=latest" >> $GITHUB_OUTPUT + fi + echo "Determined npm tag: $(cat $GITHUB_OUTPUT | grep tag | cut -d= -f2)" + + - name: Publish to npm + run: npm publish --access public --provenance --tag ${{ steps.npm_tag.outputs.tag }} + + release: + runs-on: ubuntu-latest + needs: publish + if: startsWith(github.ref, 'refs/tags/v') + + permissions: + contents: write + + steps: + - name: Checkout code + uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Generate changelog + id: changelog + uses: mikepenz/release-changelog-builder-action@v6 + with: + configurationJson: | + { + "categories": [ + { + "title": "### Breaking Changes", + "labels": ["breaking", "breaking-change", "BREAKING-CHANGE"] + }, + { + "title": "### Features", + "labels": ["feature", "feat", "enhancement"] + }, + { + "title": "### Bug Fixes", + "labels": ["bug", "fix", "bugfix"] + }, + { + "title": "### Performance", + "labels": ["performance", "perf"] + }, + { + "title": "### Documentation", + "labels": ["documentation", "docs"] + }, + { + "title": "### Dependencies", + "labels": ["dependencies", "deps"] + }, + { + "title": "### Other Changes", + "labels": [] + } + ], + "sort": { + "order": "ASC", + "on_property": "mergedAt" + }, + "template": "#{{CHANGELOG}}", + "pr_template": "- #{{TITLE}} ([##{{NUMBER}}](#{{URL}})) by @#{{AUTHOR}}", + "empty_template": "- No changes", + "max_tags_to_fetch": 200, + "max_pull_requests": 200, + "max_back_track_time_days": 365, + "tag_resolver": { + "method": "semver" + } + } + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Update CHANGELOG.md + env: + CHANGELOG_CONTENT: ${{ steps.changelog.outputs.changelog }} + run: | + TAG="${{ github.ref_name }}" + DATE=$(date +%Y-%m-%d) + NEW_HEADER="## [$TAG] - $DATE" + + # Write changelog content to temp file using env var (avoids shell escaping) + printf '%s\n' "$CHANGELOG_CONTENT" > /tmp/new_entry.md + + if [ -f CHANGELOG.md ]; then + # Create new file with entry inserted after header line + { + head -n 1 CHANGELOG.md + echo "" + echo "$NEW_HEADER" + echo "" + cat /tmp/new_entry.md + echo "" + tail -n +2 CHANGELOG.md + } > /tmp/CHANGELOG_NEW.md + mv /tmp/CHANGELOG_NEW.md CHANGELOG.md + else + # Create new CHANGELOG.md + { + echo "# Changelog" + echo "" + echo "All notable changes to this project will be documented in this file." + echo "" + echo "This changelog is automatically generated from merged pull requests." + echo "" + echo "$NEW_HEADER" + echo "" + cat /tmp/new_entry.md + } > CHANGELOG.md + fi + + rm -f /tmp/new_entry.md + + - name: Commit changelog + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git add CHANGELOG.md + git diff --staged --quiet || git commit -m "docs: update CHANGELOG.md for ${{ github.ref_name }}" + git push origin HEAD:main || echo "No changes to push or push failed" + + - name: Determine if prerelease + id: prerelease + run: | + VERSION="${{ github.ref_name }}" + if [[ "$VERSION" == *"-alpha"* ]] || [[ "$VERSION" == *"-beta"* ]] || [[ "$VERSION" == *"-rc"* ]]; then + echo "is_prerelease=true" >> $GITHUB_OUTPUT + else + echo "is_prerelease=false" >> $GITHUB_OUTPUT + fi + + - name: Create GitHub Release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ github.ref_name }} + name: Release ${{ github.ref_name }} + body: ${{ steps.changelog.outputs.changelog }} + prerelease: ${{ steps.prerelease.outputs.is_prerelease == 'true' }} + generate_release_notes: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000..6c40915a5e --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,20 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +This changelog is automatically generated from merged pull requests. + +## [v0.29.1-beta.0] - 2026-01-26 + +### Features + +- Refactor closure capture analysis and remove collectCapturedNames ([#3](https://github.com/btc-vision/assemblyscript/pull/3)) by @BlobMaster41 + +### Other Changes + +- feat: Add experimental closures support with feature flag ([#1](https://github.com/btc-vision/assemblyscript/pull/1)) by @BlobMaster41 +- Refactor closure capture logic and add closures test config ([#4](https://github.com/btc-vision/assemblyscript/pull/4)) by @BlobMaster41 +- Refactor closure capture analysis and minor cleanups ([#5](https://github.com/btc-vision/assemblyscript/pull/5)) by @BlobMaster41 +- Refactor closure capture analysis and recompilation logic ([#6](https://github.com/btc-vision/assemblyscript/pull/6)) by @BlobMaster41 + + diff --git a/NOTICE b/NOTICE index 14d821345c..f759c40617 100644 --- a/NOTICE +++ b/NOTICE @@ -62,6 +62,7 @@ under the licensing terms detailed in LICENSE: * Kam Chehresa * Mopsgamer <79159094+Mopsgamer@users.noreply.github.com> * EDM115 +* Anakun Portions of this software are derived from third-party works licensed under the following terms: diff --git a/README.md b/README.md index 5df1fa3c5b..66757b0ac2 100644 --- a/README.md +++ b/README.md @@ -3,13 +3,75 @@

- Test status - Publish status - npm compiler version - Discord online - #StandWithUkraine + npm version + GitHub release

+--- + +## WARNING: EXPERIMENTAL FORK + +**This is an experimental fork of AssemblyScript maintained by [btc-vision](https://github.com/btc-vision).** It includes features that are not yet available in the official AssemblyScript release: + +### Experimental Features + +- **Closures** - Full closure support with captured variables +- **Try-Catch-Finally** - Exception handling with try-catch-finally blocks +- **Binaryen 125** - Updated to the latest Binaryen version (125.0.0) +- **Enhanced Shadow Stack** - Improved shadow stack pass for better GC integration + +### Changes from Upstream + +1. **Closure Support** + - Closure capture analysis and recompilation logic + +2. **Exception Handling** + - Try-catch-finally statement support + - Enforced Error type in throw statements + +3. **Binaryen Upgrade (123 → 125)** + - Updated ExpressionId enum values to match Binaryen 125 + - Fixed shadow stack pass timing to handle lazy function compilation + - Moved `compileVisitGlobals`/`compileVisitMembers` after shadow stack pass + - Added iterative shadow stack transformation for newly compiled functions + +--- + +## Installation + +```sh +npm install @btc-vision/assemblyscript +``` + +### Usage + +This fork is a drop-in replacement for AssemblyScript. Simply replace your import: + +```json +{ + "dependencies": { + "@btc-vision/assemblyscript": "^0.29.0" + } +} +``` + +Or if migrating from official AssemblyScript: + +```sh +npm uninstall assemblyscript +npm install @btc-vision/assemblyscript +``` + +The CLI commands remain the same: + +```sh +npx asc your-file.ts --outFile output.wasm +``` + +--- + +## Original README +

AssemblyScript compiles a variant of TypeScript (basically JavaScript with types) to WebAssembly using Binaryen. It generates lean and mean WebAssembly modules while being just an npm install away.

@@ -39,7 +101,7 @@ A development environment can be set up by cloning the repository: ```sh -git clone https://github.com/AssemblyScript/assemblyscript.git +git clone https://github.com/btc-vision/assemblyscript.git cd assemblyscript npm install npm link diff --git a/package-lock.json b/package-lock.json index e77bb1e080..cb1f8869df 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,34 +1,34 @@ { "name": "assemblyscript", - "version": "0.0.0", - "lockfileVersion": 2, + "version": "0.29.0", + "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "assemblyscript", - "version": "0.0.0", + "version": "0.29.0", "license": "Apache-2.0", "dependencies": { - "binaryen": "123.0.0-nightly.20250530", - "long": "^5.2.4" + "binaryen": "125.0.0", + "long": "^5.3.2" }, "bin": { "asc": "bin/asc.js", "asinit": "bin/asinit.js" }, "devDependencies": { - "@types/node": "^18.19.75", - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", + "@types/node": "^25.0.10", + "@typescript-eslint/eslint-plugin": "^8.53.1", + "@typescript-eslint/parser": "^8.53.1", "as-float": "^1.0.1", - "diff": "^7.0.0", - "esbuild": "^0.25.0", - "eslint": "^8.57.1", - "glob": "^10.4.5", - "typescript": "^5.7.3" + "diff": "^8.0.3", + "esbuild": "^0.27.2", + "eslint": "^9.39.2", + "glob": "^13.0.0", + "typescript": "^5.9.3" }, "engines": { - "node": ">=20", + "node": ">=24", "npm": ">=10" }, "funding": { @@ -36,19 +36,10 @@ "url": "https://opencollective.com/assemblyscript" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", "cpu": [ "ppc64" ], @@ -63,9 +54,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", "cpu": [ "arm" ], @@ -80,9 +71,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", "cpu": [ "arm64" ], @@ -97,9 +88,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", "cpu": [ "x64" ], @@ -114,9 +105,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", "cpu": [ "arm64" ], @@ -131,9 +122,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", "cpu": [ "x64" ], @@ -148,9 +139,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", "cpu": [ "arm64" ], @@ -165,9 +156,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", "cpu": [ "x64" ], @@ -182,9 +173,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", "cpu": [ "arm" ], @@ -199,9 +190,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", "cpu": [ "arm64" ], @@ -216,9 +207,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", "cpu": [ "ia32" ], @@ -233,9 +224,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", "cpu": [ "loong64" ], @@ -250,9 +241,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", "cpu": [ "mips64el" ], @@ -267,9 +258,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", "cpu": [ "ppc64" ], @@ -284,9 +275,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", "cpu": [ "riscv64" ], @@ -301,9 +292,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", "cpu": [ "s390x" ], @@ -318,9 +309,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", "cpu": [ "x64" ], @@ -335,9 +326,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", "cpu": [ "arm64" ], @@ -352,9 +343,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", "cpu": [ "x64" ], @@ -369,9 +360,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", "cpu": [ "arm64" ], @@ -386,9 +377,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", "cpu": [ "x64" ], @@ -402,10 +393,27 @@ "node": ">=18" } }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", "cpu": [ "x64" ], @@ -420,9 +428,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", "cpu": [ "arm64" ], @@ -437,9 +445,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", "cpu": [ "ia32" ], @@ -454,9 +462,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", "cpu": [ "x64" ], @@ -471,328 +479,438 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 4" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "Apache-2.0", + "license": "ISC", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10.10.0" + "node": "*" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "node_modules/@eslint/js": { + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", + "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12.22" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "url": "https://eslint.org/donate" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", "dev": true, - "license": "BSD-3-Clause" + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" }, "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=18.18.0" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "ansi-regex": "^6.0.1" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" }, "engines": { - "node": ">=12" + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, + "license": "Apache-2.0", "engines": { - "node": ">= 8" + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 8" + "node": "20 || >=22" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", "dev": true, + "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@isaacs/balanced-match": "^4.0.1" }, "engines": { - "node": ">= 8" + "node": "20 || >=22" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } + "license": "MIT" }, "node_modules/@types/json-schema": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", - "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", - "dev": true + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "18.19.75", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.75.tgz", - "integrity": "sha512-UIksWtThob6ZVSyxcOqCLOUNg/dyO1Qvx4McgeuhrEtHTLFTf7BBhEazaE4K806FGTPtzd/2sE90qn4fVr7cyw==", + "version": "25.0.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.10.tgz", + "integrity": "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~7.16.0" } }, - "node_modules/@types/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", - "dev": true - }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.1.tgz", + "integrity": "sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.53.1", + "@typescript-eslint/type-utils": "8.53.1", + "@typescript-eslint/utils": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.4.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@typescript-eslint/parser": "^8.53.1", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.53.1.tgz", + "integrity": "sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" + "@typescript-eslint/scope-manager": "8.53.1", + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/typescript-estree": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1", + "debug": "^4.4.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.53.1.tgz", + "integrity": "sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.53.1", + "@typescript-eslint/types": "^8.53.1", + "debug": "^4.4.3" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.53.1.tgz", + "integrity": "sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.1.tgz", + "integrity": "sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.53.1.tgz", + "integrity": "sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/typescript-estree": "8.53.1", + "@typescript-eslint/utils": "8.53.1", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.1.tgz", + "integrity": "sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==", "dev": true, + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -800,85 +918,92 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.1.tgz", + "integrity": "sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "@typescript-eslint/project-service": "8.53.1", + "@typescript-eslint/tsconfig-utils": "8.53.1", + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1", + "debug": "^4.4.3", + "minimatch": "^9.0.5", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.53.1.tgz", + "integrity": "sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.53.1", + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/typescript-estree": "8.53.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.1.tgz", + "integrity": "sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "8.53.1", + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", "peer": true, @@ -916,20 +1041,12 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-regex": { - "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" - } - }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -947,15 +1064,6 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/as-float": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/as-float/-/as-float-1.0.1.tgz", @@ -967,12 +1075,13 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/binaryen": { - "version": "123.0.0-nightly.20250530", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-123.0.0-nightly.20250530.tgz", - "integrity": "sha512-d1zPHBN5YlOd3Ff+OUxvVExuFeh8heSnqe+X3bjItFxGLvn4VGBKmrvv7pgy/cRhrIUGuPW138iaWfDhwjyDqg==", + "version": "125.0.0", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-125.0.0.tgz", + "integrity": "sha512-X7CUM9ZnwL/Ow++JH5AJKiemc82J7JyeryuPvXQdXBLcL/rqrC5KMUB1mHiORSolietH9sotvaOZlr6HSwPAlw==", "license": "Apache-2.0", "bin": { "wasm-as": "bin/wasm-as", @@ -987,25 +1096,13 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" + "balanced-match": "^1.0.0" } }, "node_modules/callsites": { @@ -1023,6 +1120,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1039,6 +1137,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1050,13 +1149,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.6", @@ -1074,12 +1175,13 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -1094,95 +1196,59 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/diff": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", - "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz", + "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==", "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/esbuild": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", + "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", "dev": true, - "dependencies": { - "path-type": "^4.0.0" + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" + "node": ">=18" }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.2", + "@esbuild/android-arm": "0.27.2", + "@esbuild/android-arm64": "0.27.2", + "@esbuild/android-x64": "0.27.2", + "@esbuild/darwin-arm64": "0.27.2", + "@esbuild/darwin-x64": "0.27.2", + "@esbuild/freebsd-arm64": "0.27.2", + "@esbuild/freebsd-x64": "0.27.2", + "@esbuild/linux-arm": "0.27.2", + "@esbuild/linux-arm64": "0.27.2", + "@esbuild/linux-ia32": "0.27.2", + "@esbuild/linux-loong64": "0.27.2", + "@esbuild/linux-mips64el": "0.27.2", + "@esbuild/linux-ppc64": "0.27.2", + "@esbuild/linux-riscv64": "0.27.2", + "@esbuild/linux-s390x": "0.27.2", + "@esbuild/linux-x64": "0.27.2", + "@esbuild/netbsd-arm64": "0.27.2", + "@esbuild/netbsd-x64": "0.27.2", + "@esbuild/openbsd-arm64": "0.27.2", + "@esbuild/openbsd-x64": "0.27.2", + "@esbuild/openharmony-arm64": "0.27.2", + "@esbuild/sunos-x64": "0.27.2", + "@esbuild/win32-arm64": "0.27.2", + "@esbuild/win32-ia32": "0.27.2", + "@esbuild/win32-x64": "0.27.2" } }, "node_modules/escape-string-regexp": { @@ -1190,6 +1256,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -1198,74 +1265,81 @@ } }, "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", + "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.2", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { @@ -1273,6 +1347,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -1280,54 +1355,90 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "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==", + "node_modules/eslint/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4.0" + "node": ">= 4" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -1335,20 +1446,12 @@ "node": ">=0.10" } }, - "node_modules/esquery/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.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -1356,20 +1459,12 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "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.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -1379,6 +1474,7 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -1390,34 +1486,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "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", @@ -1429,39 +1497,38 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } + "license": "MIT" }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, + "license": "MIT", "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "flat-cache": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, "node_modules/find-up": { @@ -1469,6 +1536,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -1481,63 +1549,39 @@ } }, "node_modules/flat-cache": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", - "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": ">=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true - }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "license": "ISC" }, "node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", + "minimatch": "^10.1.1", "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "path-scurry": "^2.0.0" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -1548,6 +1592,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -1555,88 +1600,51 @@ "node": ">=10.13.0" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/glob/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -1663,43 +1671,19 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "engines": { - "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, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/is-glob": { @@ -1707,6 +1691,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -1714,45 +1699,12 @@ "node": ">=0.10.0" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } + "license": "ISC" }, "node_modules/js-yaml": { "version": "4.1.1", @@ -1771,7 +1723,8 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -1784,13 +1737,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -1800,6 +1755,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -1813,6 +1769,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -1827,54 +1784,39 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/long": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.4.tgz", - "integrity": "sha512-qtzLbJE8hq7VabR3mISmVGtoXP8KGc2Z/AT8OuqlYD7JTR3oqrgwdjnk07wpj1twXxYmgDXgoKVWUG/fReSzHg==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", "license": "Apache-2.0" }, "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=8.6" + "node": "20 || >=22" } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minipass": { @@ -1888,44 +1830,32 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, - "dependencies": { - "wrappy": "1" - } + "license": "MIT" }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -1936,6 +1866,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -1951,6 +1882,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -1961,13 +1893,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -1986,61 +1911,47 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, + "license": "MIT", + "peer": true, "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -2051,6 +1962,7 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -2065,26 +1977,6 @@ "node": ">=6" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -2095,82 +1987,12 @@ "node": ">=4" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -2178,23 +2000,12 @@ "node": ">=10" } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -2207,123 +2018,7 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/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==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi": { - "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.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, "engines": { "node": ">=8" } @@ -2346,6 +2041,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -2353,43 +2049,34 @@ "node": ">=8" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, + "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { - "node": ">=8.0" + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/ts-api-utils": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", + "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=18.12" }, "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "typescript": ">=4.8.4" } }, "node_modules/type-check": { @@ -2397,6 +2084,7 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -2404,23 +2092,10 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -2433,10 +2108,11 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" }, "node_modules/uri-js": { "version": "4.4.1", @@ -2453,6 +2129,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -2463,124 +2140,22 @@ "node": ">= 8" } }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/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==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "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, + "license": "MIT", "engines": { "node": ">=10" }, @@ -2588,1648 +2163,5 @@ "url": "https://github.com/sponsors/sindresorhus" } } - }, - "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true - }, - "@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", - "dev": true, - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", - "dev": true, - "optional": true - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true - }, - "@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true - }, - "@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - } - } - }, - "@nodelib/fs.scandir": { - "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.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "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.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.5", - "fastq": "^1.6.0" - } - }, - "@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true - }, - "@types/json-schema": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", - "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", - "dev": true - }, - "@types/node": { - "version": "18.19.75", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.75.tgz", - "integrity": "sha512-UIksWtThob6ZVSyxcOqCLOUNg/dyO1Qvx4McgeuhrEtHTLFTf7BBhEazaE4K806FGTPtzd/2sE90qn4fVr7cyw==", - "dev": true, - "requires": { - "undici-types": "~5.26.4" - } - }, - "@types/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", - "dev": true, - "requires": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "dev": true, - "peer": true, - "requires": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - } - }, - "@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true, - "peer": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "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": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "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", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "as-float": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/as-float/-/as-float-1.0.1.tgz", - "integrity": "sha512-TsN1UpoFdtzuKXqqpdnGbFuMYnK/eqMEjd2xVvACG29H/v4KLx+UD+tHRz9v6zO+Ge/AR/uskSruBIPZrchhHw==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "binaryen": { - "version": "123.0.0-nightly.20250530", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-123.0.0-nightly.20250530.tgz", - "integrity": "sha512-d1zPHBN5YlOd3Ff+OUxvVExuFeh8heSnqe+X3bjItFxGLvn4VGBKmrvv7pgy/cRhrIUGuPW138iaWfDhwjyDqg==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "requires": { - "fill-range": "^7.1.1" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "chalk": { - "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", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "deep-is": { - "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": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", - "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", - "dev": true, - "requires": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "dev": true, - "peer": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "dependencies": { - "eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "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 - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true - }, - "espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "requires": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - } - }, - "esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", - "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", - "dev": true, - "requires": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true - }, - "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "glob-parent": { - "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.3" - } - }, - "globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "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.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" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" - } - }, - "js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "requires": { - "json-buffer": "3.0.1" - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "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 - }, - "long": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.4.tgz", - "integrity": "sha512-qtzLbJE8hq7VabR3mISmVGtoXP8KGc2Z/AT8OuqlYD7JTR3oqrgwdjnk07wpj1twXxYmgDXgoKVWUG/fReSzHg==" - }, - "lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "requires": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "requires": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "requires": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - } - } - }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "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==", - "dev": true - } - } - }, - "strip-ansi": { - "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.1" - } - }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@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.1" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", - "dev": true, - "peer": true - }, - "undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - } - } - }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "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==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "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 - } } } diff --git a/package.json b/package.json index 627dc00210..46186d7db4 100644 --- a/package.json +++ b/package.json @@ -8,36 +8,36 @@ "assemblyscript", "wasm" ], - "version": "0.0.0", + "version": "0.29.1-beta.0", "author": "Daniel Wirtz ", "license": "Apache-2.0", "homepage": "https://assemblyscript.org", "repository": { "type": "git", - "url": "https://github.com/AssemblyScript/assemblyscript.git" + "url": "https://github.com/btc-vision/assemblyscript.git" }, "bugs": { - "url": "https://github.com/AssemblyScript/assemblyscript/issues" + "url": "https://github.com/btc-vision/assemblyscript/issues" }, "engines": { - "node": ">=20", + "node": ">=24", "npm": ">=10" }, "engineStrict": true, "dependencies": { - "binaryen": "123.0.0-nightly.20250530", - "long": "^5.2.4" + "binaryen": "125.0.0", + "long": "^5.3.2" }, "devDependencies": { - "@types/node": "^18.19.75", - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", + "@types/node": "^25.0.10", + "@typescript-eslint/eslint-plugin": "^8.53.1", + "@typescript-eslint/parser": "^8.53.1", "as-float": "^1.0.1", - "diff": "^7.0.0", - "esbuild": "^0.25.0", - "eslint": "^8.57.1", - "glob": "^10.4.5", - "typescript": "^5.7.3" + "diff": "^8.0.3", + "esbuild": "^0.27.2", + "eslint": "^9.39.2", + "glob": "^13.0.0", + "typescript": "^5.9.3" }, "type": "module", "exports": { diff --git a/scripts/build-web.js b/scripts/build-web.js index fb703a7e24..85da219e4c 100644 --- a/scripts/build-web.js +++ b/scripts/build-web.js @@ -8,8 +8,9 @@ export function buildWeb() { const pkg = JSON.parse(fs.readFileSync(join(__dirname, "../package-lock.json"))); const mainVersion = pkg.version; - const binaryenVersion = pkg.dependencies.binaryen.version; - const longVersion = pkg.dependencies.long.version; + // lockfileVersion 3 stores deps in packages["node_modules/..."] + const binaryenVersion = pkg.packages["node_modules/binaryen"].version; + const longVersion = pkg.packages["node_modules/long"].version; const distUrl = mainVersion === "0.0.0" ? `./` : `https://cdn.jsdelivr.net/npm/assemblyscript@${mainVersion}/dist/`; const binaryenUrl = `https://cdn.jsdelivr.net/npm/binaryen@${binaryenVersion}/index.js`; diff --git a/src/builtins.ts b/src/builtins.ts index f876049603..79e0685a24 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -2334,7 +2334,10 @@ function builtin_heap_base_compile(ctx: BuiltinVariableContext): void { let element = ctx.element; let type = element.type; compiler.runtimeFeatures |= RuntimeFeatures.Heap; - module.addGlobal(element.internalName, type.toRef(), true, compiler.makeZero(type)); // dummy + // Only add the dummy global if it doesn't already exist (may be called multiple times due to recompilation) + if (!module.getGlobal(element.internalName)) { + module.addGlobal(element.internalName, type.toRef(), true, compiler.makeZero(type)); // dummy + } } builtinVariables_onCompile.set(BuiltinNames.heap_base, builtin_heap_base_compile); @@ -2357,7 +2360,10 @@ function builtin_data_end_compile(ctx: BuiltinVariableContext): void { let element = ctx.element; let type = element.type; compiler.runtimeFeatures |= RuntimeFeatures.Data; - module.addGlobal(element.internalName, type.toRef(), true, compiler.makeZero(type)); // dummy + // Only add the dummy global if it doesn't already exist (may be called multiple times due to recompilation) + if (!module.getGlobal(element.internalName)) { + module.addGlobal(element.internalName, type.toRef(), true, compiler.makeZero(type)); // dummy + } } builtinVariables_onCompile.set(BuiltinNames.data_end, builtin_data_end_compile); @@ -2380,7 +2386,10 @@ function builtin_stack_pointer_compile(ctx: BuiltinVariableContext): void { let element = ctx.element; let type = element.type; compiler.runtimeFeatures |= RuntimeFeatures.Stack; - module.addGlobal(element.internalName, type.toRef(), true, compiler.makeZero(type)); // dummy + // Only add the dummy global if it doesn't already exist (may be called multiple times due to recompilation) + if (!module.getGlobal(element.internalName)) { + module.addGlobal(element.internalName, type.toRef(), true, compiler.makeZero(type)); // dummy + } } builtinVariables_onCompile.set(BuiltinNames.stack_pointer, builtin_stack_pointer_compile); @@ -2403,7 +2412,10 @@ function builtin_rtti_base_compile(ctx: BuiltinVariableContext): void { let element = ctx.element; let type = element.type; compiler.runtimeFeatures |= RuntimeFeatures.Rtti; - module.addGlobal(element.internalName, type.toRef(), true, compiler.makeZero(type)); // dummy + // Only add the dummy global if it doesn't already exist (may be called multiple times due to recompilation) + if (!module.getGlobal(element.internalName)) { + module.addGlobal(element.internalName, type.toRef(), true, compiler.makeZero(type)); // dummy + } } builtinVariables_onCompile.set(BuiltinNames.rtti_base, builtin_rtti_base_compile); diff --git a/src/common.ts b/src/common.ts index 3cc25a0845..9efb088868 100644 --- a/src/common.ts +++ b/src/common.ts @@ -191,6 +191,7 @@ export namespace CommonNames { export const ASC_FEATURE_RELAXED_SIMD = "ASC_FEATURE_RELAXED_SIMD"; export const ASC_FEATURE_EXTENDED_CONST = "ASC_FEATURE_EXTENDED_CONST"; export const ASC_FEATURE_STRINGREF = "ASC_FEATURE_STRINGREF"; + export const ASC_FEATURE_CLOSURES = "ASC_FEATURE_CLOSURES"; export const ASC_VERSION_MAJOR = "ASC_VERSION_MAJOR"; export const ASC_VERSION_MINOR = "ASC_VERSION_MINOR"; export const ASC_VERSION_PATCH = "ASC_VERSION_PATCH"; diff --git a/src/compiler.ts b/src/compiler.ts index 36f09ab8aa..6717b5b77a 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -61,6 +61,8 @@ import { getConstValueInteger } from "./module"; +import * as binaryen from "./glue/binaryen"; + import { CommonFlags, STATIC_DELIMITER, @@ -456,6 +458,8 @@ export class Compiler extends DiagnosticEmitter { functionTable: Function[] = []; /** Arguments length helper global. */ builtinArgumentsLength: GlobalRef = 0; + /** Closure environment helper global. */ + closureEnvironmentGlobal: GlobalRef = 0; /** Requires runtime features. */ runtimeFeatures: RuntimeFeatures = RuntimeFeatures.None; /** Current inline functions stack. */ @@ -476,6 +480,8 @@ export class Compiler extends DiagnosticEmitter { hasCustomFunctionExports: bool = false; /** Whether the module would use the exported runtime to lift/lower. */ desiresExportRuntime: bool = false; + /** Whether the exception tag has been created. */ + exceptionTagEnsured: bool = false; /** Compiles a {@link Program} to a {@link Module} using the specified options. */ static compile(program: Program): Module { @@ -645,11 +651,9 @@ export class Compiler extends DiagnosticEmitter { } } - // finalize runtime features + // finalize runtime features (RTTI only - visitGlobals/visitMembers are compiled after shadow stack pass) module.removeGlobal(BuiltinNames.rtti_base); if (this.runtimeFeatures & RuntimeFeatures.Rtti) compileRTTI(this); - if (this.runtimeFeatures & RuntimeFeatures.visitGlobals) compileVisitGlobals(this); - if (this.runtimeFeatures & RuntimeFeatures.visitMembers) compileVisitMembers(this); let memoryOffset = i64_align(this.memoryOffset, options.usizeType.byteSize); @@ -751,10 +755,20 @@ export class Compiler extends DiagnosticEmitter { } } - // Run custom passes + // Run shadow stack pass first (may trigger compilation of functions that need visit functions) if (hasShadowStack) { this.shadowStack.walkModule(); } + + // Compile visit functions after shadow stack pass (which may have set runtimeFeatures flags) + if (this.runtimeFeatures & RuntimeFeatures.visitGlobals) compileVisitGlobals(this); + if (this.runtimeFeatures & RuntimeFeatures.visitMembers) compileVisitMembers(this); + + // Run shadow stack pass again with a fresh instance to transform any __tostack calls in visit functions + if (hasShadowStack && (this.runtimeFeatures & (RuntimeFeatures.visitGlobals | RuntimeFeatures.visitMembers))) { + new ShadowStackPass(this).walkModule(); + } + if (program.lookup("ASC_RTRACE") != null) { new RtraceMemory(this).walkModule(); } @@ -1524,7 +1538,7 @@ export class Compiler extends DiagnosticEmitter { private ensureEnumToString(enumElement: Enum, reportNode: Node): string | null { if (enumElement.toStringFunctionName) return enumElement.toStringFunctionName; - + if (!this.compileEnum(enumElement)) return null; if (enumElement.is(CommonFlags.Const)) { this.errorRelated( @@ -1772,6 +1786,46 @@ export class Compiler extends DiagnosticEmitter { : null; let bodyStartIndex = stmts.length; + // Track locals before body compilation for potential recompilation + let numLocalsBeforeBody = instance.localsByIndex.length; + + // Track anonymous function counter for potential recompilation + let nextAnonymousIdBeforeBody = instance.nextAnonymousId; + + // For closures (functions that capture from outer scope), create a local to cache + // the environment pointer. This is needed because indirect calls to other closures + // can overwrite the global $~lib/__closure_env. + if (instance.outerFunction && !instance.closureEnvLocal) { + instance.closureEnvLocal = flow.addScopedLocal("$closureEnv", this.options.usizeType); + } + + // On recompilation, mark parameters that are known to be captured from previous pass + let capturedLocals = instance.capturedLocals; + if (capturedLocals && capturedLocals.size > 0) { + // Mark captured parameters and 'this' - they exist before body compilation + let hasOwnCapturedLocals = false; + for (let _keys = Map_keys(capturedLocals), i = 0, k = _keys.length; i < k; i++) { + let capturedLocal = _keys[i]; + // Only handle parameters/this (they belong to this function) + if (capturedLocal.parent == instance) { + let localInFlow = flow.lookupLocal(capturedLocal.name); + if (localInFlow && !localInFlow.isCaptured) { + localInFlow.isCaptured = true; + localInFlow.envSlotIndex = capturedLocal.envSlotIndex; + localInFlow.envOwner = capturedLocal.envOwner; + } + } + // Check if this instance owns any captured variables (needs envLocal) + if (capturedLocal.envOwner == instance) { + hasOwnCapturedLocals = true; + } + } + // Only create envLocal if this function owns some captured variables + if (hasOwnCapturedLocals && !instance.envLocal) { + instance.envLocal = flow.addScopedLocal("$env", this.options.usizeType); + } + } + // compile statements if (bodyNode.kind == NodeKind.Block) { stmts = this.compileStatements((bodyNode).statements, stmts); @@ -1799,6 +1853,126 @@ export class Compiler extends DiagnosticEmitter { } } + // Check if recompilation is needed due to late capture discovery + if (instance.needsCaptureRecompile) { + // Reset state for recompilation + instance.needsCaptureRecompile = false; + + // Reset stmts to before body compilation + stmts.length = bodyStartIndex; + + // Reset locals to before body compilation + let localsByIndex = instance.localsByIndex; + for (let i = numLocalsBeforeBody, k = localsByIndex.length; i < k; i++) { + localsByIndex[i].wasAccessedAsLocal = false; + } + localsByIndex.length = numLocalsBeforeBody; + + // Reset flow flags + flow.localFlags.length = numLocalsBeforeBody; + flow.unset( + FlowFlags.Returns | + FlowFlags.ReturnsWrapped | + FlowFlags.ReturnsNonNull | + FlowFlags.Terminates | + FlowFlags.Breaks | + FlowFlags.Continues | + FlowFlags.AccessesThis | + FlowFlags.ConditionallyAccessesThis | + FlowFlags.CallsSuper | + FlowFlags.MayReturnNonThis + ); + + // Clear scoped locals added during body compilation + // Keep only parameters and 'this' which exist before body compilation + let scopedLocals = flow.scopedLocals; + if (scopedLocals) { + let signature = instance.signature; + let numParams = signature.parameterTypes.length; + let hasThis = signature.thisType != null; + let keysToDelete = new Array(); + for (let _keys = Map_keys(scopedLocals), i = 0, k = _keys.length; i < k; i++) { + let name = _keys[i]; + let local = assert(scopedLocals.get(name)); + // Keep parameters and 'this', but remove body-scoped locals + let isParam = local.index >= (hasThis ? 1 : 0) && local.index < numParams + (hasThis ? 1 : 0); + let isThis = hasThis && local.index == 0; + let isEnvLocal = local == instance.envLocal || local == instance.closureEnvLocal; + if (!isParam && !isThis && !isEnvLocal) { + keysToDelete.push(name); + } + } + for (let i = 0, k = keysToDelete.length; i < k; i++) { + scopedLocals.delete(keysToDelete[i]); + } + } + + // Clear envLocal so it gets recreated with a valid index + // The old envLocal's index is invalid after localsByIndex truncation + if (instance.envLocal) { + let scopedLocals = flow.scopedLocals; + if (scopedLocals && scopedLocals.has("$env")) { + scopedLocals.delete("$env"); + } + instance.envLocal = null; + } + + // Also clear closureEnvLocal so it gets recreated with a valid index + if (instance.closureEnvLocal) { + let scopedLocals = flow.scopedLocals; + if (scopedLocals && scopedLocals.has("$closureEnv")) { + scopedLocals.delete("$closureEnv"); + } + instance.closureEnvLocal = null; + } + + // Clear wasAccessedAsLocal on parameters that will be marked captured + capturedLocals = instance.capturedLocals; + if (capturedLocals) { + for (let _keys = Map_keys(capturedLocals), i = 0, k = _keys.length; i < k; i++) { + _keys[i].wasAccessedAsLocal = false; + } + } + + // Reset anonymous ID counter so inner functions get the same IDs + instance.nextAnonymousId = nextAnonymousIdBeforeBody; + + // Recursively recompile - captures are now known + return this.compileFunctionBody(instance, stmts); + } + + // Allocate closure environment if this function has captured variables + // This is done after compiling the body because we discover captures during body compilation + capturedLocals = instance.capturedLocals; + if (instance.envLocal && capturedLocals && capturedLocals.size > 0) { + let envAlloc = this.compileClosureEnvironmentAllocation(instance); + // Insert at the beginning of the body + for (let i = stmts.length - 1; i >= bodyStartIndex; --i) { + stmts[i + 1] = stmts[i]; + } + stmts[bodyStartIndex] = envAlloc; + } + + // For closures (functions that capture from outer scope), emit code to cache the + // environment pointer in a local at function entry. This is needed because indirect + // calls to other closures can overwrite the global $~lib/__closure_env. + let closureEnvLocal = instance.closureEnvLocal; + if (closureEnvLocal) { + let closureEnvGlobal = this.ensureClosureEnvironmentGlobal(); + let sizeTypeRef = this.options.sizeTypeRef; + let cacheEnv = module.local_set( + closureEnvLocal.index, + module.global_get(closureEnvGlobal, sizeTypeRef), + false // not a reference type + ); + + // Insert at the beginning of the body + for (let i = stmts.length - 1; i >= bodyStartIndex; --i) { + stmts[i + 1] = stmts[i]; + } + stmts[bodyStartIndex] = cacheEnv; + } + // Make constructors return their instance pointer, and prepend a conditional // allocation if any code path accesses `this`. if (instance.is(CommonFlags.Constructor)) { @@ -1883,8 +2057,7 @@ export class Compiler extends DiagnosticEmitter { valueTypeRef, property.memoryOffset ); let flowBefore = this.currentFlow; - let flow = getterInstance.flow; - this.currentFlow = flow; + this.currentFlow = getterInstance.flow; if (property.is(CommonFlags.DefinitelyAssigned) && valueType.isReference && !valueType.isNullableReference) { body = this.makeRuntimeNonNullCheck(body, valueType, getterInstance.identifierNode); } @@ -2582,7 +2755,7 @@ export class Compiler extends DiagnosticEmitter { // (then │ │ (body) │ // (?block $continue │ │ if loops: (incrementor) ─────┘ // (body) │ │ recompile body? - // ) ├◄┘ + // ) ├◄┘ // (incrementor) ┌◄┘ // (br $loop) // ) @@ -2843,6 +3016,28 @@ export class Compiler extends DiagnosticEmitter { // Remember that this flow returns flow.set(FlowFlags.Returns | FlowFlags.Terminates); + // Handle try-finally context: defer return until after finally + let tryFinallyContext = flow.getTryFinallyContext(); + if (tryFinallyContext) { + let pendingActionLocal = tryFinallyContext.tryFinallyPendingActionLocal; + let pendingValueLocal = tryFinallyContext.tryFinallyPendingValueLocal; + let dispatchLabel = assert(tryFinallyContext.tryFinallyDispatchLabel); + let stmts = new Array(); + + // Store return value if any + if (expr && returnType != Type.void) { + stmts.push(module.local_set(pendingValueLocal, expr, returnType.isManaged)); + } + + // Set pending action to RETURN (1) + stmts.push(module.local_set(pendingActionLocal, module.i32(1), false)); + + // Branch to finally dispatch + stmts.push(module.br(dispatchLabel)); + + return module.flatten(stmts); + } + // Handle inline return if (flow.isInline) { let inlineReturnLabel = assert(flow.inlineReturnLabel); @@ -2871,17 +3066,17 @@ export class Compiler extends DiagnosticEmitter { // Compile the condition (always executes) let condExpr = this.compileExpression(statement.condition, Type.auto); let condType = this.currentType; - + // Shortcut if there are no cases if (!numCases) return module.drop(condExpr); - + // Assign the condition to a temporary local as we compare it multiple times let outerFlow = this.currentFlow; let tempLocal = outerFlow.getTempLocal(condType); let tempLocalIndex = tempLocal.index; let breaks = new Array(1 + numCases); breaks[0] = module.local_set(tempLocalIndex, condExpr, condType.isManaged); - + // Make one br_if per labeled case and leave it to Binaryen to optimize the // sequence of br_ifs to a br_table according to optimization levels let breakIndex = 1; @@ -2893,7 +3088,7 @@ export class Compiler extends DiagnosticEmitter { defaultIndex = i; continue; } - + // Compile the equality expression for this case const left = statement.condition; const leftExpr = module.local_get(tempLocalIndex, condType.toRef()); @@ -2908,7 +3103,7 @@ export class Compiler extends DiagnosticEmitter { condType, statement ); - + // Add it to the list of breaks breaks[breakIndex++] = module.br(`case${i}|${label}`, equalityExpr); } @@ -2988,12 +3183,38 @@ export class Compiler extends DiagnosticEmitter { private compileThrowStatement( statement: ThrowStatement ): ExpressionRef { - // TODO: requires exception-handling spec. + let module = this.module; let flow = this.currentFlow; // Remember that this branch throws flow.set(FlowFlags.Throws | FlowFlags.Terminates); + // If exception handling feature is enabled, use actual throw instruction + if (this.options.hasFeature(Feature.ExceptionHandling)) { + // Compile the thrown value - should be Error or subclass + let valueExpr = this.compileExpression(statement.value, Type.auto); + let valueType = this.currentType; + + // Verify that the thrown type is Error or a subclass + let errorInstance = this.program.errorInstance; + let classReference = valueType.getClass(); + if (!classReference || !classReference.isAssignableTo(errorInstance)) { + this.error( + DiagnosticCode.Only_Error_or_its_subclasses_can_be_thrown_but_found_type_0, + statement.value.range, + valueType.toString() + ); + return module.unreachable(); + } + + // Ensure exception tag exists + let tagName = this.ensureExceptionTag(); + + // Emit throw instruction with the error pointer + return module.throw(tagName, [valueExpr]); + } + + // Fallback: convert throw to abort() call when exception handling is disabled let stmts = new Array(); let value = statement.value; let message: Expression | null = null; @@ -3004,20 +3225,309 @@ export class Compiler extends DiagnosticEmitter { stmts.push( this.makeAbort(message, statement) ); - return this.module.flatten(stmts); + return module.flatten(stmts); } private compileTryStatement( statement: TryStatement ): ExpressionRef { - // TODO: can't yet support something like: try { return ... } finally { ... } - // worthwhile to investigate lowering returns to block results (here)? - this.error( - DiagnosticCode.Not_implemented_0, - statement.range, - "Exceptions" - ); - return this.module.unreachable(); + let module = this.module; + let outerFlow = this.currentFlow; + + // Check feature flag + if (!this.options.hasFeature(Feature.ExceptionHandling)) { + this.error( + DiagnosticCode.Feature_0_is_not_enabled, + statement.range, + "exception-handling" + ); + return module.unreachable(); + } + + // Ensure exception tag exists + let tagName = this.ensureExceptionTag(); + + // Generate unique label for this try block + let label = outerFlow.pushControlFlowLabel(); + let tryLabel = `try|${label}`; + + // Compile try block body + let tryFlow = outerFlow.fork(); + this.currentFlow = tryFlow; + let tryStmts = new Array(); + this.compileStatements(statement.bodyStatements, tryStmts); + let tryBodyExpr = module.flatten(tryStmts); + let tryFlowTerminates = tryFlow.isAny(FlowFlags.Terminates); + + let catchTags: string[] = []; + let catchBodies: ExpressionRef[] = []; + let catchFlow: Flow | null = null; + let catchFlowTerminates = false; + + // Compile catch clause if present + let catchStatements = statement.catchStatements; + let catchVariable = statement.catchVariable; + if (catchStatements) { + catchFlow = outerFlow.fork(); + this.currentFlow = catchFlow; + + let catchStmts = new Array(); + + // The pop instruction MUST be the very first instruction in the catch block + // WebAssembly requires this - we can't wrap it in local.tee or anything else + let popExpr = module.pop(this.options.sizeTypeRef); + + // If there's a catch variable, bind it to the popped exception value + if (catchVariable) { + let catchVarName = catchVariable.text; + // The exception value is a pointer to Error object + let errorClass = this.program.lookup(CommonNames.Error); + let errorType: Type; + if (errorClass && errorClass.kind == ElementKind.ClassPrototype) { + let resolved = this.resolver.resolveClass(errorClass, null); + errorType = resolved ? resolved.type : this.options.usizeType; + } else { + errorType = this.options.usizeType; // Fallback to usize if Error class not found + } + + // Create a scoped local for the catch variable + let catchLocal = catchFlow.addScopedLocal(catchVarName, errorType); + // Use direct local.set without shadow stack to ensure pop is first + catchStmts.push(binaryen._BinaryenLocalSet(module.ref, catchLocal.index, popExpr)); + // Mark the catch variable as initialized + catchFlow.setLocalFlag(catchLocal.index, LocalFlags.Initialized); + } else { + // No catch variable, but still need to pop the exception value + catchStmts.push(module.drop(popExpr)); + } + + // Compile catch block statements + this.compileStatements(catchStatements, catchStmts); + + catchTags.push(tagName); + catchBodies.push(module.flatten(catchStmts)); + catchFlowTerminates = catchFlow.isAny(FlowFlags.Terminates); + } + + // Handle finally clause if present + let finallyStatements = statement.finallyStatements; + if (finallyStatements) { + // Set up pending action pattern for deferred control flow + // pendingAction: 0=normal, 1=return, 2=break, 3=continue + let returnType = outerFlow.returnType; + let targetFunction = outerFlow.targetFunction; + + // Create locals for pending action tracking + let pendingActionLocal = targetFunction.addLocal(Type.i32); + let pendingValueLocal: Local | null = returnType != Type.void + ? targetFunction.addLocal(returnType) + : null; + let pendingValueLocalIndex = pendingValueLocal ? pendingValueLocal.index : -1; + + // Create labels + let dispatchLabel = `finally_dispatch|${label}`; + let outerTryLabel = `try_finally|${label}`; + + // Set up try-finally context on the flows BEFORE compiling try/catch bodies + // We need to recompile try and catch with the context set + outerFlow.popControlFlowLabel(label); + + // Re-fork flows with try-finally context + let label2 = outerFlow.pushControlFlowLabel(); + tryLabel = `try|${label2}`; + + tryFlow = outerFlow.fork(); + tryFlow.tryFinallyPendingActionLocal = pendingActionLocal.index; + tryFlow.tryFinallyPendingValueLocal = pendingValueLocalIndex; + tryFlow.tryFinallyDispatchLabel = dispatchLabel; + tryFlow.tryFinallyReturnType = returnType; + + this.currentFlow = tryFlow; + let tryStmts2 = new Array(); + this.compileStatements(statement.bodyStatements, tryStmts2); + tryBodyExpr = module.flatten(tryStmts2); + tryFlowTerminates = tryFlow.isAny(FlowFlags.Terminates); + + // Recompile catch with context if present + catchTags = []; + catchBodies = []; + catchFlow = null; + catchFlowTerminates = false; + + if (catchStatements) { + catchFlow = outerFlow.fork(); + catchFlow.tryFinallyPendingActionLocal = pendingActionLocal.index; + catchFlow.tryFinallyPendingValueLocal = pendingValueLocalIndex; + catchFlow.tryFinallyDispatchLabel = dispatchLabel; + catchFlow.tryFinallyReturnType = returnType; + + this.currentFlow = catchFlow; + + let catchStmts2 = new Array(); + let popExpr = module.pop(this.options.sizeTypeRef); + + if (catchVariable) { + let catchVarName = catchVariable.text; + let errorClass = this.program.lookup(CommonNames.Error); + let errorType: Type; + if (errorClass && errorClass.kind == ElementKind.ClassPrototype) { + let resolved = this.resolver.resolveClass(errorClass, null); + errorType = resolved ? resolved.type : this.options.usizeType; + } else { + errorType = this.options.usizeType; + } + let catchLocal = catchFlow.addScopedLocal(catchVarName, errorType); + catchStmts2.push(binaryen._BinaryenLocalSet(module.ref, catchLocal.index, popExpr)); + catchFlow.setLocalFlag(catchLocal.index, LocalFlags.Initialized); + } else { + catchStmts2.push(module.drop(popExpr)); + } + + this.compileStatements(catchStatements, catchStmts2); + + catchTags.push(tagName); + catchBodies.push(module.flatten(catchStmts2)); + catchFlowTerminates = catchFlow.isAny(FlowFlags.Terminates); + } + + this.currentFlow = outerFlow; + + // Build the inner try-catch (if there's a catch clause) + let innerTryExpr: ExpressionRef; + if (catchBodies.length > 0) { + innerTryExpr = module.try(tryLabel, tryBodyExpr, catchTags, catchBodies, null); + } else { + innerTryExpr = tryBodyExpr; + } + + // Compile finally statements for the catch_all path (exception handling) + let finallyFlow1 = outerFlow.fork(); + this.currentFlow = finallyFlow1; + let finallyStmts1 = new Array(); + this.compileStatements(finallyStatements, finallyStmts1); + let finallyExpr1 = module.flatten(finallyStmts1); + + // Create catch_all body: run finally, then rethrow + let catchAllBody = module.block(null, [ + finallyExpr1, + module.rethrow(outerTryLabel) + ]); + + // Outer try with catch_all for exception path + let outerTryExpr = module.try( + outerTryLabel, + innerTryExpr, + [], + [catchAllBody], + null + ); + + // Compile finally statements for the normal/deferred path + let finallyFlow2 = outerFlow.fork(); + this.currentFlow = finallyFlow2; + let finallyStmts2 = new Array(); + this.compileStatements(finallyStatements, finallyStmts2); + let finallyExpr2 = module.flatten(finallyStmts2); + let finallyTerminates = finallyFlow2.isAny(FlowFlags.Terminates); + let finallyReturns = finallyFlow2.isAny(FlowFlags.Returns); + + this.currentFlow = outerFlow; + outerFlow.popControlFlowLabel(label2); + + // Build the dispatch logic after finally + let dispatchStmts = new Array(); + + // Run finally code + dispatchStmts.push(finallyExpr2); + + // If finally always returns/terminates, skip dispatch logic + if (!finallyTerminates) { + // Dispatch based on pendingAction + // if (pendingAction == 1) return pendingValue; + if (returnType != Type.void && pendingValueLocal) { + dispatchStmts.push( + module.if( + module.binary(BinaryOp.EqI32, + module.local_get(pendingActionLocal.index, TypeRef.I32), + module.i32(1) + ), + module.return(module.local_get(pendingValueLocal.index, returnType.toRef())) + ) + ); + } else { + dispatchStmts.push( + module.if( + module.binary(BinaryOp.EqI32, + module.local_get(pendingActionLocal.index, TypeRef.I32), + module.i32(1) + ), + module.return() + ) + ); + } + } + + // Wrap the try in a block that return can branch to + let tryBlock = module.block(dispatchLabel, [outerTryExpr]); + + // Only add unreachable if all paths terminate (no normal completion possible) + // If try or catch can complete normally, we need to fall through + let allPathsTerminate = catchFlow + ? (tryFlowTerminates && catchFlowTerminates) + : tryFlowTerminates; + if (!finallyTerminates && allPathsTerminate) { + dispatchStmts.push(module.unreachable()); + } + + let fullBlockStmts = new Array(1 + dispatchStmts.length); + fullBlockStmts[0] = tryBlock; + for (let i = 0; i < dispatchStmts.length; i++) { + fullBlockStmts[1 + i] = dispatchStmts[i]; + } + let fullBlock = module.block(null, fullBlockStmts); + + // Merge flow states + // If finally always terminates, the whole construct terminates + if (finallyTerminates) { + outerFlow.set(FlowFlags.Terminates); + if (finallyReturns) { + outerFlow.set(FlowFlags.Returns); + } + } else if (catchFlow) { + if (tryFlowTerminates && catchFlowTerminates) { + outerFlow.set(FlowFlags.Terminates); + } else { + outerFlow.inheritAlternatives(tryFlow, catchFlow); + } + } else { + outerFlow.mergeSideEffects(tryFlow); + } + + return fullBlock; + } + + // No finally clause + outerFlow.popControlFlowLabel(label); + this.currentFlow = outerFlow; + + // Merge flow states + if (catchFlow) { + if (tryFlowTerminates && catchFlowTerminates) { + outerFlow.set(FlowFlags.Terminates); + } else if (!catchStatements) { + // No catch, only try + outerFlow.inherit(tryFlow); + } else { + outerFlow.inheritAlternatives(tryFlow, catchFlow); + } + } + + // If no catch handlers, just return the try body (exceptions propagate) + if (catchBodies.length == 0) { + return tryBodyExpr; + } + + return module.try(tryLabel, tryBodyExpr, catchTags, catchBodies, null); } /** Compiles a variable statement. Returns `0` if an initializer is not necessary. */ @@ -3208,6 +3718,29 @@ export class Compiler extends DiagnosticEmitter { flow.unsetLocalFlag(local.index, ~0); if (isConst) flow.setLocalFlag(local.index, LocalFlags.Constant); } + + // On recompilation, check if this local matches a known captured variable + // (captures are discovered during first pass when compiling inner functions) + let sourceFunc = flow.sourceFunction; + let capturedLocals = sourceFunc.capturedLocals; + if (capturedLocals) { + // Look for a captured local with matching name and parent + for (let _keys = Map_keys(capturedLocals), i = 0, k = _keys.length; i < k; ++i) { + let capturedLocal = _keys[i]; + if (capturedLocal.name == name && capturedLocal.parent == sourceFunc) { + // Found a match - copy capture info to the new local + local.isCaptured = true; + local.envSlotIndex = capturedLocal.envSlotIndex; + local.envOwner = capturedLocal.envOwner; + // Replace the old local in capturedLocals with the new one + let slotIndex = capturedLocals.get(capturedLocal) as i32; + capturedLocals.delete(capturedLocal); + capturedLocals.set(local, slotIndex); + break; + } + } + } + if (initExpr) { initializers.push( this.makeLocalAssignment(local, initExpr, initType ? initType : type, false) @@ -3862,7 +4395,7 @@ export class Compiler extends DiagnosticEmitter { expression: BinaryExpression, contextualType: Type, ): ExpressionRef { - + const left = expression.left; const leftExpr = this.compileExpression(left, contextualType); const leftType = this.currentType; @@ -3880,9 +4413,9 @@ export class Compiler extends DiagnosticEmitter { ); } - /** + /** * compile `==` `===` `!=` `!==` BinaryExpression, from previously compiled left and right expressions. - * + * * This is split from `compileCommutativeCompareBinaryExpression` so that the logic can be reused * for switch cases in `compileSwitchStatement`, where the left expression only should be compiled once. */ @@ -3900,7 +4433,7 @@ export class Compiler extends DiagnosticEmitter { let module = this.module; let operatorString = operatorTokenToString(operator); - + // check operator overload const operatorKind = OperatorKind.fromBinaryToken(operator); const leftOverload = leftType.lookupOverload(operatorKind, this.program); @@ -3908,7 +4441,7 @@ export class Compiler extends DiagnosticEmitter { if (leftOverload && rightOverload && leftOverload != rightOverload) { this.error( DiagnosticCode.Ambiguous_operator_overload_0_conflicting_overloads_1_and_2, - reportNode.range, + reportNode.range, operatorString, leftOverload.internalName, rightOverload.internalName @@ -3998,7 +4531,7 @@ export class Compiler extends DiagnosticEmitter { leftExpr = this.compileExpression(left, contextualType); leftType = this.currentType; - + // check operator overload const operatorKind = OperatorKind.fromBinaryToken(operator); const leftOverload = leftType.lookupOverload(operatorKind, this.program); @@ -4069,7 +4602,7 @@ export class Compiler extends DiagnosticEmitter { return this.compileNonCommutativeCompareBinaryExpression(expression, contextualType); } case Token.Equals_Equals_Equals: - case Token.Equals_Equals: + case Token.Equals_Equals: case Token.Exclamation_Equals_Equals: case Token.Exclamation_Equals: { return this.compileCommutativeCompareBinaryExpression(expression, contextualType); @@ -5676,13 +6209,15 @@ export class Compiler extends DiagnosticEmitter { return this.module.unreachable(); } } else if (!(target).declaredByFlow(flow)) { - // TODO: closures - this.error( - DiagnosticCode.Not_implemented_0, - expression.range, - "Closures" - ); - return this.module.unreachable(); + // Closure: we'll handle the store later after compiling the value + if (!(target).isCaptured || (target).envSlotIndex < 0) { + this.error( + DiagnosticCode.Not_implemented_0, + expression.range, + "Closures" + ); + return this.module.unreachable(); + } } if (this.pendingElements.has(target)) { this.error( @@ -6003,6 +6538,40 @@ export class Compiler extends DiagnosticEmitter { assert(type != Type.void); let localIndex = local.index; + // Handle closure store: if the local is captured, always store to the environment + // This applies both in the declaring function and in inner closures + if (local.isCaptured && local.envSlotIndex >= 0) { + let sourceFunc = flow.sourceFunction; + // Check if we're in the declaring function (outer) or in a closure (inner) + let isInDeclaringFunction = local.parent == sourceFunc; + + // In the declaring function, we need to check if environment is set up + // In a closure, we always use the environment + if (!isInDeclaringFunction || sourceFunc.envLocal) { + // Mark the local as initialized for flow analysis + flow.setLocalFlag(localIndex, LocalFlags.Initialized); + if (type.isNullableReference) { + if (!valueType.isNullableReference || flow.isNonnull(valueExpr, type)) flow.setLocalFlag(localIndex, LocalFlags.NonNull); + else flow.unsetLocalFlag(localIndex, LocalFlags.NonNull); + } + if (type.isShortIntegerValue) { + if (!flow.canOverflow(valueExpr, type)) flow.setLocalFlag(localIndex, LocalFlags.Wrapped); + else flow.unsetLocalFlag(localIndex, LocalFlags.Wrapped); + } + let storeExpr = this.compileClosureStore(local, valueExpr, valueType); + if (tee) { + // For tee, we need to return the stored value + // Store, then load it back + let loadExpr = this.compileClosureLoad(local, local.declaration); + this.currentType = type; + return module.block(null, [storeExpr, loadExpr], type.toRef()); + } else { + this.currentType = Type.void; + return storeExpr; + } + } + } + if (type.isNullableReference) { if (!valueType.isNullableReference || flow.isNonnull(valueExpr, type)) flow.setLocalFlag(localIndex, LocalFlags.NonNull); else flow.unsetLocalFlag(localIndex, LocalFlags.NonNull); @@ -6012,6 +6581,11 @@ export class Compiler extends DiagnosticEmitter { if (!flow.canOverflow(valueExpr, type)) flow.setLocalFlag(localIndex, LocalFlags.Wrapped); else flow.unsetLocalFlag(localIndex, LocalFlags.Wrapped); } + + // Track that we accessed this as a regular local (for closure recompilation detection) + // Only set if not already captured (to avoid infinite recompilation loops) + if (!local.isCaptured) local.wasAccessedAsLocal = true; + if (tee) { // local = value this.currentType = type; return module.local_tee(localIndex, valueExpr, type.isManaged); @@ -6351,13 +6925,13 @@ export class Compiler extends DiagnosticEmitter { if (numArguments < numParams) { return argumentExpressions; } - + // make an array literal expression from the rest args let elements = argumentExpressions.slice(numParams - 1); let range = new Range(elements[0].range.start, elements[elements.length - 1].range.end); range.source = reportNode.range.source; let arrExpr = new ArrayLiteralExpression(elements, range); - + // return the original args, but replace the rest args with the array const exprs = argumentExpressions.slice(0, numParams - 1); exprs.push(arrExpr); @@ -6534,6 +7108,31 @@ export class Compiler extends DiagnosticEmitter { return name; } + /** Ensures the closure environment global variable exists. */ + ensureClosureEnvironmentGlobal(): string { + let name = "~lib/__closure_env"; + if (!this.closureEnvironmentGlobal) { + let module = this.module; + let sizeTypeRef = this.options.sizeTypeRef; + let zero = this.options.isWasm64 ? module.i64(0) : module.i32(0); + this.closureEnvironmentGlobal = module.addGlobal(name, sizeTypeRef, true, zero); + } + return name; + } + + /** Ensures the exception tag for exception handling exists. */ + ensureExceptionTag(): string { + let tagName = "error"; + if (!this.exceptionTagEnsured) { + let module = this.module; + let sizeTypeRef = this.options.sizeTypeRef; + // Tag with single param: pointer to Error object + module.addTag(tagName, sizeTypeRef, TypeRef.None); + this.exceptionTagEnsured = true; + } + return tagName; + } + /** Ensures compilation of the varargs stub for the specified function. */ ensureVarargsStub(original: Function): Function { // A varargs stub is a function called with omitted arguments being zeroed, @@ -6621,9 +7220,9 @@ export class Compiler extends DiagnosticEmitter { let initializer = declaration.initializer; let initExpr: ExpressionRef; if (declaration.parameterKind === ParameterKind.Rest) { - const arrExpr = new ArrayLiteralExpression([], declaration.range.atEnd); + const arrExpr = new ArrayLiteralExpression([], declaration.range.atEnd); initExpr = this.compileArrayLiteral(arrExpr, type, Constraints.ConvExplicit); - initExpr = module.local_set(operandIndex, initExpr, type.isManaged); + initExpr = module.local_set(operandIndex, initExpr, type.isManaged); } else if (initializer) { initExpr = this.compileExpression( initializer, @@ -7100,9 +7699,56 @@ export class Compiler extends DiagnosticEmitter { ], sizeTypeRef); } if (operands) this.operandsTostack(signature, operands); + + // Only set up closure environment handling when closures feature is enabled + if (this.options.hasFeature(Feature.Closures)) { + // Load the _env field from Function object and store to global for closure access + let closureEnvGlobal = this.ensureClosureEnvironmentGlobal(); + let usizeSize = this.options.usizeType.byteSize; + + // Get the offset of _env in the Function class + // _index is u32 (4 bytes), _env follows at offset 4 (wasm32) or 8 (wasm64 with padding) + let envOffset = this.options.isWasm64 ? 8 : 4; + + // We need to evaluate functionArg once, store to temp, then use for both _env and _index + let flow = this.currentFlow; + let funcTemp = flow.getTempLocal(this.options.usizeType); + let funcTempIndex = funcTemp.index; + + let stmts: ExpressionRef[] = [ + // Store function pointer to temp + module.local_set(funcTempIndex, functionArg, true), + // Store _env to global: $~lib/__closure_env = func._env + module.global_set(closureEnvGlobal, + module.load(usizeSize, false, + module.local_get(funcTempIndex, sizeTypeRef), + sizeTypeRef, + envOffset + ) + ) + ]; + + let indexExpr = module.load(4, false, + module.local_get(funcTempIndex, sizeTypeRef), + TypeRef.I32 // ._index + ); + + let expr = module.call_indirect( + null, // TODO: handle multiple tables + module.block(null, stmts.concat([indexExpr]), TypeRef.I32), + operands, + signature.paramRefs, + signature.resultRefs + ); + this.currentType = returnType; + return expr; + } + + // Without closures, use simpler indirect call (just load _index from Function) + let indexExpr = module.load(4, false, functionArg, TypeRef.I32); // ._index at offset 0 let expr = module.call_indirect( - null, // TODO: handle multiple tables - module.load(4, false, functionArg, TypeRef.I32), // ._index + null, + indexExpr, operands, signature.paramRefs, signature.resultRefs @@ -7186,14 +7832,45 @@ export class Compiler extends DiagnosticEmitter { let sourceFunction = flow.sourceFunction; let isNamed = declaration.name.text.length > 0; let isSemanticallyAnonymous = !isNamed || contextualType != Type.void; - let prototype = new FunctionPrototype( - isSemanticallyAnonymous - ? `${isNamed ? declaration.name.text : "anonymous"}|${sourceFunction.nextAnonymousId++}` - : declaration.name.text, - sourceFunction, - declaration, - DecoratorFlags.None - ); + + // Generate the name for this anonymous/named function + let functionName = isSemanticallyAnonymous + ? `${isNamed ? declaration.name.text : "anonymous"}|${sourceFunction.nextAnonymousId++}` + : declaration.name.text; + + // During recompilation, check if this function already exists + // Check in program.instancesByName using the internal name that would be generated + let expectedInternalName = mangleInternalName(functionName, sourceFunction, false); + let existingInstance = this.program.instancesByName.get(expectedInternalName); + if (existingInstance && existingInstance.kind == ElementKind.Function) { + let existingFunc = existingInstance; + if (existingFunc.is(CommonFlags.Compiled)) { + // Already compiled - just return a reference to it + let offset = this.ensureRuntimeFunction(existingFunc); + let capturedLocals = existingFunc.capturedLocals; + if (capturedLocals && capturedLocals.size > 0) { + return this.compileClosureFunctionCreation(existingFunc, sourceFunction); + } + this.currentType = existingFunc.signature.type; + let expr = this.options.isWasm64 + ? this.module.i64(i64_low(offset), i64_high(offset)) + : this.module.i32(i64_low(offset)); + return expr; + } + } + + // Reuse existing prototype if available (during recompilation), otherwise create new + let prototype: FunctionPrototype; + if (existingInstance && existingInstance.kind == ElementKind.Function) { + prototype = (existingInstance).prototype; + } else { + prototype = new FunctionPrototype( + functionName, + sourceFunction, + declaration, + DecoratorFlags.None + ); + } let instance: Function | null; let contextualTypeArguments = cloneMap(flow.contextualTypeArguments); let module = this.module; @@ -7295,6 +7972,23 @@ export class Compiler extends DiagnosticEmitter { contextualTypeArguments ); instance.flow.outer = flow; + + // Analyze captured variables before compiling + let captures = this.analyzeCapturedVariables(declaration, flow); + if (captures.size > 0) { + // Check if closures feature is enabled + if (!this.options.hasFeature(Feature.Closures)) { + this.error( + DiagnosticCode.Feature_0_is_not_enabled, + expression.range, "closures" + ); + return module.unreachable(); + } + instance.capturedLocals = captures; + instance.outerFunction = sourceFunction; + this.ensureClosureEnvironmentsForCaptures(captures, flow); + } + let worked = this.compileFunction(instance); this.currentType = contextualSignature.type; if (!worked) return module.unreachable(); @@ -7304,12 +7998,37 @@ export class Compiler extends DiagnosticEmitter { instance = this.resolver.resolveFunction(prototype, null, contextualTypeArguments); if (!instance) return this.module.unreachable(); instance.flow.outer = flow; + + // Analyze captured variables before compiling + let captures = this.analyzeCapturedVariables(declaration, flow); + if (captures.size > 0) { + // Check if closures feature is enabled + if (!this.options.hasFeature(Feature.Closures)) { + this.error( + DiagnosticCode.Feature_0_is_not_enabled, + expression.range, "closures" + ); + return module.unreachable(); + } + instance.capturedLocals = captures; + instance.outerFunction = sourceFunction; + this.ensureClosureEnvironmentsForCaptures(captures, flow); + } + let worked = this.compileFunction(instance); this.currentType = instance.signature.type; if (!worked) return module.unreachable(); } let offset = this.ensureRuntimeFunction(instance); // reports + + // If this is a closure, we need to allocate the Function object dynamically + // and set the _env field to point to our environment + let capturedLocals = instance.capturedLocals; + if (capturedLocals && capturedLocals.size > 0) { + return this.compileClosureFunctionCreation(instance, sourceFunction); + } + let expr = this.options.isWasm64 ? module.i64(i64_low(offset), i64_high(offset)) : module.i32(i64_low(offset)); @@ -7343,13 +8062,823 @@ export class Compiler extends DiagnosticEmitter { return expr; } - /** Makes sure the enclosing source file of the specified expression has been compiled. */ - private maybeCompileEnclosingSource(expression: Expression): void { - let internalPath = expression.range.source.internalPath; - let filesByName = this.program.filesByName; - assert(filesByName.has(internalPath)); - let enclosingFile = assert(filesByName.get(internalPath)); - if (!enclosingFile.is(CommonFlags.Compiled)) { + // === Closure Support ========================================================================== + + /** Scans a node and its children for captured variables from outer scopes. + * Resolves names to Local objects and calculates slot indices. */ + private scanNodeForCaptures( + node: Node, + outerFlow: Flow, + innerFunctionNames: Set, + captures: Map + ): void { + switch (node.kind) { + case NodeKind.Identifier: { + let ident = node; + let name = ident.text; + // Skip identifiers that are parameters/locals of inner functions + if (innerFunctionNames.has(name)) break; + + // Resolve to Local and calculate slot index + let local = outerFlow.lookupLocal(name); + if (!local) { + local = outerFlow.lookupLocalInOuter(name); + } + if (local && !captures.has(local)) { + local.isCaptured = true; + if (!local.envOwner) { + local.envOwner = local.parent; + } + // Check if local was accessed before capture was discovered - need recompilation + if (local.wasAccessedAsLocal) { + let ownerFunc = local.parent; + ownerFunc.needsCaptureRecompile = true; + } + if (local.envSlotIndex >= 0) { + captures.set(local, local.envSlotIndex); + } else { + // Calculate proper byte offset with alignment + // Consider both current captures AND the outer function's existing captures + let ptrSize = this.options.usizeType.byteSize; + let currentOffset = ptrSize; + // First check existing captured locals on the outer function + // Only consider locals that belong to the SAME envOwner + let envOwner = local.envOwner; + if (envOwner && envOwner.capturedLocals) { + let existingCaptures = changetype>(envOwner.capturedLocals); + for (let _keys = Map_keys(existingCaptures), idx = 0, cnt = _keys.length; idx < cnt; ++idx) { + let existingLocal = _keys[idx]; + // Only consider locals owned by the same function + if (existingLocal.envOwner == envOwner && existingLocal.envSlotIndex >= 0) { + let endOfSlot = existingLocal.envSlotIndex + existingLocal.type.byteSize; + if (endOfSlot > currentOffset) currentOffset = endOfSlot; + } + } + } + // Then check locals in current captures map that belong to the same envOwner + for (let _keys = Map_keys(captures), idx = 0, cnt = _keys.length; idx < cnt; ++idx) { + let existingLocal = _keys[idx]; + if (existingLocal.envOwner == envOwner && existingLocal.envSlotIndex >= 0) { + let endOfSlot = existingLocal.envSlotIndex + existingLocal.type.byteSize; + if (endOfSlot > currentOffset) currentOffset = endOfSlot; + } + } + let typeSize = local.type.byteSize; + let align = typeSize; + currentOffset = (currentOffset + align - 1) & ~(align - 1); + local.envSlotIndex = currentOffset; + captures.set(local, local.envSlotIndex); + } + } + break; + } + case NodeKind.This: { + // Handle 'this' capture + let local = outerFlow.lookupLocal(CommonNames.this_); + if (!local) { + local = outerFlow.lookupLocalInOuter(CommonNames.this_); + } + if (local && !captures.has(local)) { + local.isCaptured = true; + if (!local.envOwner) { + local.envOwner = local.parent; + } + // Check if local was accessed before capture was discovered - need recompilation + if (local.wasAccessedAsLocal) { + let ownerFunc = local.parent; + ownerFunc.needsCaptureRecompile = true; + } + if (local.envSlotIndex >= 0) { + captures.set(local, local.envSlotIndex); + } else { + // Calculate proper byte offset with alignment + // Consider both current captures AND the outer function's existing captures + let ptrSize = this.options.usizeType.byteSize; + let currentOffset = ptrSize; + // First check existing captured locals on the outer function + // Only consider locals that belong to the SAME envOwner + let envOwner = local.envOwner; + if (envOwner && envOwner.capturedLocals) { + let existingCaptures = changetype>(envOwner.capturedLocals); + for (let _keys = Map_keys(existingCaptures), idx = 0, cnt = _keys.length; idx < cnt; ++idx) { + let existingLocal = _keys[idx]; + // Only consider locals owned by the same function + if (existingLocal.envOwner == envOwner && existingLocal.envSlotIndex >= 0) { + let endOfSlot = existingLocal.envSlotIndex + existingLocal.type.byteSize; + if (endOfSlot > currentOffset) currentOffset = endOfSlot; + } + } + } + // Then check locals in current captures map that belong to the same envOwner + for (let _keys = Map_keys(captures), idx = 0, cnt = _keys.length; idx < cnt; ++idx) { + let existingLocal = _keys[idx]; + if (existingLocal.envOwner == envOwner && existingLocal.envSlotIndex >= 0) { + let endOfSlot = existingLocal.envSlotIndex + existingLocal.type.byteSize; + if (endOfSlot > currentOffset) currentOffset = endOfSlot; + } + } + let typeSize = local.type.byteSize; + let align = typeSize; + currentOffset = (currentOffset + align - 1) & ~(align - 1); + local.envSlotIndex = currentOffset; + captures.set(local, local.envSlotIndex); + } + } + break; + } + case NodeKind.Function: { + // For nested function expressions, scan their body but add their params to inner names + let funcExpr = node; + let decl = funcExpr.declaration; + let params = decl.signature.parameters; + // Scan parameter default values for captures (before adding params to inner names) + for (let i = 0, k = params.length; i < k; i++) { + let paramInit = params[i].initializer; + if (paramInit) { + this.scanNodeForCaptures(paramInit, outerFlow, innerFunctionNames, captures); + } + } + for (let i = 0, k = params.length; i < k; i++) { + innerFunctionNames.add(params[i].name.text); + } + let declBody = decl.body; + if (declBody) { + this.scanNodeForCaptures(declBody, outerFlow, innerFunctionNames, captures); + } + for (let i = 0, k = params.length; i < k; i++) { + innerFunctionNames.delete(params[i].name.text); + } + break; + } + // Expression nodes + case NodeKind.Assertion: { + let expr = node; + this.scanNodeForCaptures(expr.expression, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.Binary: { + let expr = node; + this.scanNodeForCaptures(expr.left, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(expr.right, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.Call: { + let expr = node; + this.scanNodeForCaptures(expr.expression, outerFlow, innerFunctionNames, captures); + let args = expr.args; + for (let i = 0, k = args.length; i < k; i++) { + this.scanNodeForCaptures(args[i], outerFlow, innerFunctionNames, captures); + } + break; + } + case NodeKind.Comma: { + let expr = node; + let expressions = expr.expressions; + for (let i = 0, k = expressions.length; i < k; i++) { + this.scanNodeForCaptures(expressions[i], outerFlow, innerFunctionNames, captures); + } + break; + } + case NodeKind.Literal: { + let literal = node; + if (literal.literalKind == LiteralKind.Array) { + let arrLiteral = literal; + let elements = arrLiteral.elementExpressions; + for (let i = 0, k = elements.length; i < k; i++) { + let elem = elements[i]; + if (elem) { + this.scanNodeForCaptures(elem, outerFlow, innerFunctionNames, captures); + } + } + } else if (literal.literalKind == LiteralKind.Object) { + let objLiteral = literal; + let values = objLiteral.values; + for (let i = 0, k = values.length; i < k; i++) { + this.scanNodeForCaptures(values[i], outerFlow, innerFunctionNames, captures); + } + } else if (literal.literalKind == LiteralKind.Template) { + let tmplLiteral = literal; + let expressions = tmplLiteral.expressions; + for (let i = 0, k = expressions.length; i < k; i++) { + this.scanNodeForCaptures(expressions[i], outerFlow, innerFunctionNames, captures); + } + } + // Other literal kinds (Integer, Float, String, RegExp) have no variable refs + break; + } + case NodeKind.ElementAccess: { + let expr = node; + this.scanNodeForCaptures(expr.expression, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(expr.elementExpression, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.New: { + let expr = node; + this.scanNodeForCaptures(expr.typeName, outerFlow, innerFunctionNames, captures); + let args = expr.args; + for (let i = 0, k = args.length; i < k; i++) { + this.scanNodeForCaptures(args[i], outerFlow, innerFunctionNames, captures); + } + break; + } + case NodeKind.Parenthesized: { + let expr = node; + this.scanNodeForCaptures(expr.expression, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.PropertyAccess: { + let expr = node; + this.scanNodeForCaptures(expr.expression, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.Ternary: { + let expr = node; + this.scanNodeForCaptures(expr.condition, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(expr.ifThen, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(expr.ifElse, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.UnaryPostfix: { + let expr = node; + this.scanNodeForCaptures(expr.operand, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.UnaryPrefix: { + let expr = node; + this.scanNodeForCaptures(expr.operand, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.InstanceOf: { + let expr = node; + this.scanNodeForCaptures(expr.expression, outerFlow, innerFunctionNames, captures); + break; + } + // Statement nodes + case NodeKind.Block: { + let stmt = node; + let statements = stmt.statements; + for (let i = 0, k = statements.length; i < k; i++) { + this.scanNodeForCaptures(statements[i], outerFlow, innerFunctionNames, captures); + } + break; + } + case NodeKind.Do: { + let stmt = node; + this.scanNodeForCaptures(stmt.body, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(stmt.condition, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.Expression: { + let stmt = node; + this.scanNodeForCaptures(stmt.expression, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.For: { + let stmt = node; + let forInit = stmt.initializer; + let forCond = stmt.condition; + let forIncr = stmt.incrementor; + if (forInit) this.scanNodeForCaptures(forInit, outerFlow, innerFunctionNames, captures); + if (forCond) this.scanNodeForCaptures(forCond, outerFlow, innerFunctionNames, captures); + if (forIncr) this.scanNodeForCaptures(forIncr, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(stmt.body, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.ForOf: { + let stmt = node; + this.scanNodeForCaptures(stmt.variable, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(stmt.iterable, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(stmt.body, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.If: { + let stmt = node; + this.scanNodeForCaptures(stmt.condition, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(stmt.ifTrue, outerFlow, innerFunctionNames, captures); + let ifFalse = stmt.ifFalse; + if (ifFalse) this.scanNodeForCaptures(ifFalse, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.Return: { + let stmt = node; + let retValue = stmt.value; + if (retValue) this.scanNodeForCaptures(retValue, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.Switch: { + let stmt = node; + this.scanNodeForCaptures(stmt.condition, outerFlow, innerFunctionNames, captures); + let cases = stmt.cases; + for (let i = 0, k = cases.length; i < k; i++) { + let case_ = cases[i]; + let caseLabel = case_.label; + if (caseLabel) this.scanNodeForCaptures(caseLabel, outerFlow, innerFunctionNames, captures); + let stmts = case_.statements; + for (let j = 0, l = stmts.length; j < l; j++) { + this.scanNodeForCaptures(stmts[j], outerFlow, innerFunctionNames, captures); + } + } + break; + } + case NodeKind.Throw: { + let stmt = node; + this.scanNodeForCaptures(stmt.value, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.Try: { + let stmt = node; + let bodyStmts = stmt.bodyStatements; + for (let i = 0, k = bodyStmts.length; i < k; i++) { + this.scanNodeForCaptures(bodyStmts[i], outerFlow, innerFunctionNames, captures); + } + let catchStmts = stmt.catchStatements; + if (catchStmts) { + for (let i = 0, k = catchStmts.length; i < k; i++) { + this.scanNodeForCaptures(catchStmts[i], outerFlow, innerFunctionNames, captures); + } + } + let finallyStmts = stmt.finallyStatements; + if (finallyStmts) { + for (let i = 0, k = finallyStmts.length; i < k; i++) { + this.scanNodeForCaptures(finallyStmts[i], outerFlow, innerFunctionNames, captures); + } + } + break; + } + case NodeKind.Variable: { + let stmt = node; + let declarations = stmt.declarations; + for (let i = 0, k = declarations.length; i < k; i++) { + let decl = declarations[i]; + // Add the variable name as a local name (not captured from outer) + innerFunctionNames.add(decl.name.text); + let declInit = decl.initializer; + if (declInit) { + this.scanNodeForCaptures(declInit, outerFlow, innerFunctionNames, captures); + } + } + break; + } + case NodeKind.While: { + let stmt = node; + this.scanNodeForCaptures(stmt.condition, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(stmt.body, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.Void: { + let stmt = node; + this.scanNodeForCaptures(stmt.expression, outerFlow, innerFunctionNames, captures); + break; + } + + // Leaf nodes - no children to scan, no captures possible + case NodeKind.Null: + case NodeKind.True: + case NodeKind.False: + case NodeKind.Super: + case NodeKind.Constructor: + case NodeKind.Break: + case NodeKind.Continue: + case NodeKind.Empty: + case NodeKind.Omitted: + case NodeKind.Comment: + case NodeKind.Compiled: + break; + + // Class expressions - not supported (will error during compilation) + case NodeKind.Class: + break; + + // Type nodes - types don't contain runtime captures + case NodeKind.TypeName: + case NodeKind.NamedType: + case NodeKind.FunctionType: + case NodeKind.TypeParameter: + case NodeKind.Parameter: // Parameter initializers handled separately in Function case + break; + + // Top-level declarations - should not appear inside function bodies being scanned + case NodeKind.Source: + case NodeKind.ClassDeclaration: + case NodeKind.EnumDeclaration: + case NodeKind.EnumValueDeclaration: + case NodeKind.FunctionDeclaration: + case NodeKind.InterfaceDeclaration: + case NodeKind.NamespaceDeclaration: + case NodeKind.TypeDeclaration: + case NodeKind.Import: + case NodeKind.Export: + case NodeKind.ExportDefault: + case NodeKind.ExportImport: + case NodeKind.Module: + case NodeKind.Decorator: + case NodeKind.IndexSignature: + case NodeKind.FieldDeclaration: + case NodeKind.ImportDeclaration: + case NodeKind.ExportMember: + case NodeKind.MethodDeclaration: + case NodeKind.VariableDeclaration: + case NodeKind.SwitchCase: // Handled inline in Switch case + break; + + default: + assert(false, "scanNodeForCaptures: unhandled node kind: " + (node.kind as i32).toString()); + } + } + + /** Analyzes a function expression to find captured variables from outer scopes. */ + private analyzeCapturedVariables( + declaration: FunctionDeclaration, + outerFlow: Flow + ): Map { + let captures = new Map(); + let innerFunctionNames = new Set(); + + // Scan parameter default values for captures (before adding params to inner names) + let params = declaration.signature.parameters; + for (let i = 0, k = params.length; i < k; i++) { + let paramInit = params[i].initializer; + if (paramInit) { + this.scanNodeForCaptures(paramInit, outerFlow, innerFunctionNames, captures); + } + } + + // Add the function's own parameters to the inner names set + for (let i = 0, k = params.length; i < k; i++) { + innerFunctionNames.add(params[i].name.text); + } + + // Scan the function body + let body = declaration.body; + if (body) { + this.scanNodeForCaptures(body, outerFlow, innerFunctionNames, captures); + } + + return captures; + } + + /** Computes the total size needed for a closure environment. */ + private computeEnvironmentSize(captures: Map): i32 { + // Calculate the total size based on already-assigned slot indices + // The envSlotIndex values were already assigned during capture analysis + // Slot 0 is always reserved for the parent environment pointer + let usizeSize = this.options.usizeType.byteSize; + let maxEnd = usizeSize; // Minimum size is parent pointer slot + for (let _keys = Map_keys(captures), i = 0, k = _keys.length; i < k; i++) { + let local = _keys[i]; + let endOfSlot = local.envSlotIndex + local.type.byteSize; + if (endOfSlot > maxEnd) maxEnd = endOfSlot; + } + // Ensure total size is aligned to pointer size + return (maxEnd + usizeSize - 1) & ~(usizeSize - 1); + } + + /** Ensures closure environments are set up for all functions that own captured variables. */ + private ensureClosureEnvironmentsForCaptures( + captures: Map, + flow: Flow + ): void { + // Group captures by owner since variables may come from different nesting levels + let envOwners = new Map>(); + for (let _keys = Map_keys(captures), i = 0, k = _keys.length; i < k; i++) { + let local = _keys[i]; + let owner = assert(local.envOwner); + let ownerCaptures = envOwners.get(owner); + if (!ownerCaptures) { + ownerCaptures = new Map(); + envOwners.set(owner, ownerCaptures); + } + ownerCaptures.set(local, captures.get(local) as i32); + } + for (let _keys = Map_keys(envOwners), i = 0, k = _keys.length; i < k; i++) { + let owner = _keys[i]; + let ownerCaptures = assert(envOwners.get(owner)); + this.ensureClosureEnvironment(owner, ownerCaptures, flow); + } + } + + /** Ensures a closure environment is set up for the outer function. */ + private ensureClosureEnvironment( + outerFunc: Function, + captures: Map, + flow: Flow + ): void { + // If the outer function already has an environment, just merge the captures + if (outerFunc.envLocal) { + // Merge captures into existing environment + let existingCaptures = outerFunc.capturedLocals; + if (existingCaptures) { + for (let _keys = Map_keys(captures), i = 0, k = _keys.length; i < k; i++) { + let local = _keys[i]; + if (!existingCaptures.has(local)) { + existingCaptures.set(local, captures.get(local) as i32); + } + } + } + return; + } + + // Create a new environment local for the outer function + let usizeType = this.options.usizeType; + outerFunc.envLocal = flow.addScopedLocal("$env", usizeType); + outerFunc.capturedLocals = captures; + + // Compute the environment size + this.computeEnvironmentSize(captures); + } + + /** Compiles the creation of a closure Function object with environment pointer. */ + private compileClosureFunctionCreation( + instance: Function, + outerFunc: Function + ): ExpressionRef { + let module = this.module; + let program = this.program; + let options = this.options; + let sizeTypeRef = options.sizeTypeRef; + let usizeType = options.usizeType; + + // Get the Function wrapper class for this function type + let rtInstance = assert(this.resolver.resolveClass(program.functionPrototype, [instance.type])); + + // Create the Function object dynamically using __new + let classId = rtInstance.id; + let classSize = rtInstance.nextMemoryOffset; + + // Get __new function + let newInstance = program.newInstance; + assert(newInstance); + this.compileFunction(newInstance); + + // Allocate the Function object: __new(size, classId) + let allocExpr = module.call( + newInstance.internalName, + [ + options.isWasm64 ? module.i64(classSize) : module.i32(classSize), + module.i32(classId) + ], + sizeTypeRef + ); + + // Store the allocation result in a temp local + let flow = this.currentFlow; + let funcPtrLocal = flow.getTempLocal(usizeType); + flow.setLocalFlag(funcPtrLocal.index, LocalFlags.Wrapped); + + // Get the environment pointer from the outer function + // For nested closures, the outer function might not own the environment + // - it might be using closureEnvLocal (a cached copy from an even outer function) + let envPtrExpr: ExpressionRef; + let outerEnvLocal = outerFunc.envLocal; + let outerClosureEnvLocal = outerFunc.closureEnvLocal; + if (outerEnvLocal) { + // Outer function owns an environment - use it + envPtrExpr = module.local_get(outerEnvLocal.index, sizeTypeRef); + } else if (outerClosureEnvLocal) { + // Outer function is a closure - use its cached environment from the outer scope + envPtrExpr = module.local_get(outerClosureEnvLocal.index, sizeTypeRef); + } else { + envPtrExpr = options.isWasm64 ? module.i64(0) : module.i32(0); + } + + // Get the function table index + let tableBase = options.tableBase; + if (!tableBase) tableBase = 1; + let funcIndex = tableBase + this.functionTable.indexOf(instance); + + // Get field offsets for Function class + let indexOffset = rtInstance.offsetof("_index"); + let envOffset = rtInstance.offsetof("_env"); + + // Build the block: + // 1. Allocate Function object + // 2. Store _index + // 3. Store _env + // 4. Return pointer + let stmts: ExpressionRef[] = [ + // funcPtr = __new(size, classId) + module.local_set(funcPtrLocal.index, allocExpr, false), + // funcPtr._index = index + module.store(4, // _index is always u32 + module.local_get(funcPtrLocal.index, sizeTypeRef), + module.i32(funcIndex), + TypeRef.I32, + indexOffset + ), + // funcPtr._env = envPtr + module.store(usizeType.byteSize, + module.local_get(funcPtrLocal.index, sizeTypeRef), + envPtrExpr, + sizeTypeRef, + envOffset + ), + // Return funcPtr + module.local_get(funcPtrLocal.index, sizeTypeRef) + ]; + + this.currentType = instance.type; + + return module.block(null, stmts, sizeTypeRef); + } + + /** Gets the environment pointer for accessing a captured variable. */ + private getClosureEnvironmentPointer(capturedLocal: Local): ExpressionRef { + let module = this.module; + let flow = this.currentFlow; + let currentFunc = flow.sourceFunction; + let sizeTypeRef = this.options.sizeTypeRef; + let envOwner = capturedLocal.envOwner; + + // Case 1: We're in the function that owns the environment (the variable was declared here) + let envLocal = currentFunc.envLocal; + if (envOwner == currentFunc && envLocal) { + return module.local_get(envLocal.index, sizeTypeRef); + } + + // Case 2: We're in a closure and need to access a variable from an outer scope + // Start from our closure's environment and traverse parent pointers + let envExpr: ExpressionRef; + let closureEnvLocal = currentFunc.closureEnvLocal; + if (closureEnvLocal) { + envExpr = module.local_get(closureEnvLocal.index, sizeTypeRef); + } else { + // Fallback to global (shouldn't normally happen) + let closureEnvGlobal = this.ensureClosureEnvironmentGlobal(); + envExpr = module.global_get(closureEnvGlobal, sizeTypeRef); + } + + // Count how many levels up we need to go + // Start from current function's outer function and walk up to find envOwner + // Only count functions that have their own environment (envLocal set) + let func: Function | null = currentFunc.outerFunction; + let depth = 0; + while (func && func != envOwner) { + // Only increment depth if this function has its own environment + // Functions without envLocal just pass through their parent's environment + if (func.envLocal) { + depth++; + } + func = func.outerFunction; + } + + // Traverse the parent chain: load parent pointer (at offset 0) `depth` times + for (let i = 0; i < depth; i++) { + envExpr = module.load( + this.options.usizeType.byteSize, + false, // unsigned + envExpr, + sizeTypeRef, + 0 // Parent pointer is at offset 0 + ); + } + + return envExpr; + } + + /** Compiles loading a captured variable from the closure environment. */ + private compileClosureLoad(local: Local, expression: Node | null = null): ExpressionRef { + let module = this.module; + let localType = local.type; + let slotOffset = local.envSlotIndex; + + // Get the environment pointer + let envPtr = this.getClosureEnvironmentPointer(local); + + // Load from the environment: load(envPtr + slotOffset) + this.currentType = localType; + return module.load( + localType.byteSize, + localType.is(TypeFlags.Signed), + envPtr, + localType.toRef(), + slotOffset + ); + } + + /** Compiles storing a value to a captured variable in the closure environment. */ + private compileClosureStore( + local: Local, + valueExpr: ExpressionRef, + valueType: Type + ): ExpressionRef { + let module = this.module; + let localType = local.type; + let slotOffset = local.envSlotIndex; + + // Get the environment pointer + let envPtr = this.getClosureEnvironmentPointer(local); + + // Store to the environment: store(envPtr + slotOffset, value) + return module.store( + localType.byteSize, + envPtr, + valueExpr, + localType.toRef(), + slotOffset + ); + } + + /** Compiles the allocation of a closure environment at function entry. */ + private compileClosureEnvironmentAllocation(instance: Function): ExpressionRef { + let module = this.module; + let program = this.program; + let options = this.options; + let sizeTypeRef = options.sizeTypeRef; + let usizeType = options.usizeType; + + let captures = assert(instance.capturedLocals); + let envLocal = assert(instance.envLocal); + + // Calculate the total size needed for the environment + let envSize = this.computeEnvironmentSize(captures); + + // Get __alloc function for raw memory allocation + let allocInstance = program.allocInstance; + assert(allocInstance); + this.compileFunction(allocInstance); + + // Allocate the environment: __alloc(size) + let allocExpr = module.call( + allocInstance.internalName, + [ + options.isWasm64 ? module.i64(envSize) : module.i32(envSize) + ], + sizeTypeRef + ); + + let stmts: ExpressionRef[] = []; + + // envLocal = __alloc(envSize) + stmts.push( + module.local_set(envLocal.index, allocExpr, false) + ); + + // Store parent environment pointer at slot 0 + // If this is a closure (has outerFunction), use closureEnvLocal as parent + // Otherwise, parent is null (0) + let parentEnvExpr: ExpressionRef; + let closureEnvLocal = instance.closureEnvLocal; + if (closureEnvLocal) { + // This is a nested closure - use the cached closure env as parent + parentEnvExpr = module.local_get(closureEnvLocal.index, sizeTypeRef); + } else { + // This is the outermost function - no parent + parentEnvExpr = options.isWasm64 ? module.i64(0) : module.i32(0); + } + stmts.push( + module.store( + usizeType.byteSize, + module.local_get(envLocal.index, sizeTypeRef), + parentEnvExpr, + sizeTypeRef, + 0 // Parent pointer is at offset 0 + ) + ); + + // Initialize captured parameters in the environment + // Parameters are already initialized, so copy them now + // Local variables (var/let) will be initialized later when they're declared + let signature = instance.signature; + let numParams = signature.parameterTypes.length; + let hasThis = signature.thisType != null; + let paramStartIndex = hasThis ? 1 : 0; + let paramEndIndex = paramStartIndex + numParams; + + for (let _keys = Map_keys(captures), i = 0, k = _keys.length; i < k; i++) { + let local = _keys[i]; + let slotOffset = local.envSlotIndex; + let localType = local.type; + + // Copy parameters and 'this' to the environment + // Local variables (var/let) will be initialized later when their declaration is compiled + let isParameter = local.index >= paramStartIndex && local.index < paramEndIndex; + let isThis = hasThis && local.index == 0; // 'this' is at index 0 in methods + if (isParameter || isThis) { + stmts.push( + module.store( + localType.byteSize, + module.local_get(envLocal.index, sizeTypeRef), + module.local_get(local.index, localType.toRef()), + localType.toRef(), + slotOffset + ) + ); + } + } + + // Mark environment as initialized + this.currentFlow.setLocalFlag(envLocal.index, LocalFlags.Initialized); + + return module.flatten(stmts, TypeRef.None); + } + + /** Makes sure the enclosing source file of the specified expression has been compiled. */ + private maybeCompileEnclosingSource(expression: Expression): void { + let internalPath = expression.range.source.internalPath; + let filesByName = this.program.filesByName; + assert(filesByName.has(internalPath)); + let enclosingFile = assert(filesByName.get(internalPath)); + if (!enclosingFile.is(CommonFlags.Compiled)) { this.compileFileByPath(internalPath, expression); } } @@ -7399,6 +8928,22 @@ export class Compiler extends DiagnosticEmitter { } case NodeKind.This: { let thisType = sourceFunction.signature.thisType; + + // Check if 'this' is captured from an outer scope (closure case) + if (!thisType && this.options.hasFeature(Feature.Closures)) { + // Look for 'this' in outer flow - it might be captured + let thisLocal = flow.lookupLocal(CommonNames.this_); + if (!thisLocal) { + thisLocal = flow.lookupLocalInOuter(CommonNames.this_); + } + if (thisLocal && thisLocal.isCaptured && thisLocal.envSlotIndex >= 0) { + // 'this' is captured - load from closure environment + flow.set(FlowFlags.AccessesThis); + this.currentType = thisLocal.type; + return this.compileClosureLoad(thisLocal, expression); + } + } + if (!thisType) { this.error( DiagnosticCode._this_cannot_be_referenced_in_current_location, @@ -7505,6 +9050,31 @@ export class Compiler extends DiagnosticEmitter { return this.compileInlineConstant(local, contextualType, constraints); } let localIndex = local.index; + + // Handle closure access BEFORE initialization check + // Captured variables are stored in the environment, not in flow locals + if (!local.declaredByFlow(flow)) { + // Closure: load from environment (from inner function) + if (local.isCaptured && local.envSlotIndex >= 0) { + this.currentType = localType; + return this.compileClosureLoad(local, expression); + } + // Not a recognized closure - error + this.error( + DiagnosticCode.Not_implemented_0, + expression.range, + "Closures" + ); + return module.unreachable(); + } + // Also handle captured locals in the declaring function + // When a local is captured, its value lives in the environment + let sourceFunc = flow.sourceFunction; + if (local.isCaptured && local.envSlotIndex >= 0 && sourceFunc.envLocal) { + this.currentType = localType; + return this.compileClosureLoad(local, expression); + } + if (!flow.isLocalFlag(localIndex, LocalFlags.Initialized)) { this.error( DiagnosticCode.Variable_0_is_used_before_being_assigned, @@ -7519,15 +9089,10 @@ export class Compiler extends DiagnosticEmitter { this.currentType = localType; } - if (!local.declaredByFlow(flow)) { - // TODO: closures - this.error( - DiagnosticCode.Not_implemented_0, - expression.range, - "Closures" - ); - return module.unreachable(); - } + // Track that we accessed this as a regular local (for closure recompilation detection) + // Only set if not already captured (to avoid infinite recompilation loops) + if (!local.isCaptured) local.wasAccessedAsLocal = true; + let expr = module.local_get(localIndex, localType.toRef()); if (isNonNull && localType.isNullableExternalReference && this.options.hasFeature(Feature.GC)) { // If the local's type is nullable, but its value is known to be non-null, propagate @@ -7868,7 +9433,7 @@ export class Compiler extends DiagnosticEmitter { stmts.length = 1; stmts.push( module.i32(1) - ); + ); module.removeFunction(name); module.addFunction(name, sizeType, TypeRef.I32, [ TypeRef.I32 ], module.block(null, stmts, TypeRef.I32)); } diff --git a/src/diagnosticMessages.json b/src/diagnosticMessages.json index bd12f1f7e3..2aa5edf9a1 100644 --- a/src/diagnosticMessages.json +++ b/src/diagnosticMessages.json @@ -52,6 +52,7 @@ "Initializer, definitive assignment or nullable type expected.": 238, "Definitive assignment has no effect on local variables.": 239, "Ambiguous operator overload '{0}' (conflicting overloads '{1}' and '{2}').": 240, + "Only Error or its subclasses can be thrown, but found type '{0}'.": 241, "Importing the table disables some indirect call optimizations.": 901, "Exporting the table disables some indirect call optimizations.": 902, diff --git a/src/flow.ts b/src/flow.ts index ddc7941916..9d8e7588a5 100644 --- a/src/flow.ts +++ b/src/flow.ts @@ -265,12 +265,35 @@ export class Flow { trueFlows: Map | null = null; /** Alternative flows if a compound expression is false-ish. */ falseFlows: Map | null = null; + /** Try-finally context: local index for pending action (0=none, 1=return, 2=break, 3=continue). */ + tryFinallyPendingActionLocal: i32 = -1; + /** Try-finally context: local index for pending return value. */ + tryFinallyPendingValueLocal: i32 = -1; + /** Try-finally context: label to branch to for finally dispatch. */ + tryFinallyDispatchLabel: string | null = null; + /** Try-finally context: return type for the pending value. */ + tryFinallyReturnType: Type | null = null; /** Tests if this is an inline flow. */ get isInline(): bool { return this.inlineFunction != null; } + /** Tests if this flow or any parent is in a try-finally context. */ + get isInTryFinally(): bool { + return this.tryFinallyPendingActionLocal >= 0; + } + + /** Gets the try-finally context from this flow or a parent flow. */ + getTryFinallyContext(): Flow | null { + let flow: Flow | null = this; + while (flow) { + if (flow.tryFinallyPendingActionLocal >= 0) return flow; + flow = flow.parent; + } + return null; + } + /** Gets the source function being compiled. Differs from target when inlining. */ get sourceFunction(): Function { // Obtaining the source function is useful when resolving elements relative @@ -536,6 +559,17 @@ export class Flow { return null; } + /** Looks up a local in outer function scopes (for closures). */ + lookupLocalInOuter(name: string): Local | null { + let outerFlow: Flow | null = this.outer; + while (outerFlow) { + let local = outerFlow.lookupLocal(name); + if (local) return local; + outerFlow = outerFlow.outer; + } + return null; + } + /** Looks up the element with the specified name relative to the scope of this flow. */ lookup(name: string): Element | null { let element = this.lookupLocal(name); diff --git a/src/index-wasm.ts b/src/index-wasm.ts index ec51de73da..12539ac43e 100644 --- a/src/index-wasm.ts +++ b/src/index-wasm.ts @@ -202,6 +202,8 @@ export const FEATURE_RELAXED_SIMD = Feature.RelaxedSimd; export const FEATURE_EXTENDED_CONST = Feature.ExtendedConst; /** String references. */ export const FEATURE_STRINGREF = Feature.Stringref; +/** Closures. */ +export const FEATURE_CLOSURES = Feature.Closures; /** All features. */ export const FEATURES_ALL = Feature.All; /** Default features. */ diff --git a/src/module.ts b/src/module.ts index 2719f60c50..fede5675f1 100644 --- a/src/module.ts +++ b/src/module.ts @@ -251,74 +251,74 @@ export const enum ExpressionId { AtomicWait = 26 /* _BinaryenAtomicWaitId */, AtomicNotify = 27 /* _BinaryenAtomicNotifyId */, AtomicFence = 28 /* _BinaryenAtomicFenceId */, - SIMDExtract = 29 /* _BinaryenSIMDExtractId */, - SIMDReplace = 30 /* _BinaryenSIMDReplaceId */, - SIMDShuffle = 31 /* _BinaryenSIMDShuffleId */, - SIMDTernary = 32 /* _BinaryenSIMDTernaryId */, - SIMDShift = 33 /* _BinaryenSIMDShiftId */, - SIMDLoad = 34 /* _BinaryenSIMDLoadId */, - SIMDLoadStoreLane = 35 /* _BinaryenSIMDLoadStoreLaneId */, - MemoryInit = 36 /* _BinaryenMemoryInitId */, - DataDrop = 37 /* _BinaryenDataDropId */, - MemoryCopy = 38 /* _BinaryenMemoryCopyId */, - MemoryFill = 39 /* _BinaryenMemoryFillId */, - Pop = 40 /* _BinaryenPopId */, - RefNull = 41 /* _BinaryenRefNullId */, - RefIsNull = 42 /* _BinaryenRefIsNullId */, - RefFunc = 43 /* _BinaryenRefFuncId */, - RefEq = 44 /* _BinaryenRefEqId */, - TableGet = 45 /* _BinaryenTableGetId */, - TableSet = 46 /* _BinaryenTableSetId */, - TableSize = 47 /* _BinaryenTableSizeId */, - TableGrow = 48 /* _BinaryenTableGrowId */, - TableFill = 49 /* _BinaryenTableFillId */, - TableCopy = 50 /* _BinaryenTableCopyId */, - TableInit = 51 /* _BinaryenTableInitId */, - Try = 52 /* _BinaryenTryId */, - TryTable = 53 /* _BinaryenTryTableId */, - Throw = 54 /* _BinaryenThrowId */, - Rethrow = 55 /* _BinaryenRethrowId */, - ThrowRef = 56 /* _BinaryenThrowRefId */, - TupleMake = 57 /* _BinaryenTupleMakeId */, - TupleExtract = 58 /* _BinaryenTupleExtractId */, - RefI31 = 59 /* _BinaryenRefI31Id */, - I31Get = 60 /* _BinaryenI31GetId */, - CallRef = 61 /* _BinaryenCallRefId */, - RefTest = 62 /* _BinaryenRefTestId */, - RefCast = 63 /* _BinaryenRefCastId */, - RefGetDesc = 64 /* _BinaryenRefGetDescId */, - BrOn = 65 /* _BinaryenBrOnId */, - StructNew = 66 /* _BinaryenStructNewId */, - StructGet = 67 /* _BinaryenStructGetId */, - StructSet = 68 /* _BinaryenStructSetId */, - StructRMW = 69 /* _BinaryenStructRMWId */, - StructCmpxchg = 70 /* _BinaryenStructCmpxchgId */, - ArrayNew = 71 /* _BinaryenArrayNewId */, - ArrayNewData = 72 /* _BinaryenArrayNewDataId */, - ArrayNewElem = 73 /* _BinaryenArrayNewElemId */, - ArrayNewFixed = 74 /* _BinaryenArrayNewFixedId */, - ArrayGet = 75 /* _BinaryenArrayGetId */, - ArraySet = 76 /* _BinaryenArraySetId */, - ArrayLen = 77 /* _BinaryenArrayLenId */, - ArrayCopy = 78 /* _BinaryenArrayCopyId */, - ArrayFill = 79 /* _BinaryenArrayFillId */, - ArrayInitData = 80 /* _BinaryenArrayInitDataId */, - ArrayInitElem = 81 /* _BinaryenArrayInitElemId */, - RefAs = 82 /* _BinaryenRefAsId */, - StringNew = 83 /* _BinaryenStringNewId */, - StringConst = 84 /* _BinaryenStringConstId */, - StringMeasure = 85 /* _BinaryenStringMeasureId */, - StringEncode = 86 /* _BinaryenStringEncodeId */, - StringConcat = 87 /* _BinaryenStringConcatId */, - StringEq = 88 /* _BinaryenStringEqId */, - StringWTF16Get = 89 /* _BinaryenStringWTF16GetId */, - StringSliceWTF = 90 /* _BinaryenStringSliceWTFId */, - ContNew = 91 /* _BinaryenContNewId */, - ContBind = 92 /* _BinaryenContBindId */, - Suspend = 93 /* _BinaryenSuspendId */, - Resume = 94 /* _BinaryenResumeId */, - ResumeThrow = 95 /* _BinaryenResumeThrowId */, - StackSwitch = 96 /* _BinaryenStackSwitchId */ + SIMDExtract = 30 /* _BinaryenSIMDExtractId */, + SIMDReplace = 31 /* _BinaryenSIMDReplaceId */, + SIMDShuffle = 32 /* _BinaryenSIMDShuffleId */, + SIMDTernary = 33 /* _BinaryenSIMDTernaryId */, + SIMDShift = 34 /* _BinaryenSIMDShiftId */, + SIMDLoad = 35 /* _BinaryenSIMDLoadId */, + SIMDLoadStoreLane = 36 /* _BinaryenSIMDLoadStoreLaneId */, + MemoryInit = 37 /* _BinaryenMemoryInitId */, + DataDrop = 38 /* _BinaryenDataDropId */, + MemoryCopy = 39 /* _BinaryenMemoryCopyId */, + MemoryFill = 40 /* _BinaryenMemoryFillId */, + Pop = 41 /* _BinaryenPopId */, + RefNull = 42 /* _BinaryenRefNullId */, + RefIsNull = 43 /* _BinaryenRefIsNullId */, + RefFunc = 44 /* _BinaryenRefFuncId */, + RefEq = 45 /* _BinaryenRefEqId */, + TableGet = 46 /* _BinaryenTableGetId */, + TableSet = 47 /* _BinaryenTableSetId */, + TableSize = 48 /* _BinaryenTableSizeId */, + TableGrow = 49 /* _BinaryenTableGrowId */, + TableFill = 50 /* _BinaryenTableFillId */, + TableCopy = 51 /* _BinaryenTableCopyId */, + TableInit = 52 /* _BinaryenTableInitId */, + Try = 54 /* _BinaryenTryId */, + TryTable = 55 /* _BinaryenTryTableId */, + Throw = 56 /* _BinaryenThrowId */, + Rethrow = 57 /* _BinaryenRethrowId */, + ThrowRef = 58 /* _BinaryenThrowRefId */, + TupleMake = 59 /* _BinaryenTupleMakeId */, + TupleExtract = 60 /* _BinaryenTupleExtractId */, + RefI31 = 61 /* _BinaryenRefI31Id */, + I31Get = 62 /* _BinaryenI31GetId */, + CallRef = 63 /* _BinaryenCallRefId */, + RefTest = 64 /* _BinaryenRefTestId */, + RefCast = 65 /* _BinaryenRefCastId */, + RefGetDesc = 66 /* _BinaryenRefGetDescId */, + BrOn = 67 /* _BinaryenBrOnId */, + StructNew = 68 /* _BinaryenStructNewId */, + StructGet = 69 /* _BinaryenStructGetId */, + StructSet = 70 /* _BinaryenStructSetId */, + StructRMW = 71 /* _BinaryenStructRMWId */, + StructCmpxchg = 72 /* _BinaryenStructCmpxchgId */, + ArrayNew = 73 /* _BinaryenArrayNewId */, + ArrayNewData = 74 /* _BinaryenArrayNewDataId */, + ArrayNewElem = 75 /* _BinaryenArrayNewElemId */, + ArrayNewFixed = 76 /* _BinaryenArrayNewFixedId */, + ArrayGet = 77 /* _BinaryenArrayGetId */, + ArraySet = 78 /* _BinaryenArraySetId */, + ArrayLen = 79 /* _BinaryenArrayLenId */, + ArrayCopy = 80 /* _BinaryenArrayCopyId */, + ArrayFill = 81 /* _BinaryenArrayFillId */, + ArrayInitData = 82 /* _BinaryenArrayInitDataId */, + ArrayInitElem = 83 /* _BinaryenArrayInitElemId */, + RefAs = 86 /* _BinaryenRefAsId */, + StringNew = 87 /* _BinaryenStringNewId */, + StringConst = 88 /* _BinaryenStringConstId */, + StringMeasure = 89 /* _BinaryenStringMeasureId */, + StringEncode = 90 /* _BinaryenStringEncodeId */, + StringConcat = 91 /* _BinaryenStringConcatId */, + StringEq = 92 /* _BinaryenStringEqId */, + StringWTF16Get = 94 /* _BinaryenStringWTF16GetId */, + StringSliceWTF = 95 /* _BinaryenStringSliceWTFId */, + ContNew = 96 /* _BinaryenContNewId */, + ContBind = 97 /* _BinaryenContBindId */, + Suspend = 98 /* _BinaryenSuspendId */, + Resume = 99 /* _BinaryenResumeId */, + ResumeThrow = 100 /* _BinaryenResumeThrowId */, + StackSwitch = 101 /* _BinaryenStackSwitchId */ } /** Binaryen external kind constants. */ diff --git a/src/passes/shadowstack.ts b/src/passes/shadowstack.ts index d34997ed08..6f1857da37 100644 --- a/src/passes/shadowstack.ts +++ b/src/passes/shadowstack.ts @@ -109,6 +109,8 @@ import { _BinaryenFunctionSetBody, _BinaryenGetExport, _BinaryenGetFunction, + _BinaryenGetFunctionByIndex, + _BinaryenGetNumFunctions, _BinaryenLocalSetGetIndex, _BinaryenLocalSetGetValue, _BinaryenLocalSetIsTee, @@ -322,7 +324,7 @@ export class ShadowStackPass extends Pass { /** Makes a check that the current stack pointer is valid. */ makeStackCheck(): ExpressionRef { let module = this.module; - if (!this.hasStackCheckFunction) { + if (!this.hasStackCheckFunction && !module.hasFunction("~stack_check")) { this.hasStackCheckFunction = true; module.addFunction("~stack_check", TypeRef.None, TypeRef.None, null, module.if( @@ -573,65 +575,96 @@ export class ShadowStackPass extends Pass { /** @override */ walkModule(): void { - // Run the pass normally - super.walkModule(); - - // Instrument returns in functions utilizing stack slots + // Walk functions in a loop until no new functions are added. + // This is necessary because transforming __tostack calls and instrumenting + // functions may trigger compilation of new functions (e.g., via makeStackCheck -> makeStaticAbort). + let moduleRef = this.module.ref; let module = this.module; - let instrumentReturns = new InstrumentReturns(this); - for (let _keys = Map_keys(this.slotMaps), i = 0, k = _keys.length; i < k; ++i) { - let func = _keys[i]; - let slotMap = changetype(this.slotMaps.get(func)); - let frameSize = slotMap.size * this.ptrSize; + let lastNumFunctions: Index = 0; + let iteration = 0; - // Instrument function returns - instrumentReturns.frameSize = frameSize; - instrumentReturns.walkFunction(func); + // Set of functions that have already been instrumented + let instrumentedFunctions = new Set(); - // Instrument function entry - let stmts = new Array(); - // __stack_pointer -= frameSize - stmts.push( - this.makeStackOffset(-frameSize) - ); - // memory.fill(__stack_pointer, 0, frameSize) - this.makeStackFill(frameSize, stmts); - - // Handle implicit return - let body = _BinaryenFunctionGetBody(func); - let bodyType = _BinaryenExpressionGetType(body); - if (bodyType == TypeRef.Unreachable) { - // body - stmts.push( - body - ); - } else if (bodyType == TypeRef.None) { - // body - stmts.push( - body - ); - // __stack_pointer += frameSize - stmts.push( - this.makeStackOffset(+frameSize) - ); - } else { - let temp = this.getSharedTemp(func, bodyType); - // t = body - stmts.push( - module.local_set(temp, body, false) - ); - // __stack_pointer += frameSize - stmts.push( - this.makeStackOffset(+frameSize) - ); - // -> t + while (true) { + let currentNumFunctions = _BinaryenGetNumFunctions(moduleRef); + if (currentNumFunctions == lastNumFunctions) break; + + // Walk only the newly added functions (from lastNumFunctions to currentNumFunctions) + for (let i = lastNumFunctions; i < currentNumFunctions; ++i) { + this.walkFunction(_BinaryenGetFunctionByIndex(moduleRef, i)); + } + + // Instrument returns and entries for functions with slots that haven't been instrumented yet + let instrumentReturns = new InstrumentReturns(this); + for (let _keys = Map_keys(this.slotMaps), i = 0, k = _keys.length; i < k; ++i) { + let func = _keys[i]; + if (instrumentedFunctions.has(func)) continue; + instrumentedFunctions.add(func); + + let slotMap = changetype(this.slotMaps.get(func)); + let frameSize = slotMap.size * this.ptrSize; + + // Instrument function returns + instrumentReturns.frameSize = frameSize; + instrumentReturns.walkFunction(func); + + // Instrument function entry + let stmts = new Array(); + // __stack_pointer -= frameSize stmts.push( - module.local_get(temp, bodyType) + this.makeStackOffset(-frameSize) ); + // memory.fill(__stack_pointer, 0, frameSize) + this.makeStackFill(frameSize, stmts); + + // Handle implicit return + let body = _BinaryenFunctionGetBody(func); + let bodyType = _BinaryenExpressionGetType(body); + if (bodyType == TypeRef.Unreachable) { + // body + stmts.push( + body + ); + } else if (bodyType == TypeRef.None) { + // body + stmts.push( + body + ); + // __stack_pointer += frameSize + stmts.push( + this.makeStackOffset(+frameSize) + ); + } else { + let temp = this.getSharedTemp(func, bodyType); + // t = body + stmts.push( + module.local_set(temp, body, false) + ); + // __stack_pointer += frameSize + stmts.push( + this.makeStackOffset(+frameSize) + ); + // -> t + stmts.push( + module.local_get(temp, bodyType) + ); + } + _BinaryenFunctionSetBody(func, module.flatten(stmts, bodyType)); + } + + lastNumFunctions = currentNumFunctions; + iteration++; + + // Safety limit to prevent infinite loops + if (iteration > 100) { + throw new Error("ShadowStackPass: too many iterations, possible infinite loop"); } - _BinaryenFunctionSetBody(func, module.flatten(stmts, bodyType)); } + // Walk globals (only once, since they don't trigger new function compilation) + this.walkGlobals(); + // Update functions we added more locals to // TODO: _BinaryenFunctionAddVar ? for (let _keys = Map_keys(this.tempMaps), i = 0, k = _keys.length; i < k; ++i) { diff --git a/src/program.ts b/src/program.ts index 8bcf1bfa19..2ea69df6c0 100644 --- a/src/program.ts +++ b/src/program.ts @@ -636,6 +636,14 @@ export class Program extends DiagnosticEmitter { } private _stringInstance: Class | null = null; + /** Gets the standard `Error` instance. */ + get errorInstance(): Class { + let cached = this._errorInstance; + if (!cached) this._errorInstance = cached = this.requireClass(CommonNames.Error); + return cached; + } + private _errorInstance: Class | null = null; + /** Gets the standard `RegExp` instance. */ get regexpInstance(): Class { let cached = this._regexpInstance; @@ -1086,6 +1094,8 @@ export class Program extends DiagnosticEmitter { i64_new(options.hasFeature(Feature.ExtendedConst) ? 1 : 0, 0)); this.registerConstantInteger(CommonNames.ASC_FEATURE_STRINGREF, Type.bool, i64_new(options.hasFeature(Feature.Stringref) ? 1 : 0, 0)); + this.registerConstantInteger(CommonNames.ASC_FEATURE_CLOSURES, Type.bool, + i64_new(options.hasFeature(Feature.Closures) ? 1 : 0, 0)); // remember deferred elements let queuedImports = new Array(); @@ -3628,6 +3638,18 @@ export class Local extends VariableLikeElement { /** Original name of the (temporary) local. */ private originalName: string; + /** Whether this local is captured by a closure. */ + isCaptured: bool = false; + + /** Environment slot index if captured, -1 otherwise. */ + envSlotIndex: i32 = -1; + + /** The function whose environment this local is stored in. Set when captured. */ + envOwner: Function | null = null; + + /** Whether this local was accessed as a regular wasm local (before capture was discovered). */ + wasAccessedAsLocal: bool = false; + /** Constructs a new local variable. */ constructor( /** Simple name. */ @@ -3785,6 +3807,32 @@ export class Function extends TypedElement { /** Counting id of anonymous inner functions. */ nextAnonymousId: i32 = 0; + // Closure support + + /** Set of locals from outer scopes that this function captures. Maps Local to slot index. */ + capturedLocals: Map | null = null; + + /** The environment class for this function's captured locals, if any. */ + envClass: Class | null = null; + + /** The local variable holding the environment pointer in outer function. */ + envLocal: Local | null = null; + + /** The outer function whose environment this closure accesses. */ + outerFunction: Function | null = null; + + /** Local variable in a closure function that caches the environment pointer from the global. + * This is needed because indirect calls can overwrite the global. */ + closureEnvLocal: Local | null = null; + + /** Whether this function needs recompilation due to late capture discovery. */ + needsCaptureRecompile: bool = false; + + /** Whether this function requires an environment (is a closure). */ + get needsEnvironment(): bool { + return this.capturedLocals != null && this.capturedLocals.size > 0; + } + /** Constructs a new concrete function. */ constructor( /** Name incl. type parameters, i.e. `foo`. */ diff --git a/src/resolver.ts b/src/resolver.ts index 0823838fa2..ffac0dba34 100644 --- a/src/resolver.ts +++ b/src/resolver.ts @@ -2175,6 +2175,16 @@ export class Resolver extends DiagnosticEmitter { return thisLocal; } } + // Check for captured 'this' in closures - look up in outer flow chain + let thisLocal = ctxFlow.lookupLocal(CommonNames.this_); + if (!thisLocal) { + thisLocal = ctxFlow.lookupLocalInOuter(CommonNames.this_); + } + if (thisLocal) { + this.currentThisExpression = null; + this.currentElementExpression = null; + return thisLocal; + } let parent = ctxFlow.sourceFunction.parent; if (parent) { this.currentThisExpression = null; diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index 1c23551993..f22556f343 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -2603,13 +2603,32 @@ export abstract class i31 { // FIXME: usage of 'new' requires a class :( // @ts-ignore: decorator @external("env", "abort") @external.js("throw Error(`${message} in ${fileName}:${lineNumber}:${columnNumber}`);") -declare function abort( +declare function __abort_impl( message?: string | null, fileName?: string | null, lineNumber?: u32, columnNumber?: u32 ): void; +// When exception-handling is enabled, abort throws an Error that can be caught. +// When disabled, it calls the external abort function (host implementation). +function abort( + message: string | null = null, + fileName: string | null = null, + lineNumber: u32 = 0, + columnNumber: u32 = 0 +): void { + if (isDefined(ASC_FEATURE_EXCEPTION_HANDLING)) { + let fullMessage = message ? message : "abort"; + if (fileName) { + fullMessage += " in " + fileName + ":" + lineNumber.toString() + ":" + columnNumber.toString(); + } + throw new Error(fullMessage); + } else { + __abort_impl(message, fileName, lineNumber, columnNumber); + } +} + // @ts-ignore: decorator @external("env", "trace") @external.js("console.log(message, ...[a0, a1, a2, a3, a4].slice(0, n));") diff --git a/std/assembly/shared/feature.ts b/std/assembly/shared/feature.ts index 1baa9ba3c9..0fc1ed113c 100644 --- a/std/assembly/shared/feature.ts +++ b/std/assembly/shared/feature.ts @@ -34,8 +34,10 @@ export const enum Feature { ExtendedConst = 1 << 13, // see: https://github.com/WebAssembly/extended-const /** Reference typed strings. */ Stringref = 1 << 14, // see: https://github.com/WebAssembly/stringref + /** Closures. */ + Closures = 1 << 15, /** All features. */ - All = (1 << 15) - 1 + All = (1 << 16) - 1 } /** Gets the name of the specified feature one would specify on the command line. */ @@ -56,6 +58,7 @@ export function featureToString(feature: Feature): string { case Feature.RelaxedSimd: return "relaxed-simd"; case Feature.ExtendedConst: return "extended-const"; case Feature.Stringref: return "stringref"; + case Feature.Closures: return "closures"; } assert(false); return ""; diff --git a/tests/compiler.js b/tests/compiler.js index 0b6018fa80..d568fb22b8 100644 --- a/tests/compiler.js +++ b/tests/compiler.js @@ -254,10 +254,10 @@ async function runTest(basename) { if (config.features) { config.features.forEach(feature => { - if (!features.includes(feature) && !features.includes("*")) { + let featureConfig = featuresConfig[feature]; + if (!features.includes(feature) && !features.includes("*") && !featureConfig.enabled) { missing_features.push(feature); } - let featureConfig = featuresConfig[feature]; if (featureConfig.asc_flags) { featureConfig.asc_flags.forEach(flag => { Array.prototype.push.apply(asc_flags, flag.split(" ")); diff --git a/tests/compiler/NonNullable.debug.wat b/tests/compiler/NonNullable.debug.wat index 52a1e1e96d..3ae726a864 100644 --- a/tests/compiler/NonNullable.debug.wat +++ b/tests/compiler/NonNullable.debug.wat @@ -1,26 +1,64 @@ (module - (type $0 (func)) - (type $1 (func (param i32) (result i32))) - (type $2 (func (param i32 i32) (result i32))) - (type $3 (func (param i32))) - (type $4 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $5 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (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/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $NonNullable/z (mut i32) (i32.const 224)) - (global $~lib/memory/__data_end i32 (i32.const 364)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33132)) - (global $~lib/memory/__heap_base i32 (i32.const 33132)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $NonNullable/z (mut i32) (i32.const 2592)) + (global $~lib/rt/__rtti_base i32 (i32.const 2736)) + (global $~lib/memory/__data_end i32 (i32.const 2760)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35528)) + (global $~lib/memory/__heap_base i32 (i32.const 35528)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00u\003\002\00\00\00\00\00\00\00") - (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00N\00o\00n\00N\00u\00l\00l\00a\00b\00l\00e\00.\00t\00s\00") - (data $2 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g\00") - (data $3 (i32.const 124) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00A\00r\00r\00a\00y\00<\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00/\00S\00t\00r\00i\00n\00g\00>\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00z\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 236) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $5 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 572) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 796) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $17 (i32.const 1196) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2252) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $19 (i32.const 2348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00N\00o\00n\00N\00u\00l\00l\00a\00b\00l\00e\00.\00t\00s\00") + (data $21 (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g\00") + (data $22 (i32.const 2492) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00A\00r\00r\00a\00y\00<\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00/\00S\00t\00r\00i\00n\00g\00>\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00z\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2604) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2736) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02A\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -142,6 +180,2622 @@ i32.const 0 return ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 352 + i32.const 416 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 224 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 160 + i32.const 496 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 160 + i32.const 224 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 796 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 796 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~start call $start:NonNullable ) @@ -150,8 +2804,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33152 - i32.const 33200 + i32.const 35552 + i32.const 35600 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -254,6 +2908,211 @@ local.get $3 return ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 128 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2368 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/string/String.__ne (param $left i32) (param $right i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer @@ -310,7 +3169,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 9 i32.const 3 call $~lib/builtins/abort @@ -364,37 +3223,54 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 304 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 448 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 32 i32.const 32 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 3 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 112 - i32.const 112 + i32.const 2480 + i32.const 2480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 4 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 144 - i32.const 144 + i32.const 2512 + i32.const 2512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -408,8 +3284,8 @@ if (result i32) local.get $0 else - i32.const 256 - i32.const 64 + i32.const 2624 + i32.const 2432 i32.const 20 i32.const 40 call $~lib/builtins/abort @@ -433,4 +3309,306 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 592 + i32.const 720 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 784 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $NonNullable/z + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 352 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 160 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1216 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2272 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<~lib/string/String>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array<~lib/string/String> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array<~lib/string/String> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + unreachable + ) + (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/NonNullable.release.wat b/tests/compiler/NonNullable.release.wat index 7f27ab78fa..46e7550416 100644 --- a/tests/compiler/NonNullable.release.wat +++ b/tests/compiler/NonNullable.release.wat @@ -1,25 +1,1761 @@ (module (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func (param i32 i32) (result i32))) - (type $3 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34156)) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36552)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02\00\00\00\06\00\00\00u\003\002") - (data $1 (i32.const 1068) ",") - (data $1.1 (i32.const 1080) "\02\00\00\00\1c\00\00\00N\00o\00n\00N\00u\00l\00l\00a\00b\00l\00e\00.\00t\00s") - (data $2 (i32.const 1116) "\1c") - (data $2.1 (i32.const 1128) "\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g") - (data $3 (i32.const 1148) "L") - (data $3.1 (i32.const 1160) "\02\00\00\002\00\00\00A\00r\00r\00a\00y\00<\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00/\00S\00t\00r\00i\00n\00g\00>") - (data $4 (i32.const 1228) "\1c") - (data $4.1 (i32.const 1240) "\02\00\00\00\02\00\00\00z") - (data $5 (i32.const 1260) "|") - (data $5.1 (i32.const 1272) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02") + (data $4 (i32.const 1164) "<") + (data $4.1 (i32.const 1176) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1228) "<") + (data $5.1 (i32.const 1240) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1356) "<") + (data $8.1 (i32.const 1368) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1420) ",") + (data $9.1 (i32.const 1432) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1500) "<") + (data $11.1 (i32.const 1512) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1564) "\1c") + (data $12.1 (i32.const 1576) "\02\00\00\00\02\00\00\00:") + (data $13 (i32.const 1596) "|") + (data $13.1 (i32.const 1608) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $14 (i32.const 1724) "<") + (data $14.1 (i32.const 1736) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $15 (i32.const 1788) "\1c") + (data $15.1 (i32.const 1800) "\02\00\00\00\02\00\00\000") + (data $16 (i32.const 1820) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $17 (i32.const 2220) "\1c\04") + (data $17.1 (i32.const 2232) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $18 (i32.const 3276) "\\") + (data $18.1 (i32.const 3288) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $19 (i32.const 3372) "<") + (data $19.1 (i32.const 3384) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $20 (i32.const 3436) ",") + (data $20.1 (i32.const 3448) "\02\00\00\00\1c\00\00\00N\00o\00n\00N\00u\00l\00l\00a\00b\00l\00e\00.\00t\00s") + (data $21 (i32.const 3484) "\1c") + (data $21.1 (i32.const 3496) "\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g") + (data $22 (i32.const 3516) "L") + (data $22.1 (i32.const 3528) "\02\00\00\002\00\00\00A\00r\00r\00a\00y\00<\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00/\00S\00t\00r\00i\00n\00g\00>") + (data $23 (i32.const 3596) "\1c") + (data $23.1 (i32.const 3608) "\02\00\00\00\02\00\00\00z") + (data $24 (i32.const 3628) "|") + (data $24.1 (i32.const 3640) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") + (data $25 (i32.const 3760) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02A") (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 3616 + call $~lib/rt/itcms/__visit + i32.const 1376 + call $~lib/rt/itcms/__visit + i32.const 1184 + call $~lib/rt/itcms/__visit + i32.const 2240 + call $~lib/rt/itcms/__visit + i32.const 3296 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1248 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$135 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36552 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$135 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3760 + i32.load + i32.gt_u + if + i32.const 1376 + i32.const 1440 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3764 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36560 + i32.const 0 + i32.store + i32.const 38128 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36560 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36560 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36560 + i32.const 38132 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36560 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36552 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1248 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36552 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36552 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1520 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1184 + i32.const 1248 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1184 + i32.const 1520 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1520 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3784 + i32.lt_s + if + i32.const 36576 + i32.const 36624 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1808 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~start global.get $~lib/memory/__stack_pointer i32.const 8 @@ -27,76 +1763,108 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1388 + i32.const 3784 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 36552 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/pinSpace + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/toSpace + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + global.set $~lib/rt/itcms/fromSpace i32.const 1056 i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 3 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1136 - i32.const 1136 + i32.const 3504 + i32.const 3504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 4 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1168 - i32.const 1168 + i32.const 3536 + i32.const 3536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 5 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1248 + i32.const 3616 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 1248 + i32.const 3616 i32.store call $NonNullable/assertNonNull<~lib/string/String> global.get $~lib/memory/__stack_pointer - i32.const 1248 + i32.const 3616 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1388 + i32.const 3784 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 1248 + i32.const 3616 i32.store call $~lib/string/String.__ne if global.get $~lib/memory/__stack_pointer - i32.const 1248 + i32.const 3616 i32.store call $NonNullable/assertNonNull<~lib/string/String> end @@ -110,8 +1878,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34176 - i32.const 34224 + i32.const 36576 + i32.const 36624 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -127,11 +1895,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1388 + i32.const 3784 i32.lt_s if - i32.const 34176 - i32.const 34224 + i32.const 36576 + i32.const 36624 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -230,7 +1998,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$3 + block $__inlined_func$~lib/util/string/compareImpl$77 loop $while-continue|1 local.get $0 local.tee $3 @@ -250,7 +2018,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$3 + br_if $__inlined_func$~lib/util/string/compareImpl$77 local.get $2 i32.const 2 i32.add @@ -279,6 +2047,205 @@ global.set $~lib/memory/__stack_pointer i32.const 0 ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3784 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3784 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$140 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1152 + local.set $0 + br $__inlined_func$~lib/string/String#concat$140 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36576 + i32.const 36624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3784 + i32.lt_s + if + i32.const 36576 + i32.const 36624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1088 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1120 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3392 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/string/String.__ne (result i32) (local $0 i32) global.get $~lib/memory/__stack_pointer @@ -286,11 +2253,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1388 + i32.const 3784 i32.lt_s if - i32.const 34176 - i32.const 34224 + i32.const 36576 + i32.const 36624 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -300,12 +2267,12 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 1248 + i32.const 3616 i32.store global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=4 - i32.const 1248 + i32.const 3616 i32.const 0 call $~lib/string/String.__eq i32.eqz @@ -320,11 +2287,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1388 + i32.const 3784 i32.lt_s if - i32.const 34176 - i32.const 34224 + i32.const 36576 + i32.const 36624 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -334,13 +2301,13 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 1248 + i32.const 3616 i32.store call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 9 i32.const 3 call $~lib/builtins/abort @@ -351,4 +2318,98 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $invalid + block $~lib/array/Array<~lib/string/String> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array<~lib/string/String> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3784 + i32.lt_s + if + i32.const 36576 + i32.const 36624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) ) diff --git a/tests/compiler/abi.debug.wat b/tests/compiler/abi.debug.wat index ea07555cab..6f45a1592f 100644 --- a/tests/compiler/abi.debug.wat +++ b/tests/compiler/abi.debug.wat @@ -1,15 +1,59 @@ (module - (type $0 (func (result i32))) - (type $1 (func)) - (type $2 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (result i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $abi/condition (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/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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $abi/y (mut i32) (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 44)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32812)) - (global $~lib/memory/__heap_base i32 (i32.const 32812)) + (global $~lib/rt/__rtti_base i32 (i32.const 2416)) + (global $~lib/memory/__data_end i32 (i32.const 2436)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35204)) + (global $~lib/memory/__heap_base i32 (i32.const 35204)) (memory $0 1) - (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s\00") + (data $20 (i32.const 2416) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "exported" (func $abi/exported)) @@ -21,6 +65,2635 @@ i32.const 128 return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $start:abi (local $x i32) (local $x|1 i32) @@ -32,6 +2705,23 @@ i32.const 0 i32.eqz global.set $abi/condition + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 256 local.set $x local.get $x @@ -40,7 +2730,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 32 i32.const 3 call $~lib/builtins/abort @@ -68,7 +2758,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -96,7 +2786,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 58 i32.const 3 call $~lib/builtins/abort @@ -110,7 +2800,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -125,7 +2815,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 72 i32.const 3 call $~lib/builtins/abort @@ -140,7 +2830,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 74 i32.const 3 call $~lib/builtins/abort @@ -153,7 +2843,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 77 i32.const 3 call $~lib/builtins/abort @@ -166,7 +2856,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 79 i32.const 3 call $~lib/builtins/abort @@ -190,4 +2880,421 @@ (func $~start call $start:abi ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35232 + i32.const 35280 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/abi.release.wat b/tests/compiler/abi.release.wat index 5320131fcb..3c9093d806 100644 --- a/tests/compiler/abi.release.wat +++ b/tests/compiler/abi.release.wat @@ -1,13 +1,85 @@ (module (type $0 (func (result i32))) + (type $1 (func)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 1036) "\1c") - (data $0.1 (i32.const 1048) "\02\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) "\1c") + (data $19.1 (i32.const 3416) "\02\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s") + (data $20 (i32.const 3440) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "exported" (func $abi/exported)) (export "exportedExported" (func $abi/exported)) (export "exportedInternal" (func $abi/exported)) (export "memory" (memory $0)) + (start $~start) (func $abi/exported (result i32) i32.const -128 ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36228 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + ) ) diff --git a/tests/compiler/assert-nonnull.debug.wat b/tests/compiler/assert-nonnull.debug.wat index 1edc6edeed..013383ff06 100644 --- a/tests/compiler/assert-nonnull.debug.wat +++ b/tests/compiler/assert-nonnull.debug.wat @@ -1,23 +1,61 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func (result i32))) + (type $1 (func (param i32 i32))) (type $2 (func (param i32 i32) (result i32))) - (type $3 (func (param i32 i32 i32 i32))) - (type $4 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $3 (func (param i32))) + (type $4 (func (result i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 444)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33212)) - (global $~lib/memory/__heap_base i32 (i32.const 33212)) + (global $~lib/rt/__rtti_base i32 (i32.const 2752)) + (global $~lib/memory/__data_end i32 (i32.const 2788)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35556)) + (global $~lib/memory/__heap_base i32 (i32.const 35556)) (memory $0 1) (data $0 (i32.const 12) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00a\00s\00s\00e\00r\00t\00-\00n\00o\00n\00n\00u\00l\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $4 (i32.const 316) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $5 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 544) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 572) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 796) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $15 (i32.const 860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 892) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $17 (i32.const 1292) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2348) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $19 (i32.const 2444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00a\00s\00s\00e\00r\00t\00-\00n\00o\00n\00n\00u\00l\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $22 (i32.const 2620) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2752) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\02a\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -33,6 +71,2636 @@ (export "testRet" (func $export:assert-nonnull/testRet)) (export "testObjFn" (func $export:assert-nonnull/testObjFn)) (export "testObjRet" (func $export:assert-nonnull/testObjRet)) + (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 320 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 320 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 320 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 448 + i32.const 512 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 320 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 320 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 256 + i32.const 592 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 256 + i32.const 320 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 892 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 892 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 892 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 892 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1312 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1312 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2368 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2368 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $assert-nonnull/Foo#get:bar (param $this i32) (result i32) local.get $this i32.load @@ -57,19 +2725,243 @@ local.get $this i32.load offset=4 ) + (func $~start + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 400 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 544 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) (func $~stack_check global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33232 - i32.const 33280 + i32.const 35584 + i32.const 35632 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 224 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 160 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 192 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 656 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 656 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2464 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $assert-nonnull/testObj (param $foo i32) (result i32) (local $1 i32) (local $2 i32) @@ -90,7 +2982,7 @@ local.get $1 else i32.const 32 - i32.const 160 + i32.const 2528 i32.const 11 i32.const 10 call $~lib/builtins/abort @@ -136,7 +3028,7 @@ local.get $1 else i32.const 32 - i32.const 160 + i32.const 2528 i32.const 15 i32.const 10 call $~lib/builtins/abort @@ -171,8 +3063,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 288 + i32.const 448 + i32.const 2592 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -201,8 +3093,8 @@ local.get $value i32.eqz if - i32.const 336 - i32.const 288 + i32.const 2640 + i32.const 2592 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -237,7 +3129,7 @@ local.get $1 else i32.const 32 - i32.const 160 + i32.const 2528 i32.const 19 i32.const 10 call $~lib/builtins/abort @@ -279,8 +3171,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 288 + i32.const 448 + i32.const 2592 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -342,7 +3234,7 @@ local.get $1 else i32.const 32 - i32.const 160 + i32.const 2528 i32.const 23 i32.const 10 call $~lib/builtins/abort @@ -381,7 +3273,7 @@ local.get $1 else i32.const 32 - i32.const 160 + i32.const 2528 i32.const 27 i32.const 10 call $~lib/builtins/abort @@ -401,7 +3293,7 @@ local.get $2 else i32.const 32 - i32.const 160 + i32.const 2528 i32.const 27 i32.const 10 call $~lib/builtins/abort @@ -420,7 +3312,7 @@ local.get $3 else i32.const 32 - i32.const 160 + i32.const 2528 i32.const 27 i32.const 10 call $~lib/builtins/abort @@ -459,7 +3351,7 @@ local.get $1 else i32.const 32 - i32.const 160 + i32.const 2528 i32.const 31 i32.const 10 call $~lib/builtins/abort @@ -479,7 +3371,7 @@ local.get $2 else i32.const 32 - i32.const 160 + i32.const 2528 i32.const 31 i32.const 10 call $~lib/builtins/abort @@ -498,7 +3390,7 @@ local.get $3 else i32.const 32 - i32.const 160 + i32.const 2528 i32.const 31 i32.const 10 call $~lib/builtins/abort @@ -540,14 +3432,14 @@ local.get $1 else i32.const 32 - i32.const 160 + i32.const 2528 i32.const 48 i32.const 10 call $~lib/builtins/abort unreachable end i32.load - call_indirect (type $1) + call_indirect (type $4) local.set $2 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -589,14 +3481,14 @@ local.get $1 else i32.const 32 - i32.const 160 + i32.const 2528 i32.const 52 i32.const 10 call $~lib/builtins/abort unreachable end i32.load - call_indirect (type $1) + call_indirect (type $4) local.tee $2 i32.store offset=8 local.get $2 @@ -604,7 +3496,7 @@ local.get $2 else i32.const 32 - i32.const 160 + i32.const 2528 i32.const 52 i32.const 10 call $~lib/builtins/abort @@ -618,6 +3510,153 @@ local.get $3 return ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 688 + i32.const 816 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 880 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $assert-nonnull/testVar (param $n i32) (result i32) (local $1 i32) (local $2 i32) @@ -638,7 +3677,7 @@ local.get $1 else i32.const 32 - i32.const 160 + i32.const 2528 i32.const 2 i32.const 10 call $~lib/builtins/abort @@ -674,14 +3713,14 @@ local.get $1 else i32.const 32 - i32.const 160 + i32.const 2528 i32.const 35 i32.const 10 call $~lib/builtins/abort unreachable end i32.load - call_indirect (type $1) + call_indirect (type $4) local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -712,7 +3751,7 @@ local.get $1 else i32.const 32 - i32.const 160 + i32.const 2528 i32.const 39 i32.const 13 call $~lib/builtins/abort @@ -724,7 +3763,7 @@ global.set $~argumentsLength local.get $fn2 i32.load - call_indirect (type $1) + call_indirect (type $4) local.set $3 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -757,14 +3796,14 @@ local.get $1 else i32.const 32 - i32.const 160 + i32.const 2528 i32.const 44 i32.const 10 call $~lib/builtins/abort unreachable end i32.load - call_indirect (type $1) + call_indirect (type $4) local.tee $2 i32.store offset=4 local.get $2 @@ -772,7 +3811,7 @@ local.get $2 else i32.const 32 - i32.const 160 + i32.const 2528 i32.const 44 i32.const 10 call $~lib/builtins/abort @@ -1014,4 +4053,279 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 448 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2640 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1312 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2368 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/error/Error~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $assert-nonnull/Foo~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $assert-nonnull/Foo + block $~lib/error/Error + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/error/Error $assert-nonnull/Foo $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/error/Error~visit + return + end + local.get $0 + local.get $1 + call $assert-nonnull/Foo~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/assert-nonnull.release.wat b/tests/compiler/assert-nonnull.release.wat index 67f4405bc2..c048fb4069 100644 --- a/tests/compiler/assert-nonnull.release.wat +++ b/tests/compiler/assert-nonnull.release.wat @@ -1,20 +1,65 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (result i32))) - (type $2 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34236)) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36580)) (memory $0 1) (data $0 (i32.const 1036) "|") (data $0.1 (i32.const 1048) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") - (data $1 (i32.const 1164) "<") - (data $1.1 (i32.const 1176) "\02\00\00\00\"\00\00\00a\00s\00s\00e\00r\00t\00-\00n\00o\00n\00n\00u\00l\00l\00.\00t\00s") - (data $2 (i32.const 1228) "<") - (data $2.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $3 (i32.const 1292) ",") - (data $3.1 (i32.const 1304) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $4 (i32.const 1340) "|") - (data $4.1 (i32.const 1352) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $1 (i32.const 1164) "\1c") + (data $1.1 (i32.const 1176) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1196) "\1c") + (data $2.1 (i32.const 1208) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1228) "\1c") + (data $3.1 (i32.const 1240) "\02") + (data $4 (i32.const 1260) "<") + (data $4.1 (i32.const 1272) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1324) "<") + (data $5.1 (i32.const 1336) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1452) "<") + (data $8.1 (i32.const 1464) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1516) ",") + (data $9.1 (i32.const 1528) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1596) "<") + (data $11.1 (i32.const 1608) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1660) "\1c") + (data $12.1 (i32.const 1672) "\02\00\00\00\02\00\00\00:") + (data $13 (i32.const 1692) "|") + (data $13.1 (i32.const 1704) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $14 (i32.const 1820) "<") + (data $14.1 (i32.const 1832) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $15 (i32.const 1884) "\1c") + (data $15.1 (i32.const 1896) "\02\00\00\00\02\00\00\000") + (data $16 (i32.const 1916) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $17 (i32.const 2316) "\1c\04") + (data $17.1 (i32.const 2328) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $18 (i32.const 3372) "\\") + (data $18.1 (i32.const 3384) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $19 (i32.const 3468) "<") + (data $19.1 (i32.const 3480) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $20 (i32.const 3532) "<") + (data $20.1 (i32.const 3544) "\02\00\00\00\"\00\00\00a\00s\00s\00e\00r\00t\00-\00n\00o\00n\00n\00u\00l\00l\00.\00t\00s") + (data $21 (i32.const 3596) ",") + (data $21.1 (i32.const 3608) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $22 (i32.const 3644) "|") + (data $22.1 (i32.const 3656) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $23 (i32.const 3776) "\08\00\00\00 \00\00\00 \00\00\00 ") + (data $23.1 (i32.const 3804) "\02A\00\00\02a") (table $0 1 1 funcref) (export "memory" (memory $0)) (export "testVar" (func $export:assert-nonnull/testVar)) @@ -29,17 +74,1942 @@ (export "testRet" (func $export:assert-nonnull/testRet)) (export "testObjFn" (func $export:assert-nonnull/testObjFn)) (export "testObjRet" (func $export:assert-nonnull/testObjRet)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 3664 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 2336 + call $~lib/rt/itcms/__visit + i32.const 3392 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$177 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36580 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$177 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3776 + i32.load + i32.gt_u + if + i32.const 1472 + i32.const 1536 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3780 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1616 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36592 + i32.const 0 + i32.store + i32.const 38160 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36592 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36592 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36592 + i32.const 38164 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36592 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36580 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36580 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36580 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1616 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1280 + i32.const 1344 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + 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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1280 + i32.const 1616 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1616 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3812 + i32.lt_s + if + i32.const 36608 + i32.const 36656 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1904 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1916 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1916 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1916 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1916 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36580 + 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 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3812 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3812 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$182 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1248 + local.set $0 + br $__inlined_func$~lib/string/String#concat$182 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36608 + i32.const 36656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3812 + i32.lt_s + if + i32.const 36608 + i32.const 36656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1184 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1216 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1680 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1680 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3488 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/array/Array#__get (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s if - i32.const 34256 - i32.const 34304 + i32.const 36608 + i32.const 36656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -55,8 +2025,8 @@ i32.load offset=12 i32.eqz if - i32.const 1248 - i32.const 1312 + i32.const 1472 + i32.const 3616 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -84,7 +2054,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -95,7 +2065,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -108,7 +2078,7 @@ i32.eqz if i32.const 1056 - i32.const 1184 + i32.const 3552 i32.const 2 i32.const 10 call $~lib/builtins/abort @@ -125,8 +2095,8 @@ local.get $0 return end - i32.const 34256 - i32.const 34304 + i32.const 36608 + i32.const 36656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -139,7 +2109,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -150,7 +2120,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -163,7 +2133,7 @@ i32.eqz if i32.const 1056 - i32.const 1184 + i32.const 3552 i32.const 11 i32.const 10 call $~lib/builtins/abort @@ -184,8 +2154,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34256 - i32.const 34304 + i32.const 36608 + i32.const 36656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -198,7 +2168,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -209,7 +2179,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -227,7 +2197,7 @@ i32.eqz if i32.const 1056 - i32.const 1184 + i32.const 3552 i32.const 15 i32.const 10 call $~lib/builtins/abort @@ -244,8 +2214,8 @@ local.get $0 return end - i32.const 34256 - i32.const 34304 + i32.const 36608 + i32.const 36656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -258,7 +2228,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -269,7 +2239,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -282,7 +2252,7 @@ i32.eqz if i32.const 1056 - i32.const 1184 + i32.const 3552 i32.const 19 i32.const 10 call $~lib/builtins/abort @@ -296,7 +2266,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -309,8 +2279,8 @@ i32.load offset=12 i32.eqz if - i32.const 1248 - i32.const 1312 + i32.const 1472 + i32.const 3616 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -328,8 +2298,8 @@ local.get $0 i32.eqz if - i32.const 1360 - i32.const 1312 + i32.const 3664 + i32.const 3616 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -350,8 +2320,8 @@ local.get $0 return end - i32.const 34256 - i32.const 34304 + i32.const 36608 + i32.const 36656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -364,7 +2334,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -375,7 +2345,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -393,7 +2363,7 @@ i32.eqz if i32.const 1056 - i32.const 1184 + i32.const 3552 i32.const 23 i32.const 10 call $~lib/builtins/abort @@ -410,8 +2380,8 @@ local.get $0 return end - i32.const 34256 - i32.const 34304 + i32.const 36608 + i32.const 36656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -426,7 +2396,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -437,7 +2407,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -483,15 +2453,15 @@ local.get $0 return end - i32.const 34256 - i32.const 34304 + i32.const 36608 + i32.const 36656 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1056 - i32.const 1184 + i32.const 3552 i32.const 27 i32.const 10 call $~lib/builtins/abort @@ -506,7 +2476,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -517,7 +2487,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -563,15 +2533,15 @@ local.get $0 return end - i32.const 34256 - i32.const 34304 + i32.const 36608 + i32.const 36656 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1056 - i32.const 1184 + i32.const 3552 i32.const 31 i32.const 10 call $~lib/builtins/abort @@ -584,7 +2554,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -595,7 +2565,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -608,7 +2578,7 @@ i32.eqz if i32.const 1056 - i32.const 1184 + i32.const 3552 i32.const 35 i32.const 10 call $~lib/builtins/abort @@ -619,8 +2589,8 @@ call_indirect (type $1) unreachable end - i32.const 34256 - i32.const 34304 + i32.const 36608 + i32.const 36656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -634,7 +2604,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -645,7 +2615,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -659,7 +2629,7 @@ i32.eqz if i32.const 1056 - i32.const 1184 + i32.const 3552 i32.const 39 i32.const 13 call $~lib/builtins/abort @@ -672,8 +2642,8 @@ call_indirect (type $1) unreachable end - i32.const 34256 - i32.const 34304 + i32.const 36608 + i32.const 36656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -687,7 +2657,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -698,7 +2668,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -715,15 +2685,15 @@ call_indirect (type $1) unreachable end - i32.const 34256 - i32.const 34304 + i32.const 36608 + i32.const 36656 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1056 - i32.const 1184 + i32.const 3552 i32.const 44 i32.const 10 call $~lib/builtins/abort @@ -736,7 +2706,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -747,7 +2717,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -765,7 +2735,7 @@ i32.eqz if i32.const 1056 - i32.const 1184 + i32.const 3552 i32.const 48 i32.const 10 call $~lib/builtins/abort @@ -776,8 +2746,8 @@ call_indirect (type $1) unreachable end - i32.const 34256 - i32.const 34304 + i32.const 36608 + i32.const 36656 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -791,7 +2761,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -802,7 +2772,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3812 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -827,18 +2797,142 @@ call_indirect (type $1) unreachable end - i32.const 34256 - i32.const 34304 + i32.const 36608 + i32.const 36656 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1056 - i32.const 1184 + i32.const 3552 i32.const 52 i32.const 10 call $~lib/builtins/abort unreachable ) + (func $~lib/array/Array~visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3812 + i32.lt_s + if + i32.const 36608 + i32.const 36656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $assert-nonnull/Foo + block $~lib/error/Error + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/error/Error $assert-nonnull/Foo $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/assignment-chain.debug.wat b/tests/compiler/assignment-chain.debug.wat index dc86b62eb1..0222653523 100644 --- a/tests/compiler/assignment-chain.debug.wat +++ b/tests/compiler/assignment-chain.debug.wat @@ -2,16 +2,22 @@ (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) (type $2 (func)) - (type $3 (func (param i32))) - (type $4 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32))) (type $5 (func (param i32 i32 i32))) (type $6 (func (param i32 i64))) (type $7 (func (param i32 f64))) - (type $8 (func (param i32 i32 i32 i32))) - (type $9 (func (param i32 i32 i64) (result i32))) - (type $10 (func (result i32))) - (type $11 (func (param f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i64) (result i32))) + (type $12 (func (result i32))) + (type $13 (func (param f64))) + (type $14 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -20,29 +26,37 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $assignment-chain/C._setter_cnt (mut i32) (i32.const 0)) (global $assignment-chain/C._y (mut f64) (f64.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 480)) - (global $~lib/memory/__data_end i32 (i32.const 508)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33276)) - (global $~lib/memory/__heap_base i32 (i32.const 33276)) + (global $~lib/rt/__rtti_base i32 (i32.const 2448)) + (global $~lib/memory/__data_end i32 (i32.const 2476)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35244)) + (global $~lib/memory/__heap_base i32 (i32.const 35244)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00a\00s\00s\00i\00g\00n\00m\00e\00n\00t\00-\00c\00h\00a\00i\00n\00.\00t\00s\00\00\00\00\00\00\00") - (data $9 (i32.const 480) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00a\00s\00s\00i\00g\00n\00m\00e\00n\00t\00-\00c\00h\00a\00i\00n\00.\00t\00s\00\00\00\00\00\00\00") + (data $20 (i32.const 2448) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "normal_assignment_chain" (func $assignment-chain/normal_assignment_chain)) @@ -50,6 +64,435 @@ (export "static_setter_assignment_chain" (func $assignment-chain/static_setter_assignment_chain)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -114,7 +557,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -184,7 +627,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -201,7 +644,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -231,8 +674,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -300,7 +743,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -452,7 +895,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -472,7 +915,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -535,7 +978,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -688,7 +1131,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -705,7 +1148,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -794,7 +1237,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -837,7 +1280,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -855,7 +1298,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -923,7 +1366,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1040,7 +1483,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1086,7 +1529,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1118,7 +1561,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1362,7 +1805,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1582,7 +2025,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1690,8 +2133,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1793,7 +2236,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1864,7 +2307,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2021,7 +2464,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2136,7 +2579,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2156,7 +2599,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2204,8 +2647,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2304,7 +2747,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -2320,71 +2763,19 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace call $assignment-chain/normal_assignment_chain call $assignment-chain/setter_assignment_chain call $assignment-chain/static_setter_assignment_chain ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $assignment-chain/B - block $assignment-chain/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $assignment-chain/A $assignment-chain/B $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - unreachable - ) (func $~start call $start:assignment-chain ) @@ -2393,14 +2784,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33296 - i32.const 33344 + i32.const 35264 + i32.const 35312 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $assignment-chain/A#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2508,7 +3104,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -2669,7 +3265,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 30 i32.const 3 call $~lib/builtins/abort @@ -2687,7 +3283,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 31 i32.const 3 call $~lib/builtins/abort @@ -2698,6 +3294,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2726,4 +3469,62 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $assignment-chain/B + block $assignment-chain/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $assignment-chain/A $assignment-chain/B $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/assignment-chain.release.wat b/tests/compiler/assignment-chain.release.wat index 2d02b94594..ab9042f06c 100644 --- a/tests/compiler/assignment-chain.release.wat +++ b/tests/compiler/assignment-chain.release.wat @@ -1,13 +1,12 @@ (module (type $0 (func)) (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (type $7 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -19,32 +18,255 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $assignment-chain/C._setter_cnt (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34300)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36268)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) "<") - (data $8.1 (i32.const 1448) "\02\00\00\00&\00\00\00a\00s\00s\00i\00g\00n\00m\00e\00n\00t\00-\00c\00h\00a\00i\00n\00.\00t\00s") - (data $9 (i32.const 1504) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "<") + (data $19.1 (i32.const 3416) "\02\00\00\00&\00\00\00a\00s\00s\00i\00g\00n\00m\00e\00n\00t\00-\00c\00h\00a\00i\00n\00.\00t\00s") + (data $20 (i32.const 3472) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") (export "normal_assignment_chain" (func $assignment-chain/normal_assignment_chain)) (export "setter_assignment_chain" (func $assignment-chain/setter_assignment_chain)) (export "static_setter_assignment_chain" (func $assignment-chain/static_setter_assignment_chain)) (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3500 + i32.lt_s + if + i32.const 36288 + i32.const 36336 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -65,7 +287,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -113,7 +335,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -122,7 +344,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$129 + block $__inlined_func$~lib/rt/itcms/Object#unlink$142 local.get $1 i32.load offset=4 i32.const -4 @@ -134,19 +356,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34300 + i32.const 36268 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$129 + br $__inlined_func$~lib/rt/itcms/Object#unlink$142 end local.get $1 i32.load offset=8 @@ -154,7 +376,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -183,12 +405,12 @@ i32.const 1 else local.get $0 - i32.const 1504 + i32.const 3472 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -197,7 +419,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1508 + i32.const 3476 i32.add i32.load i32.const 32 @@ -249,7 +471,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -263,7 +485,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -309,7 +531,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -392,7 +614,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -406,7 +628,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -467,7 +689,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -500,7 +722,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -515,7 +737,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -566,7 +788,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -638,7 +860,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -663,7 +885,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -690,7 +912,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -762,10 +984,10 @@ if unreachable end - i32.const 34304 + i32.const 36272 i32.const 0 i32.store - i32.const 35872 + i32.const 37840 i32.const 0 i32.store loop $for-loop|0 @@ -776,7 +998,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34304 + i32.const 36272 i32.add i32.const 0 i32.store offset=4 @@ -794,7 +1016,7 @@ i32.add i32.const 2 i32.shl - i32.const 34304 + i32.const 36272 i32.add i32.const 0 i32.store offset=96 @@ -812,14 +1034,14 @@ br $for-loop|0 end end - i32.const 34304 - i32.const 35876 + i32.const 36272 + i32.const 37844 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34304 + i32.const 36272 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -904,7 +1126,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34300 + i32.const 36268 i32.lt_u if local.get $0 @@ -993,14 +1215,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34300 + i32.const 36268 i32.lt_u if local.get $0 @@ -1023,7 +1245,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34300 + i32.const 36268 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1052,7 +1274,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1136,7 +1358,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1188,7 +1410,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1220,8 +1442,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1056 - i32.const 1120 + i32.const 3024 + i32.const 3088 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1231,7 +1453,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1252,7 +1474,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1285,8 +1507,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1056 - i32.const 1392 + i32.const 3024 + i32.const 3360 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1388,7 +1610,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1403,7 +1625,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1422,7 +1644,7 @@ i32.and if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1541,81 +1763,250 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 45 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $assignment-chain/B - block $assignment-chain/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $assignment-chain/A $assignment-chain/B $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable - ) (func $~start memory.size i32.const 16 i32.shl - i32.const 34300 + i32.const 36268 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace call $assignment-chain/normal_assignment_chain call $assignment-chain/setter_assignment_chain call $assignment-chain/static_setter_assignment_chain ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3500 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3500 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$147 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$147 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36288 + i32.const 36336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3500 + i32.lt_s + if + i32.const 36288 + i32.const 36336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $assignment-chain/normal_assignment_chain (local $0 i32) (local $1 i32) @@ -1625,7 +2016,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1532 + i32.const 3500 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1640,7 +2031,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1532 + i32.const 3500 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1696,8 +2087,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34320 - i32.const 34368 + i32.const 36288 + i32.const 36336 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1709,11 +2100,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1532 + i32.const 3500 i32.lt_s if - i32.const 34320 - i32.const 34368 + i32.const 36288 + i32.const 36336 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1754,7 +2145,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1532 + i32.const 3500 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1769,7 +2160,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1532 + i32.const 3500 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1832,7 +2223,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 30 i32.const 3 call $~lib/builtins/abort @@ -1845,7 +2236,7 @@ i32.load offset=4 if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 31 i32.const 3 call $~lib/builtins/abort @@ -1857,8 +2248,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34320 - i32.const 34368 + i32.const 36288 + i32.const 36336 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1870,11 +2261,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1532 + i32.const 3500 i32.lt_s if - i32.const 34320 - i32.const 34368 + i32.const 36288 + i32.const 36336 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1899,4 +2290,35 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $assignment-chain/B + block $assignment-chain/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $assignment-chain/A $assignment-chain/B $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/bigint-integration.debug.wat b/tests/compiler/bigint-integration.debug.wat index 467f67dec1..e9991cd04c 100644 --- a/tests/compiler/bigint-integration.debug.wat +++ b/tests/compiler/bigint-integration.debug.wat @@ -1,31 +1,2722 @@ (module - (type $0 (func (result i64))) - (type $1 (func)) - (type $2 (func (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (result i64))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param i32 i32 i32 i32))) (import "bigint-integration" "externalValue" (global $bigint-integration/externalValue i64)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "bigint-integration" "getExternalValue" (func $bigint-integration/getExternalValue (result i64))) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $bigint-integration/internalValue i64 (i64.const 9007199254740991)) - (global $~lib/memory/__data_end i32 (i32.const 76)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32844)) - (global $~lib/memory/__heap_base i32 (i32.const 32844)) + (global $~lib/rt/__rtti_base i32 (i32.const 2448)) + (global $~lib/memory/__data_end i32 (i32.const 2468)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35236)) + (global $~lib/memory/__heap_base i32 (i32.const 35236)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00b\00i\00g\00i\00n\00t\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00b\00i\00g\00i\00n\00t\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s\00\00\00") + (data $20 (i32.const 2448) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "internalValue" (global $bigint-integration/internalValue)) (export "getInternalValue" (func $bigint-integration/getInternalValue)) (export "memory" (memory $0)) (export "_start" (func $~start)) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $start:bigint-integration + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $bigint-integration/externalValue i64.const 9007199254740991 i64.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4 i32.const 1 call $~lib/builtins/abort @@ -37,7 +2728,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -57,4 +2748,421 @@ global.set $~started call $start:bigint-integration ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35264 + i32.const 35312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/bigint-integration.release.wat b/tests/compiler/bigint-integration.release.wat index 65f0bbea0b..5b543fdbd5 100644 --- a/tests/compiler/bigint-integration.release.wat +++ b/tests/compiler/bigint-integration.release.wat @@ -1,19 +1,1756 @@ (module - (type $0 (func (result i64))) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func)) + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (result i64))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i32 i32 i32))) (import "bigint-integration" "externalValue" (global $bigint-integration/externalValue i64)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "bigint-integration" "getExternalValue" (func $bigint-integration/getExternalValue (result i64))) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $bigint-integration/internalValue i64 (i64.const 9007199254740991)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36260)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00*\00\00\00b\00i\00g\00i\00n\00t\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) "<") + (data $19.1 (i32.const 3416) "\02\00\00\00*\00\00\00b\00i\00g\00i\00n\00t\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s") + (data $20 (i32.const 3472) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "internalValue" (global $bigint-integration/internalValue)) (export "getInternalValue" (func $bigint-integration/getInternalValue)) (export "memory" (memory $0)) (export "_start" (func $~start)) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$120 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36260 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$120 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3472 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3476 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36272 + i32.const 0 + i32.store + i32.const 37840 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36272 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36272 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36272 + i32.const 37844 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36272 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36260 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36260 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36260 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3492 + i32.lt_s + if + i32.const 36288 + i32.const 36336 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $bigint-integration/getInternalValue (result i64) i64.const 9007199254740991 ) @@ -24,12 +1761,44 @@ end i32.const 1 global.set $~started + memory.size + i32.const 16 + i32.shl + i32.const 36260 + 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 $bigint-integration/externalValue i64.const 9007199254740991 i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4 i32.const 1 call $~lib/builtins/abort @@ -40,11 +1809,235 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 5 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$125 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$125 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36288 + i32.const 36336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3492 + i32.lt_s + if + i32.const 36288 + i32.const 36336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/bindings/esm.debug.js b/tests/compiler/bindings/esm.debug.js index e1a514ba47..37b67ff1a1 100644 --- a/tests/compiler/bindings/esm.debug.js +++ b/tests/compiler/bindings/esm.debug.js @@ -33,17 +33,6 @@ async function instantiate(module, imports = {}) { return new Date().getTimezoneOffset(); })(); }, - abort(message, fileName, lineNumber, columnNumber) { - // ~lib/builtins/abort(~lib/string/String | null?, ~lib/string/String | null?, u32?, u32?) => void - message = __liftString(message >>> 0); - fileName = __liftString(fileName >>> 0); - lineNumber = lineNumber >>> 0; - columnNumber = columnNumber >>> 0; - (() => { - // @external.js - throw Error(`${message} in ${fileName}:${lineNumber}:${columnNumber}`); - })(); - }, }, Object.assign(Object.create(globalThis), imports.env || {})), }; const { exports } = await WebAssembly.instantiate(module, adaptedImports); diff --git a/tests/compiler/bindings/esm.debug.wat b/tests/compiler/bindings/esm.debug.wat index c5ae968aba..03f6af8b0b 100644 --- a/tests/compiler/bindings/esm.debug.wat +++ b/tests/compiler/bindings/esm.debug.wat @@ -3,21 +3,24 @@ (type $1 (func (param i32) (result i32))) (type $2 (func (param i32 i32) (result i32))) (type $3 (func (param i32))) - (type $4 (func)) - (type $5 (func (param i32 i32 i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func)) (type $6 (func (result i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i64))) + (type $7 (func (param i32 i64))) + (type $8 (func (param i32 i32 i32 i32))) (type $9 (func (param i32 i32 f64 f64 f64 f64 f64))) (type $10 (func (param f64) (result f64))) (type $11 (func (param i64 i64) (result i64))) (type $12 (func (result i64))) (type $13 (func (param i32 i32 i64) (result i32))) - (type $14 (func (param i32 f32))) - (type $15 (func (param i32 f64))) - (type $16 (func (param i32 i32 i32) (result i32))) - (type $17 (func (param i32 i32 i64))) - (type $18 (func (param i32 i32) (result f32))) + (type $14 (func (param i32 i64 i32))) + (type $15 (func (param i64 i32) (result i32))) + (type $16 (func (param i32 i64 i32 i32))) + (type $17 (func (param i32 f32))) + (type $18 (func (param i32 f64))) + (type $19 (func (param i32 i32 i32) (result i32))) + (type $20 (func (param i32 i32 i64))) + (type $21 (func (param i32 i32) (result f32))) (import "env" "Math.E" (global $~lib/bindings/dom/Math.E f64)) (import "env" "globalThis" (global $bindings/esm/immutableGlobal externref)) (import "env" "globalThis.globalThis" (global $bindings/esm/immutableGlobalNested externref)) @@ -25,7 +28,6 @@ (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) (import "env" "Date.getTimezoneOffset" (func $bindings/esm/Date_getTimezoneOffset (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $bindings/esm/plainGlobal i32 (i32.const 1)) (global $bindings/esm/plainMutableGlobal (mut i32) (i32.const 2)) (global $bindings/esm/stringGlobal i32 (i32.const 32)) @@ -53,12 +55,13 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1184)) - (global $~lib/memory/__data_end i32 (i32.const 1252)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34020)) - (global $~lib/memory/__heap_base i32 (i32.const 34020)) + (global $~lib/rt/__rtti_base i32 (i32.const 3120)) + (global $~lib/memory/__data_end i32 (i32.const 3188)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35956)) + (global $~lib/memory/__heap_base i32 (i32.const 35956)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") @@ -66,24 +69,34 @@ (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00t\00r\00a\00c\00e\00\00\00") (data $4 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\004\002\00 \00f\00r\00o\00m\00 \00c\00o\00n\00s\00o\00l\00e\00.\00l\00o\00g\00\00\00\00\00\00\00") - (data $5 (i32.const 204) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $6 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $7 (i32.const 316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 480) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 624) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 652) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 748) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $17 (i32.const 812) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00") - (data $18 (i32.const 876) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $19 (i32.const 924) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $20 (i32.const 1052) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") - (data $21 (i32.const 1116) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") - (data $22 (i32.const 1184) "\10\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\81\08\00\00\01\19\00\00\01\02\00\00$\t\00\00\a4\00\00\00$\n\00\00\02\t\00\00\02A\00\00\00\00\00\00A\00\00\00 \00\00\00") + (data $5 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $6 (i32.const 236) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $7 (i32.const 268) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $9 (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 464) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 492) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 556) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 608) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 636) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 732) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 860) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $19 (i32.const 924) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 956) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $21 (i32.const 1356) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2412) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $23 (i32.const 2508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $25 (i32.const 2620) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $26 (i32.const 2684) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2748) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00") + (data $28 (i32.const 2812) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $29 (i32.const 2860) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 2988) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") + (data $31 (i32.const 3052) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") + (data $32 (i32.const 3120) "\10\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\81\08\00\00\01\19\00\00\01\02\00\00$\t\00\00\a4\00\00\00$\n\00\00\02\t\00\00\02A\00\00\00\00\00\00A\00\00\00 \00\00\00") (table $0 2 2 funcref) (elem $0 (i32.const 1) $start:bindings/esm~anonymous|0) (export "plainGlobal" (global $bindings/esm/plainGlobal)) @@ -176,6 +189,15 @@ call $~lib/rt/common/OBJECT#get:rtSize return ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -240,7 +262,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 384 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -310,7 +332,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 384 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -327,7 +349,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 384 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -357,8 +379,8 @@ i32.load i32.gt_u if - i32.const 528 - i32.const 592 + i32.const 512 + i32.const 576 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -426,7 +448,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 400 + i32.const 384 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -578,7 +600,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -598,7 +620,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -661,7 +683,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -814,7 +836,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -831,7 +853,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -920,7 +942,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -963,7 +985,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -981,7 +1003,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -1049,7 +1071,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1166,7 +1188,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1212,7 +1234,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1244,7 +1266,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1488,7 +1510,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1708,7 +1730,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 384 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1816,8 +1838,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 336 - i32.const 672 + i32.const 320 + i32.const 656 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1919,7 +1941,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1990,7 +2012,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2147,7 +2169,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2262,7 +2284,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2282,7 +2304,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2330,8 +2352,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 336 - i32.const 400 + i32.const 320 + i32.const 384 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2376,13 +2398,420 @@ local.get $ptr return ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 956 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 956 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 956 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 956 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1376 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1376 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 i32.sub - call $~lib/rt/common/OBJECT#get:rtSize + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix i32.const 1 - i32.shr_u + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2432 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2432 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 return ) (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) @@ -2400,7 +2829,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 384 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2752,8 +3181,8 @@ i32.const 3 i32.eq if - i32.const 1072 - i32.const 400 + i32.const 3008 + i32.const 384 i32.const 338 i32.const 7 call $~lib/builtins/abort @@ -2785,8 +3214,8 @@ i32.const 3 i32.ne if - i32.const 1136 - i32.const 400 + i32.const 3072 + i32.const 384 i32.const 352 i32.const 5 call $~lib/builtins/abort @@ -2853,310 +3282,48 @@ i32.const 0 drop ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $bindings/esm/stringGlobal - local.tee $1 + (func $~setArgumentsLength (param $0 i32) + local.get $0 + global.set $~argumentsLength + ) + (func $~start + global.get $~started if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + return end - global.get $bindings/esm/mutableStringGlobal - local.tee $1 + i32.const 1 + global.set $~started + call $start:bindings/esm + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 432 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 464 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 608 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 35984 + i32.const 36032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 528 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 944 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 336 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 1072 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 1136 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>void>#__visit - ) - (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint64Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit - ) - (func $bindings/esm/PlainObject~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load offset=56 - local.get $1 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=60 - local.get $1 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=64 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $bindings/esm/NonPlainObject - block $~lib/typedarray/Uint8Array - block $bindings/esm/PlainObject - block $~lib/array/Array<~lib/string/String> - block $~lib/array/Array - block $~lib/staticarray/StaticArray - block $~lib/staticarray/StaticArray - block $~lib/staticarray/StaticArray - block $~lib/typedarray/Uint64Array - block $~lib/typedarray/Float32Array - block $~lib/typedarray/Int16Array - block $~lib/function/Function<%28%29=>void> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $~lib/typedarray/Int16Array $~lib/typedarray/Float32Array $~lib/typedarray/Uint64Array $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array<~lib/string/String> $bindings/esm/PlainObject $~lib/typedarray/Uint8Array $bindings/esm/NonPlainObject $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Int16Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Float32Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint64Array~visit - return - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>~visit - return - end - local.get $0 - local.get $1 - call $bindings/esm/PlainObject~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8Array~visit - return - end - return - end - unreachable - ) - (func $~setArgumentsLength (param $0 i32) - local.get $0 - global.set $~argumentsLength - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:bindings/esm - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 448 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 480 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 624 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 34048 - i32.const 34096 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $bindings/esm/bufferFunction (param $a i32) (param $b i32) (result i32) - (local $aByteLength i32) - (local $bByteLength i32) - (local $out i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $a - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $aByteLength - local.get $b - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $bByteLength - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $aByteLength - local.get $bByteLength - i32.add - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $out - i32.store offset=4 - local.get $out - local.get $a - local.get $aByteLength - memory.copy - local.get $out - local.get $aByteLength - i32.add - local.get $b - local.get $bByteLength - memory.copy - local.get $out - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - return ) (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) (local $thisSize i32) @@ -3200,7 +3367,7 @@ i32.const 0 i32.eq if - i32.const 736 + i32.const 288 local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -3265,6 +3432,160 @@ local.get $2 return ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 224 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 256 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 720 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 720 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2528 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $bindings/esm/bufferFunction (param $a i32) (param $b i32) (result i32) + (local $aByteLength i32) + (local $bByteLength i32) + (local $out i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $aByteLength + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $bByteLength + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $aByteLength + local.get $bByteLength + i32.add + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $out + i32.store offset=4 + local.get $out + local.get $a + local.get $aByteLength + memory.copy + local.get $out + local.get $aByteLength + i32.add + local.get $b + local.get $bByteLength + memory.copy + local.get $out + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) (func $bindings/esm/stringFunction (param $a i32) (param $b i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer @@ -3429,8 +3750,8 @@ i32.shr_u i32.gt_u if - i32.const 224 - i32.const 272 + i32.const 2592 + i32.const 2640 i32.const 19 i32.const 57 call $~lib/builtins/abort @@ -3602,8 +3923,8 @@ i32.shr_u i32.ge_u if - i32.const 528 - i32.const 768 + i32.const 512 + i32.const 2704 i32.const 452 i32.const 64 call $~lib/builtins/abort @@ -3651,8 +3972,8 @@ i32.shr_u i32.ge_u if - i32.const 528 - i32.const 768 + i32.const 512 + i32.const 2704 i32.const 1173 i32.const 64 call $~lib/builtins/abort @@ -3699,8 +4020,8 @@ i32.shr_u i32.ge_u if - i32.const 528 - i32.const 768 + i32.const 512 + i32.const 2704 i32.const 1304 i32.const 64 call $~lib/builtins/abort @@ -3874,8 +4195,8 @@ call $~lib/staticarray/StaticArray#get:length i32.ge_u if - i32.const 528 - i32.const 832 + i32.const 512 + i32.const 2768 i32.const 78 i32.const 41 call $~lib/builtins/abort @@ -3919,8 +4240,8 @@ call $~lib/staticarray/StaticArray#get:length i32.ge_u if - i32.const 528 - i32.const 832 + i32.const 512 + i32.const 2768 i32.const 93 i32.const 41 call $~lib/builtins/abort @@ -4130,8 +4451,8 @@ i32.shr_u i32.gt_u if - i32.const 224 - i32.const 896 + i32.const 2592 + i32.const 2832 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -4249,8 +4570,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 528 - i32.const 896 + i32.const 512 + i32.const 2832 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -4320,8 +4641,8 @@ i32.shr_u i32.gt_u if - i32.const 224 - i32.const 896 + i32.const 2592 + i32.const 2832 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -4423,8 +4744,8 @@ i32.const 0 i32.lt_s if - i32.const 528 - i32.const 896 + i32.const 512 + i32.const 2832 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -4658,8 +4979,8 @@ i32.shr_u i32.gt_u if - i32.const 224 - i32.const 896 + i32.const 2592 + i32.const 2832 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -4777,8 +5098,8 @@ call $~lib/array/Array<~lib/string/String>#get:length_ i32.ge_u if - i32.const 528 - i32.const 896 + i32.const 512 + i32.const 2832 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -4807,8 +5128,8 @@ local.get $value i32.eqz if - i32.const 944 - i32.const 896 + i32.const 2880 + i32.const 2832 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -4847,8 +5168,8 @@ i32.const 0 i32.lt_s if - i32.const 528 - i32.const 896 + i32.const 512 + i32.const 2832 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -5269,61 +5590,18 @@ local.get $3 return ) - (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28%29=>void>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) - (local $cur i32) - (local $end i32) - (local $val i32) - (local $5 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -5332,62 +5610,132 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 - drop - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/string/String>#get:dataStart - local.set $cur - local.get $cur - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/string/String>#get:length_ + local.get $radix i32.const 2 - i32.shl - i32.add - local.set $end - loop $while-continue|0 - local.get $cur - local.get $end - i32.lt_u + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 752 + i32.const 880 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 944 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq if - local.get $cur - i32.load - local.set $val - local.get $val - if - local.get $val - local.get $cookie - call $~lib/rt/itcms/__visit - end - local.get $cur - i32.const 4 + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 i32.add - local.set $cur - br $while-continue|0 + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core end end - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/string/String>#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $out + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $12 + return ) (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) (local $buffer i32) @@ -5404,8 +5752,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 224 - i32.const 272 + i32.const 2592 + i32.const 2640 i32.const 52 i32.const 43 call $~lib/builtins/abort @@ -5448,8 +5796,8 @@ i32.shr_u i32.gt_u if - i32.const 224 - i32.const 832 + i32.const 2592 + i32.const 2768 i32.const 51 i32.const 60 call $~lib/builtins/abort @@ -5501,40 +5849,239 @@ local.get $this local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $bindings/esm/NonPlainObject#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/bufferFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/stringFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/stringFunctionOptional@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/stringFunctionOptional@varargs + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/typedarrayFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/staticarrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/staticarrayFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/staticarrayU16 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $bindings/esm/staticarrayU16 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:bindings/esm/staticarrayI64 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $bindings/esm/staticarrayI64 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/arrayFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) - (func $bindings/esm/NonPlainObject#constructor (param $this i32) (result i32) - (local $1 i32) + (func $export:bindings/esm/arrayOfStringsFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 i32.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 15 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/arrayOfStringsFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) - (func $export:bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/objectFunction (param $0 i32) (param $1 i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -5549,7 +6096,7 @@ i32.store offset=4 local.get $0 local.get $1 - call $bindings/esm/bufferFunction + call $bindings/esm/objectFunction local.set $2 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -5557,7 +6104,7 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $export:bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -5572,7 +6119,7 @@ i32.store offset=4 local.get $0 local.get $1 - call $bindings/esm/stringFunction + call $bindings/esm/internrefFunction local.set $2 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -5580,222 +6127,355 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $export:bindings/esm/stringFunctionOptional@varargs (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/functionFunction (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $bindings/esm/functionFunction + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $bindings/esm/stringGlobal + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $bindings/esm/mutableStringGlobal + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 512 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2592 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2880 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 3008 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 3072 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1376 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2432 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $bindings/esm/PlainObject~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load offset=56 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=60 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=64 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $bindings/esm/NonPlainObject + block $~lib/typedarray/Uint8Array + block $bindings/esm/PlainObject + block $~lib/array/Array<~lib/string/String> + block $~lib/array/Array + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/typedarray/Uint64Array + block $~lib/typedarray/Float32Array + block $~lib/typedarray/Int16Array + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $~lib/typedarray/Int16Array $~lib/typedarray/Float32Array $~lib/typedarray/Uint64Array $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array<~lib/string/String> $bindings/esm/PlainObject $~lib/typedarray/Uint8Array $bindings/esm/NonPlainObject $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int16Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint64Array~visit + return + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $bindings/esm/PlainObject~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + return + end + return + end + unreachable + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $bindings/esm/stringFunctionOptional@varargs + local.get $this local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $2 - ) - (func $export:bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $bindings/esm/typedarrayFunction - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $export:bindings/esm/staticarrayFunction (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $bindings/esm/staticarrayFunction + i32.const 0 + drop + local.get $this local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $2 - ) - (func $export:bindings/esm/staticarrayU16 (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store - local.get $0 - call $bindings/esm/staticarrayU16 - local.set $1 + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 ) - (func $export:bindings/esm/staticarrayI64 (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $bindings/esm/staticarrayI64 - local.set $1 + (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $export:bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $bindings/esm/arrayFunction - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:bindings/esm/arrayOfStringsFunction (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store + i32.const 1 + drop + local.get $this + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $bindings/esm/arrayOfStringsFunction - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:bindings/esm/objectFunction (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $bindings/esm/objectFunction - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $bindings/esm/internrefFunction - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:bindings/esm/functionFunction (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 i32.store - local.get $0 - call $bindings/esm/functionFunction - local.set $1 + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 ) ) diff --git a/tests/compiler/bindings/esm.release.js b/tests/compiler/bindings/esm.release.js index 4f91c23e94..e1c1a18a45 100644 --- a/tests/compiler/bindings/esm.release.js +++ b/tests/compiler/bindings/esm.release.js @@ -33,17 +33,6 @@ async function instantiate(module, imports = {}) { return new Date().getTimezoneOffset(); })(); }, - abort(message, fileName, lineNumber, columnNumber) { - // ~lib/builtins/abort(~lib/string/String | null?, ~lib/string/String | null?, u32?, u32?) => void - message = __liftString(message >>> 0); - fileName = __liftString(fileName >>> 0); - lineNumber = lineNumber >>> 0; - columnNumber = columnNumber >>> 0; - (() => { - // @external.js - throw Error(`${message} in ${fileName}:${lineNumber}:${columnNumber}`); - })(); - }, }, Object.assign(Object.create(globalThis), imports.env || {})), }; const { exports } = await WebAssembly.instantiate(module, adaptedImports); diff --git a/tests/compiler/bindings/esm.release.wat b/tests/compiler/bindings/esm.release.wat index 9367b73e53..3d15590356 100644 --- a/tests/compiler/bindings/esm.release.wat +++ b/tests/compiler/bindings/esm.release.wat @@ -17,7 +17,6 @@ (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) (import "env" "Date.getTimezoneOffset" (func $bindings/esm/Date_getTimezoneOffset (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $bindings/esm/plainGlobal i32 (i32.const 1)) (global $bindings/esm/plainMutableGlobal (mut i32) (i32.const 2)) (global $bindings/esm/stringGlobal i32 (i32.const 1056)) @@ -40,8 +39,8 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 2208)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35044)) + (global $~lib/rt/__rtti_base i32 (i32.const 4144)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36980)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 1036) "\1c") @@ -54,36 +53,55 @@ (data $3.1 (i32.const 1144) "\02\00\00\00\n\00\00\00t\00r\00a\00c\00e") (data $4 (i32.const 1164) "<") (data $4.1 (i32.const 1176) "\02\00\00\00&\00\00\004\002\00 \00f\00r\00o\00m\00 \00c\00o\00n\00s\00o\00l\00e\00.\00l\00o\00g") - (data $5 (i32.const 1228) ",") - (data $5.1 (i32.const 1240) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $6 (i32.const 1276) "<") - (data $6.1 (i32.const 1288) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data $7 (i32.const 1340) "<") - (data $7.1 (i32.const 1352) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $8 (i32.const 1404) "<") - (data $8.1 (i32.const 1416) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $11 (i32.const 1532) "<") - (data $11.1 (i32.const 1544) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $12 (i32.const 1596) ",") - (data $12.1 (i32.const 1608) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $14 (i32.const 1676) "<") - (data $14.1 (i32.const 1688) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $15 (i32.const 1740) "\1c") - (data $15.1 (i32.const 1752) "\02") - (data $16 (i32.const 1772) "<") - (data $16.1 (i32.const 1784) "\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data $17 (i32.const 1836) "<") - (data $17.1 (i32.const 1848) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") - (data $18 (i32.const 1900) ",") - (data $18.1 (i32.const 1912) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $19 (i32.const 1948) "|") - (data $19.1 (i32.const 1960) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data $20 (i32.const 2076) "<") - (data $20.1 (i32.const 2088) "\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") - (data $21 (i32.const 2140) "<") - (data $21.1 (i32.const 2152) "\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") - (data $22 (i32.const 2208) "\10\00\00\00 \00\00\00 \00\00\00 ") - (data $22.1 (i32.const 2232) "\81\08\00\00\01\19\00\00\01\02\00\00$\t\00\00\a4\00\00\00$\n\00\00\02\t\00\00\02A\00\00\00\00\00\00A\00\00\00 ") + (data $5 (i32.const 1228) "\1c") + (data $5.1 (i32.const 1240) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $6 (i32.const 1260) "\1c") + (data $6.1 (i32.const 1272) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $7 (i32.const 1292) "\1c") + (data $7.1 (i32.const 1304) "\02") + (data $8 (i32.const 1324) "<") + (data $8.1 (i32.const 1336) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $9 (i32.const 1388) "<") + (data $9.1 (i32.const 1400) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $12 (i32.const 1516) "<") + (data $12.1 (i32.const 1528) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $13 (i32.const 1580) ",") + (data $13.1 (i32.const 1592) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $15 (i32.const 1660) "<") + (data $15.1 (i32.const 1672) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $16 (i32.const 1724) "\1c") + (data $16.1 (i32.const 1736) "\02\00\00\00\02\00\00\00:") + (data $17 (i32.const 1756) "|") + (data $17.1 (i32.const 1768) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $18 (i32.const 1884) "<") + (data $18.1 (i32.const 1896) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $19 (i32.const 1948) "\1c") + (data $19.1 (i32.const 1960) "\02\00\00\00\02\00\00\000") + (data $20 (i32.const 1980) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $21 (i32.const 2380) "\1c\04") + (data $21.1 (i32.const 2392) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $22 (i32.const 3436) "\\") + (data $22.1 (i32.const 3448) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $23 (i32.const 3532) "<") + (data $23.1 (i32.const 3544) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $24 (i32.const 3596) ",") + (data $24.1 (i32.const 3608) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $25 (i32.const 3644) "<") + (data $25.1 (i32.const 3656) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $26 (i32.const 3708) "<") + (data $26.1 (i32.const 3720) "\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data $27 (i32.const 3772) "<") + (data $27.1 (i32.const 3784) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") + (data $28 (i32.const 3836) ",") + (data $28.1 (i32.const 3848) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $29 (i32.const 3884) "|") + (data $29.1 (i32.const 3896) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $30 (i32.const 4012) "<") + (data $30.1 (i32.const 4024) "\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") + (data $31 (i32.const 4076) "<") + (data $31.1 (i32.const 4088) "\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") + (data $32 (i32.const 4144) "\10\00\00\00 \00\00\00 \00\00\00 ") + (data $32.1 (i32.const 4168) "\81\08\00\00\01\19\00\00\01\02\00\00$\t\00\00\a4\00\00\00$\n\00\00\02\t\00\00\02A\00\00\00\00\00\00A\00\00\00 ") (export "plainGlobal" (global $bindings/esm/plainGlobal)) (export "plainMutableGlobal" (global $bindings/esm/plainMutableGlobal)) (export "stringGlobal" (global $bindings/esm/stringGlobal)) @@ -147,17 +165,21 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1552 + i32.const 1536 call $~lib/rt/itcms/__visit - i32.const 1248 + i32.const 3616 + call $~lib/rt/itcms/__visit + i32.const 3904 + call $~lib/rt/itcms/__visit + i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1968 + i32.const 4032 call $~lib/rt/itcms/__visit - i32.const 1360 + i32.const 4096 call $~lib/rt/itcms/__visit - i32.const 2096 + i32.const 2400 call $~lib/rt/itcms/__visit - i32.const 2160 + i32.const 3456 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -178,7 +200,7 @@ i32.ne if i32.const 0 - i32.const 1424 + i32.const 1408 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -210,13 +232,13 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 35044 + i32.const 36980 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1408 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -230,7 +252,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1408 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -262,7 +284,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1408 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -284,12 +306,12 @@ i32.const 1 else local.get $2 - i32.const 2208 + i32.const 4144 i32.load i32.gt_u if - i32.const 1552 - i32.const 1616 + i32.const 1536 + i32.const 1600 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -298,7 +320,7 @@ local.get $2 i32.const 2 i32.shl - i32.const 2212 + i32.const 4148 i32.add i32.load i32.const 32 @@ -369,7 +391,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -383,7 +405,7 @@ i32.lt_u if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -429,7 +451,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -512,7 +534,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -526,7 +548,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -587,7 +609,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -620,7 +642,7 @@ i32.lt_u if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -635,7 +657,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -686,7 +708,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -758,7 +780,7 @@ i64.lt_u if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -783,7 +805,7 @@ i32.gt_u if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -810,7 +832,7 @@ i32.gt_u if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -882,10 +904,10 @@ if unreachable end - i32.const 35056 + i32.const 36992 i32.const 0 i32.store - i32.const 36624 + i32.const 38560 i32.const 0 i32.store loop $for-loop|0 @@ -896,7 +918,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 35056 + i32.const 36992 i32.add i32.const 0 i32.store offset=4 @@ -914,7 +936,7 @@ i32.add i32.const 2 i32.shl - i32.const 35056 + i32.const 36992 i32.add i32.const 0 i32.store offset=96 @@ -932,14 +954,14 @@ br $for-loop|0 end end - i32.const 35056 - i32.const 36628 + i32.const 36992 + i32.const 38564 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 35056 + i32.const 36992 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -1024,7 +1046,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 35044 + i32.const 36980 i32.lt_u if local.get $0 @@ -1113,14 +1135,14 @@ i32.ne if i32.const 0 - i32.const 1424 + i32.const 1408 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 35044 + i32.const 36980 i32.lt_u if local.get $0 @@ -1143,7 +1165,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 35044 + i32.const 36980 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1172,7 +1194,7 @@ end if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1256,7 +1278,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1308,7 +1330,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1340,8 +1362,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1360 - i32.const 1424 + i32.const 1344 + i32.const 1408 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1351,7 +1373,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$70 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1372,7 +1394,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1405,8 +1427,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1360 - i32.const 1696 + i32.const 1344 + i32.const 1680 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1508,7 +1530,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1523,7 +1545,7 @@ i32.gt_u if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1542,7 +1564,7 @@ i32.and if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1647,6 +1669,204 @@ memory.fill local.get $1 ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 4212 + i32.lt_s + if + i32.const 37008 + i32.const 37056 + 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$75 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1968 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$75 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1980 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1980 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1980 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1980 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 @@ -1658,7 +1878,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1408 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1713,11 +1933,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1754,8 +1974,8 @@ i32.const 3 i32.eq if - i32.const 2096 - i32.const 1424 + i32.const 4032 + i32.const 1408 i32.const 338 i32.const 7 call $~lib/builtins/abort @@ -1807,8 +2027,8 @@ i32.const 3 i32.ne if - i32.const 2160 - i32.const 1424 + i32.const 4096 + i32.const 1408 i32.const 352 i32.const 5 call $~lib/builtins/abort @@ -1883,165 +2103,6 @@ i32.add global.set $~lib/rt/itcms/threshold ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $bindings/esm/NonPlainObject - block $bindings/esm/PlainObject - block $~lib/array/Array<~lib/string/String> - block $~lib/array/Array - block $~lib/staticarray/StaticArray - block $~lib/staticarray/StaticArray - block $~lib/staticarray/StaticArray - block $~lib/function/Function<%28%29=>void> - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $~lib/function/Function<%28%29=>void> $folding-inner1 $folding-inner1 $folding-inner1 $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array<~lib/string/String> $bindings/esm/PlainObject $folding-inner1 $bindings/esm/NonPlainObject $invalid - end - return - end - return - end - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - return - end - return - end - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - br $folding-inner2 - 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 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - br $folding-inner2 - end - local.get $0 - i32.load offset=56 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=60 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=64 - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - end - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) (func $~setArgumentsLength (param $0 i32) local.get $0 global.set $~argumentsLength @@ -2071,37 +2132,37 @@ memory.size i32.const 16 i32.shl - i32.const 35044 + i32.const 36980 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1476 - i32.const 1472 + i32.const 1460 + i32.const 1456 i32.store - i32.const 1480 - i32.const 1472 + i32.const 1464 + i32.const 1456 i32.store - i32.const 1472 + i32.const 1456 global.set $~lib/rt/itcms/pinSpace - i32.const 1508 - i32.const 1504 + i32.const 1492 + i32.const 1488 i32.store - i32.const 1512 - i32.const 1504 + i32.const 1496 + i32.const 1488 i32.store - i32.const 1504 + i32.const 1488 global.set $~lib/rt/itcms/toSpace - i32.const 1652 - i32.const 1648 + i32.const 1636 + i32.const 1632 i32.store - i32.const 1656 - i32.const 1648 + i32.const 1640 + i32.const 1632 i32.store - i32.const 1648 + i32.const 1632 global.set $~lib/rt/itcms/fromSpace ) - (func $bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2111,7 +2172,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2128,24 +2189,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2153,6 +2197,7 @@ i64.store global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $2 i32.store local.get $0 i32.const 20 @@ -2164,7 +2209,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store - block $__inlined_func$~lib/string/String#concat$284 + block $__inlined_func$~lib/string/String#concat$288 local.get $1 i32.const 20 i32.sub @@ -2174,28 +2219,28 @@ local.tee $4 local.get $3 i32.add - local.tee $2 + local.tee $0 i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1760 - local.set $2 - br $__inlined_func$~lib/string/String#concat$284 + i32.const 1312 + local.set $0 + br $__inlined_func$~lib/string/String#concat$288 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store offset=4 - local.get $2 local.get $0 + local.get $2 local.get $3 memory.copy - local.get $2 + local.get $0 local.get $3 i32.add local.get $1 @@ -2210,31 +2255,157 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 return end - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4212 + i32.lt_s + if + i32.const 37008 + i32.const 37056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1248 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1280 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1744 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1744 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3552 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4212 + i32.lt_s + if + i32.const 37008 + i32.const 37056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $~lib/typedarray/Int16Array#get:length (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2261,11 +2432,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2292,11 +2463,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2315,8 +2486,8 @@ i32.shr_u i32.ge_u if - i32.const 1552 - i32.const 1792 + i32.const 1536 + i32.const 3728 i32.const 1173 i32.const 64 call $~lib/builtins/abort @@ -2351,7 +2522,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2382,7 +2553,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner00 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer @@ -2403,7 +2574,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer @@ -2448,8 +2619,8 @@ i32.const 134217727 i32.gt_u if - i32.const 1248 - i32.const 1296 + i32.const 3616 + i32.const 3664 i32.const 19 i32.const 57 call $~lib/builtins/abort @@ -2526,7 +2697,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2542,8 +2713,8 @@ i32.shr_u i32.ge_u if - i32.const 1552 - i32.const 1792 + i32.const 1536 + i32.const 3728 i32.const 452 i32.const 64 call $~lib/builtins/abort @@ -2606,7 +2777,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2622,8 +2793,8 @@ i32.shr_u i32.ge_u if - i32.const 1552 - i32.const 1792 + i32.const 1536 + i32.const 3728 i32.const 1304 i32.const 64 call $~lib/builtins/abort @@ -2663,8 +2834,8 @@ local.get $2 return end - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2676,11 +2847,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2701,8 +2872,8 @@ i32.shr_u i32.ge_u if - i32.const 1552 - i32.const 1856 + i32.const 1536 + i32.const 3792 i32.const 78 i32.const 41 call $~lib/builtins/abort @@ -2725,11 +2896,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2750,8 +2921,8 @@ i32.shr_u i32.ge_u if - i32.const 1552 - i32.const 1856 + i32.const 1536 + i32.const 3792 i32.const 93 i32.const 41 call $~lib/builtins/abort @@ -2778,11 +2949,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2807,11 +2978,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2828,8 +2999,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1552 - i32.const 1920 + i32.const 1536 + i32.const 3856 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2859,11 +3030,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2887,8 +3058,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1248 - i32.const 1920 + i32.const 3616 + i32.const 3856 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -2897,7 +3068,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $__inlined_func$~lib/rt/itcms/__renew$269 + block $__inlined_func$~lib/rt/itcms/__renew$262 i32.const 1073741820 local.get $2 i32.const 1 @@ -2940,7 +3111,7 @@ i32.store offset=16 local.get $2 local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew$269 + br $__inlined_func$~lib/rt/itcms/__renew$262 end local.get $3 local.get $4 @@ -2989,11 +3160,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3014,8 +3185,8 @@ i32.const 0 i32.lt_s if - i32.const 1552 - i32.const 1920 + i32.const 1536 + i32.const 3856 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -3056,11 +3227,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3077,8 +3248,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1552 - i32.const 1920 + i32.const 1536 + i32.const 3856 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -3100,8 +3271,8 @@ local.get $0 i32.eqz if - i32.const 1968 - i32.const 1920 + i32.const 3904 + i32.const 3856 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -3120,11 +3291,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3145,8 +3316,8 @@ i32.const 0 i32.lt_s if - i32.const 1552 - i32.const 1920 + i32.const 1536 + i32.const 3856 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -3196,7 +3367,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3210,7 +3381,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3241,7 +3412,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3251,8 +3422,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1248 - i32.const 1296 + i32.const 3616 + i32.const 3664 i32.const 52 i32.const 43 call $~lib/builtins/abort @@ -3291,8 +3462,8 @@ local.get $5 return end - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3304,11 +3475,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3335,7 +3506,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3349,7 +3520,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3393,8 +3564,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3406,11 +3577,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3440,7 +3611,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3456,7 +3627,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3491,7 +3662,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3501,8 +3672,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1248 - i32.const 1856 + i32.const 3616 + i32.const 3792 i32.const 51 i32.const 60 call $~lib/builtins/abort @@ -3615,8 +3786,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3628,11 +3799,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3659,7 +3830,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3673,7 +3844,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3702,7 +3873,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3749,8 +3920,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1248 - i32.const 1920 + i32.const 3616 + i32.const 3856 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -3884,8 +4055,8 @@ local.get $6 return end - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3903,7 +4074,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3917,7 +4088,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3946,7 +4117,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3993,8 +4164,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1248 - i32.const 1920 + i32.const 3616 + i32.const 3856 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -4138,8 +4309,8 @@ local.get $5 return end - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4154,7 +4325,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4168,7 +4339,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4185,7 +4356,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner00 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer @@ -4206,7 +4377,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer @@ -4394,8 +4565,8 @@ local.get $2 return end - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4407,11 +4578,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4429,4 +4600,163 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $bindings/esm/NonPlainObject + block $bindings/esm/PlainObject + block $~lib/array/Array<~lib/string/String> + block $~lib/array/Array + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/function/Function<%28%29=>void> + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $~lib/function/Function<%28%29=>void> $folding-inner1 $folding-inner1 $folding-inner1 $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array<~lib/string/String> $bindings/esm/PlainObject $folding-inner1 $bindings/esm/NonPlainObject $invalid + end + return + end + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4212 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + return + end + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4212 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner2 + 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 4212 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner2 + end + local.get $0 + i32.load offset=56 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=60 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=64 + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + end + i32.const 37008 + i32.const 37056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/bindings/noExportRuntime.debug.js b/tests/compiler/bindings/noExportRuntime.debug.js index bdf08ae5ff..3ec19de160 100644 --- a/tests/compiler/bindings/noExportRuntime.debug.js +++ b/tests/compiler/bindings/noExportRuntime.debug.js @@ -1,20 +1,5 @@ async function instantiate(module, imports = {}) { - const adaptedImports = { - env: Object.setPrototypeOf({ - abort(message, fileName, lineNumber, columnNumber) { - // ~lib/builtins/abort(~lib/string/String | null?, ~lib/string/String | null?, u32?, u32?) => void - message = __liftString(message >>> 0); - fileName = __liftString(fileName >>> 0); - lineNumber = lineNumber >>> 0; - columnNumber = columnNumber >>> 0; - (() => { - // @external.js - throw Error(`${message} in ${fileName}:${lineNumber}:${columnNumber}`); - })(); - }, - }, Object.assign(Object.create(globalThis), imports.env || {})), - }; - const { exports } = await WebAssembly.instantiate(module, adaptedImports); + const { exports } = await WebAssembly.instantiate(module, imports); const memory = exports.memory || imports.env.memory; const adaptedExports = Object.setPrototypeOf({ isString: { diff --git a/tests/compiler/bindings/noExportRuntime.debug.wat b/tests/compiler/bindings/noExportRuntime.debug.wat index a75c227578..ca1d34b731 100644 --- a/tests/compiler/bindings/noExportRuntime.debug.wat +++ b/tests/compiler/bindings/noExportRuntime.debug.wat @@ -1,15 +1,17 @@ (module - (type $0 (func (param i32 i32))) - (type $1 (func (param i32) (result i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) (type $2 (func (param i32))) - (type $3 (func (result i32))) - (type $4 (func)) - (type $5 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (result i32))) + (type $5 (func)) (type $6 (func (param i32 i32 i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (type $9 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) + (type $12 (func (param i32 i32 i32) (result i32))) (global $bindings/noExportRuntime/isBasic (mut i32) (i32.const 0)) (global $bindings/noExportRuntime/isString i32 (i32.const 32)) (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) @@ -26,33 +28,44 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $bindings/noExportRuntime/isBuffer (mut i32) (i32.const 0)) (global $bindings/noExportRuntime/isTypedArray (mut i32) (i32.const 0)) - (global $bindings/noExportRuntime/isArrayOfBasic i32 (i32.const 608)) - (global $bindings/noExportRuntime/isArrayOfArray i32 (i32.const 688)) - (global $~lib/rt/__rtti_base i32 (i32.const 720)) - (global $~lib/memory/__data_end i32 (i32.const 756)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33524)) - (global $~lib/memory/__heap_base i32 (i32.const 33524)) + (global $bindings/noExportRuntime/isArrayOfBasic i32 (i32.const 2544)) + (global $bindings/noExportRuntime/isArrayOfArray i32 (i32.const 2624)) + (global $~lib/rt/__rtti_base i32 (i32.const 2656)) + (global $~lib/memory/__data_end i32 (i32.const 2692)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35460)) + (global $~lib/memory/__heap_base i32 (i32.const 35460)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $2 (i32.const 92) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $3 (i32.const 156) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $4 (i32.const 220) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 464) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 492) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 556) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 588) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\10\00\00\00@\02\00\00@\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 668) ",\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\10\00\00\00\90\02\00\00\90\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 720) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\01\t\00\00\02\t\00\00\02A\00\00 \00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $20 (i32.const 2428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $21 (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2524) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\10\00\00\00\d0\t\00\00\d0\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2604) ",\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\10\00\00\00 \n\00\00 \n\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2656) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\01\t\00\00\02\t\00\00\02A\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "isBasic" (global $bindings/noExportRuntime/isBasic)) @@ -71,6 +84,19 @@ (export "_start" (func $~start)) (export "takesNonPlainObject" (func $export:bindings/noExportRuntime/takesNonPlainObject)) (export "takesFunction" (func $export:bindings/noExportRuntime/takesFunction)) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -135,7 +161,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -205,7 +231,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -222,7 +248,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -252,8 +278,8 @@ i32.load i32.gt_u if - i32.const 368 - i32.const 432 + i32.const 320 + i32.const 384 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -321,7 +347,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 240 + i32.const 192 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -473,7 +499,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -493,7 +519,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -556,7 +582,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -709,7 +735,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -726,7 +752,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -815,7 +841,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -858,7 +884,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -876,7 +902,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -944,7 +970,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1061,7 +1087,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1107,7 +1133,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1139,7 +1165,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1383,7 +1409,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1603,7 +1629,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1711,8 +1737,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 176 - i32.const 512 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1814,7 +1840,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1885,7 +1911,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2042,7 +2068,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2157,7 +2183,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2177,7 +2203,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2225,8 +2251,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 176 - i32.const 240 + i32.const 128 + i32.const 192 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2271,6 +2297,422 @@ local.get $ptr return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) (local $child i32) (local $parent i32) @@ -2286,7 +2728,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2369,13 +2811,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 288 + i32.const 240 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 320 + i32.const 272 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 464 + i32.const 416 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -2415,50 +2857,654 @@ ) (func $bindings/noExportRuntime/takesFunction (param $fn i32) ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $bindings/noExportRuntime/isString - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $bindings/noExportRuntime/isBuffer - local.tee $1 + (func $~start + global.get $~started if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + return end - global.get $bindings/noExportRuntime/isTypedArray - local.tee $1 + i32.const 1 + global.set $~started + call $start:bindings/noExportRuntime + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 35488 + i32.const 35536 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $bindings/noExportRuntime/isArrayOfBasic - local.tee $1 + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 32 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - global.get $bindings/noExportRuntime/isArrayOfArray - local.tee $1 - if - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $this i32) (param $length i32) (param $alignLog2 i32) (result i32) + (local $buffer i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $length + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 2400 + i32.const 2448 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + local.get $alignLog2 + i32.shl + local.tee $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $length + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Int32Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) + (local $buffer i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.gt_u + if + i32.const 2400 + i32.const 2448 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $export:bindings/noExportRuntime/takesNonPlainObject (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $bindings/noExportRuntime/takesNonPlainObject + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:bindings/noExportRuntime/takesFunction (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $bindings/noExportRuntime/takesFunction + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $bindings/noExportRuntime/isString + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $bindings/noExportRuntime/isBuffer + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $bindings/noExportRuntime/isTypedArray + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $bindings/noExportRuntime/isArrayOfBasic + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $bindings/noExportRuntime/isArrayOfArray + local.tee $1 + if + local.get $1 local.get $0 call $~lib/rt/itcms/__visit end - i32.const 368 + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2400 local.get $0 call $~lib/rt/itcms/__visit - i32.const 64 + i32.const 128 local.get $0 call $~lib/rt/itcms/__visit - i32.const 176 + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 local.get $0 call $~lib/rt/itcms/__visit ) @@ -2557,179 +3603,6 @@ end unreachable ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:bindings/noExportRuntime - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 33552 - i32.const 33600 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (param $this i32) (param $length i32) (param $alignLog2 i32) (result i32) - (local $buffer i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:dataStart - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:byteLength - local.get $length - i32.const 1073741820 - local.get $alignLog2 - i32.shr_u - i32.gt_u - if - i32.const 64 - i32.const 112 - i32.const 19 - i32.const 57 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $length - local.get $alignLog2 - i32.shl - local.tee $length - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $buffer - i32.store offset=8 - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $buffer - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $buffer - call $~lib/arraybuffer/ArrayBufferView#set:dataStart - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $length - call $~lib/arraybuffer/ArrayBufferView#set:byteLength - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/typedarray/Int32Array#constructor (param $this i32) (param $length i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $length - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $this - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) (local $2 i32) global.get $~lib/memory/__stack_pointer @@ -2826,77 +3699,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) - (local $buffer i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $length - i32.const 1073741820 - i32.gt_u - if - i32.const 64 - i32.const 112 - i32.const 52 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $length - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $buffer - i32.store - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $buffer - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $export:bindings/noExportRuntime/takesNonPlainObject (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $bindings/noExportRuntime/takesNonPlainObject - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:bindings/noExportRuntime/takesFunction (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $bindings/noExportRuntime/takesFunction - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) ) diff --git a/tests/compiler/bindings/noExportRuntime.release.js b/tests/compiler/bindings/noExportRuntime.release.js index 24a1b9596b..331bab6bef 100644 --- a/tests/compiler/bindings/noExportRuntime.release.js +++ b/tests/compiler/bindings/noExportRuntime.release.js @@ -1,20 +1,5 @@ async function instantiate(module, imports = {}) { - const adaptedImports = { - env: Object.setPrototypeOf({ - abort(message, fileName, lineNumber, columnNumber) { - // ~lib/builtins/abort(~lib/string/String | null?, ~lib/string/String | null?, u32?, u32?) => void - message = __liftString(message >>> 0); - fileName = __liftString(fileName >>> 0); - lineNumber = lineNumber >>> 0; - columnNumber = columnNumber >>> 0; - (() => { - // @external.js - throw Error(`${message} in ${fileName}:${lineNumber}:${columnNumber}`); - })(); - }, - }, Object.assign(Object.create(globalThis), imports.env || {})), - }; - const { exports } = await WebAssembly.instantiate(module, adaptedImports); + const { exports } = await WebAssembly.instantiate(module, imports); const memory = exports.memory || imports.env.memory; const adaptedExports = Object.setPrototypeOf({ isString: { diff --git a/tests/compiler/bindings/noExportRuntime.release.wat b/tests/compiler/bindings/noExportRuntime.release.wat index dd2b17bc43..ad7eed94bb 100644 --- a/tests/compiler/bindings/noExportRuntime.release.wat +++ b/tests/compiler/bindings/noExportRuntime.release.wat @@ -4,10 +4,9 @@ (type $2 (func)) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32) (result i32))) - (type $5 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32) (result i32))) (type $6 (func (param i32 i32 i64))) - (type $7 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) (global $bindings/noExportRuntime/isBasic (mut i32) (i32.const 0)) (global $bindings/noExportRuntime/isString i32 (i32.const 1056)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -22,36 +21,55 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $bindings/noExportRuntime/isBuffer (mut i32) (i32.const 0)) (global $bindings/noExportRuntime/isTypedArray (mut i32) (i32.const 0)) - (global $bindings/noExportRuntime/isArrayOfBasic i32 (i32.const 1632)) - (global $bindings/noExportRuntime/isArrayOfArray i32 (i32.const 1712)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34548)) + (global $bindings/noExportRuntime/isArrayOfBasic i32 (i32.const 3568)) + (global $bindings/noExportRuntime/isArrayOfArray i32 (i32.const 3648)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36484)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02") - (data $1 (i32.const 1068) ",") - (data $1.1 (i32.const 1080) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $2 (i32.const 1116) "<") - (data $2.1 (i32.const 1128) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data $3 (i32.const 1180) "<") - (data $3.1 (i32.const 1192) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $4 (i32.const 1244) "<") - (data $4.1 (i32.const 1256) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $8 (i32.const 1436) ",") - (data $8.1 (i32.const 1448) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $10 (i32.const 1516) "<") - (data $10.1 (i32.const 1528) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $11 (i32.const 1580) "\1c") - (data $11.1 (i32.const 1592) "\01") - (data $12 (i32.const 1612) ",") - (data $12.1 (i32.const 1624) "\05\00\00\00\10\00\00\00@\06\00\00@\06") - (data $13 (i32.const 1660) "\1c") - (data $13.1 (i32.const 1672) "\01") - (data $14 (i32.const 1692) ",") - (data $14.1 (i32.const 1704) "\06\00\00\00\10\00\00\00\90\06\00\00\90\06") - (data $15 (i32.const 1744) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\01\t\00\00\02\t\00\00\02A\00\00 ") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $20 (i32.const 3452) "<") + (data $20.1 (i32.const 3464) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $21 (i32.const 3516) "\1c") + (data $21.1 (i32.const 3528) "\01") + (data $22 (i32.const 3548) ",") + (data $22.1 (i32.const 3560) "\05\00\00\00\10\00\00\00\d0\r\00\00\d0\r") + (data $23 (i32.const 3596) "\1c") + (data $23.1 (i32.const 3608) "\01") + (data $24 (i32.const 3628) ",") + (data $24.1 (i32.const 3640) "\06\00\00\00\10\00\00\00 \0e\00\00 \0e") + (data $25 (i32.const 3680) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\01\t\00\00\02\t\00\00\02A\00\00 ") (export "isBasic" (global $bindings/noExportRuntime/isBasic)) (export "takesReturnsBasic" (func $bindings/noExportRuntime/takesReturnsBasic)) (export "isString" (global $bindings/noExportRuntime/isString)) @@ -85,15 +103,19 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1632 + i32.const 3568 call $~lib/rt/itcms/__visit - i32.const 1712 + i32.const 3648 call $~lib/rt/itcms/__visit - i32.const 1392 + i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1088 + i32.const 3424 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 call $~lib/rt/itcms/__visit - i32.const 1200 + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -114,7 +136,7 @@ i32.ne if i32.const 0 - i32.const 1264 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -147,7 +169,7 @@ i32.eqz if i32.const 0 - i32.const 1264 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -156,7 +178,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$132 + block $__inlined_func$~lib/rt/itcms/Object#unlink$145 local.get $0 i32.load offset=4 i32.const -4 @@ -168,19 +190,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34548 + i32.const 36484 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1264 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$132 + br $__inlined_func$~lib/rt/itcms/Object#unlink$145 end local.get $0 i32.load offset=8 @@ -188,7 +210,7 @@ i32.eqz if i32.const 0 - i32.const 1264 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -217,12 +239,12 @@ i32.const 1 else local.get $1 - i32.const 1744 + i32.const 3680 i32.load i32.gt_u if - i32.const 1392 - i32.const 1456 + i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -231,7 +253,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1748 + i32.const 3684 i32.add i32.load i32.const 32 @@ -302,7 +324,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -316,7 +338,7 @@ i32.lt_u if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -362,7 +384,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -445,7 +467,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -459,7 +481,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -520,7 +542,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -553,7 +575,7 @@ i32.lt_u if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -568,7 +590,7 @@ i32.ne if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -619,7 +641,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -691,7 +713,7 @@ i64.lt_u if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -716,7 +738,7 @@ i32.gt_u if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -743,7 +765,7 @@ i32.gt_u if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -815,10 +837,10 @@ if unreachable end - i32.const 34560 + i32.const 36496 i32.const 0 i32.store - i32.const 36128 + i32.const 38064 i32.const 0 i32.store loop $for-loop|0 @@ -829,7 +851,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34560 + i32.const 36496 i32.add i32.const 0 i32.store offset=4 @@ -847,7 +869,7 @@ i32.add i32.const 2 i32.shl - i32.const 34560 + i32.const 36496 i32.add i32.const 0 i32.store offset=96 @@ -865,14 +887,14 @@ br $for-loop|0 end end - i32.const 34560 - i32.const 36132 + i32.const 36496 + i32.const 38068 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34560 + i32.const 36496 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -957,7 +979,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34548 + i32.const 36484 i32.lt_u if local.get $0 @@ -1046,14 +1068,14 @@ i32.ne if i32.const 0 - i32.const 1264 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34548 + i32.const 36484 i32.lt_u if local.get $0 @@ -1076,7 +1098,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34548 + i32.const 36484 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1105,7 +1127,7 @@ end if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1189,7 +1211,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1241,7 +1263,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1273,8 +1295,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1200 - i32.const 1264 + i32.const 1152 + i32.const 1216 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1284,7 +1306,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1305,7 +1327,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end local.get $2 i32.const 0 @@ -1338,8 +1360,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1200 - i32.const 1536 + i32.const 1152 + i32.const 1488 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1441,7 +1463,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1456,7 +1478,7 @@ i32.gt_u if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1475,7 +1497,7 @@ i32.and if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1580,6 +1602,204 @@ memory.fill local.get $1 ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3716 + i32.lt_s + if + i32.const 36512 + i32.const 36560 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) local.get $0 local.get $1 @@ -1590,7 +1810,7 @@ i32.eqz if i32.const 0 - i32.const 1264 + i32.const 1216 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1648,130 +1868,10 @@ global.get $bindings/noExportRuntime/isTypedArray ) (func $bindings/noExportRuntime/returnsArrayOfBasic (result i32) - i32.const 1632 + i32.const 3568 ) (func $bindings/noExportRuntime/returnsArrayOfArray (result i32) - i32.const 1712 - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $bindings/noExportRuntime/NonPlainObject - block $~lib/array/Array<~lib/array/Array> - block $~lib/array/Array - block $~lib/typedarray/Int32Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Int32Array $~lib/array/Array $~lib/array/Array<~lib/array/Array> $bindings/noExportRuntime/NonPlainObject $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1780 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1780 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - br $folding-inner1 - end - return - end - unreachable - end - i32.const 34576 - i32.const 34624 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 3648 ) (func $~start (local $0 i32) @@ -1786,34 +1886,34 @@ memory.size i32.const 16 i32.shl - i32.const 34548 + i32.const 36484 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1316 - i32.const 1312 + i32.const 1268 + i32.const 1264 i32.store - i32.const 1320 - i32.const 1312 + i32.const 1272 + i32.const 1264 i32.store - i32.const 1312 + i32.const 1264 global.set $~lib/rt/itcms/pinSpace - i32.const 1348 - i32.const 1344 + i32.const 1300 + i32.const 1296 i32.store - i32.const 1352 - i32.const 1344 + i32.const 1304 + i32.const 1296 i32.store - i32.const 1344 + i32.const 1296 global.set $~lib/rt/itcms/toSpace - i32.const 1492 - i32.const 1488 + i32.const 1444 + i32.const 1440 i32.store - i32.const 1496 - i32.const 1488 + i32.const 1448 + i32.const 1440 i32.store - i32.const 1488 + i32.const 1440 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 4 @@ -1822,7 +1922,7 @@ block $__inlined_func$start:bindings/noExportRuntime block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1780 + i32.const 3716 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1845,7 +1945,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1780 + i32.const 3716 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1866,7 +1966,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1780 + i32.const 3716 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1944,25 +2044,225 @@ global.set $bindings/noExportRuntime/isTypedArray br $__inlined_func$start:bindings/noExportRuntime end - i32.const 34576 - i32.const 34624 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3716 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3716 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$150 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1056 + local.set $0 + br $__inlined_func$~lib/string/String#concat$150 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36512 + i32.const 36560 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3716 + i32.lt_s + if + i32.const 36512 + i32.const 36560 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1088 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1120 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $export:bindings/noExportRuntime/takesNonPlainObject (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1780 + i32.const 3716 i32.lt_s if - i32.const 34576 - i32.const 34624 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1976,4 +2276,124 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $bindings/noExportRuntime/NonPlainObject + block $~lib/array/Array<~lib/array/Array> + block $~lib/array/Array + block $~lib/typedarray/Int32Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Int32Array $~lib/array/Array $~lib/array/Array<~lib/array/Array> $bindings/noExportRuntime/NonPlainObject $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3716 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3716 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner1 + end + return + end + unreachable + end + i32.const 36512 + i32.const 36560 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/bindings/raw.debug.js b/tests/compiler/bindings/raw.debug.js index 564035a225..20418eeab3 100644 --- a/tests/compiler/bindings/raw.debug.js +++ b/tests/compiler/bindings/raw.debug.js @@ -33,17 +33,6 @@ export async function instantiate(module, imports = {}) { return new Date().getTimezoneOffset(); })(); }, - abort(message, fileName, lineNumber, columnNumber) { - // ~lib/builtins/abort(~lib/string/String | null?, ~lib/string/String | null?, u32?, u32?) => void - message = __liftString(message >>> 0); - fileName = __liftString(fileName >>> 0); - lineNumber = lineNumber >>> 0; - columnNumber = columnNumber >>> 0; - (() => { - // @external.js - throw Error(`${message} in ${fileName}:${lineNumber}:${columnNumber}`); - })(); - }, }, Object.assign(Object.create(globalThis), imports.env || {})), }; const { exports } = await WebAssembly.instantiate(module, adaptedImports); diff --git a/tests/compiler/bindings/raw.debug.wat b/tests/compiler/bindings/raw.debug.wat index 1a05e8c669..ca2e87f41b 100644 --- a/tests/compiler/bindings/raw.debug.wat +++ b/tests/compiler/bindings/raw.debug.wat @@ -6,18 +6,21 @@ (type $4 (func)) (type $5 (func (param i32 i32 i32))) (type $6 (func (result i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i64))) + (type $7 (func (param i32 i64))) + (type $8 (func (param i32 i32 i32 i32))) (type $9 (func (param i32 i32 f64 f64 f64 f64 f64))) (type $10 (func (param f64) (result f64))) (type $11 (func (param i64 i64) (result i64))) (type $12 (func (result i64))) (type $13 (func (param i32 i32 i64) (result i32))) - (type $14 (func (param i32 f32))) - (type $15 (func (param i32 f64))) - (type $16 (func (param i32 i32 i32) (result i32))) - (type $17 (func (param i32 i32 i64))) - (type $18 (func (param i32 i32) (result f32))) + (type $14 (func (param i32 i64 i32))) + (type $15 (func (param i64 i32) (result i32))) + (type $16 (func (param i32 i64 i32 i32))) + (type $17 (func (param i32 f32))) + (type $18 (func (param i32 f64))) + (type $19 (func (param i32 i32 i32) (result i32))) + (type $20 (func (param i32 i32 i64))) + (type $21 (func (param i32 i32) (result f32))) (import "env" "Math.E" (global $~lib/bindings/dom/Math.E f64)) (import "env" "globalThis" (global $bindings/esm/immutableGlobal externref)) (import "env" "globalThis.globalThis" (global $bindings/esm/immutableGlobalNested externref)) @@ -25,7 +28,6 @@ (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) (import "env" "Date.getTimezoneOffset" (func $bindings/esm/Date_getTimezoneOffset (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $bindings/esm/plainGlobal i32 (i32.const 1)) (global $bindings/esm/plainMutableGlobal (mut i32) (i32.const 2)) (global $bindings/esm/stringGlobal i32 (i32.const 32)) @@ -53,12 +55,13 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1184)) - (global $~lib/memory/__data_end i32 (i32.const 1252)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34020)) - (global $~lib/memory/__heap_base i32 (i32.const 34020)) + (global $~lib/rt/__rtti_base i32 (i32.const 3120)) + (global $~lib/memory/__data_end i32 (i32.const 3188)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35956)) + (global $~lib/memory/__heap_base i32 (i32.const 35956)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") @@ -66,24 +69,34 @@ (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00t\00r\00a\00c\00e\00\00\00") (data $4 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\004\002\00 \00f\00r\00o\00m\00 \00c\00o\00n\00s\00o\00l\00e\00.\00l\00o\00g\00\00\00\00\00\00\00") - (data $5 (i32.const 204) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $6 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $7 (i32.const 316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 480) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 624) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 652) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 748) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $17 (i32.const 812) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00") - (data $18 (i32.const 876) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $19 (i32.const 924) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $20 (i32.const 1052) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") - (data $21 (i32.const 1116) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") - (data $22 (i32.const 1184) "\10\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\81\08\00\00\01\19\00\00\01\02\00\00$\t\00\00\a4\00\00\00$\n\00\00\02\t\00\00\02A\00\00\00\00\00\00A\00\00\00 \00\00\00") + (data $5 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $6 (i32.const 236) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $7 (i32.const 268) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $9 (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 464) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 492) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 556) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 608) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 636) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 732) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 860) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $19 (i32.const 924) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 956) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $21 (i32.const 1356) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2412) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $23 (i32.const 2508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $25 (i32.const 2620) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $26 (i32.const 2684) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2748) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00") + (data $28 (i32.const 2812) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $29 (i32.const 2860) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 2988) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") + (data $31 (i32.const 3052) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") + (data $32 (i32.const 3120) "\10\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\81\08\00\00\01\19\00\00\01\02\00\00$\t\00\00\a4\00\00\00$\n\00\00\02\t\00\00\02A\00\00\00\00\00\00A\00\00\00 \00\00\00") (table $0 2 2 funcref) (elem $0 (i32.const 1) $start:bindings/esm~anonymous|0) (export "plainGlobal" (global $bindings/esm/plainGlobal)) @@ -179,6 +192,15 @@ call $~lib/rt/common/OBJECT#get:rtSize return ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -243,7 +265,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 384 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -313,7 +335,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 384 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -330,7 +352,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 384 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -360,8 +382,8 @@ i32.load i32.gt_u if - i32.const 528 - i32.const 592 + i32.const 512 + i32.const 576 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -429,7 +451,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 400 + i32.const 384 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -581,7 +603,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -601,7 +623,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -664,7 +686,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -817,7 +839,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -834,7 +856,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -923,7 +945,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -966,7 +988,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -984,7 +1006,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -1052,7 +1074,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1169,7 +1191,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1215,7 +1237,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1247,7 +1269,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1491,7 +1513,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1711,7 +1733,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 384 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1819,8 +1841,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 336 - i32.const 672 + i32.const 320 + i32.const 656 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1922,7 +1944,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1993,7 +2015,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2150,7 +2172,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2265,7 +2287,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2285,7 +2307,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 656 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2333,8 +2355,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 336 - i32.const 400 + i32.const 320 + i32.const 384 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2379,13 +2401,420 @@ local.get $ptr return ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 956 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 956 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 956 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 956 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1376 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1376 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 i32.sub - call $~lib/rt/common/OBJECT#get:rtSize + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix i32.const 1 - i32.shr_u + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2432 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2432 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 return ) (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) @@ -2403,7 +2832,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 384 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2755,8 +3184,8 @@ i32.const 3 i32.eq if - i32.const 1072 - i32.const 400 + i32.const 3008 + i32.const 384 i32.const 338 i32.const 7 call $~lib/builtins/abort @@ -2788,8 +3217,8 @@ i32.const 3 i32.ne if - i32.const 1136 - i32.const 400 + i32.const 3072 + i32.const 384 i32.const 352 i32.const 5 call $~lib/builtins/abort @@ -2856,311 +3285,49 @@ i32.const 0 drop ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 528 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 944 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 336 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 1072 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 1136 + (func $~setArgumentsLength (param $0 i32) local.get $0 - call $~lib/rt/itcms/__visit - global.get $bindings/esm/stringGlobal - local.tee $1 + global.set $~argumentsLength + ) + (func $~start + global.get $~started if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + return end - global.get $bindings/esm/mutableStringGlobal - local.tee $1 + i32.const 1 + global.set $~started + call $start:bindings/raw + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 432 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 464 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 608 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 35984 + i32.const 36032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>void>#__visit - ) - (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint64Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit - ) - (func $bindings/esm/PlainObject~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load offset=56 - local.get $1 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=60 - local.get $1 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=64 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $bindings/esm/NonPlainObject - block $~lib/typedarray/Uint8Array - block $bindings/esm/PlainObject - block $~lib/array/Array<~lib/string/String> - block $~lib/array/Array - block $~lib/staticarray/StaticArray - block $~lib/staticarray/StaticArray - block $~lib/staticarray/StaticArray - block $~lib/typedarray/Uint64Array - block $~lib/typedarray/Float32Array - block $~lib/typedarray/Int16Array - block $~lib/function/Function<%28%29=>void> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $~lib/typedarray/Int16Array $~lib/typedarray/Float32Array $~lib/typedarray/Uint64Array $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array<~lib/string/String> $bindings/esm/PlainObject $~lib/typedarray/Uint8Array $bindings/esm/NonPlainObject $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Int16Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Float32Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint64Array~visit - return - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>~visit - return - end - local.get $0 - local.get $1 - call $bindings/esm/PlainObject~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8Array~visit - return - end - return - end - unreachable - ) - (func $~setArgumentsLength (param $0 i32) - local.get $0 - global.set $~argumentsLength - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:bindings/raw - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 448 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 480 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 624 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 34048 - i32.const 34096 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $bindings/esm/bufferFunction (param $a i32) (param $b i32) (result i32) - (local $aByteLength i32) - (local $bByteLength i32) - (local $out i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $a - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $aByteLength - local.get $b - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $bByteLength - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $aByteLength - local.get $bByteLength - i32.add - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $out - i32.store offset=4 - local.get $out - local.get $a - local.get $aByteLength - memory.copy - local.get $out - local.get $aByteLength - i32.add - local.get $b - local.get $bByteLength - memory.copy - local.get $out - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - return - ) (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) (local $thisSize i32) (local $otherSize i32) @@ -3203,7 +3370,7 @@ i32.const 0 i32.eq if - i32.const 736 + i32.const 288 local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -3268,6 +3435,160 @@ local.get $2 return ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 224 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 256 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 720 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 720 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2528 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $bindings/esm/bufferFunction (param $a i32) (param $b i32) (result i32) + (local $aByteLength i32) + (local $bByteLength i32) + (local $out i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $aByteLength + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $bByteLength + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $aByteLength + local.get $bByteLength + i32.add + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $out + i32.store offset=4 + local.get $out + local.get $a + local.get $aByteLength + memory.copy + local.get $out + local.get $aByteLength + i32.add + local.get $b + local.get $bByteLength + memory.copy + local.get $out + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) (func $bindings/esm/stringFunction (param $a i32) (param $b i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer @@ -3432,8 +3753,8 @@ i32.shr_u i32.gt_u if - i32.const 224 - i32.const 272 + i32.const 2592 + i32.const 2640 i32.const 19 i32.const 57 call $~lib/builtins/abort @@ -3605,8 +3926,8 @@ i32.shr_u i32.ge_u if - i32.const 528 - i32.const 768 + i32.const 512 + i32.const 2704 i32.const 452 i32.const 64 call $~lib/builtins/abort @@ -3654,8 +3975,8 @@ i32.shr_u i32.ge_u if - i32.const 528 - i32.const 768 + i32.const 512 + i32.const 2704 i32.const 1173 i32.const 64 call $~lib/builtins/abort @@ -3702,8 +4023,8 @@ i32.shr_u i32.ge_u if - i32.const 528 - i32.const 768 + i32.const 512 + i32.const 2704 i32.const 1304 i32.const 64 call $~lib/builtins/abort @@ -3877,8 +4198,8 @@ call $~lib/staticarray/StaticArray#get:length i32.ge_u if - i32.const 528 - i32.const 832 + i32.const 512 + i32.const 2768 i32.const 78 i32.const 41 call $~lib/builtins/abort @@ -3922,8 +4243,8 @@ call $~lib/staticarray/StaticArray#get:length i32.ge_u if - i32.const 528 - i32.const 832 + i32.const 512 + i32.const 2768 i32.const 93 i32.const 41 call $~lib/builtins/abort @@ -4133,8 +4454,8 @@ i32.shr_u i32.gt_u if - i32.const 224 - i32.const 896 + i32.const 2592 + i32.const 2832 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -4252,8 +4573,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 528 - i32.const 896 + i32.const 512 + i32.const 2832 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -4323,8 +4644,8 @@ i32.shr_u i32.gt_u if - i32.const 224 - i32.const 896 + i32.const 2592 + i32.const 2832 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -4426,8 +4747,8 @@ i32.const 0 i32.lt_s if - i32.const 528 - i32.const 896 + i32.const 512 + i32.const 2832 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -4661,8 +4982,8 @@ i32.shr_u i32.gt_u if - i32.const 224 - i32.const 896 + i32.const 2592 + i32.const 2832 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -4780,8 +5101,8 @@ call $~lib/array/Array<~lib/string/String>#get:length_ i32.ge_u if - i32.const 528 - i32.const 896 + i32.const 512 + i32.const 2832 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -4810,8 +5131,8 @@ local.get $value i32.eqz if - i32.const 944 - i32.const 896 + i32.const 2880 + i32.const 2832 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -4850,8 +5171,8 @@ i32.const 0 i32.lt_s if - i32.const 528 - i32.const 896 + i32.const 512 + i32.const 2832 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -5272,61 +5593,18 @@ local.get $3 return ) - (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28%29=>void>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) - (local $cur i32) - (local $end i32) - (local $val i32) - (local $5 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -5335,62 +5613,132 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 - drop - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/string/String>#get:dataStart - local.set $cur - local.get $cur - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/string/String>#get:length_ + local.get $radix i32.const 2 - i32.shl - i32.add - local.set $end - loop $while-continue|0 - local.get $cur - local.get $end - i32.lt_u + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 752 + i32.const 880 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 944 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq if - local.get $cur - i32.load - local.set $val - local.get $val - if - local.get $val - local.get $cookie - call $~lib/rt/itcms/__visit - end - local.get $cur - i32.const 4 + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 i32.add - local.set $cur - br $while-continue|0 + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core end end - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/string/String>#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $out + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $12 + return ) (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) (local $buffer i32) @@ -5407,8 +5755,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 224 - i32.const 272 + i32.const 2592 + i32.const 2640 i32.const 52 i32.const 43 call $~lib/builtins/abort @@ -5451,8 +5799,8 @@ i32.shr_u i32.gt_u if - i32.const 224 - i32.const 832 + i32.const 2592 + i32.const 2768 i32.const 51 i32.const 60 call $~lib/builtins/abort @@ -5504,40 +5852,239 @@ local.get $this local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $bindings/esm/NonPlainObject#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/bufferFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/stringFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/stringFunctionOptional@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/stringFunctionOptional@varargs + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/typedarrayFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/staticarrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/staticarrayFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/staticarrayU16 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $bindings/esm/staticarrayU16 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:bindings/esm/staticarrayI64 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $bindings/esm/staticarrayI64 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/arrayFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) - (func $bindings/esm/NonPlainObject#constructor (param $this i32) (result i32) - (local $1 i32) + (func $export:bindings/esm/arrayOfStringsFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 i32.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 15 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/arrayOfStringsFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) - (func $export:bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/objectFunction (param $0 i32) (param $1 i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -5552,7 +6099,7 @@ i32.store offset=4 local.get $0 local.get $1 - call $bindings/esm/bufferFunction + call $bindings/esm/objectFunction local.set $2 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -5560,7 +6107,7 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $export:bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -5575,7 +6122,7 @@ i32.store offset=4 local.get $0 local.get $1 - call $bindings/esm/stringFunction + call $bindings/esm/internrefFunction local.set $2 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -5583,222 +6130,355 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $export:bindings/esm/stringFunctionOptional@varargs (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/functionFunction (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $bindings/esm/functionFunction + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 512 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2592 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2880 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 3008 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 3072 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1376 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2432 + local.get $0 + call $~lib/rt/itcms/__visit + global.get $bindings/esm/stringGlobal + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $bindings/esm/mutableStringGlobal + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $bindings/esm/PlainObject~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load offset=56 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=60 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=64 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $bindings/esm/NonPlainObject + block $~lib/typedarray/Uint8Array + block $bindings/esm/PlainObject + block $~lib/array/Array<~lib/string/String> + block $~lib/array/Array + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/typedarray/Uint64Array + block $~lib/typedarray/Float32Array + block $~lib/typedarray/Int16Array + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $~lib/typedarray/Int16Array $~lib/typedarray/Float32Array $~lib/typedarray/Uint64Array $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array<~lib/string/String> $bindings/esm/PlainObject $~lib/typedarray/Uint8Array $bindings/esm/NonPlainObject $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int16Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint64Array~visit + return + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $bindings/esm/PlainObject~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + return + end + return + end + unreachable + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $bindings/esm/stringFunctionOptional@varargs + local.get $this local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $2 - ) - (func $export:bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $bindings/esm/typedarrayFunction - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $export:bindings/esm/staticarrayFunction (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $bindings/esm/staticarrayFunction + i32.const 0 + drop + local.get $this local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $2 - ) - (func $export:bindings/esm/staticarrayU16 (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store - local.get $0 - call $bindings/esm/staticarrayU16 - local.set $1 + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 ) - (func $export:bindings/esm/staticarrayI64 (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $bindings/esm/staticarrayI64 - local.set $1 + (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $export:bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $bindings/esm/arrayFunction - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:bindings/esm/arrayOfStringsFunction (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store + i32.const 1 + drop + local.get $this + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $bindings/esm/arrayOfStringsFunction - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:bindings/esm/objectFunction (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $bindings/esm/objectFunction - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $bindings/esm/internrefFunction - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $export:bindings/esm/functionFunction (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 i32.store - local.get $0 - call $bindings/esm/functionFunction - local.set $1 + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 ) ) diff --git a/tests/compiler/bindings/raw.release.js b/tests/compiler/bindings/raw.release.js index 564035a225..20418eeab3 100644 --- a/tests/compiler/bindings/raw.release.js +++ b/tests/compiler/bindings/raw.release.js @@ -33,17 +33,6 @@ export async function instantiate(module, imports = {}) { return new Date().getTimezoneOffset(); })(); }, - abort(message, fileName, lineNumber, columnNumber) { - // ~lib/builtins/abort(~lib/string/String | null?, ~lib/string/String | null?, u32?, u32?) => void - message = __liftString(message >>> 0); - fileName = __liftString(fileName >>> 0); - lineNumber = lineNumber >>> 0; - columnNumber = columnNumber >>> 0; - (() => { - // @external.js - throw Error(`${message} in ${fileName}:${lineNumber}:${columnNumber}`); - })(); - }, }, Object.assign(Object.create(globalThis), imports.env || {})), }; const { exports } = await WebAssembly.instantiate(module, adaptedImports); diff --git a/tests/compiler/bindings/raw.release.wat b/tests/compiler/bindings/raw.release.wat index e2ed7cd278..cbb6f6bd44 100644 --- a/tests/compiler/bindings/raw.release.wat +++ b/tests/compiler/bindings/raw.release.wat @@ -17,7 +17,6 @@ (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) (import "env" "Date.getTimezoneOffset" (func $bindings/esm/Date_getTimezoneOffset (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $bindings/esm/plainGlobal i32 (i32.const 1)) (global $bindings/esm/plainMutableGlobal (mut i32) (i32.const 2)) (global $bindings/esm/stringGlobal i32 (i32.const 1056)) @@ -40,8 +39,8 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 2208)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35044)) + (global $~lib/rt/__rtti_base i32 (i32.const 4144)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36980)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 1036) "\1c") @@ -54,36 +53,55 @@ (data $3.1 (i32.const 1144) "\02\00\00\00\n\00\00\00t\00r\00a\00c\00e") (data $4 (i32.const 1164) "<") (data $4.1 (i32.const 1176) "\02\00\00\00&\00\00\004\002\00 \00f\00r\00o\00m\00 \00c\00o\00n\00s\00o\00l\00e\00.\00l\00o\00g") - (data $5 (i32.const 1228) ",") - (data $5.1 (i32.const 1240) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $6 (i32.const 1276) "<") - (data $6.1 (i32.const 1288) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data $7 (i32.const 1340) "<") - (data $7.1 (i32.const 1352) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $8 (i32.const 1404) "<") - (data $8.1 (i32.const 1416) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $11 (i32.const 1532) "<") - (data $11.1 (i32.const 1544) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $12 (i32.const 1596) ",") - (data $12.1 (i32.const 1608) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $14 (i32.const 1676) "<") - (data $14.1 (i32.const 1688) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $15 (i32.const 1740) "\1c") - (data $15.1 (i32.const 1752) "\02") - (data $16 (i32.const 1772) "<") - (data $16.1 (i32.const 1784) "\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data $17 (i32.const 1836) "<") - (data $17.1 (i32.const 1848) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") - (data $18 (i32.const 1900) ",") - (data $18.1 (i32.const 1912) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $19 (i32.const 1948) "|") - (data $19.1 (i32.const 1960) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data $20 (i32.const 2076) "<") - (data $20.1 (i32.const 2088) "\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") - (data $21 (i32.const 2140) "<") - (data $21.1 (i32.const 2152) "\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") - (data $22 (i32.const 2208) "\10\00\00\00 \00\00\00 \00\00\00 ") - (data $22.1 (i32.const 2232) "\81\08\00\00\01\19\00\00\01\02\00\00$\t\00\00\a4\00\00\00$\n\00\00\02\t\00\00\02A\00\00\00\00\00\00A\00\00\00 ") + (data $5 (i32.const 1228) "\1c") + (data $5.1 (i32.const 1240) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $6 (i32.const 1260) "\1c") + (data $6.1 (i32.const 1272) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $7 (i32.const 1292) "\1c") + (data $7.1 (i32.const 1304) "\02") + (data $8 (i32.const 1324) "<") + (data $8.1 (i32.const 1336) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $9 (i32.const 1388) "<") + (data $9.1 (i32.const 1400) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $12 (i32.const 1516) "<") + (data $12.1 (i32.const 1528) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $13 (i32.const 1580) ",") + (data $13.1 (i32.const 1592) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $15 (i32.const 1660) "<") + (data $15.1 (i32.const 1672) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $16 (i32.const 1724) "\1c") + (data $16.1 (i32.const 1736) "\02\00\00\00\02\00\00\00:") + (data $17 (i32.const 1756) "|") + (data $17.1 (i32.const 1768) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $18 (i32.const 1884) "<") + (data $18.1 (i32.const 1896) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $19 (i32.const 1948) "\1c") + (data $19.1 (i32.const 1960) "\02\00\00\00\02\00\00\000") + (data $20 (i32.const 1980) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $21 (i32.const 2380) "\1c\04") + (data $21.1 (i32.const 2392) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $22 (i32.const 3436) "\\") + (data $22.1 (i32.const 3448) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $23 (i32.const 3532) "<") + (data $23.1 (i32.const 3544) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $24 (i32.const 3596) ",") + (data $24.1 (i32.const 3608) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $25 (i32.const 3644) "<") + (data $25.1 (i32.const 3656) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $26 (i32.const 3708) "<") + (data $26.1 (i32.const 3720) "\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data $27 (i32.const 3772) "<") + (data $27.1 (i32.const 3784) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") + (data $28 (i32.const 3836) ",") + (data $28.1 (i32.const 3848) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $29 (i32.const 3884) "|") + (data $29.1 (i32.const 3896) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $30 (i32.const 4012) "<") + (data $30.1 (i32.const 4024) "\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") + (data $31 (i32.const 4076) "<") + (data $31.1 (i32.const 4088) "\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") + (data $32 (i32.const 4144) "\10\00\00\00 \00\00\00 \00\00\00 ") + (data $32.1 (i32.const 4168) "\81\08\00\00\01\19\00\00\01\02\00\00$\t\00\00\a4\00\00\00$\n\00\00\02\t\00\00\02A\00\00\00\00\00\00A\00\00\00 ") (export "plainGlobal" (global $bindings/esm/plainGlobal)) (export "plainMutableGlobal" (global $bindings/esm/plainMutableGlobal)) (export "stringGlobal" (global $bindings/esm/stringGlobal)) @@ -139,17 +157,21 @@ (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1552 + i32.const 1536 call $~lib/rt/itcms/__visit - i32.const 1248 + i32.const 3616 + call $~lib/rt/itcms/__visit + i32.const 3904 + call $~lib/rt/itcms/__visit + i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1968 + i32.const 4032 call $~lib/rt/itcms/__visit - i32.const 1360 + i32.const 4096 call $~lib/rt/itcms/__visit - i32.const 2096 + i32.const 2400 call $~lib/rt/itcms/__visit - i32.const 2160 + i32.const 3456 call $~lib/rt/itcms/__visit i32.const 1056 call $~lib/rt/itcms/__visit @@ -178,7 +200,7 @@ i32.ne if i32.const 0 - i32.const 1424 + i32.const 1408 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -210,13 +232,13 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 35044 + i32.const 36980 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1408 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -230,7 +252,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1408 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -262,7 +284,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1408 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -284,12 +306,12 @@ i32.const 1 else local.get $2 - i32.const 2208 + i32.const 4144 i32.load i32.gt_u if - i32.const 1552 - i32.const 1616 + i32.const 1536 + i32.const 1600 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -298,7 +320,7 @@ local.get $2 i32.const 2 i32.shl - i32.const 2212 + i32.const 4148 i32.add i32.load i32.const 32 @@ -369,7 +391,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -383,7 +405,7 @@ i32.lt_u if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -429,7 +451,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -512,7 +534,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -526,7 +548,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -587,7 +609,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -620,7 +642,7 @@ i32.lt_u if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -635,7 +657,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -686,7 +708,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -758,7 +780,7 @@ i64.lt_u if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -783,7 +805,7 @@ i32.gt_u if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -810,7 +832,7 @@ i32.gt_u if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -882,10 +904,10 @@ if unreachable end - i32.const 35056 + i32.const 36992 i32.const 0 i32.store - i32.const 36624 + i32.const 38560 i32.const 0 i32.store loop $for-loop|0 @@ -896,7 +918,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 35056 + i32.const 36992 i32.add i32.const 0 i32.store offset=4 @@ -914,7 +936,7 @@ i32.add i32.const 2 i32.shl - i32.const 35056 + i32.const 36992 i32.add i32.const 0 i32.store offset=96 @@ -932,14 +954,14 @@ br $for-loop|0 end end - i32.const 35056 - i32.const 36628 + i32.const 36992 + i32.const 38564 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 35056 + i32.const 36992 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -1024,7 +1046,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 35044 + i32.const 36980 i32.lt_u if local.get $0 @@ -1113,14 +1135,14 @@ i32.ne if i32.const 0 - i32.const 1424 + i32.const 1408 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 35044 + i32.const 36980 i32.lt_u if local.get $0 @@ -1143,7 +1165,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 35044 + i32.const 36980 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1172,7 +1194,7 @@ end if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1256,7 +1278,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1308,7 +1330,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1340,8 +1362,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1360 - i32.const 1424 + i32.const 1344 + i32.const 1408 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1351,7 +1373,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$71 + block $__inlined_func$~lib/rt/itcms/interrupt$72 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1372,7 +1394,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$71 + br $__inlined_func$~lib/rt/itcms/interrupt$72 end local.get $2 i32.const 0 @@ -1405,8 +1427,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1360 - i32.const 1696 + i32.const 1344 + i32.const 1680 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1508,7 +1530,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1523,7 +1545,7 @@ i32.gt_u if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1542,7 +1564,7 @@ i32.and if i32.const 0 - i32.const 1696 + i32.const 1680 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1647,6 +1669,204 @@ memory.fill local.get $1 ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 4212 + i32.lt_s + if + i32.const 37008 + i32.const 37056 + 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$76 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1968 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$76 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1980 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1980 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1980 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1980 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 @@ -1658,7 +1878,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1408 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1713,11 +1933,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1754,8 +1974,8 @@ i32.const 3 i32.eq if - i32.const 2096 - i32.const 1424 + i32.const 4032 + i32.const 1408 i32.const 338 i32.const 7 call $~lib/builtins/abort @@ -1807,8 +2027,8 @@ i32.const 3 i32.ne if - i32.const 2160 - i32.const 1424 + i32.const 4096 + i32.const 1408 i32.const 352 i32.const 5 call $~lib/builtins/abort @@ -1883,165 +2103,6 @@ i32.add global.set $~lib/rt/itcms/threshold ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $bindings/esm/NonPlainObject - block $bindings/esm/PlainObject - block $~lib/array/Array<~lib/string/String> - block $~lib/array/Array - block $~lib/staticarray/StaticArray - block $~lib/staticarray/StaticArray - block $~lib/staticarray/StaticArray - block $~lib/function/Function<%28%29=>void> - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $~lib/function/Function<%28%29=>void> $folding-inner1 $folding-inner1 $folding-inner1 $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array<~lib/string/String> $bindings/esm/PlainObject $folding-inner1 $bindings/esm/NonPlainObject $invalid - end - return - end - return - end - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - return - end - return - end - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - br $folding-inner2 - 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 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - br $folding-inner2 - end - local.get $0 - i32.load offset=56 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=60 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=64 - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - end - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) (func $~setArgumentsLength (param $0 i32) local.get $0 global.set $~argumentsLength @@ -2071,37 +2132,37 @@ memory.size i32.const 16 i32.shl - i32.const 35044 + i32.const 36980 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1476 - i32.const 1472 + i32.const 1460 + i32.const 1456 i32.store - i32.const 1480 - i32.const 1472 + i32.const 1464 + i32.const 1456 i32.store - i32.const 1472 + i32.const 1456 global.set $~lib/rt/itcms/pinSpace - i32.const 1508 - i32.const 1504 + i32.const 1492 + i32.const 1488 i32.store - i32.const 1512 - i32.const 1504 + i32.const 1496 + i32.const 1488 i32.store - i32.const 1504 + i32.const 1488 global.set $~lib/rt/itcms/toSpace - i32.const 1652 - i32.const 1648 + i32.const 1636 + i32.const 1632 i32.store - i32.const 1656 - i32.const 1648 + i32.const 1640 + i32.const 1632 i32.store - i32.const 1648 + i32.const 1632 global.set $~lib/rt/itcms/fromSpace ) - (func $bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2111,7 +2172,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2128,24 +2189,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2153,6 +2197,7 @@ i64.store global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $2 i32.store local.get $0 i32.const 20 @@ -2164,7 +2209,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store - block $__inlined_func$~lib/string/String#concat$285 + block $__inlined_func$~lib/string/String#concat$289 local.get $1 i32.const 20 i32.sub @@ -2174,28 +2219,28 @@ local.tee $4 local.get $3 i32.add - local.tee $2 + local.tee $0 i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1760 - local.set $2 - br $__inlined_func$~lib/string/String#concat$285 + i32.const 1312 + local.set $0 + br $__inlined_func$~lib/string/String#concat$289 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store offset=4 - local.get $2 local.get $0 + local.get $2 local.get $3 memory.copy - local.get $2 + local.get $0 local.get $3 i32.add local.get $1 @@ -2210,31 +2255,157 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 return end - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4212 + i32.lt_s + if + i32.const 37008 + i32.const 37056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1248 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1280 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1744 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1744 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3552 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4212 + i32.lt_s + if + i32.const 37008 + i32.const 37056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $~lib/typedarray/Int16Array#get:length (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2261,11 +2432,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2292,11 +2463,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2315,8 +2486,8 @@ i32.shr_u i32.ge_u if - i32.const 1552 - i32.const 1792 + i32.const 1536 + i32.const 3728 i32.const 1173 i32.const 64 call $~lib/builtins/abort @@ -2351,7 +2522,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2382,7 +2553,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner00 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer @@ -2403,7 +2574,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer @@ -2448,8 +2619,8 @@ i32.const 134217727 i32.gt_u if - i32.const 1248 - i32.const 1296 + i32.const 3616 + i32.const 3664 i32.const 19 i32.const 57 call $~lib/builtins/abort @@ -2526,7 +2697,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2542,8 +2713,8 @@ i32.shr_u i32.ge_u if - i32.const 1552 - i32.const 1792 + i32.const 1536 + i32.const 3728 i32.const 452 i32.const 64 call $~lib/builtins/abort @@ -2606,7 +2777,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2622,8 +2793,8 @@ i32.shr_u i32.ge_u if - i32.const 1552 - i32.const 1792 + i32.const 1536 + i32.const 3728 i32.const 1304 i32.const 64 call $~lib/builtins/abort @@ -2663,8 +2834,8 @@ local.get $2 return end - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2676,11 +2847,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2701,8 +2872,8 @@ i32.shr_u i32.ge_u if - i32.const 1552 - i32.const 1856 + i32.const 1536 + i32.const 3792 i32.const 78 i32.const 41 call $~lib/builtins/abort @@ -2725,11 +2896,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2750,8 +2921,8 @@ i32.shr_u i32.ge_u if - i32.const 1552 - i32.const 1856 + i32.const 1536 + i32.const 3792 i32.const 93 i32.const 41 call $~lib/builtins/abort @@ -2778,11 +2949,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2807,11 +2978,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2828,8 +2999,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1552 - i32.const 1920 + i32.const 1536 + i32.const 3856 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2859,11 +3030,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2887,8 +3058,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1248 - i32.const 1920 + i32.const 3616 + i32.const 3856 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -2897,7 +3068,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $__inlined_func$~lib/rt/itcms/__renew$270 + block $__inlined_func$~lib/rt/itcms/__renew$263 i32.const 1073741820 local.get $2 i32.const 1 @@ -2940,7 +3111,7 @@ i32.store offset=16 local.get $2 local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew$270 + br $__inlined_func$~lib/rt/itcms/__renew$263 end local.get $3 local.get $4 @@ -2989,11 +3160,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3014,8 +3185,8 @@ i32.const 0 i32.lt_s if - i32.const 1552 - i32.const 1920 + i32.const 1536 + i32.const 3856 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -3056,11 +3227,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3077,8 +3248,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1552 - i32.const 1920 + i32.const 1536 + i32.const 3856 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -3100,8 +3271,8 @@ local.get $0 i32.eqz if - i32.const 1968 - i32.const 1920 + i32.const 3904 + i32.const 3856 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -3120,11 +3291,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3145,8 +3316,8 @@ i32.const 0 i32.lt_s if - i32.const 1552 - i32.const 1920 + i32.const 1536 + i32.const 3856 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -3196,7 +3367,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3210,7 +3381,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3241,7 +3412,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3251,8 +3422,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1248 - i32.const 1296 + i32.const 3616 + i32.const 3664 i32.const 52 i32.const 43 call $~lib/builtins/abort @@ -3291,8 +3462,8 @@ local.get $5 return end - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3304,11 +3475,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3335,7 +3506,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3349,7 +3520,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3393,8 +3564,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3406,11 +3577,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3440,7 +3611,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3456,7 +3627,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3491,7 +3662,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3501,8 +3672,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1248 - i32.const 1856 + i32.const 3616 + i32.const 3792 i32.const 51 i32.const 60 call $~lib/builtins/abort @@ -3615,8 +3786,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3628,11 +3799,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3659,7 +3830,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3673,7 +3844,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3702,7 +3873,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3749,8 +3920,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1248 - i32.const 1920 + i32.const 3616 + i32.const 3856 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -3884,8 +4055,8 @@ local.get $6 return end - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3903,7 +4074,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3917,7 +4088,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3946,7 +4117,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3993,8 +4164,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1248 - i32.const 1920 + i32.const 3616 + i32.const 3856 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -4138,8 +4309,8 @@ local.get $5 return end - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4154,7 +4325,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4168,7 +4339,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4185,7 +4356,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner00 global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer @@ -4206,7 +4377,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer @@ -4394,8 +4565,8 @@ local.get $2 return end - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4407,11 +4578,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2276 + i32.const 4212 i32.lt_s if - i32.const 35072 - i32.const 35120 + i32.const 37008 + i32.const 37056 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4429,4 +4600,163 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $bindings/esm/NonPlainObject + block $bindings/esm/PlainObject + block $~lib/array/Array<~lib/string/String> + block $~lib/array/Array + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/function/Function<%28%29=>void> + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $~lib/function/Function<%28%29=>void> $folding-inner1 $folding-inner1 $folding-inner1 $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array<~lib/string/String> $bindings/esm/PlainObject $folding-inner1 $bindings/esm/NonPlainObject $invalid + end + return + end + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4212 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + return + end + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4212 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner2 + 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 4212 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner2 + end + local.get $0 + i32.load offset=56 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=60 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=64 + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + end + i32.const 37008 + i32.const 37056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/bool-Oz.debug.wat b/tests/compiler/bool-Oz.debug.wat index 87fb6ce2d2..e156f6d51d 100644 --- a/tests/compiler/bool-Oz.debug.wat +++ b/tests/compiler/bool-Oz.debug.wat @@ -1,6 +1,70 @@ (module + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 12) ",") - (data $0.1 (i32.const 24) "\02\00\00\00\14\00\00\00b\00o\00o\00l\00-\00O\00z\00.\00t\00s") + (data $0 (i32.const 12) "\1c") + (data $0.1 (i32.const 24) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 44) "\1c") + (data $1.1 (i32.const 56) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 76) "\1c") + (data $2.1 (i32.const 88) "\02") + (data $3 (i32.const 108) "<") + (data $3.1 (i32.const 120) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 172) "<") + (data $4.1 (i32.const 184) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 300) "<") + (data $7.1 (i32.const 312) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 364) ",") + (data $8.1 (i32.const 376) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 444) "<") + (data $10.1 (i32.const 456) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 508) "\1c") + (data $11.1 (i32.const 520) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 540) "|") + (data $12.1 (i32.const 552) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 668) "<") + (data $13.1 (i32.const 680) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 732) "\1c") + (data $14.1 (i32.const 744) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 764) "\\") + (data $15.1 (i32.const 776) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $16 (i32.const 860) "<") + (data $16.1 (i32.const 872) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $17 (i32.const 924) ",") + (data $17.1 (i32.const 936) "\02\00\00\00\14\00\00\00b\00o\00o\00l\00-\00O\00z\00.\00t\00s") + (data $18 (i32.const 976) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 33764 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) ) diff --git a/tests/compiler/bool-Oz.release.wat b/tests/compiler/bool-Oz.release.wat index 87fb6ce2d2..e156f6d51d 100644 --- a/tests/compiler/bool-Oz.release.wat +++ b/tests/compiler/bool-Oz.release.wat @@ -1,6 +1,70 @@ (module + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 12) ",") - (data $0.1 (i32.const 24) "\02\00\00\00\14\00\00\00b\00o\00o\00l\00-\00O\00z\00.\00t\00s") + (data $0 (i32.const 12) "\1c") + (data $0.1 (i32.const 24) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 44) "\1c") + (data $1.1 (i32.const 56) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 76) "\1c") + (data $2.1 (i32.const 88) "\02") + (data $3 (i32.const 108) "<") + (data $3.1 (i32.const 120) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 172) "<") + (data $4.1 (i32.const 184) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 300) "<") + (data $7.1 (i32.const 312) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 364) ",") + (data $8.1 (i32.const 376) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 444) "<") + (data $10.1 (i32.const 456) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 508) "\1c") + (data $11.1 (i32.const 520) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 540) "|") + (data $12.1 (i32.const 552) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 668) "<") + (data $13.1 (i32.const 680) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 732) "\1c") + (data $14.1 (i32.const 744) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 764) "\\") + (data $15.1 (i32.const 776) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $16 (i32.const 860) "<") + (data $16.1 (i32.const 872) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $17 (i32.const 924) ",") + (data $17.1 (i32.const 936) "\02\00\00\00\14\00\00\00b\00o\00o\00l\00-\00O\00z\00.\00t\00s") + (data $18 (i32.const 976) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 33764 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) ) diff --git a/tests/compiler/bool.debug.wat b/tests/compiler/bool.debug.wat index 35346823bc..38d655b62c 100644 --- a/tests/compiler/bool.debug.wat +++ b/tests/compiler/bool.debug.wat @@ -1,8 +1,32 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $bool/i (mut 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/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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $bool/I (mut i64) (i64.const 2)) (global $bool/u (mut i32) (i32.const 2)) (global $bool/U (mut i64) (i64.const 2)) @@ -41,16 +65,2683 @@ (global $bool/F12 (mut f64) (f64.const 0)) (global $bool/F13 (mut f64) (f64.const 0)) (global $bool/uu (mut i32) (i32.const 2)) - (global $~lib/memory/__data_end i32 (i32.const 60)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) - (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2452)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35220)) + (global $~lib/memory/__heap_base i32 (i32.const 35220)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2432) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $start:bool + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $bool/i i32.const 0 i32.ne @@ -59,7 +2750,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2 i32.const 1 call $~lib/builtins/abort @@ -73,7 +2764,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4 i32.const 1 call $~lib/builtins/abort @@ -87,7 +2778,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -101,7 +2792,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -120,7 +2811,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -139,7 +2830,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -158,7 +2849,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -177,7 +2868,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 17 i32.const 1 call $~lib/builtins/abort @@ -199,7 +2890,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -220,7 +2911,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -242,7 +2933,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -261,7 +2952,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -283,7 +2974,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -304,7 +2995,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -326,7 +3017,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -348,7 +3039,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -372,7 +3063,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -396,7 +3087,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 37 i32.const 1 call $~lib/builtins/abort @@ -420,7 +3111,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 39 i32.const 1 call $~lib/builtins/abort @@ -439,7 +3130,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -458,7 +3149,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -477,7 +3168,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 46 i32.const 1 call $~lib/builtins/abort @@ -496,7 +3187,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 48 i32.const 1 call $~lib/builtins/abort @@ -518,7 +3209,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 50 i32.const 1 call $~lib/builtins/abort @@ -539,7 +3230,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 52 i32.const 1 call $~lib/builtins/abort @@ -561,7 +3252,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 54 i32.const 1 call $~lib/builtins/abort @@ -580,7 +3271,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 56 i32.const 1 call $~lib/builtins/abort @@ -602,7 +3293,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 58 i32.const 1 call $~lib/builtins/abort @@ -623,7 +3314,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 60 i32.const 1 call $~lib/builtins/abort @@ -645,7 +3336,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 62 i32.const 1 call $~lib/builtins/abort @@ -667,7 +3358,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 64 i32.const 1 call $~lib/builtins/abort @@ -691,7 +3382,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 66 i32.const 1 call $~lib/builtins/abort @@ -715,7 +3406,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 68 i32.const 1 call $~lib/builtins/abort @@ -739,7 +3430,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 70 i32.const 1 call $~lib/builtins/abort @@ -753,7 +3444,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 73 i32.const 1 call $~lib/builtins/abort @@ -763,4 +3454,421 @@ (func $~start call $start:bool ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35248 + i32.const 35296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/bool.release.wat b/tests/compiler/bool.release.wat index b107d68536..8157fb9c9b 100644 --- a/tests/compiler/bool.release.wat +++ b/tests/compiler/bool.release.wat @@ -1,6 +1,78 @@ (module + (type $0 (func)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s") + (data $20 (i32.const 3456) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) + (start $~start) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36244 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + ) ) diff --git a/tests/compiler/builtins.debug.wat b/tests/compiler/builtins.debug.wat index fd74409ab4..b190f262d5 100644 --- a/tests/compiler/builtins.debug.wat +++ b/tests/compiler/builtins.debug.wat @@ -1,16 +1,38 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func)) + (type $1 (func (param i32 i32))) (type $2 (func (param i32 i32) (result i32))) - (type $3 (func (param i32 i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $6 (func (param i32 i32 f64 f64 f64 f64 f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (result i32))) + (type $10 (func (param i32 i64 i32))) + (type $11 (func (param i64 i32) (result i32))) + (type $12 (func (param i32 i64 i32 i32))) + (type $13 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $14 (func (param i32 i32 f64 f64 f64 f64 f64))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (global $builtins/b (mut i32) (i32.const 0)) (global $builtins/i (mut i32) (i32.const 0)) (global $builtins/l (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/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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $builtins/v (mut i32) (i32.const 0)) (global $builtins/I (mut i64) (i64.const 0)) (global $builtins/f (mut f32) (f32.const 0)) @@ -21,12 +43,8 @@ (global $builtins/u (mut i32) (i32.const 0)) (global $builtins/U (mut i64) (i64.const 0)) (global $builtins/s (mut i32) (i32.const 0)) - (global $builtins/fn (mut i32) (i32.const 144)) + (global $builtins/fn (mut i32) (i32.const 2480)) (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/native/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)) (global $~lib/builtins/i16.MIN_VALUE i32 (i32.const -32768)) @@ -57,42 +75,2691 @@ (global $~lib/builtins/f64.MIN_SAFE_INTEGER f64 (f64.const -9007199254740991)) (global $~lib/builtins/f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991)) (global $~lib/builtins/f64.EPSILON f64 (f64.const 2.220446049250313e-16)) - (global $~lib/memory/__data_end i32 (i32.const 1004)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33772)) - (global $~lib/memory/__heap_base i32 (i32.const 33772)) + (global $~lib/rt/__rtti_base i32 (i32.const 3344)) + (global $~lib/memory/__data_end i32 (i32.const 3404)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36172)) + (global $~lib/memory/__heap_base i32 (i32.const 36172)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00b\00c\00\00\00\00\00\00\00") - (data $2 (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00") - (data $3 (i32.const 124) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 156) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\008\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00(\00)\00 \00{\00 \00[\00n\00a\00t\00i\00v\00e\00 \00c\00o\00d\00e\00]\00 \00}\00\00\00\00\00") - (data $5 (i32.const 236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00s\00i\00g\00n\00a\00t\00u\00r\00e\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 284) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00t\00e\00s\00t\00i\00n\00g\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 332) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00F\00u\00n\00c\00t\00i\00o\00n\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00C\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g\00") - (data $10 (i32.const 444) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00b\00o\00o\00l\00\00\00\00\00") - (data $11 (i32.const 476) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00i\008\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00u\008\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\001\006\00\00\00\00\00\00\00") - (data $14 (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00u\001\006\00\00\00\00\00\00\00") - (data $15 (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\003\002\00\00\00\00\00\00\00") - (data $16 (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00u\003\002\00\00\00\00\00\00\00") - (data $17 (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00f\003\002\00\00\00\00\00\00\00") - (data $18 (i32.const 700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\006\004\00\00\00\00\00\00\00") - (data $19 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00u\006\004\00\00\00\00\00\00\00") - (data $20 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00f\006\004\00\00\00\00\00\00\00") - (data $21 (i32.const 796) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00i\00s\00i\00z\00e\00\00\00") - (data $22 (i32.const 828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00u\00s\00i\00z\00e\00\00\00") - (data $23 (i32.const 860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00v\00o\00i\00d\00\00\00\00\00") - (data $24 (i32.const 892) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00s\00o\00m\00e\00 \00v\00a\00l\00u\00e\00\00\00\00\00\00\00\00\00") - (data $25 (i32.const 940) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data $26 (i32.const 972) "\1c\00\00\00\00\00\00\00\00\00\00\00\r\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $4 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $5 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 572) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 796) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $17 (i32.const 1196) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2252) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $19 (i32.const 2348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00") + (data $21 (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2492) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\008\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00(\00)\00 \00{\00 \00[\00n\00a\00t\00i\00v\00e\00 \00c\00o\00d\00e\00]\00 \00}\00\00\00\00\00") + (data $23 (i32.const 2572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00s\00i\00g\00n\00a\00t\00u\00r\00e\00s\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2620) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00t\00e\00s\00t\00i\00n\00g\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2668) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00F\00u\00n\00c\00t\00i\00o\00n\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 2716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00C\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g\00") + (data $28 (i32.const 2780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00b\00o\00o\00l\00\00\00\00\00") + (data $29 (i32.const 2812) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00i\008\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 2844) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00u\008\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 2876) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\001\006\00\00\00\00\00\00\00") + (data $32 (i32.const 2908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00u\001\006\00\00\00\00\00\00\00") + (data $33 (i32.const 2940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\003\002\00\00\00\00\00\00\00") + (data $34 (i32.const 2972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00u\003\002\00\00\00\00\00\00\00") + (data $35 (i32.const 3004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00f\003\002\00\00\00\00\00\00\00") + (data $36 (i32.const 3036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\006\004\00\00\00\00\00\00\00") + (data $37 (i32.const 3068) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00u\006\004\00\00\00\00\00\00\00") + (data $38 (i32.const 3100) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00f\006\004\00\00\00\00\00\00\00") + (data $39 (i32.const 3132) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00i\00s\00i\00z\00e\00\00\00") + (data $40 (i32.const 3164) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00u\00s\00i\00z\00e\00\00\00") + (data $41 (i32.const 3196) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00v\00o\00i\00d\00\00\00\00\00") + (data $42 (i32.const 3228) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00s\00o\00m\00e\00 \00v\00a\00l\00u\00e\00\00\00\00\00\00\00\00\00") + (data $43 (i32.const 3276) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $44 (i32.const 3308) "\1c\00\00\00\00\00\00\00\00\00\00\00\r\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $45 (i32.const 3344) "\0e\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00A\00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00") (table $0 4 4 funcref) (elem $0 (i32.const 1) $start:builtins~anonymous|0 $start:builtins~anonymous|1 $start:builtins~anonymous|2) (export "test" (func $builtins/test)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 352 + i32.const 416 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 224 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 160 + i32.const 496 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 160 + i32.const 224 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 796 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 796 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $start:builtins~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a local.get $b @@ -108,19 +2775,6 @@ i32.const 32 return ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u - return - ) (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) (local $ptr1 i32) (local $ptr2 i32) @@ -230,7 +2884,7 @@ return ) (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#toString (param $this i32) (result i32) - i32.const 176 + i32.const 2512 return ) (func $~lib/atomics/Atomics.isLockFree (param $size i32) (result i32) @@ -389,14 +3043,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33792 - i32.const 33840 + i32.const 36192 + i32.const 36240 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 32 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 96 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 128 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2368 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) (local $leftLength i32) (local $3 i32) @@ -653,13 +3512,30 @@ i32.add i32.extend8_s global.set $builtins/l + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 304 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 448 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $builtins/l i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 53 i32.const 20 call $~lib/builtins/abort @@ -676,7 +3552,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 54 i32.const 20 call $~lib/builtins/abort @@ -692,7 +3568,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 55 i32.const 20 call $~lib/builtins/abort @@ -709,7 +3585,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 56 i32.const 20 call $~lib/builtins/abort @@ -725,7 +3601,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 57 i32.const 19 call $~lib/builtins/abort @@ -741,7 +3617,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 58 i32.const 19 call $~lib/builtins/abort @@ -757,7 +3633,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 59 i32.const 19 call $~lib/builtins/abort @@ -773,7 +3649,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 60 i32.const 19 call $~lib/builtins/abort @@ -803,7 +3679,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 63 i32.const 34 call $~lib/builtins/abort @@ -833,7 +3709,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 64 i32.const 34 call $~lib/builtins/abort @@ -978,7 +3854,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 98 i32.const 20 call $~lib/builtins/abort @@ -999,7 +3875,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 99 i32.const 21 call $~lib/builtins/abort @@ -1020,7 +3896,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 100 i32.const 21 call $~lib/builtins/abort @@ -1036,7 +3912,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 101 i32.const 21 call $~lib/builtins/abort @@ -1052,7 +3928,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 102 i32.const 21 call $~lib/builtins/abort @@ -1068,7 +3944,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 103 i32.const 21 call $~lib/builtins/abort @@ -1084,7 +3960,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 104 i32.const 21 call $~lib/builtins/abort @@ -1100,7 +3976,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 105 i32.const 20 call $~lib/builtins/abort @@ -1116,7 +3992,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 106 i32.const 20 call $~lib/builtins/abort @@ -1132,7 +4008,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 107 i32.const 20 call $~lib/builtins/abort @@ -1148,7 +4024,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 108 i32.const 20 call $~lib/builtins/abort @@ -1164,7 +4040,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 109 i32.const 21 call $~lib/builtins/abort @@ -1180,7 +4056,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 110 i32.const 22 call $~lib/builtins/abort @@ -1279,7 +4155,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 136 i32.const 20 call $~lib/builtins/abort @@ -1300,7 +4176,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 137 i32.const 21 call $~lib/builtins/abort @@ -1321,7 +4197,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 138 i32.const 21 call $~lib/builtins/abort @@ -1337,7 +4213,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 139 i32.const 21 call $~lib/builtins/abort @@ -1353,7 +4229,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 140 i32.const 21 call $~lib/builtins/abort @@ -1369,7 +4245,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 141 i32.const 21 call $~lib/builtins/abort @@ -1385,7 +4261,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 142 i32.const 21 call $~lib/builtins/abort @@ -1401,7 +4277,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 143 i32.const 20 call $~lib/builtins/abort @@ -1417,7 +4293,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 144 i32.const 20 call $~lib/builtins/abort @@ -1433,7 +4309,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 145 i32.const 20 call $~lib/builtins/abort @@ -1449,7 +4325,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 146 i32.const 20 call $~lib/builtins/abort @@ -1465,7 +4341,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 147 i32.const 21 call $~lib/builtins/abort @@ -1481,7 +4357,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 148 i32.const 22 call $~lib/builtins/abort @@ -1679,7 +4555,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 200 i32.const 25 call $~lib/builtins/abort @@ -1695,7 +4571,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 201 i32.const 25 call $~lib/builtins/abort @@ -1711,7 +4587,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 202 i32.const 25 call $~lib/builtins/abort @@ -1727,7 +4603,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 203 i32.const 25 call $~lib/builtins/abort @@ -1743,7 +4619,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 204 i32.const 26 call $~lib/builtins/abort @@ -1772,7 +4648,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 209 i32.const 24 call $~lib/builtins/abort @@ -1788,7 +4664,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 210 i32.const 24 call $~lib/builtins/abort @@ -1804,7 +4680,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 211 i32.const 24 call $~lib/builtins/abort @@ -1820,7 +4696,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 212 i32.const 24 call $~lib/builtins/abort @@ -2042,7 +4918,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 268 i32.const 25 call $~lib/builtins/abort @@ -2058,7 +4934,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 269 i32.const 25 call $~lib/builtins/abort @@ -2074,7 +4950,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 270 i32.const 25 call $~lib/builtins/abort @@ -2090,7 +4966,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 271 i32.const 25 call $~lib/builtins/abort @@ -2123,7 +4999,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 277 i32.const 24 call $~lib/builtins/abort @@ -2139,7 +5015,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 278 i32.const 24 call $~lib/builtins/abort @@ -2155,7 +5031,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 279 i32.const 24 call $~lib/builtins/abort @@ -2171,7 +5047,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 280 i32.const 24 call $~lib/builtins/abort @@ -2367,7 +5243,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 342 i32.const 23 call $~lib/builtins/abort @@ -2420,7 +5296,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 361 i32.const 23 call $~lib/builtins/abort @@ -2517,7 +5393,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 400 i32.const 1 call $~lib/builtins/abort @@ -2538,7 +5414,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 401 i32.const 1 call $~lib/builtins/abort @@ -2561,7 +5437,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 402 i32.const 1 call $~lib/builtins/abort @@ -2579,7 +5455,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 403 i32.const 1 call $~lib/builtins/abort @@ -2597,7 +5473,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 404 i32.const 1 call $~lib/builtins/abort @@ -2615,12 +5491,12 @@ local.get $53 i32.store local.get $53 - i32.const 176 + i32.const 2512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 405 i32.const 1 call $~lib/builtins/abort @@ -3162,7 +6038,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 587 i32.const 1 call $~lib/builtins/abort @@ -3175,7 +6051,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 588 i32.const 1 call $~lib/builtins/abort @@ -3188,7 +6064,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 589 i32.const 1 call $~lib/builtins/abort @@ -3201,7 +6077,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 590 i32.const 1 call $~lib/builtins/abort @@ -3214,7 +6090,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 591 i32.const 1 call $~lib/builtins/abort @@ -3227,7 +6103,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 592 i32.const 1 call $~lib/builtins/abort @@ -3240,7 +6116,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 593 i32.const 1 call $~lib/builtins/abort @@ -3250,13 +6126,13 @@ local.set $48 i32.const 0 local.set $49 - i32.const 51 + i32.const 42 local.set $50 - i32.const 52 + i32.const 100 local.set $51 - i32.const 52 + i32.const 100 local.set $52 - i32.const 256 + i32.const 2592 i32.const 5 local.get $48 f64.convert_i32_u @@ -3274,8 +6150,8 @@ i32.eq i32.eqz if - i32.const 304 - i32.const 96 + i32.const 2640 + i32.const 2432 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -3287,19 +6163,19 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 604 i32.const 3 call $~lib/builtins/abort unreachable end local.get $50 - i32.const 51 + i32.const 42 i32.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -3311,247 +6187,247 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 606 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 352 - i32.const 352 + i32.const 2688 + i32.const 2688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 610 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 352 - i32.const 352 + i32.const 2688 + i32.const 2688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 611 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 400 - i32.const 400 + i32.const 2736 + i32.const 2736 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 612 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 432 - i32.const 432 + i32.const 2768 + i32.const 2768 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 613 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 464 - i32.const 464 + i32.const 2800 + i32.const 2800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 614 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 496 - i32.const 496 + i32.const 2832 + i32.const 2832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 615 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 528 - i32.const 528 + i32.const 2864 + i32.const 2864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 616 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 560 - i32.const 560 + i32.const 2896 + i32.const 2896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 617 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 592 - i32.const 592 + i32.const 2928 + i32.const 2928 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 618 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 624 - i32.const 624 + i32.const 2960 + i32.const 2960 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 619 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 656 - i32.const 656 + i32.const 2992 + i32.const 2992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 620 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 688 + i32.const 3024 + i32.const 3024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 621 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 720 - i32.const 720 + i32.const 3056 + i32.const 3056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 622 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 752 - i32.const 752 + i32.const 3088 + i32.const 3088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 623 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 784 - i32.const 784 + i32.const 3120 + i32.const 3120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 624 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 816 - i32.const 816 + i32.const 3152 + i32.const 3152 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 625 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 848 - i32.const 848 + i32.const 3184 + i32.const 3184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 626 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 880 - i32.const 880 + i32.const 3216 + i32.const 3216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 627 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 432 - i32.const 432 + i32.const 2768 + i32.const 2768 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 628 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 352 - i32.const 352 + i32.const 2688 + i32.const 2688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -3632,7 +6508,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 663 i32.const 1 call $~lib/builtins/abort @@ -3647,7 +6523,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 668 i32.const 1 call $~lib/builtins/abort @@ -3662,7 +6538,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 673 i32.const 1 call $~lib/builtins/abort @@ -3677,7 +6553,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2432 i32.const 678 i32.const 1 call $~lib/builtins/abort @@ -3688,4 +6564,399 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 592 + i32.const 720 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 784 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 352 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 160 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1216 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2272 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2Ci32%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2Ci32%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2Ci32%29=>void>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28i32%2Ci32%2Ci32%2Ci32%29=>void> + block $~lib/function/Function<%28%29=>void> + block $builtins/Foo + block $builtins/Bar + block $builtins/Foo + block $builtins/Foo + block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $builtins/C + block $~lib/typedarray/Uint8Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/typedarray/Uint8Array $builtins/C $~lib/function/Function<%28i32%2Ci32%29=>i32> $builtins/Foo $builtins/Foo $builtins/Bar $builtins/Foo $~lib/function/Function<%28%29=>void> $~lib/function/Function<%28i32%2Ci32%2Ci32%2Ci32%29=>void> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + return + end + return + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2Ci32%29=>void>~visit + return + end + unreachable + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2Ci32%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2Ci32%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/builtins.release.wat b/tests/compiler/builtins.release.wat index a22c2024c1..6fc565fa4d 100644 --- a/tests/compiler/builtins.release.wat +++ b/tests/compiler/builtins.release.wat @@ -1,75 +1,1808 @@ (module (type $0 (func (param i32 i32) (result i32))) (type $1 (func)) - (type $2 (func (param i32 i32 i32 i32))) - (type $3 (func (param i32 i32 f64 f64 f64 f64 f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i32 f64 f64 f64 f64 f64))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (global $builtins/i (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $builtins/I (mut i64) (i64.const 0)) (global $builtins/f (mut f32) (f32.const 0)) (global $builtins/F (mut f64) (f64.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34796)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37196)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02") (data $1 (i32.const 1068) "\1c") (data $1.1 (i32.const 1080) "\02\00\00\00\06\00\00\00a\00b\00c") - (data $2 (i32.const 1100) ",") - (data $2.1 (i32.const 1112) "\02\00\00\00\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") - (data $3 (i32.const 1148) "\1c") - (data $3.1 (i32.const 1160) "\07\00\00\00\08\00\00\00\01") - (data $4 (i32.const 1180) "L") - (data $4.1 (i32.const 1192) "\02\00\00\008\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00(\00)\00 \00{\00 \00[\00n\00a\00t\00i\00v\00e\00 \00c\00o\00d\00e\00]\00 \00}") - (data $5 (i32.const 1260) ",") - (data $5.1 (i32.const 1272) "\02\00\00\00\14\00\00\00s\00i\00g\00n\00a\00t\00u\00r\00e\00s") - (data $6 (i32.const 1308) ",") - (data $6.1 (i32.const 1320) "\02\00\00\00\0e\00\00\00t\00e\00s\00t\00i\00n\00g") - (data $7 (i32.const 1356) ",") - (data $7.1 (i32.const 1368) "\02\00\00\00\10\00\00\00F\00u\00n\00c\00t\00i\00o\00n") - (data $8 (i32.const 1404) "\1c") - (data $8.1 (i32.const 1416) "\02\00\00\00\02\00\00\00C") - (data $9 (i32.const 1436) "\1c") - (data $9.1 (i32.const 1448) "\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g") - (data $10 (i32.const 1468) "\1c") - (data $10.1 (i32.const 1480) "\02\00\00\00\08\00\00\00b\00o\00o\00l") - (data $11 (i32.const 1500) "\1c") - (data $11.1 (i32.const 1512) "\02\00\00\00\04\00\00\00i\008") - (data $12 (i32.const 1532) "\1c") - (data $12.1 (i32.const 1544) "\02\00\00\00\04\00\00\00u\008") - (data $13 (i32.const 1564) "\1c") - (data $13.1 (i32.const 1576) "\02\00\00\00\06\00\00\00i\001\006") - (data $14 (i32.const 1596) "\1c") - (data $14.1 (i32.const 1608) "\02\00\00\00\06\00\00\00u\001\006") - (data $15 (i32.const 1628) "\1c") - (data $15.1 (i32.const 1640) "\02\00\00\00\06\00\00\00i\003\002") - (data $16 (i32.const 1660) "\1c") - (data $16.1 (i32.const 1672) "\02\00\00\00\06\00\00\00u\003\002") - (data $17 (i32.const 1692) "\1c") - (data $17.1 (i32.const 1704) "\02\00\00\00\06\00\00\00f\003\002") - (data $18 (i32.const 1724) "\1c") - (data $18.1 (i32.const 1736) "\02\00\00\00\06\00\00\00i\006\004") - (data $19 (i32.const 1756) "\1c") - (data $19.1 (i32.const 1768) "\02\00\00\00\06\00\00\00u\006\004") - (data $20 (i32.const 1788) "\1c") - (data $20.1 (i32.const 1800) "\02\00\00\00\06\00\00\00f\006\004") - (data $21 (i32.const 1820) "\1c") - (data $21.1 (i32.const 1832) "\02\00\00\00\n\00\00\00i\00s\00i\00z\00e") - (data $22 (i32.const 1852) "\1c") - (data $22.1 (i32.const 1864) "\02\00\00\00\n\00\00\00u\00s\00i\00z\00e") - (data $23 (i32.const 1884) "\1c") - (data $23.1 (i32.const 1896) "\02\00\00\00\08\00\00\00v\00o\00i\00d") - (data $24 (i32.const 1916) ",") - (data $24.1 (i32.const 1928) "\02\00\00\00\14\00\00\00s\00o\00m\00e\00 \00v\00a\00l\00u\00e") - (data $25 (i32.const 1964) "\1c") - (data $25.1 (i32.const 1976) "\0c\00\00\00\08\00\00\00\02") - (data $26 (i32.const 1996) "\1c") - (data $26.1 (i32.const 2008) "\r\00\00\00\08\00\00\00\03") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $4 (i32.const 1164) "<") + (data $4.1 (i32.const 1176) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1228) "<") + (data $5.1 (i32.const 1240) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1356) "<") + (data $8.1 (i32.const 1368) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1420) ",") + (data $9.1 (i32.const 1432) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1500) "<") + (data $11.1 (i32.const 1512) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1564) "\1c") + (data $12.1 (i32.const 1576) "\02\00\00\00\02\00\00\00:") + (data $13 (i32.const 1596) "|") + (data $13.1 (i32.const 1608) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $14 (i32.const 1724) "<") + (data $14.1 (i32.const 1736) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $15 (i32.const 1788) "\1c") + (data $15.1 (i32.const 1800) "\02\00\00\00\02\00\00\000") + (data $16 (i32.const 1820) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $17 (i32.const 2220) "\1c\04") + (data $17.1 (i32.const 2232) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $18 (i32.const 3276) "\\") + (data $18.1 (i32.const 3288) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $19 (i32.const 3372) "<") + (data $19.1 (i32.const 3384) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $20 (i32.const 3436) ",") + (data $20.1 (i32.const 3448) "\02\00\00\00\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $21 (i32.const 3484) "\1c") + (data $21.1 (i32.const 3496) "\07\00\00\00\08\00\00\00\01") + (data $22 (i32.const 3516) "L") + (data $22.1 (i32.const 3528) "\02\00\00\008\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00(\00)\00 \00{\00 \00[\00n\00a\00t\00i\00v\00e\00 \00c\00o\00d\00e\00]\00 \00}") + (data $23 (i32.const 3596) ",") + (data $23.1 (i32.const 3608) "\02\00\00\00\14\00\00\00s\00i\00g\00n\00a\00t\00u\00r\00e\00s") + (data $24 (i32.const 3644) ",") + (data $24.1 (i32.const 3656) "\02\00\00\00\0e\00\00\00t\00e\00s\00t\00i\00n\00g") + (data $25 (i32.const 3692) ",") + (data $25.1 (i32.const 3704) "\02\00\00\00\10\00\00\00F\00u\00n\00c\00t\00i\00o\00n") + (data $26 (i32.const 3740) "\1c") + (data $26.1 (i32.const 3752) "\02\00\00\00\02\00\00\00C") + (data $27 (i32.const 3772) "\1c") + (data $27.1 (i32.const 3784) "\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g") + (data $28 (i32.const 3804) "\1c") + (data $28.1 (i32.const 3816) "\02\00\00\00\08\00\00\00b\00o\00o\00l") + (data $29 (i32.const 3836) "\1c") + (data $29.1 (i32.const 3848) "\02\00\00\00\04\00\00\00i\008") + (data $30 (i32.const 3868) "\1c") + (data $30.1 (i32.const 3880) "\02\00\00\00\04\00\00\00u\008") + (data $31 (i32.const 3900) "\1c") + (data $31.1 (i32.const 3912) "\02\00\00\00\06\00\00\00i\001\006") + (data $32 (i32.const 3932) "\1c") + (data $32.1 (i32.const 3944) "\02\00\00\00\06\00\00\00u\001\006") + (data $33 (i32.const 3964) "\1c") + (data $33.1 (i32.const 3976) "\02\00\00\00\06\00\00\00i\003\002") + (data $34 (i32.const 3996) "\1c") + (data $34.1 (i32.const 4008) "\02\00\00\00\06\00\00\00u\003\002") + (data $35 (i32.const 4028) "\1c") + (data $35.1 (i32.const 4040) "\02\00\00\00\06\00\00\00f\003\002") + (data $36 (i32.const 4060) "\1c") + (data $36.1 (i32.const 4072) "\02\00\00\00\06\00\00\00i\006\004") + (data $37 (i32.const 4092) "\1c") + (data $37.1 (i32.const 4104) "\02\00\00\00\06\00\00\00u\006\004") + (data $38 (i32.const 4124) "\1c") + (data $38.1 (i32.const 4136) "\02\00\00\00\06\00\00\00f\006\004") + (data $39 (i32.const 4156) "\1c") + (data $39.1 (i32.const 4168) "\02\00\00\00\n\00\00\00i\00s\00i\00z\00e") + (data $40 (i32.const 4188) "\1c") + (data $40.1 (i32.const 4200) "\02\00\00\00\n\00\00\00u\00s\00i\00z\00e") + (data $41 (i32.const 4220) "\1c") + (data $41.1 (i32.const 4232) "\02\00\00\00\08\00\00\00v\00o\00i\00d") + (data $42 (i32.const 4252) ",") + (data $42.1 (i32.const 4264) "\02\00\00\00\14\00\00\00s\00o\00m\00e\00 \00v\00a\00l\00u\00e") + (data $43 (i32.const 4300) "\1c") + (data $43.1 (i32.const 4312) "\0c\00\00\00\08\00\00\00\02") + (data $44 (i32.const 4332) "\1c") + (data $44.1 (i32.const 4344) "\r\00\00\00\08\00\00\00\03") + (data $45 (i32.const 4368) "\0e\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00A\00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (table $0 4 4 funcref) (elem $0 (i32.const 1) $start:builtins~anonymous|0 $start:builtins~anonymous|1 $start:builtins~anonymous|2) (export "test" (func $start:builtins~anonymous|1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1376 + call $~lib/rt/itcms/__visit + i32.const 1184 + call $~lib/rt/itcms/__visit + i32.const 2240 + call $~lib/rt/itcms/__visit + i32.const 3296 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1248 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$150 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 37196 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$150 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 4368 + i32.load + i32.gt_u + if + i32.const 1376 + i32.const 1440 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 4372 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 37200 + i32.const 0 + i32.store + i32.const 38768 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 37200 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 37200 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 37200 + i32.const 38772 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 37200 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 37196 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1248 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 37196 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 37196 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1520 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1184 + i32.const 1248 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1184 + i32.const 1520 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1520 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 4428 + i32.lt_s + if + i32.const 37216 + i32.const 37264 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1808 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $start:builtins~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -78,10 +1811,210 @@ (func $start:builtins~anonymous|1 ) (func $start:builtins~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + unreachable ) (func $~start call $start:builtins ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4428 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4428 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$155 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1056 + local.set $0 + br $__inlined_func$~lib/string/String#concat$155 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 37216 + i32.const 37264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4428 + i32.lt_s + if + i32.const 37216 + i32.const 37264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1120 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1152 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3392 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -92,11 +2025,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2028 + i32.const 4428 i32.lt_s if - i32.const 34816 - i32.const 34864 + i32.const 37216 + i32.const 37264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -195,7 +2128,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$2 + block $__inlined_func$~lib/util/string/compareImpl$79 loop $while-continue|1 local.get $0 local.tee $3 @@ -215,7 +2148,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$2 + br_if $__inlined_func$~lib/util/string/compareImpl$79 local.get $2 i32.const 2 i32.add @@ -250,11 +2183,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2028 + i32.const 4428 i32.lt_s if - i32.const 34816 - i32.const 34864 + i32.const 37216 + i32.const 37264 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -263,6 +2196,38 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + memory.size + i32.const 16 + i32.shl + i32.const 37196 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/pinSpace + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/toSpace + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + global.set $~lib/rt/itcms/fromSpace i32.const 1 global.set $builtins/i i32.const 0 @@ -616,39 +2581,39 @@ global.set $builtins/F i32.const 1 i32.const 2 - i32.const 1168 + i32.const 3504 i32.load call_indirect (type $0) i32.const 3 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 400 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1168 + i32.const 3504 i32.store i32.const 2 i32.const 3 - i32.const 1168 + i32.const 3504 i32.load call_indirect (type $0) i32.const 5 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 401 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1168 + i32.const 3504 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 1056 @@ -659,31 +2624,31 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 402 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1168 + i32.const 3504 i32.store global.get $~lib/memory/__stack_pointer - i32.const 1168 + i32.const 3504 i32.store global.get $~lib/memory/__stack_pointer - i32.const 1168 + i32.const 3504 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 1200 + i32.const 3536 i32.store - i32.const 1200 - i32.const 1200 + i32.const 3536 + i32.const 3536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 405 i32.const 1 call $~lib/builtins/abort @@ -758,249 +2723,249 @@ i32.const 8 f64.const 1 f64.store - i32.const 1280 + i32.const 3616 i32.const 5 f64.const 0 f64.const 0 - f64.const 51 - f64.const 52 - f64.const 52 + f64.const 42 + f64.const 100 + f64.const 100 call $~lib/builtins/trace - i32.const 1376 - i32.const 1376 + i32.const 3712 + i32.const 3712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 610 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1376 - i32.const 1376 + i32.const 3712 + i32.const 3712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 611 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1424 - i32.const 1424 + i32.const 3760 + i32.const 3760 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 612 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1456 - i32.const 1456 + i32.const 3792 + i32.const 3792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 613 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1488 - i32.const 1488 + i32.const 3824 + i32.const 3824 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 614 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1520 - i32.const 1520 + i32.const 3856 + i32.const 3856 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 615 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1552 - i32.const 1552 + i32.const 3888 + i32.const 3888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 616 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1584 - i32.const 1584 + i32.const 3920 + i32.const 3920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 617 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1616 - i32.const 1616 + i32.const 3952 + i32.const 3952 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 618 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1648 - i32.const 1648 + i32.const 3984 + i32.const 3984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 619 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1680 - i32.const 1680 + i32.const 4016 + i32.const 4016 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 620 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 + i32.const 4048 + i32.const 4048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 621 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1744 - i32.const 1744 + i32.const 4080 + i32.const 4080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 622 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1776 - i32.const 1776 + i32.const 4112 + i32.const 4112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 623 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1808 + i32.const 4144 + i32.const 4144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 624 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1840 - i32.const 1840 + i32.const 4176 + i32.const 4176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 625 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1872 - i32.const 1872 + i32.const 4208 + i32.const 4208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 626 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1904 - i32.const 1904 + i32.const 4240 + i32.const 4240 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 627 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1456 - i32.const 1456 + i32.const 3792 + i32.const 3792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 628 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1376 - i32.const 1376 + i32.const 3712 + i32.const 3712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3456 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -1011,4 +2976,106 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $builtins/Foo + block $builtins/Bar + block $builtins/Foo + block $builtins/Foo + block $builtins/C + block $~lib/typedarray/Uint8Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/typedarray/Uint8Array $builtins/C $folding-inner0 $builtins/Foo $builtins/Foo $builtins/Bar $builtins/Foo $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4428 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4428 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 37216 + i32.const 37264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) ) diff --git a/tests/compiler/call-inferred.debug.wat b/tests/compiler/call-inferred.debug.wat index 3fd88cbe2d..18c2f4e2bf 100644 --- a/tests/compiler/call-inferred.debug.wat +++ b/tests/compiler/call-inferred.debug.wat @@ -1,17 +1,21 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) (type $4 (func)) - (type $5 (func (param f32) (result f32))) - (type $6 (func (param i32 i32 i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param f64) (result f64))) - (type $9 (func (param i32 i32 i64) (result i32))) - (type $10 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~argumentsLength (mut i32) (i32.const 0)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param f32) (result f32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param f64) (result f64))) + (type $13 (func (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)) @@ -20,27 +24,37 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 480)) - (global $~lib/memory/__data_end i32 (i32.const 512)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33280)) - (global $~lib/memory/__heap_base i32 (i32.const 33280)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2448)) + (global $~lib/memory/__data_end i32 (i32.const 2480)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35248)) + (global $~lib/memory/__heap_base i32 (i32.const 35248)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $2 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 332) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 384) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 480) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2448) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -49,33 +63,19 @@ local.get $a return ) - (func $call-inferred/foo (param $a f64) (result f64) - local.get $a - return - ) - (func $call-inferred/foo (param $a f32) (result f32) - local.get $a - return + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 ) - (func $call-inferred/bar (param $a f32) (result f32) - local.get $a + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u return ) - (func $call-inferred/bar@varargs (param $a f32) (result f32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - f32.const 42 - local.set $a - end - local.get $a - call $call-inferred/bar - ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -140,7 +140,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 192 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -210,7 +210,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 192 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -227,7 +227,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 192 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -257,8 +257,8 @@ i32.load i32.gt_u if - i32.const 288 - i32.const 352 + i32.const 320 + i32.const 384 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -326,7 +326,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 160 + i32.const 192 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -478,7 +478,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -498,7 +498,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -561,7 +561,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -714,7 +714,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -731,7 +731,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -820,7 +820,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -863,7 +863,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -881,7 +881,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -949,7 +949,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1066,7 +1066,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1112,7 +1112,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1144,7 +1144,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1388,7 +1388,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 464 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1608,7 +1608,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 192 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1716,8 +1716,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 96 - i32.const 432 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1819,7 +1819,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1890,7 +1890,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2047,7 +2047,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2162,7 +2162,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2182,7 +2182,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 464 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2230,8 +2230,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 96 - i32.const 160 + i32.const 128 + i32.const 192 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2276,6 +2276,449 @@ local.get $ptr return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $call-inferred/foo (param $a f64) (result f64) + local.get $a + return + ) + (func $call-inferred/foo (param $a f32) (result f32) + local.get $a + return + ) + (func $call-inferred/bar (param $a f32) (result f32) + local.get $a + return + ) + (func $call-inferred/bar@varargs (param $a f32) (result f32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + f32.const 42 + local.set $a + end + local.get $a + call $call-inferred/bar + ) (func $call-inferred/Foo#set:value (param $this i32) (param $value i32) local.get $this local.get $value @@ -2295,77 +2738,227 @@ local.get $a return ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 288 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 96 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $call-inferred/Baz - block $call-inferred/Bar - block $call-inferred/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $call-inferred/Foo $call-inferred/Bar $call-inferred/Baz $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - return - end - unreachable - ) - (func $~start - call $start:call-inferred + (func $~start + call $start:call-inferred ) (func $~stack_check global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33312 - i32.const 33360 + i32.const 35280 + i32.const 35328 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $call-inferred/Foo#constructor (param $this i32) (param $value i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer @@ -2489,6 +3082,23 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 42 call $call-inferred/foo i32.const 42 @@ -2496,7 +3106,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -2509,7 +3119,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -2522,7 +3132,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -2537,29 +3147,12 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 208 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 240 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 384 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace i32.const 0 i32.const 42 call $call-inferred/Foo#constructor @@ -2574,7 +3167,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -2593,7 +3186,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -2613,7 +3206,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -2633,7 +3226,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -2644,6 +3237,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2672,4 +3412,65 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $call-inferred/Baz + block $call-inferred/Bar + block $call-inferred/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $call-inferred/Foo $call-inferred/Bar $call-inferred/Baz $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/call-inferred.release.wat b/tests/compiler/call-inferred.release.wat index 2ef72953b6..3749481527 100644 --- a/tests/compiler/call-inferred.release.wat +++ b/tests/compiler/call-inferred.release.wat @@ -1,13 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (type $7 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,29 +17,54 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34304)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36272)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $2 (i32.const 1164) "<") - (data $2.1 (i32.const 1176) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $5 (i32.const 1292) "<") - (data $5.1 (i32.const 1304) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $6 (i32.const 1356) ",") - (data $6.1 (i32.const 1368) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $8 (i32.const 1436) "<") - (data $8.1 (i32.const 1448) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $9 (i32.const 1504) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) "<") + (data $19.1 (i32.const 3416) "\02\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s") + (data $20 (i32.const 3472) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1312 + i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1120 + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -61,7 +85,7 @@ i32.ne if i32.const 0 - i32.const 1184 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -109,7 +133,7 @@ i32.eqz if i32.const 0 - i32.const 1184 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -118,7 +142,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$125 + block $__inlined_func$~lib/rt/itcms/Object#unlink$138 local.get $1 i32.load offset=4 i32.const -4 @@ -130,19 +154,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34304 + i32.const 36272 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1184 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$125 + br $__inlined_func$~lib/rt/itcms/Object#unlink$138 end local.get $1 i32.load offset=8 @@ -150,7 +174,7 @@ i32.eqz if i32.const 0 - i32.const 1184 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -179,12 +203,12 @@ i32.const 1 else local.get $0 - i32.const 1504 + i32.const 3472 i32.load i32.gt_u if - i32.const 1312 - i32.const 1376 + i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -193,7 +217,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1508 + i32.const 3476 i32.add i32.load i32.const 32 @@ -245,7 +269,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -259,7 +283,7 @@ i32.lt_u if i32.const 0 - i32.const 1456 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -305,7 +329,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -388,7 +412,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -402,7 +426,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -463,7 +487,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -496,7 +520,7 @@ i32.lt_u if i32.const 0 - i32.const 1456 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -511,7 +535,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -562,7 +586,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -634,7 +658,7 @@ i64.lt_u if i32.const 0 - i32.const 1456 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -659,7 +683,7 @@ i32.gt_u if i32.const 0 - i32.const 1456 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -686,7 +710,7 @@ i32.gt_u if i32.const 0 - i32.const 1456 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -758,10 +782,10 @@ if unreachable end - i32.const 34304 + i32.const 36272 i32.const 0 i32.store - i32.const 35872 + i32.const 37840 i32.const 0 i32.store loop $for-loop|0 @@ -772,7 +796,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34304 + i32.const 36272 i32.add i32.const 0 i32.store offset=4 @@ -790,7 +814,7 @@ i32.add i32.const 2 i32.shl - i32.const 34304 + i32.const 36272 i32.add i32.const 0 i32.store offset=96 @@ -808,14 +832,14 @@ br $for-loop|0 end end - i32.const 34304 - i32.const 35876 + i32.const 36272 + i32.const 37844 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34304 + i32.const 36272 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -900,7 +924,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34304 + i32.const 36272 i32.lt_u if local.get $0 @@ -989,14 +1013,14 @@ i32.ne if i32.const 0 - i32.const 1184 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34304 + i32.const 36272 i32.lt_u if local.get $0 @@ -1019,7 +1043,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34304 + i32.const 36272 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1048,7 +1072,7 @@ end if i32.const 0 - i32.const 1456 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1132,7 +1156,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 1488 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1184,7 +1208,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1216,8 +1240,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1120 - i32.const 1184 + i32.const 1152 + i32.const 1216 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1281,8 +1305,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1120 - i32.const 1456 + i32.const 1152 + i32.const 1488 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1384,7 +1408,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1399,7 +1423,7 @@ i32.gt_u if i32.const 0 - i32.const 1456 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1418,7 +1442,7 @@ i32.and if i32.const 0 - i32.const 1456 + i32.const 1488 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1523,39 +1547,203 @@ memory.fill local.get $1 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $call-inferred/Baz - block $call-inferred/Bar - block $call-inferred/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $call-inferred/Foo $call-inferred/Bar $call-inferred/Baz $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3504 + i32.lt_s + if + i32.const 36304 + i32.const 36352 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add end - return end - return + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end - unreachable + local.get $0 ) (func $~start (local $0 i32) @@ -1566,7 +1754,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1536 + i32.const 3504 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1575,19 +1763,11 @@ memory.size i32.const 16 i32.shl - i32.const 34304 + i32.const 36272 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1236 - i32.const 1232 - i32.store - i32.const 1240 - i32.const 1232 - i32.store - i32.const 1232 - global.set $~lib/rt/itcms/pinSpace i32.const 1268 i32.const 1264 i32.store @@ -1595,14 +1775,22 @@ 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 1412 - i32.const 1408 + i32.const 1444 + i32.const 1440 i32.store - i32.const 1416 - i32.const 1408 + i32.const 1448 + i32.const 1440 i32.store - i32.const 1408 + i32.const 1440 global.set $~lib/rt/itcms/fromSpace i32.const 0 call $call-inferred/Foo#constructor @@ -1616,7 +1804,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -1634,7 +1822,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -1645,7 +1833,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1536 + i32.const 3504 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1666,7 +1854,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1536 + i32.const 3504 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1700,7 +1888,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1536 + i32.const 3504 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1733,7 +1921,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -1745,24 +1933,224 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34336 - i32.const 34384 + i32.const 36304 + i32.const 36352 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3504 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3504 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$144 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$144 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3504 + i32.lt_s + if + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $call-inferred/Foo#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1536 + i32.const 3504 i32.lt_s if - i32.const 34336 - i32.const 34384 + i32.const 36304 + i32.const 36352 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1793,4 +2181,38 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $call-inferred/Baz + block $call-inferred/Bar + block $call-inferred/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $call-inferred/Foo $call-inferred/Bar $call-inferred/Baz $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/call-optional.debug.wat b/tests/compiler/call-optional.debug.wat index 7a6794eba7..15506e631d 100644 --- a/tests/compiler/call-optional.debug.wat +++ b/tests/compiler/call-optional.debug.wat @@ -1,16 +1,61 @@ (module - (type $0 (func (param i32 i32 i32) (result i32))) - (type $1 (func)) - (type $2 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32) (result i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $call-optional/optIndirect (mut i32) (i32.const 96)) - (global $~lib/memory/__data_end i32 (i32.const 108)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32876)) - (global $~lib/memory/__heap_base i32 (i32.const 32876)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $call-optional/optIndirect (mut i32) (i32.const 2464)) + (global $~lib/rt/__rtti_base i32 (i32.const 2480)) + (global $~lib/memory/__data_end i32 (i32.const 2504)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35272)) + (global $~lib/memory/__heap_base i32 (i32.const 35272)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2444) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2480) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00") (table $0 2 2 funcref) (elem $0 (i32.const 1) $call-optional/opt@varargs) (export "memory" (memory $0)) @@ -46,7 +91,2653 @@ local.get $c call $call-optional/opt ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $start:call-optional + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 3 i32.const 0 i32.const 1 @@ -58,7 +2749,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4 i32.const 1 call $~lib/builtins/abort @@ -75,7 +2766,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -90,7 +2781,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -103,13 +2794,13 @@ global.set $~argumentsLength global.get $call-optional/optIndirect i32.load - call_indirect (type $0) + call_indirect (type $4) i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -122,13 +2813,13 @@ global.set $~argumentsLength global.get $call-optional/optIndirect i32.load - call_indirect (type $0) + call_indirect (type $4) i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -141,13 +2832,13 @@ global.set $~argumentsLength global.get $call-optional/optIndirect i32.load - call_indirect (type $0) + call_indirect (type $4) i32.const 12 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -157,4 +2848,463 @@ (func $~start call $start:call-optional ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35296 + i32.const 35344 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28i32%2Ci32?%2Ci32?%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32?%2Ci32?%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32?%2Ci32?%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28i32%2Ci32?%2Ci32?%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%2Ci32?%2Ci32?%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32?%2Ci32?%29=>i32>~visit + return + end + unreachable + ) + (func $~lib/function/Function<%28i32%2Ci32?%2Ci32?%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32?%2Ci32?%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/call-optional.release.wat b/tests/compiler/call-optional.release.wat index 79b66938d4..d93275d5ef 100644 --- a/tests/compiler/call-optional.release.wat +++ b/tests/compiler/call-optional.release.wat @@ -1,14 +1,62 @@ (module (type $0 (func (param i32 i32 i32) (result i32))) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $1 (func)) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i32 i32 i32))) (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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36296)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s") - (data $1 (i32.const 1100) "\1c") - (data $1.1 (i32.const 1112) "\04\00\00\00\08\00\00\00\01") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) "<") + (data $19.1 (i32.const 3416) "\02\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s") + (data $20 (i32.const 3468) "\1c") + (data $20.1 (i32.const 3480) "\04\00\00\00\08\00\00\00\01") + (data $21 (i32.const 3504) "\05\00\00\00 \00\00\00 \00\00\00 ") (table $0 2 2 funcref) (elem $0 (i32.const 1) $call-optional/opt@varargs) (export "memory" (memory $0)) @@ -37,7 +85,1728 @@ local.get $2 i32.add ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$127 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36296 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$127 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3504 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3508 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36304 + i32.const 0 + i32.store + i32.const 37872 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36304 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36304 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36304 + i32.const 37876 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36304 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36296 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36296 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36296 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$71 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$71 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3528 + i32.lt_s + if + i32.const 36320 + i32.const 36368 + 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$75 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$75 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36296 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace i32.const 1 global.set $~argumentsLength i32.const 2 @@ -47,12 +1816,12 @@ i32.const 3 i32.const 0 i32.const 0 - i32.const 1120 + i32.const 3488 i32.load call_indirect (type $0) if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -63,14 +1832,14 @@ i32.const 3 i32.const 4 i32.const 0 - i32.const 1120 + i32.const 3488 i32.load call_indirect (type $0) i32.const 5 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -81,18 +1850,273 @@ i32.const 3 i32.const 4 i32.const 5 - i32.const 1120 + i32.const 3488 i32.load call_indirect (type $0) i32.const 12 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3528 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3528 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$132 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$132 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36320 + i32.const 36368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3528 + i32.lt_s + if + i32.const 36320 + i32.const 36368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28i32%2Ci32?%2Ci32?%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%2Ci32?%2Ci32?%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3528 + i32.lt_s + if + i32.const 36320 + i32.const 36368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) ) diff --git a/tests/compiler/call-rest.debug.wat b/tests/compiler/call-rest.debug.wat index af743cb0b0..b84b3cf812 100644 --- a/tests/compiler/call-rest.debug.wat +++ b/tests/compiler/call-rest.debug.wat @@ -1,20 +1,21 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32 i32) (result i32))) - (type $4 (func (param i32 i32) (result i32))) - (type $5 (func)) - (type $6 (func (param i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func)) (type $7 (func (param i32 i32 i32 i32) (result i32))) (type $8 (func (param i32 i32 i32 i32))) (type $9 (func (param i32 i32 i64) (result i32))) (type $10 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $11 (func (param i32 i64 i32))) + (type $12 (func (param i64 i32) (result i32))) + (type $13 (func (param i32 i64 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/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)) @@ -26,41 +27,54 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $call-rest/indirect (mut i32) (i32.const 624)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $call-rest/indirect (mut i32) (i32.const 2592)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/rt/__rtti_base i32 (i32.const 1072)) - (global $~lib/memory/__data_end i32 (i32.const 1112)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33880)) - (global $~lib/memory/__heap_base i32 (i32.const 33880)) + (global $~lib/rt/__rtti_base i32 (i32.const 3040)) + (global $~lib/memory/__data_end i32 (i32.const 3080)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35848)) + (global $~lib/memory/__heap_base i32 (i32.const 35848)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $2 (i32.const 124) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 156) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $4 (i32.const 220) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00c\00a\00l\00l\00-\00r\00e\00s\00t\00.\00t\00s\00\00\00\00\00") - (data $11 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data $13 (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data $16 (i32.const 700) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $17 (i32.const 748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $18 (i32.const 780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") - (data $19 (i32.const 812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data $20 (i32.const 844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $21 (i32.const 876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $22 (i32.const 908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data $23 (i32.const 940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") - (data $24 (i32.const 972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") - (data $25 (i32.const 1004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00c\00\00\00\00\00\00\00\00\00\00\00") - (data $26 (i32.const 1036) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\c0\03\00\00\e0\03\00\00\00\04\00\00") - (data $27 (i32.const 1072) "\t\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\01\00\00\00\00\00\00\00\00\00\00\02A\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $20 (i32.const 2428) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00c\00a\00l\00l\00-\00r\00e\00s\00t\00.\00t\00s\00\00\00\00\00") + (data $22 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data $24 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data $27 (i32.const 2668) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $28 (i32.const 2716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 2748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 2780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data $31 (i32.const 2812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 2844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 2876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $34 (i32.const 2908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $35 (i32.const 2940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 2972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00c\00\00\00\00\00\00\00\00\00\00\00") + (data $37 (i32.const 3004) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00p\0b\00\00\90\0b\00\00\b0\0b\00\00") + (data $38 (i32.const 3040) "\t\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\01\00\00\00\00\00\00\00\00\00\00\02A\00\00") (table $0 2 2 funcref) (elem $0 (i32.const 1) $call-rest/fn@varargs) (export "memory" (memory $0)) @@ -69,9 +83,18 @@ local.get $this i32.load offset=12 ) - (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) local.get $this - i32.load offset=4 + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this @@ -137,7 +160,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -207,7 +230,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -224,7 +247,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -254,8 +277,8 @@ i32.load i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 320 + i32.const 384 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -323,7 +346,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 240 + i32.const 192 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -475,7 +498,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -495,7 +518,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -558,7 +581,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -711,7 +734,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -728,7 +751,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -817,7 +840,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -860,7 +883,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -878,7 +901,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -946,7 +969,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1063,7 +1086,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1109,7 +1132,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1141,7 +1164,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1385,7 +1408,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1605,7 +1628,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1713,8 +1736,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 176 - i32.const 448 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1816,7 +1839,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1887,7 +1910,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2044,7 +2067,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2159,7 +2182,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2179,7 +2202,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2227,8 +2250,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 176 - i32.const 240 + i32.const 128 + i32.const 192 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2273,6 +2296,426 @@ local.get $ptr return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) (local $buffer i32) local.get $size @@ -2304,7 +2747,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2437,188 +2880,252 @@ local.get $this i32.load offset=12 ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 720 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 176 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + (func $~start + call $start:call-rest ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35872 + i32.const 35920 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32>#__visit - ) - (func $call-rest/Foo~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) - local.get $this - i32.load offset=4 + return ) - (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load - ) - (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/array/Array<~lib/string/String> - block $call-rest/Foo - block $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> $call-rest/Foo $~lib/array/Array<~lib/string/String> $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $call-rest/Foo~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>~visit - return - end - unreachable - ) - (func $~start - call $start:call-rest - ) - (func $~stack_check + local.set $6 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq if - i32.const 33904 - i32.const 33952 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~lib/array/Array#get:length (param $this i32) (result i32) - (local $1 i32) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 + i64.const 0 + i64.store + local.get $left + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store - local.get $1 - call $~lib/array/Array#get:length_ - local.set $1 + local.get $2 + local.get $right + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 return ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) (local $value i32) (local $3 i32) @@ -2640,8 +3147,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 320 + i32.const 2400 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2759,7 +3266,7 @@ i32.const 0 i32.const 2 i32.const 5 - i32.const 144 + i32.const 2448 call $~lib/rt/__newArray local.tee $rest i32.store @@ -2820,8 +3327,8 @@ i32.shr_u i32.gt_u if - i32.const 720 - i32.const 96 + i32.const 2688 + i32.const 2400 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -2923,8 +3430,8 @@ i32.const 0 i32.lt_s if - i32.const 32 - i32.const 96 + i32.const 320 + i32.const 2400 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -3176,7 +3683,7 @@ i32.const 0 i32.const 2 i32.const 5 - i32.const 768 + i32.const 2736 call $~lib/rt/__newArray local.tee $rest i32.store @@ -3320,7 +3827,7 @@ i32.const 0 i32.const 2 i32.const 5 - i32.const 864 + i32.const 2832 call $~lib/rt/__newArray local.tee $args i32.store @@ -3416,13 +3923,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 288 + i32.const 240 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 320 + i32.const 272 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 400 + i32.const 416 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 1 @@ -3436,7 +3943,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -3453,7 +3960,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -3464,7 +3971,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 560 + i32.const 2528 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -3477,7 +3984,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -3488,7 +3995,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 592 + i32.const 2560 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -3501,7 +4008,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -3514,13 +4021,13 @@ global.set $~argumentsLength global.get $call-rest/indirect i32.load - call_indirect (type $3) + call_indirect (type $4) i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -3533,13 +4040,13 @@ global.set $~argumentsLength global.get $call-rest/indirect i32.load - call_indirect (type $3) + call_indirect (type $4) i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 17 i32.const 1 call $~lib/builtins/abort @@ -3550,7 +4057,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 656 + i32.const 2624 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -3561,13 +4068,13 @@ global.set $~argumentsLength global.get $call-rest/indirect i32.load - call_indirect (type $3) + call_indirect (type $4) i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -3578,7 +4085,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 688 + i32.const 2656 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -3589,13 +4096,13 @@ global.set $~argumentsLength global.get $call-rest/indirect i32.load - call_indirect (type $3) + call_indirect (type $4) i32.const 15 i32.eq i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -3619,7 +4126,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -3643,7 +4150,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -3655,7 +4162,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 800 + i32.const 2768 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -3674,7 +4181,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -3686,7 +4193,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 832 + i32.const 2800 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -3705,7 +4212,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 43 i32.const 1 call $~lib/builtins/abort @@ -3720,7 +4227,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 49 i32.const 1 call $~lib/builtins/abort @@ -3729,7 +4236,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 896 + i32.const 2864 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -3742,7 +4249,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 50 i32.const 1 call $~lib/builtins/abort @@ -3751,7 +4258,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 928 + i32.const 2896 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -3764,7 +4271,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 51 i32.const 1 call $~lib/builtins/abort @@ -3773,7 +4280,7 @@ i32.const 3 i32.const 2 i32.const 8 - i32.const 1056 + i32.const 3024 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -3786,7 +4293,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 54 i32.const 1 call $~lib/builtins/abort @@ -3797,8 +4304,18 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3807,30 +4324,367 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2688 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32>#__visit + ) + (func $call-rest/Foo~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array<~lib/string/String> + block $call-rest/Foo + block $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> $call-rest/Foo $~lib/array/Array<~lib/string/String> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $call-rest/Foo~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + unreachable + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 i32.store i32.const 0 @@ -3943,57 +4797,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) - (local $bufferSize i32) - (local $buffer i32) - (local $array i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $length - local.get $alignLog2 - i32.shl - local.set $bufferSize - global.get $~lib/memory/__stack_pointer - local.get $bufferSize - i32.const 1 - local.get $data - call $~lib/rt/__newBuffer - local.tee $buffer - i32.store - i32.const 16 - local.get $id - call $~lib/rt/itcms/__new - local.set $array - local.get $array - local.get $buffer - i32.store - local.get $array - local.get $buffer - i32.const 0 - call $~lib/rt/itcms/__link - local.get $array - local.get $buffer - i32.store offset=4 - local.get $array - local.get $bufferSize - i32.store offset=8 - local.get $array - local.get $length - i32.store offset=12 - local.get $array - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - ) ) diff --git a/tests/compiler/call-rest.release.wat b/tests/compiler/call-rest.release.wat index 24506bdd09..92dfbda1aa 100644 --- a/tests/compiler/call-rest.release.wat +++ b/tests/compiler/call-rest.release.wat @@ -1,16 +1,14 @@ (module - (type $0 (func (param i32 i32 i32) (result i32))) - (type $1 (func (param i32 i32) (result i32))) - (type $2 (func)) - (type $3 (func (param i32))) - (type $4 (func (param i32 i32))) - (type $5 (func (param i32) (result i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (result i32))) + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32 i32) (result i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func)) + (type $4 (func (param i32))) + (type $5 (func (param i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i32 i32 i32))) (type $9 (func (param i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -21,58 +19,80 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34904)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36872)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $1 (i32.const 1100) ",") - (data $1.1 (i32.const 1112) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $2 (i32.const 1148) "\1c") - (data $2.1 (i32.const 1160) "\01") - (data $3 (i32.const 1180) "<") - (data $3.1 (i32.const 1192) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $4 (i32.const 1244) "<") - (data $4.1 (i32.const 1256) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $7 (i32.const 1372) ",") - (data $7.1 (i32.const 1384) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $9 (i32.const 1452) "<") - (data $9.1 (i32.const 1464) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $10 (i32.const 1516) ",") - (data $10.1 (i32.const 1528) "\02\00\00\00\18\00\00\00c\00a\00l\00l\00-\00r\00e\00s\00t\00.\00t\00s") - (data $11 (i32.const 1564) "\1c") - (data $11.1 (i32.const 1576) "\01\00\00\00\04\00\00\00\03") - (data $12 (i32.const 1596) "\1c") - (data $12.1 (i32.const 1608) "\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05") - (data $13 (i32.const 1628) "\1c") - (data $13.1 (i32.const 1640) "\06\00\00\00\08\00\00\00\01") - (data $14 (i32.const 1660) "\1c") - (data $14.1 (i32.const 1672) "\01\00\00\00\04\00\00\00\03") - (data $15 (i32.const 1692) "\1c") - (data $15.1 (i32.const 1704) "\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05") - (data $16 (i32.const 1724) ",") - (data $16.1 (i32.const 1736) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $17 (i32.const 1772) "\1c") - (data $17.1 (i32.const 1784) "\01") - (data $18 (i32.const 1804) "\1c") - (data $18.1 (i32.const 1816) "\01\00\00\00\04\00\00\00\03") - (data $19 (i32.const 1836) "\1c") - (data $19.1 (i32.const 1848) "\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05") - (data $20 (i32.const 1868) "\1c") - (data $20.1 (i32.const 1880) "\01") - (data $21 (i32.const 1900) "\1c") - (data $21.1 (i32.const 1912) "\01\00\00\00\04\00\00\00\01") - (data $22 (i32.const 1932) "\1c") - (data $22.1 (i32.const 1944) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data $23 (i32.const 1964) "\1c") - (data $23.1 (i32.const 1976) "\02\00\00\00\02\00\00\00a") - (data $24 (i32.const 1996) "\1c") - (data $24.1 (i32.const 2008) "\02\00\00\00\02\00\00\00b") - (data $25 (i32.const 2028) "\1c") - (data $25.1 (i32.const 2040) "\02\00\00\00\02\00\00\00c") - (data $26 (i32.const 2060) "\1c") - (data $26.1 (i32.const 2072) "\01\00\00\00\0c\00\00\00\c0\07\00\00\e0\07\00\00\00\08") - (data $27 (i32.const 2096) "\t\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\01") - (data $27.1 (i32.const 2132) "\02A") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $20 (i32.const 3452) "\1c") + (data $20.1 (i32.const 3464) "\01") + (data $21 (i32.const 3484) ",") + (data $21.1 (i32.const 3496) "\02\00\00\00\18\00\00\00c\00a\00l\00l\00-\00r\00e\00s\00t\00.\00t\00s") + (data $22 (i32.const 3532) "\1c") + (data $22.1 (i32.const 3544) "\01\00\00\00\04\00\00\00\03") + (data $23 (i32.const 3564) "\1c") + (data $23.1 (i32.const 3576) "\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05") + (data $24 (i32.const 3596) "\1c") + (data $24.1 (i32.const 3608) "\06\00\00\00\08\00\00\00\01") + (data $25 (i32.const 3628) "\1c") + (data $25.1 (i32.const 3640) "\01\00\00\00\04\00\00\00\03") + (data $26 (i32.const 3660) "\1c") + (data $26.1 (i32.const 3672) "\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05") + (data $27 (i32.const 3692) ",") + (data $27.1 (i32.const 3704) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $28 (i32.const 3740) "\1c") + (data $28.1 (i32.const 3752) "\01") + (data $29 (i32.const 3772) "\1c") + (data $29.1 (i32.const 3784) "\01\00\00\00\04\00\00\00\03") + (data $30 (i32.const 3804) "\1c") + (data $30.1 (i32.const 3816) "\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05") + (data $31 (i32.const 3836) "\1c") + (data $31.1 (i32.const 3848) "\01") + (data $32 (i32.const 3868) "\1c") + (data $32.1 (i32.const 3880) "\01\00\00\00\04\00\00\00\01") + (data $33 (i32.const 3900) "\1c") + (data $33.1 (i32.const 3912) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $34 (i32.const 3932) "\1c") + (data $34.1 (i32.const 3944) "\02\00\00\00\02\00\00\00a") + (data $35 (i32.const 3964) "\1c") + (data $35.1 (i32.const 3976) "\02\00\00\00\02\00\00\00b") + (data $36 (i32.const 3996) "\1c") + (data $36.1 (i32.const 4008) "\02\00\00\00\02\00\00\00c") + (data $37 (i32.const 4028) "\1c") + (data $37.1 (i32.const 4040) "\01\00\00\00\0c\00\00\00p\0f\00\00\90\0f\00\00\b0\0f") + (data $38 (i32.const 4064) "\t\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\01") + (data $38.1 (i32.const 4100) "\02A") (table $0 2 2 funcref) (elem $0 (i32.const 1) $call-rest/fn@varargs) (export "memory" (memory $0)) @@ -80,11 +100,15 @@ (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1056 + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 3712 call $~lib/rt/itcms/__visit - i32.const 1744 + i32.const 1152 call $~lib/rt/itcms/__visit - i32.const 1200 + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -105,7 +129,7 @@ i32.ne if i32.const 0 - i32.const 1264 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -138,7 +162,7 @@ i32.eqz if i32.const 0 - i32.const 1264 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -147,7 +171,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$160 + block $__inlined_func$~lib/rt/itcms/Object#unlink$173 local.get $0 i32.load offset=4 i32.const -4 @@ -159,19 +183,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34904 + i32.const 36872 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1264 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$160 + br $__inlined_func$~lib/rt/itcms/Object#unlink$173 end local.get $0 i32.load offset=8 @@ -179,7 +203,7 @@ i32.eqz if i32.const 0 - i32.const 1264 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -208,12 +232,12 @@ i32.const 1 else local.get $1 - i32.const 2096 + i32.const 4064 i32.load i32.gt_u if - i32.const 1056 - i32.const 1392 + i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -222,7 +246,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 2100 + i32.const 4068 i32.add i32.load i32.const 32 @@ -293,7 +317,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -307,7 +331,7 @@ i32.lt_u if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -353,7 +377,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -436,7 +460,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -450,7 +474,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -511,7 +535,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -544,7 +568,7 @@ i32.lt_u if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -559,7 +583,7 @@ i32.ne if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -610,7 +634,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -682,7 +706,7 @@ i64.lt_u if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -707,7 +731,7 @@ i32.gt_u if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -734,7 +758,7 @@ i32.gt_u if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -806,10 +830,10 @@ if unreachable end - i32.const 34912 + i32.const 36880 i32.const 0 i32.store - i32.const 36480 + i32.const 38448 i32.const 0 i32.store loop $for-loop|0 @@ -820,7 +844,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34912 + i32.const 36880 i32.add i32.const 0 i32.store offset=4 @@ -838,7 +862,7 @@ i32.add i32.const 2 i32.shl - i32.const 34912 + i32.const 36880 i32.add i32.const 0 i32.store offset=96 @@ -856,14 +880,14 @@ br $for-loop|0 end end - i32.const 34912 - i32.const 36484 + i32.const 36880 + i32.const 38452 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34912 + i32.const 36880 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -948,7 +972,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34904 + i32.const 36872 i32.lt_u if local.get $0 @@ -1037,14 +1061,14 @@ i32.ne if i32.const 0 - i32.const 1264 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34904 + i32.const 36872 i32.lt_u if local.get $0 @@ -1067,7 +1091,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34904 + i32.const 36872 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1096,7 +1120,7 @@ end if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1180,7 +1204,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1232,7 +1256,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1264,8 +1288,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1200 - i32.const 1264 + i32.const 1152 + i32.const 1216 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1275,7 +1299,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1296,7 +1320,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end local.get $2 i32.const 0 @@ -1329,8 +1353,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1200 - i32.const 1472 + i32.const 1152 + i32.const 1488 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1432,7 +1456,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1447,7 +1471,7 @@ i32.gt_u if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1466,7 +1490,7 @@ i32.and if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1571,6 +1595,204 @@ memory.fill local.get $1 ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 4104 + i32.lt_s + if + i32.const 36896 + i32.const 36944 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) local.get $1 i32.eqz @@ -1581,7 +1803,7 @@ i32.eqz if i32.const 0 - i32.const 1264 + i32.const 1216 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1625,17 +1847,20 @@ end end ) - (func $~lib/array/Array~visit (param $0 i32) + (func $~start + call $start:call-rest + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2136 + i32.const 4104 i32.lt_s if - i32.const 34928 - i32.const 34976 + i32.const 36896 + i32.const 36944 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1648,162 +1873,127 @@ local.get $0 i32.store local.get $0 - i32.load - call $~lib/rt/itcms/__visit + i32.load offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - block $invalid - block $~lib/array/Array<~lib/string/String> - block $call-rest/Foo - block $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> $call-rest/Foo $~lib/array/Array<~lib/string/String> $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 4104 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4104 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$178 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$178 end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 local.get $0 - i32.load - call $~lib/rt/itcms/__visit + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - return end - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - i32.const 34928 - i32.const 34976 + i32.const 36896 + i32.const 36944 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~start - call $start:call-rest - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 40 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2136 + i32.const 4104 i32.lt_s if - i32.const 34928 - i32.const 34976 + i32.const 36896 + i32.const 36944 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1811,16 +2001,83 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.const 40 + memory.fill global.get $~lib/memory/__stack_pointer local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -1828,11 +2085,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2136 + i32.const 4104 i32.lt_s if - i32.const 34928 - i32.const 34976 + i32.const 36896 + i32.const 36944 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1849,8 +2106,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1056 - i32.const 1120 + i32.const 1344 + i32.const 3424 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -1879,11 +2136,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2136 + i32.const 4104 i32.lt_s if - i32.const 34928 - i32.const 34976 + i32.const 36896 + i32.const 36944 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1935,11 +2192,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2136 + i32.const 4104 i32.lt_s if - i32.const 34928 - i32.const 34976 + i32.const 36896 + i32.const 36944 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1965,7 +2222,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 5 - i32.const 1168 + i32.const 3472 call $~lib/rt/__newArray local.tee $2 i32.store @@ -1990,11 +2247,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2136 + i32.const 4104 i32.lt_s if - i32.const 34928 - i32.const 34976 + i32.const 36896 + i32.const 36944 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2018,8 +2275,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1744 - i32.const 1120 + i32.const 3712 + i32.const 3424 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -2028,7 +2285,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $__inlined_func$~lib/rt/itcms/__renew$154 + block $__inlined_func$~lib/rt/itcms/__renew$157 i32.const 1073741820 local.get $2 i32.const 1 @@ -2071,7 +2328,7 @@ i32.store offset=16 local.get $2 local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew$154 + br $__inlined_func$~lib/rt/itcms/__renew$157 end local.get $3 local.get $4 @@ -2119,11 +2376,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2136 + i32.const 4104 i32.lt_s if - i32.const 34928 - i32.const 34976 + i32.const 36896 + i32.const 36944 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2144,8 +2401,8 @@ i32.const 0 i32.lt_s if - i32.const 1056 - i32.const 1120 + i32.const 1344 + i32.const 3424 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -2193,7 +2450,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2136 + i32.const 4104 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2277,7 +2534,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2136 + i32.const 4104 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2329,8 +2586,8 @@ local.get $2 return end - i32.const 34928 - i32.const 34976 + i32.const 36896 + i32.const 36944 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2343,11 +2600,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2136 + i32.const 4104 i32.lt_s if - i32.const 34928 - i32.const 34976 + i32.const 36896 + i32.const 36944 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2376,7 +2633,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 5 - i32.const 1792 + i32.const 3760 call $~lib/rt/__newArray local.tee $1 i32.store @@ -2405,11 +2662,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2136 + i32.const 4104 i32.lt_s if - i32.const 34928 - i32.const 34976 + i32.const 36896 + i32.const 36944 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2467,11 +2724,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2136 + i32.const 4104 i32.lt_s if - i32.const 34928 - i32.const 34976 + i32.const 36896 + i32.const 36944 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2498,7 +2755,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2136 + i32.const 4104 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2507,34 +2764,34 @@ memory.size i32.const 16 i32.shl - i32.const 34904 + i32.const 36872 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1316 - i32.const 1312 + i32.const 1268 + i32.const 1264 i32.store - i32.const 1320 - i32.const 1312 + i32.const 1272 + i32.const 1264 i32.store - i32.const 1312 + i32.const 1264 global.set $~lib/rt/itcms/pinSpace - i32.const 1348 - i32.const 1344 + i32.const 1300 + i32.const 1296 i32.store - i32.const 1352 - i32.const 1344 + i32.const 1304 + i32.const 1296 i32.store - i32.const 1344 + i32.const 1296 global.set $~lib/rt/itcms/toSpace - i32.const 1428 - i32.const 1424 + i32.const 1444 + i32.const 1440 i32.store - i32.const 1432 - i32.const 1424 + i32.const 1448 + i32.const 1440 i32.store - i32.const 1424 + i32.const 1440 global.set $~lib/rt/itcms/fromSpace i32.const 1 global.set $~argumentsLength @@ -2546,7 +2803,7 @@ i32.ne if i32.const 0 - i32.const 1536 + i32.const 3504 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -2562,7 +2819,7 @@ i32.ne if i32.const 0 - i32.const 1536 + i32.const 3504 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -2570,7 +2827,7 @@ end i32.const 1 i32.const 4 - i32.const 1584 + i32.const 3552 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -2583,7 +2840,7 @@ i32.ne if i32.const 0 - i32.const 1536 + i32.const 3504 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -2591,7 +2848,7 @@ end i32.const 3 i32.const 4 - i32.const 1616 + i32.const 3584 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -2604,7 +2861,7 @@ i32.ne if i32.const 0 - i32.const 1536 + i32.const 3504 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -2615,14 +2872,14 @@ i32.const 1 i32.const 0 i32.const 0 - i32.const 1648 + i32.const 3616 i32.load - call_indirect (type $0) + call_indirect (type $1) i32.const 1 i32.ne if i32.const 0 - i32.const 1536 + i32.const 3504 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -2633,14 +2890,14 @@ i32.const 1 i32.const 2 i32.const 0 - i32.const 1648 + i32.const 3616 i32.load - call_indirect (type $0) + call_indirect (type $1) i32.const 3 i32.ne if i32.const 0 - i32.const 1536 + i32.const 3504 i32.const 17 i32.const 1 call $~lib/builtins/abort @@ -2648,7 +2905,7 @@ end i32.const 1 i32.const 4 - i32.const 1680 + i32.const 3648 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -2659,14 +2916,14 @@ i32.const 1 i32.const 2 local.get $0 - i32.const 1648 + i32.const 3616 i32.load - call_indirect (type $0) + call_indirect (type $1) i32.const 6 i32.ne if i32.const 0 - i32.const 1536 + i32.const 3504 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -2674,7 +2931,7 @@ end i32.const 3 i32.const 4 - i32.const 1712 + i32.const 3680 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -2685,14 +2942,14 @@ i32.const 1 i32.const 2 local.get $0 - i32.const 1648 + i32.const 3616 i32.load - call_indirect (type $0) + call_indirect (type $1) i32.const 15 i32.ne if i32.const 0 - i32.const 1536 + i32.const 3504 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -2712,7 +2969,7 @@ i32.ne if i32.const 0 - i32.const 1536 + i32.const 3504 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -2732,7 +2989,7 @@ i32.ne if i32.const 0 - i32.const 1536 + i32.const 3504 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -2740,7 +2997,7 @@ end i32.const 1 i32.const 4 - i32.const 1824 + i32.const 3792 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -2759,7 +3016,7 @@ i32.ne if i32.const 0 - i32.const 1536 + i32.const 3504 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -2767,7 +3024,7 @@ end i32.const 3 i32.const 4 - i32.const 1856 + i32.const 3824 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -2786,7 +3043,7 @@ i32.ne if i32.const 0 - i32.const 1536 + i32.const 3504 i32.const 43 i32.const 1 call $~lib/builtins/abort @@ -2799,7 +3056,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2136 + i32.const 4104 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2808,7 +3065,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 5 - i32.const 1888 + i32.const 3856 call $~lib/rt/__newArray local.tee $0 i32.store @@ -2823,7 +3080,7 @@ global.set $~lib/memory/__stack_pointer if i32.const 0 - i32.const 1536 + i32.const 3504 i32.const 49 i32.const 1 call $~lib/builtins/abort @@ -2831,7 +3088,7 @@ end i32.const 1 i32.const 4 - i32.const 1920 + i32.const 3888 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -2843,7 +3100,7 @@ i32.ne if i32.const 0 - i32.const 1536 + i32.const 3504 i32.const 50 i32.const 1 call $~lib/builtins/abort @@ -2851,7 +3108,7 @@ end i32.const 3 i32.const 4 - i32.const 1952 + i32.const 3920 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -2863,7 +3120,7 @@ i32.ne if i32.const 0 - i32.const 1536 + i32.const 3504 i32.const 51 i32.const 1 call $~lib/builtins/abort @@ -2871,7 +3128,7 @@ end i32.const 3 i32.const 8 - i32.const 2080 + i32.const 4048 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -2883,7 +3140,7 @@ i32.ne if i32.const 0 - i32.const 1536 + i32.const 3504 i32.const 54 i32.const 1 call $~lib/builtins/abort @@ -2895,8 +3152,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34928 - i32.const 34976 + i32.const 36896 + i32.const 36944 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2911,11 +3168,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2136 + i32.const 4104 i32.lt_s if - i32.const 34928 - i32.const 34976 + i32.const 36896 + i32.const 36944 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2965,4 +3222,169 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/array/Array~visit (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4104 + i32.lt_s + if + i32.const 36896 + i32.const 36944 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner0 + block $invalid + block $~lib/array/Array<~lib/string/String> + block $call-rest/Foo + block $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> $call-rest/Foo $~lib/array/Array<~lib/string/String> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4104 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4104 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + end + i32.const 36896 + i32.const 36944 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) ) diff --git a/tests/compiler/call-super.debug.wat b/tests/compiler/call-super.debug.wat index 6ff707d75c..1030d618b2 100644 --- a/tests/compiler/call-super.debug.wat +++ b/tests/compiler/call-super.debug.wat @@ -5,10 +5,15 @@ (type $3 (func (param i32))) (type $4 (func (param i32 i32) (result i32))) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (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)) @@ -17,27 +22,36 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 464)) - (global $~lib/memory/__data_end i32 (i32.const 524)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33292)) - (global $~lib/memory/__heap_base i32 (i32.const 33292)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2492)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35260)) + (global $~lib/memory/__heap_base i32 (i32.const 35260)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s\00\00\00") - (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 464) "\0e\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s\00\00\00") + (data $20 (i32.const 2432) "\0e\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -46,6 +60,19 @@ local.get $this i32.load ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -110,7 +137,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -180,7 +207,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -197,7 +224,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -227,8 +254,8 @@ i32.load i32.gt_u if - i32.const 272 - i32.const 336 + i32.const 320 + i32.const 384 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -296,7 +323,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 144 + i32.const 192 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -448,7 +475,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -468,7 +495,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -531,7 +558,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -684,7 +711,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -701,7 +728,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -790,7 +817,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -833,7 +860,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -851,7 +878,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -919,7 +946,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1036,7 +1063,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1082,7 +1109,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1114,7 +1141,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1358,7 +1385,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1578,7 +1605,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1686,8 +1713,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 80 - i32.const 416 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1789,7 +1816,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1860,7 +1887,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2017,7 +2044,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2132,7 +2159,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2152,7 +2179,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2200,8 +2227,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 80 - i32.const 144 + i32.const 128 + i32.const 192 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2246,6 +2273,422 @@ local.get $ptr return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $call-super/A#set:a (param $this i32) (param $a i32) local.get $this local.get $a @@ -2341,13 +2784,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 192 + i32.const 240 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 224 + i32.const 272 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 368 + i32.const 416 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace call $call-super/test1 @@ -2356,97 +2799,226 @@ call $call-super/test4 call $call-super/test5 ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 272 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 80 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + (func $~start + call $start:call-super ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35280 + i32.const 35328 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $call-super/I - block $call-super/J - block $call-super/G - block $call-super/H - block $call-super/E - block $call-super/F - block $call-super/C - block $call-super/D - block $call-super/A - block $call-super/B - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $call-super/B $call-super/A $call-super/D $call-super/C $call-super/F $call-super/E $call-super/H $call-super/G $call-super/J $call-super/I $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - unreachable + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~start - call $start:call-super + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33312 - i32.const 33360 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $call-super/A#constructor (param $this i32) (result i32) (local $1 i32) @@ -2488,7 +3060,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -2552,7 +3124,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -2570,7 +3142,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -2612,7 +3184,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 22 i32.const 3 call $~lib/builtins/abort @@ -2630,7 +3202,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 23 i32.const 3 call $~lib/builtins/abort @@ -2737,7 +3309,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 38 i32.const 5 call $~lib/builtins/abort @@ -2755,7 +3327,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -2797,7 +3369,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -2815,7 +3387,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -2866,7 +3438,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 56 i32.const 5 call $~lib/builtins/abort @@ -2954,7 +3526,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 66 i32.const 3 call $~lib/builtins/abort @@ -2972,7 +3544,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -3103,7 +3675,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -3121,7 +3693,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 85 i32.const 3 call $~lib/builtins/abort @@ -3242,7 +3814,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -3260,7 +3832,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 105 i32.const 3 call $~lib/builtins/abort @@ -3271,6 +3843,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -3299,4 +4018,86 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $call-super/I + block $call-super/J + block $call-super/G + block $call-super/H + block $call-super/E + block $call-super/F + block $call-super/C + block $call-super/D + block $call-super/A + block $call-super/B + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $call-super/B $call-super/A $call-super/D $call-super/C $call-super/F $call-super/E $call-super/H $call-super/G $call-super/J $call-super/I $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/call-super.release.wat b/tests/compiler/call-super.release.wat index efaaeb7079..2136ae83d5 100644 --- a/tests/compiler/call-super.release.wat +++ b/tests/compiler/call-super.release.wat @@ -1,13 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (type $7 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,29 +17,54 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34316)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36284)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s") - (data $1 (i32.const 1084) "<") - (data $1.1 (i32.const 1096) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $2 (i32.const 1148) "<") - (data $2.1 (i32.const 1160) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $5 (i32.const 1276) "<") - (data $5.1 (i32.const 1288) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $6 (i32.const 1340) ",") - (data $6.1 (i32.const 1352) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $8 (i32.const 1420) "<") - (data $8.1 (i32.const 1432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $9 (i32.const 1488) "\0e\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s") + (data $20 (i32.const 3456) "\0e\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1296 + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 call $~lib/rt/itcms/__visit - i32.const 1104 + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -61,7 +85,7 @@ i32.ne if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -109,7 +133,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -118,7 +142,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$158 + block $__inlined_func$~lib/rt/itcms/Object#unlink$171 local.get $1 i32.load offset=4 i32.const -4 @@ -130,19 +154,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34316 + i32.const 36284 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$158 + br $__inlined_func$~lib/rt/itcms/Object#unlink$171 end local.get $1 i32.load offset=8 @@ -150,7 +174,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -179,12 +203,12 @@ i32.const 1 else local.get $0 - i32.const 1488 + i32.const 3456 i32.load i32.gt_u if - i32.const 1296 - i32.const 1360 + i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -193,7 +217,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1492 + i32.const 3460 i32.add i32.load i32.const 32 @@ -245,7 +269,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -259,7 +283,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -305,7 +329,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -388,7 +412,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -402,7 +426,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -463,7 +487,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -496,7 +520,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -511,7 +535,7 @@ i32.ne if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -562,7 +586,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -634,7 +658,7 @@ i64.lt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -659,7 +683,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -686,7 +710,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -758,10 +782,10 @@ if unreachable end - i32.const 34320 + i32.const 36288 i32.const 0 i32.store - i32.const 35888 + i32.const 37856 i32.const 0 i32.store loop $for-loop|0 @@ -772,7 +796,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34320 + i32.const 36288 i32.add i32.const 0 i32.store offset=4 @@ -790,7 +814,7 @@ i32.add i32.const 2 i32.shl - i32.const 34320 + i32.const 36288 i32.add i32.const 0 i32.store offset=96 @@ -808,14 +832,14 @@ br $for-loop|0 end end - i32.const 34320 - i32.const 35892 + i32.const 36288 + i32.const 37860 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34320 + i32.const 36288 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -900,7 +924,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34316 + i32.const 36284 i32.lt_u if local.get $0 @@ -989,14 +1013,14 @@ i32.ne if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34316 + i32.const 36284 i32.lt_u if local.get $0 @@ -1019,7 +1043,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34316 + i32.const 36284 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1048,7 +1072,7 @@ end if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1132,7 +1156,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1184,7 +1208,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1216,8 +1240,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1104 - i32.const 1168 + i32.const 1152 + i32.const 1216 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1227,7 +1251,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1248,7 +1272,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end local.get $2 i32.const 0 @@ -1281,8 +1305,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1104 - i32.const 1440 + i32.const 1152 + i32.const 1488 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1384,7 +1408,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1399,7 +1423,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1418,7 +1442,7 @@ i32.and if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1523,6 +1547,204 @@ memory.fill local.get $1 ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3516 + i32.lt_s + if + i32.const 36304 + i32.const 36352 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $start:call-super (local $0 i32) (local $1 i32) @@ -1530,34 +1752,34 @@ memory.size i32.const 16 i32.shl - i32.const 34316 + i32.const 36284 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 + i32.const 1268 + i32.const 1264 i32.store - i32.const 1224 - i32.const 1216 + i32.const 1272 + i32.const 1264 i32.store - i32.const 1216 + i32.const 1264 global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 + i32.const 1300 + i32.const 1296 i32.store - i32.const 1256 - i32.const 1248 + i32.const 1304 + i32.const 1296 i32.store - i32.const 1248 + i32.const 1296 global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 + i32.const 1444 + i32.const 1440 i32.store - i32.const 1400 - i32.const 1392 + i32.const 1448 + i32.const 1440 i32.store - i32.const 1392 + i32.const 1440 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 8 @@ -1565,7 +1787,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1548 + i32.const 3516 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1577,7 +1799,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1548 + i32.const 3516 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1604,7 +1826,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1548 + i32.const 3516 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1635,7 +1857,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -1656,7 +1878,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -1671,7 +1893,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -1692,7 +1914,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 22 i32.const 3 call $~lib/builtins/abort @@ -1707,7 +1929,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 23 i32.const 3 call $~lib/builtins/abort @@ -1722,7 +1944,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1548 + i32.const 3516 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1734,7 +1956,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1548 + i32.const 3516 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1761,7 +1983,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1548 + i32.const 3516 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1806,7 +2028,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 38 i32.const 5 call $~lib/builtins/abort @@ -1821,7 +2043,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -1842,7 +2064,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -1857,7 +2079,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -1872,7 +2094,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1548 + i32.const 3516 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1884,7 +2106,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1548 + i32.const 3516 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1905,7 +2127,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1548 + i32.const 3516 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1936,7 +2158,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 56 i32.const 5 call $~lib/builtins/abort @@ -1969,7 +2191,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 66 i32.const 3 call $~lib/builtins/abort @@ -1984,7 +2206,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -1999,7 +2221,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1548 + i32.const 3516 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2011,7 +2233,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1548 + i32.const 3516 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2032,7 +2254,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1548 + i32.const 3516 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2089,7 +2311,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -2104,7 +2326,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 85 i32.const 3 call $~lib/builtins/abort @@ -2119,7 +2341,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1548 + i32.const 3516 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2131,7 +2353,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1548 + i32.const 3516 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2152,7 +2374,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1548 + i32.const 3516 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2201,7 +2423,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -2216,7 +2438,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 105 i32.const 3 call $~lib/builtins/abort @@ -2228,13 +2450,251 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34336 - i32.const 34384 + i32.const 36304 + i32.const 36352 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~start + call $start:call-super + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3516 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3516 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$181 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$181 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3516 + i32.lt_s + if + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3516 + i32.lt_s + if + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid block $call-super/I @@ -2290,42 +2750,4 @@ end unreachable ) - (func $~start - call $start:call-super - ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1548 - i32.lt_s - if - i32.const 34336 - i32.const 34384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) ) diff --git a/tests/compiler/class-extends.debug.wat b/tests/compiler/class-extends.debug.wat index db6c27269e..edb671c7d8 100644 --- a/tests/compiler/class-extends.debug.wat +++ b/tests/compiler/class-extends.debug.wat @@ -2,12 +2,34 @@ (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) (type $2 (func (param i32))) - (type $3 (func (param i32 i32 i32 i32))) - (type $4 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $~lib/memory/__data_end i32 (i32.const 8)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (memory $0 0) (table $0 1 1 funcref) (elem $0 (i32.const 1)) @@ -31,13 +53,2642 @@ local.get $b i32.store16 offset=4 ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 33136 + i32.const 33200 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 33008 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32944 + i32.const 33280 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32944 + i32.const 33008 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 33580 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 33580 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 33580 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 33580 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 34000 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 34000 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 35056 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 35056 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~stack_check global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__data_end i32.lt_s if i32.const 32800 - i32.const 32848 + i32.const 35216 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -91,6 +2742,358 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 32912 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32848 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 32880 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 33344 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 33344 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 35152 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 33376 + i32.const 33504 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 33568 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $export:class-extends/test (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -107,4 +3110,62 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 33136 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32944 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 34000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 35056 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $class-extends/A + block $class-extends/B + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-extends/B $class-extends/A $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/class-extends.release.wat b/tests/compiler/class-extends.release.wat index 5ff350f382..6844ba942d 100644 --- a/tests/compiler/class-extends.release.wat +++ b/tests/compiler/class-extends.release.wat @@ -1,11 +1,1884 @@ (module - (type $0 (func (param i32 i32 i32 i32))) - (type $1 (func (param i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32))) + (type $1 (func)) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33792)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (memory $0 0) (export "memory" (memory $0)) (export "test" (func $export:class-extends/test)) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 34160 + call $~lib/rt/itcms/__visit + i32.const 33968 + call $~lib/rt/itcms/__visit + i32.const 35024 + call $~lib/rt/itcms/__visit + i32.const 36080 + call $~lib/rt/itcms/__visit + i32.const 4 + i32.load + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 34032 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + 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 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 34032 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$121 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 33792 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34032 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$121 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 34032 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.load + i32.gt_u + if + i32.const 34160 + i32.const 34224 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.load offset=4 + i32.const 32 + i32.and + end + local.set $1 + i32.const 8 + i32.load + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $1 + select + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + i32.const 8 + local.get $0 + i32.store + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 34304 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 34304 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 34304 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 34304 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 34304 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 34304 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 33792 + i32.const 0 + i32.store + i32.const 35360 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 33792 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 33792 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 33792 + i32.const 35364 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 33792 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + i32.const 0 + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 33792 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + local.get $1 + global.set $~lib/rt/itcms/white + i32.const 4 + i32.load + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + 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 34032 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 33792 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 33792 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 34304 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + i32.const 4 + i32.const 0 + i32.store + i32.const 8 + i32.const 0 + i32.store + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 33968 + i32.const 34032 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$68 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 33968 + i32.const 34304 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 34304 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 34304 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + i32.const 8 + i32.load + local.set $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + i32.const 8 + local.get $1 + i32.store + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 1024 + i32.lt_s + if + i32.const 33824 + i32.const 36240 + 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$72 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 34592 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$72 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$126 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 33936 + local.set $0 + br $__inlined_func$~lib/string/String#concat$126 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 33824 + i32.const 36240 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 33824 + i32.const 36240 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 33872 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 33904 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 34368 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 34368 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 36176 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $export:class-extends/test (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -65,10 +1938,41 @@ return end i32.const 33824 - i32.const 33872 + i32.const 36240 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-extends/A + block $class-extends/B + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-extends/B $class-extends/A $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/class-implements.debug.wat b/tests/compiler/class-implements.debug.wat index bf0b70087e..0725918430 100644 --- a/tests/compiler/class-implements.debug.wat +++ b/tests/compiler/class-implements.debug.wat @@ -1,14 +1,20 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,9 +23,6 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) @@ -30,25 +33,465 @@ (global $class-implements/f (mut i32) (i32.const 0)) (global $class-implements/g (mut i32) (i32.const 0)) (global $class-implements/h (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 480)) - (global $~lib/memory/__data_end i32 (i32.const 568)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33336)) - (global $~lib/memory/__heap_base i32 (i32.const 33336)) + (global $~lib/rt/__rtti_base i32 (i32.const 2448)) + (global $~lib/memory/__data_end i32 (i32.const 2536)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35304)) + (global $~lib/memory/__heap_base i32 (i32.const 35304)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00c\00l\00a\00s\00s\00-\00i\00m\00p\00l\00e\00m\00e\00n\00t\00s\00.\00t\00s\00\00\00\00\00\00\00") - (data $9 (i32.const 480) "\15\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00c\00l\00a\00s\00s\00-\00i\00m\00p\00l\00e\00m\00e\00n\00t\00s\00.\00t\00s\00\00\00\00\00\00\00") + (data $20 (i32.const 2448) "\15\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -113,7 +556,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -183,7 +626,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -200,7 +643,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -230,8 +673,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -299,7 +742,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -451,7 +894,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -471,7 +914,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -534,7 +977,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -687,7 +1130,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -704,7 +1147,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -793,7 +1236,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -836,7 +1279,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -854,7 +1297,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -922,7 +1365,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1039,7 +1482,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1085,7 +1528,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1117,7 +1560,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1361,7 +1804,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1581,7 +2024,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1689,8 +2132,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1792,7 +2235,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1863,7 +2306,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2020,7 +2463,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2135,7 +2578,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2155,7 +2598,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2203,8 +2646,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2633,167 +3076,226 @@ local.get $0 call $class-implements/B2#get:foo ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $class-implements/a - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-implements/c - local.tee $1 + (func $~start + call $start:class-implements + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 35328 + i32.const 35376 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $class-implements/d - local.tee $1 + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-implements/e - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-implements/f - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-implements/g - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-implements/h - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $class-implements/B4 - block $class-implements/B3 - block $class-implements/B2 - block $class-implements/A4 - block $class-implements/A3 - block $class-implements/I2 - block $class-implements/A2 - block $class-implements/K - block $class-implements/G - block $class-implements/F - block $class-implements/E - block $class-implements/J - block $class-implements/D - block $class-implements/B - block $class-implements/C - block $class-implements/I - block $class-implements/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-implements/A $class-implements/I $class-implements/C $class-implements/B $class-implements/D $class-implements/J $class-implements/E $class-implements/F $class-implements/G $class-implements/K $class-implements/A2 $class-implements/I2 $class-implements/A3 $class-implements/A4 $class-implements/B2 $class-implements/B3 $class-implements/B4 $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - unreachable + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~start - call $start:class-implements + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33360 - i32.const 33408 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $class-implements/A#constructor (param $this i32) (result i32) (local $1 i32) @@ -3437,13 +3939,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -3461,7 +3963,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -3482,7 +3984,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -3503,7 +4005,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -3524,7 +4026,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -3545,7 +4047,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 48 i32.const 1 call $~lib/builtins/abort @@ -3566,7 +4068,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 51 i32.const 1 call $~lib/builtins/abort @@ -3587,7 +4089,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 54 i32.const 1 call $~lib/builtins/abort @@ -3606,7 +4108,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 62 i32.const 1 call $~lib/builtins/abort @@ -3629,7 +4131,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -3647,7 +4149,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -3673,7 +4175,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 100 i32.const 3 call $~lib/builtins/abort @@ -3691,7 +4193,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 101 i32.const 3 call $~lib/builtins/abort @@ -3714,7 +4216,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 105 i32.const 3 call $~lib/builtins/abort @@ -3732,7 +4234,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 106 i32.const 3 call $~lib/builtins/abort @@ -3758,7 +4260,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -3776,7 +4278,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -3799,7 +4301,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 113 i32.const 3 call $~lib/builtins/abort @@ -3817,7 +4319,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -3843,7 +4345,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 116 i32.const 3 call $~lib/builtins/abort @@ -3861,7 +4363,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 117 i32.const 3 call $~lib/builtins/abort @@ -3884,7 +4386,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 121 i32.const 3 call $~lib/builtins/abort @@ -3902,7 +4404,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 122 i32.const 3 call $~lib/builtins/abort @@ -3928,7 +4430,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 124 i32.const 3 call $~lib/builtins/abort @@ -3946,7 +4448,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 125 i32.const 3 call $~lib/builtins/abort @@ -3969,7 +4471,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 129 i32.const 3 call $~lib/builtins/abort @@ -3987,7 +4489,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 130 i32.const 3 call $~lib/builtins/abort @@ -4013,7 +4515,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 132 i32.const 3 call $~lib/builtins/abort @@ -4031,7 +4533,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 133 i32.const 3 call $~lib/builtins/abort @@ -4054,7 +4556,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 137 i32.const 3 call $~lib/builtins/abort @@ -4072,7 +4574,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 138 i32.const 3 call $~lib/builtins/abort @@ -4098,7 +4600,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 140 i32.const 3 call $~lib/builtins/abort @@ -4116,7 +4618,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 141 i32.const 3 call $~lib/builtins/abort @@ -4196,6 +4698,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -4224,4 +4873,156 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $class-implements/a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/c + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/d + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/e + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/f + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/g + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/h + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $class-implements/B4 + block $class-implements/B3 + block $class-implements/B2 + block $class-implements/A4 + block $class-implements/A3 + block $class-implements/I2 + block $class-implements/A2 + block $class-implements/K + block $class-implements/G + block $class-implements/F + block $class-implements/E + block $class-implements/J + block $class-implements/D + block $class-implements/B + block $class-implements/C + block $class-implements/I + block $class-implements/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-implements/A $class-implements/I $class-implements/C $class-implements/B $class-implements/D $class-implements/J $class-implements/E $class-implements/F $class-implements/G $class-implements/K $class-implements/A2 $class-implements/I2 $class-implements/A3 $class-implements/A4 $class-implements/B2 $class-implements/B3 $class-implements/B4 $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/class-implements.release.wat b/tests/compiler/class-implements.release.wat index 5d0ad2a21e..1bb0cfda04 100644 --- a/tests/compiler/class-implements.release.wat +++ b/tests/compiler/class-implements.release.wat @@ -2,12 +2,11 @@ (type $0 (func (param i32) (result i32))) (type $1 (func)) (type $2 (func (param i32 i32))) - (type $3 (func (param i32))) - (type $4 (func (result i32))) - (type $5 (func (param i32 i32) (result i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -25,23 +24,242 @@ (global $class-implements/f (mut i32) (i32.const 0)) (global $class-implements/g (mut i32) (i32.const 0)) (global $class-implements/h (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34360)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36328)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) "<") - (data $8.1 (i32.const 1448) "\02\00\00\00&\00\00\00c\00l\00a\00s\00s\00-\00i\00m\00p\00l\00e\00m\00e\00n\00t\00s\00.\00t\00s") - (data $9 (i32.const 1504) "\15\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "<") + (data $19.1 (i32.const 3416) "\02\00\00\00&\00\00\00c\00l\00a\00s\00s\00-\00i\00m\00p\00l\00e\00m\00e\00n\00t\00s\00.\00t\00s") + (data $20 (i32.const 3472) "\15\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3560 + i32.lt_s + if + i32.const 36352 + i32.const 36400 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -87,9 +305,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -110,7 +332,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -158,7 +380,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -167,7 +389,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$174 + block $__inlined_func$~lib/rt/itcms/Object#unlink$187 local.get $1 i32.load offset=4 i32.const -4 @@ -179,19 +401,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34360 + i32.const 36328 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$174 + br $__inlined_func$~lib/rt/itcms/Object#unlink$187 end local.get $1 i32.load offset=8 @@ -199,7 +421,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -228,12 +450,12 @@ i32.const 1 else local.get $0 - i32.const 1504 + i32.const 3472 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -242,7 +464,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1508 + i32.const 3476 i32.add i32.load i32.const 32 @@ -294,7 +516,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -308,7 +530,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -354,7 +576,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -437,7 +659,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -451,7 +673,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -512,7 +734,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -545,7 +767,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -560,7 +782,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -611,7 +833,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -683,7 +905,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -708,7 +930,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -735,7 +957,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -807,10 +1029,10 @@ if unreachable end - i32.const 34368 + i32.const 36336 i32.const 0 i32.store - i32.const 35936 + i32.const 37904 i32.const 0 i32.store loop $for-loop|0 @@ -821,7 +1043,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34368 + i32.const 36336 i32.add i32.const 0 i32.store offset=4 @@ -839,7 +1061,7 @@ i32.add i32.const 2 i32.shl - i32.const 34368 + i32.const 36336 i32.add i32.const 0 i32.store offset=96 @@ -857,14 +1079,14 @@ br $for-loop|0 end end - i32.const 34368 - i32.const 35940 + i32.const 36336 + i32.const 37908 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34368 + i32.const 36336 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -949,7 +1171,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34360 + i32.const 36328 i32.lt_u if local.get $0 @@ -1038,14 +1260,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34360 + i32.const 36328 i32.lt_u if local.get $0 @@ -1068,7 +1290,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34360 + i32.const 36328 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1097,7 +1319,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1181,7 +1403,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1233,7 +1455,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1265,8 +1487,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1056 - i32.const 1120 + i32.const 3024 + i32.const 3088 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1276,7 +1498,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1297,7 +1519,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1330,8 +1552,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1056 - i32.const 1392 + i32.const 3024 + i32.const 3360 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1433,7 +1655,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1448,7 +1670,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1467,7 +1689,7 @@ i32.and if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1643,11 +1865,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1592 + i32.const 3560 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1703,84 +1925,208 @@ local.get $0 call $class-implements/B2#get:foo ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $class-implements/B4 - block $class-implements/B3 - block $class-implements/B2 - block $class-implements/A4 - block $class-implements/A3 - block $class-implements/I2 - block $class-implements/A2 - block $class-implements/K - block $class-implements/G - block $class-implements/F - block $class-implements/E - block $class-implements/J - block $class-implements/D - block $class-implements/B - block $class-implements/C - block $class-implements/I - block $class-implements/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-implements/A $class-implements/I $class-implements/C $class-implements/B $class-implements/D $class-implements/J $class-implements/E $class-implements/F $class-implements/G $class-implements/K $class-implements/A2 $class-implements/I2 $class-implements/A3 $class-implements/A4 $class-implements/B2 $class-implements/B3 $class-implements/B4 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return + (func $~start + call $start:class-implements + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3560 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3560 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$192 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$192 end - return + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 return end + i32.const 36352 + i32.const 36400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) - (func $~start - call $start:class-implements + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3560 + i32.lt_s + if + i32.const 36352 + i32.const 36400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $class-implements/D#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -1788,11 +2134,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1592 + i32.const 3560 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1832,11 +2178,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1592 + i32.const 3560 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1871,11 +2217,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1592 + i32.const 3560 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1920,11 +2266,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1592 + i32.const 3560 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1969,11 +2315,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1592 + i32.const 3560 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1998,11 +2344,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1592 + i32.const 3560 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2030,7 +2376,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1592 + i32.const 3560 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2040,41 +2386,41 @@ memory.size i32.const 16 i32.shl - i32.const 34360 + i32.const 36328 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 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 1592 + i32.const 3560 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2108,7 +2454,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1592 + i32.const 3560 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2129,7 +2475,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1592 + i32.const 3560 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2171,7 +2517,7 @@ i32.const 0 call $class-implements/D#constructor global.set $class-implements/d - block $__inlined_func$class-implements/D#foo@override$163 (result i32) + block $__inlined_func$class-implements/D#foo@override$175 (result i32) global.get $~lib/memory/__stack_pointer global.get $class-implements/d local.tee $0 @@ -2183,7 +2529,7 @@ i32.load i32.const 11 i32.eq - br_if $__inlined_func$class-implements/D#foo@override$163 + br_if $__inlined_func$class-implements/D#foo@override$175 drop i32.const 3 end @@ -2191,7 +2537,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -2202,7 +2548,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1592 + i32.const 3560 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2228,7 +2574,7 @@ global.set $~lib/memory/__stack_pointer local.get $0 global.set $class-implements/e - block $__inlined_func$class-implements/D#foo@override$165 (result i32) + block $__inlined_func$class-implements/D#foo@override$177 (result i32) global.get $~lib/memory/__stack_pointer global.get $class-implements/e local.tee $0 @@ -2240,7 +2586,7 @@ i32.load i32.const 11 i32.eq - br_if $__inlined_func$class-implements/D#foo@override$165 + br_if $__inlined_func$class-implements/D#foo@override$177 drop i32.const 3 end @@ -2248,7 +2594,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -2261,7 +2607,7 @@ i32.store call $class-implements/F#constructor global.set $class-implements/g - block $__inlined_func$class-implements/D#foo@override$166 (result i32) + block $__inlined_func$class-implements/D#foo@override$178 (result i32) global.get $~lib/memory/__stack_pointer global.get $class-implements/g local.tee $0 @@ -2273,7 +2619,7 @@ i32.load i32.const 11 i32.eq - br_if $__inlined_func$class-implements/D#foo@override$166 + br_if $__inlined_func$class-implements/D#foo@override$178 drop i32.const 3 end @@ -2281,7 +2627,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 51 i32.const 1 call $~lib/builtins/abort @@ -2293,7 +2639,7 @@ global.get $class-implements/h local.tee $0 i32.store - block $__inlined_func$class-implements/I#foo@override$167 + block $__inlined_func$class-implements/I#foo@override$179 block $default12 block $case3 block $case2 @@ -2309,19 +2655,19 @@ end i32.const 4 local.set $0 - br $__inlined_func$class-implements/I#foo@override$167 + br $__inlined_func$class-implements/I#foo@override$179 end i32.const 1 local.set $0 - br $__inlined_func$class-implements/I#foo@override$167 + br $__inlined_func$class-implements/I#foo@override$179 end i32.const 2 local.set $0 - br $__inlined_func$class-implements/I#foo@override$167 + br $__inlined_func$class-implements/I#foo@override$179 end i32.const 3 local.set $0 - br $__inlined_func$class-implements/I#foo@override$167 + br $__inlined_func$class-implements/I#foo@override$179 end unreachable end @@ -2330,7 +2676,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 54 i32.const 1 call $~lib/builtins/abort @@ -2341,7 +2687,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1592 + i32.const 3560 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2368,7 +2714,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $__inlined_func$class-implements/J#foo@override$169 + block $__inlined_func$class-implements/J#foo@override$181 block $default14 block $case315 block $case216 @@ -2386,15 +2732,15 @@ end i32.const 4 local.set $0 - br $__inlined_func$class-implements/J#foo@override$169 + br $__inlined_func$class-implements/J#foo@override$181 end i32.const 3 local.set $0 - br $__inlined_func$class-implements/J#foo@override$169 + br $__inlined_func$class-implements/J#foo@override$181 end i32.const 1 local.set $0 - br $__inlined_func$class-implements/J#foo@override$169 + br $__inlined_func$class-implements/J#foo@override$181 end unreachable end @@ -2403,7 +2749,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 62 i32.const 1 call $~lib/builtins/abort @@ -2423,7 +2769,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -2438,7 +2784,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -2459,7 +2805,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 100 i32.const 3 call $~lib/builtins/abort @@ -2474,7 +2820,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 101 i32.const 3 call $~lib/builtins/abort @@ -2486,7 +2832,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1592 + i32.const 3560 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2527,7 +2873,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 105 i32.const 3 call $~lib/builtins/abort @@ -2542,7 +2888,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 106 i32.const 3 call $~lib/builtins/abort @@ -2563,7 +2909,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -2578,7 +2924,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -2590,7 +2936,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1592 + i32.const 3560 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2631,7 +2977,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 113 i32.const 3 call $~lib/builtins/abort @@ -2646,7 +2992,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -2667,7 +3013,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 116 i32.const 3 call $~lib/builtins/abort @@ -2682,7 +3028,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 117 i32.const 3 call $~lib/builtins/abort @@ -2702,7 +3048,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 121 i32.const 3 call $~lib/builtins/abort @@ -2717,7 +3063,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 122 i32.const 3 call $~lib/builtins/abort @@ -2738,7 +3084,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 124 i32.const 3 call $~lib/builtins/abort @@ -2753,7 +3099,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 125 i32.const 3 call $~lib/builtins/abort @@ -2765,7 +3111,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1592 + i32.const 3560 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2806,7 +3152,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 129 i32.const 3 call $~lib/builtins/abort @@ -2821,7 +3167,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 130 i32.const 3 call $~lib/builtins/abort @@ -2842,7 +3188,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 132 i32.const 3 call $~lib/builtins/abort @@ -2857,7 +3203,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 133 i32.const 3 call $~lib/builtins/abort @@ -2869,7 +3215,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1592 + i32.const 3560 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2910,7 +3256,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 137 i32.const 3 call $~lib/builtins/abort @@ -2925,7 +3271,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 138 i32.const 3 call $~lib/builtins/abort @@ -2946,7 +3292,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 140 i32.const 3 call $~lib/builtins/abort @@ -2961,7 +3307,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 141 i32.const 3 call $~lib/builtins/abort @@ -2973,8 +3319,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2986,11 +3332,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1592 + i32.const 3560 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3016,11 +3362,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1592 + i32.const 3560 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3045,4 +3391,80 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-implements/B4 + block $class-implements/B3 + block $class-implements/B2 + block $class-implements/A4 + block $class-implements/A3 + block $class-implements/I2 + block $class-implements/A2 + block $class-implements/K + block $class-implements/G + block $class-implements/F + block $class-implements/E + block $class-implements/J + block $class-implements/D + block $class-implements/B + block $class-implements/C + block $class-implements/I + block $class-implements/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-implements/A $class-implements/I $class-implements/C $class-implements/B $class-implements/D $class-implements/J $class-implements/E $class-implements/F $class-implements/G $class-implements/K $class-implements/A2 $class-implements/I2 $class-implements/A3 $class-implements/A4 $class-implements/B2 $class-implements/B3 $class-implements/B4 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/class-overloading-cast.debug.wat b/tests/compiler/class-overloading-cast.debug.wat index d3b2c941ba..5994cfb0f4 100644 --- a/tests/compiler/class-overloading-cast.debug.wat +++ b/tests/compiler/class-overloading-cast.debug.wat @@ -4,14 +4,20 @@ (type $2 (func (param i32 i32) (result i32))) (type $3 (func (param i32))) (type $4 (func)) - (type $5 (func (param i32 f64) (result i32))) - (type $6 (func (param i32 i32 i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (type $9 (func (result i32))) - (type $10 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $11 (func (param i32 f32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 f64) (result i32))) + (type $7 (func (param i32 i64 i32))) + (type $8 (func (param i64 i32) (result i32))) + (type $9 (func (param i32 i64 i32 i32))) + (type $10 (func (param i32 i32 i64) (result i32))) + (type $11 (func (result i32))) + (type $12 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $13 (func (param i32 f32) (result i32))) + (type $14 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -20,41 +26,477 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $class-overloading-cast/v (mut i32) (i32.const 0)) (global $class-overloading-cast/v2 (mut i32) (i32.const 0)) (global $class-overloading-cast/v3 (mut i32) (i32.const 0)) - (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $class-overloading-cast/c (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 624)) - (global $~lib/memory/__data_end i32 (i32.const 684)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33452)) - (global $~lib/memory/__heap_base i32 (i32.const 33452)) + (global $~lib/rt/__rtti_base i32 (i32.const 2592)) + (global $~lib/memory/__data_end i32 (i32.const 2652)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35420)) + (global $~lib/memory/__heap_base i32 (i32.const 35420)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00A\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 444) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 476) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00-\00c\00a\00s\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00D\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 624) "\0e\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00A\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2444) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00-\00c\00a\00s\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00D\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2592) "\0e\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "_start" (func $~start)) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -119,7 +561,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -189,7 +631,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -206,7 +648,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -236,8 +678,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -305,7 +747,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -457,7 +899,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -477,7 +919,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -540,7 +982,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -693,7 +1135,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -710,7 +1152,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -799,7 +1241,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -842,7 +1284,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -860,7 +1302,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -928,7 +1370,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1045,7 +1487,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1091,7 +1533,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1123,7 +1565,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1367,7 +1809,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1587,7 +2029,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1695,8 +2137,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1798,7 +2240,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1869,7 +2311,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2026,7 +2468,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2141,7 +2583,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2161,7 +2603,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2209,8 +2651,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2256,20 +2698,7 @@ return ) (func $class-overloading-cast/A#foo (param $this i32) (param $a i32) (result i32) - i32.const 432 - return - ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u + i32.const 2400 return ) (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) @@ -2377,27 +2806,27 @@ return ) (func $"class-overloading-cast/B#foo" (param $this i32) (param $a i32) (result i32) - i32.const 464 + i32.const 2432 return ) (func $class-overloading-cast/A#foo (param $this i32) (param $a f64) (result i32) - i32.const 432 + i32.const 2400 return ) (func $class-overloading-cast/A<~lib/string/String>#foo (param $this i32) (param $a i32) (result i32) - i32.const 432 + i32.const 2400 return ) (func $class-overloading-cast/D#bar (param $this i32) (param $a f32) (result i32) - i32.const 608 + i32.const 2576 return ) (func $"class-overloading-cast/B#foo" (param $this i32) (param $a i32) (result i32) - i32.const 464 + i32.const 2432 return ) (func $"class-overloading-cast/B#foo" (param $this i32) (param $a f64) (result i32) - i32.const 464 + i32.const 2432 return ) (func $class-overloading-cast/A#foo@override (param $0 i32) (param $1 i32) (result i32) @@ -2469,131 +2898,232 @@ local.get $1 call $class-overloading-cast/A<~lib/string/String>#foo ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $class-overloading-cast/v - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-overloading-cast/v2 - local.tee $1 + (func $~start + global.get $~started if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + return end - global.get $class-overloading-cast/v3 - local.tee $1 + i32.const 1 + global.set $~started + call $start:class-overloading-cast + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 35440 + i32.const 35488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $class-overloading-cast/c - local.tee $1 + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $class-overloading-cast/A - block $"class-overloading-cast/B" - block $class-overloading-cast/D - block $class-overloading-cast/A<~lib/string/String> - block $class-overloading-cast/C - block $class-overloading-cast/A - block $"class-overloading-cast/B" - block $"class-overloading-cast/B" - block $class-overloading-cast/A - block $"class-overloading-cast/B" - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"class-overloading-cast/B" $class-overloading-cast/A $"class-overloading-cast/B" $"class-overloading-cast/B" $class-overloading-cast/A $class-overloading-cast/C $class-overloading-cast/A<~lib/string/String> $class-overloading-cast/D $"class-overloading-cast/B" $class-overloading-cast/A $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~start - global.get $~started - if - return - end + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill i32.const 1 - global.set $~started - call $start:class-overloading-cast - ) - (func $~stack_check + drop global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33472 - i32.const 33520 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $class-overloading-cast/A#constructor (param $this i32) (result i32) (local $1 i32) @@ -3089,13 +3619,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -3120,12 +3650,12 @@ local.get $0 i32.store local.get $0 - i32.const 464 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 496 + i32.const 2464 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -3144,12 +3674,12 @@ local.get $0 i32.store local.get $0 - i32.const 464 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 496 + i32.const 2464 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -3168,12 +3698,12 @@ local.get $0 i32.store local.get $0 - i32.const 464 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 496 + i32.const 2464 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -3188,19 +3718,19 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 576 + i32.const 2544 call $class-overloading-cast/A<~lib/string/String>#foo@override local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 432 + i32.const 2400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 496 + i32.const 2464 i32.const 32 i32.const 1 call $~lib/builtins/abort @@ -3212,19 +3742,19 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 576 + i32.const 2544 call $class-overloading-cast/A<~lib/string/String>#foo@override local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 432 + i32.const 2400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 496 + i32.const 2464 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -3244,12 +3774,12 @@ local.get $0 i32.store local.get $0 - i32.const 608 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 496 + i32.const 2464 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -3260,6 +3790,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -3288,4 +3965,114 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $class-overloading-cast/v + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading-cast/v2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading-cast/v3 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading-cast/c + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $class-overloading-cast/A + block $"class-overloading-cast/B" + block $class-overloading-cast/D + block $class-overloading-cast/A<~lib/string/String> + block $class-overloading-cast/C + block $class-overloading-cast/A + block $"class-overloading-cast/B" + block $"class-overloading-cast/B" + block $class-overloading-cast/A + block $"class-overloading-cast/B" + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"class-overloading-cast/B" $class-overloading-cast/A $"class-overloading-cast/B" $"class-overloading-cast/B" $class-overloading-cast/A $class-overloading-cast/C $class-overloading-cast/A<~lib/string/String> $class-overloading-cast/D $"class-overloading-cast/B" $class-overloading-cast/A $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/class-overloading-cast.release.wat b/tests/compiler/class-overloading-cast.release.wat index 855f1b9054..2cd5c6a332 100644 --- a/tests/compiler/class-overloading-cast.release.wat +++ b/tests/compiler/class-overloading-cast.release.wat @@ -1,13 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32) (result i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -22,32 +21,251 @@ (global $class-overloading-cast/v2 (mut i32) (i32.const 0)) (global $class-overloading-cast/v3 (mut i32) (i32.const 0)) (global $class-overloading-cast/c (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34476)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36444)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) "\1c") - (data $8.1 (i32.const 1448) "\02\00\00\00\02\00\00\00A") - (data $9 (i32.const 1468) "\1c") - (data $9.1 (i32.const 1480) "\02\00\00\00\02\00\00\00B") - (data $10 (i32.const 1500) "L") - (data $10.1 (i32.const 1512) "\02\00\00\002\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00-\00c\00a\00s\00t\00.\00t\00s") - (data $11 (i32.const 1580) "\1c") - (data $11.1 (i32.const 1592) "\02\00\00\00\02\00\00\00a") - (data $12 (i32.const 1612) "\1c") - (data $12.1 (i32.const 1624) "\02\00\00\00\02\00\00\00D") - (data $13 (i32.const 1648) "\0e\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "\1c") + (data $19.1 (i32.const 3416) "\02\00\00\00\02\00\00\00A") + (data $20 (i32.const 3436) "\1c") + (data $20.1 (i32.const 3448) "\02\00\00\00\02\00\00\00B") + (data $21 (i32.const 3468) "L") + (data $21.1 (i32.const 3480) "\02\00\00\002\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00-\00c\00a\00s\00t\00.\00t\00s") + (data $22 (i32.const 3548) "\1c") + (data $22.1 (i32.const 3560) "\02\00\00\00\02\00\00\00a") + (data $23 (i32.const 3580) "\1c") + (data $23.1 (i32.const 3592) "\02\00\00\00\02\00\00\00D") + (data $24 (i32.const 3616) "\0e\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (export "_start" (func $~start)) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3676 + i32.lt_s + if + i32.const 36464 + i32.const 36512 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -75,9 +293,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -98,7 +320,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -146,7 +368,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -155,7 +377,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$141 + block $__inlined_func$~lib/rt/itcms/Object#unlink$153 local.get $1 i32.load offset=4 i32.const -4 @@ -167,19 +389,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34476 + i32.const 36444 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$141 + br $__inlined_func$~lib/rt/itcms/Object#unlink$153 end local.get $1 i32.load offset=8 @@ -187,7 +409,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -216,12 +438,12 @@ i32.const 1 else local.get $0 - i32.const 1648 + i32.const 3616 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -230,7 +452,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1652 + i32.const 3620 i32.add i32.load i32.const 32 @@ -282,7 +504,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -296,7 +518,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -342,7 +564,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -425,7 +647,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -439,7 +661,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -500,7 +722,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -533,7 +755,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -548,7 +770,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -599,7 +821,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -671,7 +893,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -696,7 +918,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -723,7 +945,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -795,10 +1017,10 @@ if unreachable end - i32.const 34480 + i32.const 36448 i32.const 0 i32.store - i32.const 36048 + i32.const 38016 i32.const 0 i32.store loop $for-loop|0 @@ -809,7 +1031,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34480 + i32.const 36448 i32.add i32.const 0 i32.store offset=4 @@ -827,7 +1049,7 @@ i32.add i32.const 2 i32.shl - i32.const 34480 + i32.const 36448 i32.add i32.const 0 i32.store offset=96 @@ -845,14 +1067,14 @@ br $for-loop|0 end end - i32.const 34480 - i32.const 36052 + i32.const 36448 + i32.const 38020 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34480 + i32.const 36448 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -937,7 +1159,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34476 + i32.const 36444 i32.lt_u if local.get $0 @@ -1026,14 +1248,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34476 + i32.const 36444 i32.lt_u if local.get $0 @@ -1056,7 +1278,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34476 + i32.const 36444 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1085,7 +1307,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1115,18 +1337,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1134,32 +1423,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1172,23 +1465,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 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 @@ -1202,9 +1507,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1227,31 +1532,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.const 1073741820 + i32.gt_u if - memory.size - local.tee $1 - i32.const 4 - local.get $2 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1267,8 +1627,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1276,119 +1636,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1396,69 +1773,14 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $class-overloading-cast/A - block $"class-overloading-cast/B" - block $class-overloading-cast/D - block $class-overloading-cast/A<~lib/string/String> - block $class-overloading-cast/C - block $class-overloading-cast/A - block $"class-overloading-cast/B" - block $"class-overloading-cast/B" - block $class-overloading-cast/A - block $"class-overloading-cast/B" - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"class-overloading-cast/B" $class-overloading-cast/A $"class-overloading-cast/B" $"class-overloading-cast/B" $class-overloading-cast/A $class-overloading-cast/C $class-overloading-cast/A<~lib/string/String> $class-overloading-cast/D $"class-overloading-cast/B" $class-overloading-cast/A $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - unreachable + memory.fill + local.get $1 ) (func $~start global.get $~started @@ -1469,17 +1791,217 @@ global.set $~started call $start:class-overloading-cast ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3676 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3676 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$158 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$158 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36464 + i32.const 36512 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3676 + i32.lt_s + if + i32.const 36464 + i32.const 36512 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $class-overloading-cast/A#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1708 + i32.const 3676 i32.lt_s if - i32.const 34496 - i32.const 34544 + i32.const 36464 + i32.const 36512 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1492,6 +2014,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 5 call $~lib/rt/itcms/__new local.tee $0 @@ -1521,11 +2044,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1708 + i32.const 3676 i32.lt_s if - i32.const 34496 - i32.const 34544 + i32.const 36464 + i32.const 36512 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1624,7 +2147,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$87 + block $__inlined_func$~lib/util/string/compareImpl$90 loop $while-continue|1 local.get $0 local.tee $3 @@ -1644,7 +2167,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$87 + br_if $__inlined_func$~lib/util/string/compareImpl$90 local.get $2 i32.const 2 i32.add @@ -1683,7 +2206,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1708 + i32.const 3676 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1692,47 +2215,48 @@ memory.size i32.const 16 i32.shl - i32.const 34476 + i32.const 36444 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 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 1708 + i32.const 3676 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 @@ -1756,13 +2280,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1708 + i32.const 3676 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 6 call $~lib/rt/itcms/__new local.tee $0 @@ -1786,13 +2311,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1708 + i32.const 3676 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 7 call $~lib/rt/itcms/__new local.tee $0 @@ -1806,7 +2332,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1708 + i32.const 3676 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1816,6 +2342,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 8 call $~lib/rt/itcms/__new local.tee $0 @@ -1842,7 +2369,7 @@ local.get $0 global.set $class-overloading-cast/v3 global.get $~lib/memory/__stack_pointer - block $__inlined_func$class-overloading-cast/A#foo@override$136 (result i32) + block $__inlined_func$class-overloading-cast/A#foo@override$147 (result i32) global.get $~lib/memory/__stack_pointer global.get $class-overloading-cast/v local.tee $0 @@ -1863,23 +2390,23 @@ br_if $case1 br $default end - i32.const 1488 - br $__inlined_func$class-overloading-cast/A#foo@override$136 + i32.const 3456 + br $__inlined_func$class-overloading-cast/A#foo@override$147 end - i32.const 1488 - br $__inlined_func$class-overloading-cast/A#foo@override$136 + i32.const 3456 + br $__inlined_func$class-overloading-cast/A#foo@override$147 end - i32.const 1456 + i32.const 3424 end local.tee $0 i32.store local.get $0 - i32.const 1488 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3488 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -1889,46 +2416,46 @@ global.get $class-overloading-cast/v2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 1488 + i32.const 3456 i32.store - i32.const 1488 - i32.const 1488 + i32.const 3456 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3488 i32.const 27 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - block $__inlined_func$class-overloading-cast/A#foo@override$137 (result i32) + block $__inlined_func$class-overloading-cast/A#foo@override$148 (result i32) global.get $~lib/memory/__stack_pointer global.get $class-overloading-cast/v3 local.tee $0 i32.store offset=4 - i32.const 1488 + i32.const 3456 local.get $0 i32.const 8 i32.sub i32.load i32.const 7 i32.eq - br_if $__inlined_func$class-overloading-cast/A#foo@override$137 + br_if $__inlined_func$class-overloading-cast/A#foo@override$148 drop - i32.const 1456 + i32.const 3424 end local.tee $0 i32.store local.get $0 - i32.const 1488 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3488 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -1939,13 +2466,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1708 + i32.const 3676 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 9 call $~lib/rt/itcms/__new local.tee $0 @@ -1959,7 +2487,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1708 + i32.const 3676 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1969,6 +2497,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 10 call $~lib/rt/itcms/__new local.tee $0 @@ -2004,15 +2533,15 @@ i32.load drop global.get $~lib/memory/__stack_pointer - i32.const 1456 + i32.const 3424 i32.store - i32.const 1456 - i32.const 1456 + i32.const 3424 + i32.const 3424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3488 i32.const 32 i32.const 1 call $~lib/builtins/abort @@ -2028,15 +2557,15 @@ i32.load drop global.get $~lib/memory/__stack_pointer - i32.const 1456 + i32.const 3424 i32.store - i32.const 1456 - i32.const 1456 + i32.const 3424 + i32.const 3424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3488 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -2047,13 +2576,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1708 + i32.const 3676 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 11 call $~lib/rt/itcms/__new local.tee $0 @@ -2067,7 +2597,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1708 + i32.const 3676 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2077,6 +2607,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 12 call $~lib/rt/itcms/__new local.tee $0 @@ -2091,7 +2622,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1708 + i32.const 3676 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2101,6 +2632,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 13 call $~lib/rt/itcms/__new local.tee $0 @@ -2134,15 +2666,15 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 1632 + i32.const 3600 i32.store - i32.const 1632 - i32.const 1632 + i32.const 3600 + i32.const 3600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3488 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -2154,8 +2686,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34496 - i32.const 34544 + i32.const 36464 + i32.const 36512 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2167,11 +2699,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1708 + i32.const 3676 i32.lt_s if - i32.const 34496 - i32.const 34544 + i32.const 36464 + i32.const 36512 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2185,6 +2717,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -2195,4 +2728,59 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-overloading-cast/A + block $"class-overloading-cast/B" + block $class-overloading-cast/D + block $class-overloading-cast/A<~lib/string/String> + block $class-overloading-cast/C + block $class-overloading-cast/A + block $"class-overloading-cast/B" + block $"class-overloading-cast/B" + block $class-overloading-cast/A + block $"class-overloading-cast/B" + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"class-overloading-cast/B" $class-overloading-cast/A $"class-overloading-cast/B" $"class-overloading-cast/B" $class-overloading-cast/A $class-overloading-cast/C $class-overloading-cast/A<~lib/string/String> $class-overloading-cast/D $"class-overloading-cast/B" $class-overloading-cast/A $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/class-overloading.debug.wat b/tests/compiler/class-overloading.debug.wat index e922ed5a1d..18d30371c2 100644 --- a/tests/compiler/class-overloading.debug.wat +++ b/tests/compiler/class-overloading.debug.wat @@ -2,15 +2,21 @@ (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (type $9 (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $12 (func (param i32 i32 i32 i32))) (global $class-overloading/which (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -19,46 +25,481 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $class-overloading/a (mut i32) (i32.const 0)) - (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $class-overloading/c (mut i32) (i32.const 0)) (global $class-overloading/ia (mut i32) (i32.const 0)) (global $class-overloading/ic (mut i32) (i32.const 0)) (global $class-overloading/b2 (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 768)) - (global $~lib/memory/__data_end i32 (i32.const 844)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33612)) - (global $~lib/memory/__heap_base i32 (i32.const 33612)) + (global $~lib/rt/__rtti_base i32 (i32.const 2704)) + (global $~lib/memory/__data_end i32 (i32.const 2780)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35548)) + (global $~lib/memory/__heap_base i32 (i32.const 35548)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 444) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00A\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 476) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00\00\00\00\00") - (data $12 (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00C\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00F\00\00\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00I\00B\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00I\00C\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00n\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $17 (i32.const 768) "\12\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00A\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00\00\00\00\00") + (data $22 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00C\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00F\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00I\00B\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00I\00C\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 2636) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00n\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2704) "\12\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "_start" (func $~start)) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -123,7 +564,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -193,7 +634,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -210,7 +651,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -240,8 +681,8 @@ i32.load i32.gt_u if - i32.const 256 - i32.const 320 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -309,7 +750,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 128 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -461,7 +902,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -481,7 +922,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -544,7 +985,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -697,7 +1138,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -714,7 +1155,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -803,7 +1244,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -846,7 +1287,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -864,7 +1305,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -932,7 +1373,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1049,7 +1490,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1095,7 +1536,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1127,7 +1568,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1371,7 +1812,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1591,7 +2032,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1699,8 +2140,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 64 - i32.const 400 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1802,7 +2243,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1873,7 +2314,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2030,7 +2471,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2145,7 +2586,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2165,7 +2606,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2213,8 +2654,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 64 - i32.const 128 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2260,22 +2701,9 @@ return ) (func $class-overloading/A#a (param $this i32) (param $a i32) - i32.const 464 + i32.const 2400 global.set $class-overloading/which ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u - return - ) (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) (local $ptr1 i32) (local $ptr2 i32) @@ -2381,91 +2809,91 @@ return ) (func $class-overloading/A#b (param $this i32) (param $b i32) - i32.const 464 + i32.const 2400 global.set $class-overloading/which ) (func $class-overloading/A#get:c (param $this i32) (result i32) - i32.const 464 + i32.const 2400 global.set $class-overloading/which i32.const 0 return ) (func $class-overloading/A#set:c (param $this i32) (param $c i32) - i32.const 464 + i32.const 2400 global.set $class-overloading/which ) (func $class-overloading/B#a (param $this i32) (param $a i32) - i32.const 496 + i32.const 2432 global.set $class-overloading/which ) (func $class-overloading/C#b (param $this i32) (param $b i32) - i32.const 592 + i32.const 2528 global.set $class-overloading/which ) (func $class-overloading/C#get:c (param $this i32) (result i32) - i32.const 592 + i32.const 2528 global.set $class-overloading/which i32.const 0 return ) (func $class-overloading/C#set:c (param $this i32) (param $c i32) - i32.const 592 + i32.const 2528 global.set $class-overloading/which ) (func $class-overloading/IA#foo (param $this i32) unreachable ) (func $class-overloading/A2#foo (param $this i32) (result i32) - i32.const 720 - i32.const 528 + i32.const 2656 + i32.const 2464 i32.const 198 i32.const 5 call $~lib/builtins/abort unreachable ) (func $class-overloading/F#a (param $this i32) (param $a i32) - i32.const 624 + i32.const 2560 global.set $class-overloading/which ) (func $class-overloading/B#b (param $this i32) (param $b i32) - i32.const 496 + i32.const 2432 global.set $class-overloading/which ) (func $class-overloading/F#b (param $this i32) (param $b i32) - i32.const 624 + i32.const 2560 global.set $class-overloading/which ) (func $class-overloading/B#get:c (param $this i32) (result i32) - i32.const 496 + i32.const 2432 global.set $class-overloading/which i32.const 0 return ) (func $class-overloading/F#get:c (param $this i32) (result i32) - i32.const 624 + i32.const 2560 global.set $class-overloading/which i32.const 0 return ) (func $class-overloading/B#set:c (param $this i32) (param $c i32) - i32.const 496 + i32.const 2432 global.set $class-overloading/which ) (func $class-overloading/F#set:c (param $this i32) (param $c i32) - i32.const 624 + i32.const 2560 global.set $class-overloading/which ) (func $class-overloading/CA#foo (param $this i32) - i32.const 656 + i32.const 2592 global.set $class-overloading/which ) (func $class-overloading/CC#foo (param $this i32) - i32.const 688 + i32.const 2624 global.set $class-overloading/which ) (func $class-overloading/A1#baz (param $this i32) (result i32) - i32.const 720 - i32.const 528 + i32.const 2656 + i32.const 2464 i32.const 186 i32.const 5 call $~lib/builtins/abort @@ -2753,157 +3181,232 @@ local.get $0 call $class-overloading/A1#baz ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $class-overloading/which - local.tee $1 + (func $~start + global.get $~started if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + return end - global.get $class-overloading/a - local.tee $1 + i32.const 1 + global.set $~started + call $start:class-overloading + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 35568 + i32.const 35616 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $class-overloading/c - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-overloading/ia - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-overloading/ic - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-overloading/b2 - local.tee $1 + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 32 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - i32.const 256 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 64 - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $class-overloading/A1 - block $class-overloading/B1 - block $class-overloading/B2 - block $class-overloading/A2 - block $class-overloading/CC - block $class-overloading/IC - block $class-overloading/CA - block $class-overloading/IA - block $class-overloading/F - block $class-overloading/E - block $class-overloading/D - block $class-overloading/C - block $class-overloading/B - block $class-overloading/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-overloading/A $class-overloading/B $class-overloading/C $class-overloading/D $class-overloading/E $class-overloading/F $class-overloading/IA $class-overloading/CA $class-overloading/IC $class-overloading/CC $class-overloading/A2 $class-overloading/B2 $class-overloading/B1 $class-overloading/A1 $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~start - global.get $~started - if - return - end + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill i32.const 1 - global.set $~started - call $start:class-overloading - ) - (func $~stack_check + drop global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33632 - i32.const 33680 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $class-overloading/A#constructor (param $this i32) (result i32) (local $1 i32) @@ -3139,18 +3642,18 @@ local.get $2 i32.store local.get $2 - i32.const 496 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 52 i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 592 + i32.const 2528 global.set $class-overloading/which global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3441,13 +3944,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 176 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 208 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 352 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -3467,12 +3970,12 @@ local.get $0 i32.store local.get $0 - i32.const 496 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -3494,12 +3997,12 @@ local.get $0 i32.store local.get $0 - i32.const 496 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -3521,12 +4024,12 @@ local.get $0 i32.store local.get $0 - i32.const 496 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -3548,12 +4051,12 @@ local.get $0 i32.store local.get $0 - i32.const 496 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 47 i32.const 1 call $~lib/builtins/abort @@ -3578,12 +4081,12 @@ local.get $0 i32.store local.get $0 - i32.const 592 + i32.const 2528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 71 i32.const 1 call $~lib/builtins/abort @@ -3605,12 +4108,12 @@ local.get $0 i32.store local.get $0 - i32.const 592 + i32.const 2528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 74 i32.const 1 call $~lib/builtins/abort @@ -3632,12 +4135,12 @@ local.get $0 i32.store local.get $0 - i32.const 592 + i32.const 2528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 77 i32.const 1 call $~lib/builtins/abort @@ -3657,12 +4160,12 @@ local.get $0 i32.store local.get $0 - i32.const 592 + i32.const 2528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 79 i32.const 1 call $~lib/builtins/abort @@ -3687,12 +4190,12 @@ local.get $0 i32.store local.get $0 - i32.const 496 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 89 i32.const 1 call $~lib/builtins/abort @@ -3714,12 +4217,12 @@ local.get $0 i32.store local.get $0 - i32.const 496 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 92 i32.const 1 call $~lib/builtins/abort @@ -3741,12 +4244,12 @@ local.get $0 i32.store local.get $0 - i32.const 496 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 95 i32.const 1 call $~lib/builtins/abort @@ -3766,12 +4269,12 @@ local.get $0 i32.store local.get $0 - i32.const 496 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 97 i32.const 1 call $~lib/builtins/abort @@ -3796,12 +4299,12 @@ local.get $0 i32.store local.get $0 - i32.const 496 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 107 i32.const 1 call $~lib/builtins/abort @@ -3823,12 +4326,12 @@ local.get $0 i32.store local.get $0 - i32.const 496 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 110 i32.const 1 call $~lib/builtins/abort @@ -3850,12 +4353,12 @@ local.get $0 i32.store local.get $0 - i32.const 496 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 113 i32.const 1 call $~lib/builtins/abort @@ -3875,12 +4378,12 @@ local.get $0 i32.store local.get $0 - i32.const 496 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 115 i32.const 1 call $~lib/builtins/abort @@ -3905,12 +4408,12 @@ local.get $0 i32.store local.get $0 - i32.const 624 + i32.const 2560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 137 i32.const 1 call $~lib/builtins/abort @@ -3932,12 +4435,12 @@ local.get $0 i32.store local.get $0 - i32.const 624 + i32.const 2560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 140 i32.const 1 call $~lib/builtins/abort @@ -3959,12 +4462,12 @@ local.get $0 i32.store local.get $0 - i32.const 624 + i32.const 2560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 143 i32.const 1 call $~lib/builtins/abort @@ -3986,12 +4489,12 @@ local.get $0 i32.store local.get $0 - i32.const 624 + i32.const 2560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 146 i32.const 1 call $~lib/builtins/abort @@ -4015,12 +4518,12 @@ local.get $0 i32.store local.get $0 - i32.const 656 + i32.const 2592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 162 i32.const 1 call $~lib/builtins/abort @@ -4044,12 +4547,12 @@ local.get $0 i32.store local.get $0 - i32.const 688 + i32.const 2624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 177 i32.const 1 call $~lib/builtins/abort @@ -4070,7 +4573,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2464 i32.const 209 i32.const 1 call $~lib/builtins/abort @@ -4208,6 +4711,153 @@ local.get $1 return ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -4236,4 +4886,140 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $class-overloading/which + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/c + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/ia + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/ic + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/b2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $class-overloading/A1 + block $class-overloading/B1 + block $class-overloading/B2 + block $class-overloading/A2 + block $class-overloading/CC + block $class-overloading/IC + block $class-overloading/CA + block $class-overloading/IA + block $class-overloading/F + block $class-overloading/E + block $class-overloading/D + block $class-overloading/C + block $class-overloading/B + block $class-overloading/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-overloading/A $class-overloading/B $class-overloading/C $class-overloading/D $class-overloading/E $class-overloading/F $class-overloading/IA $class-overloading/CA $class-overloading/IC $class-overloading/CC $class-overloading/A2 $class-overloading/B2 $class-overloading/B1 $class-overloading/A1 $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/class-overloading.release.wat b/tests/compiler/class-overloading.release.wat index 540c8b0e03..1140a7c2b8 100644 --- a/tests/compiler/class-overloading.release.wat +++ b/tests/compiler/class-overloading.release.wat @@ -2,12 +2,11 @@ (type $0 (func (param i32) (result i32))) (type $1 (func)) (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) (global $class-overloading/which (mut i32) (i32.const 1056)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -24,40 +23,257 @@ (global $class-overloading/ia (mut i32) (i32.const 0)) (global $class-overloading/ic (mut i32) (i32.const 0)) (global $class-overloading/b2 (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34636)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36572)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02") - (data $1 (i32.const 1068) "<") - (data $1.1 (i32.const 1080) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $2 (i32.const 1132) "<") - (data $2.1 (i32.const 1144) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $5 (i32.const 1260) "<") - (data $5.1 (i32.const 1272) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $6 (i32.const 1324) ",") - (data $6.1 (i32.const 1336) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $8 (i32.const 1404) "<") - (data $8.1 (i32.const 1416) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $9 (i32.const 1468) "\1c") - (data $9.1 (i32.const 1480) "\02\00\00\00\02\00\00\00A") - (data $10 (i32.const 1500) "\1c") - (data $10.1 (i32.const 1512) "\02\00\00\00\02\00\00\00B") - (data $11 (i32.const 1532) "<") - (data $11.1 (i32.const 1544) "\02\00\00\00(\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s") - (data $12 (i32.const 1596) "\1c") - (data $12.1 (i32.const 1608) "\02\00\00\00\02\00\00\00C") - (data $13 (i32.const 1628) "\1c") - (data $13.1 (i32.const 1640) "\02\00\00\00\02\00\00\00F") - (data $14 (i32.const 1660) "\1c") - (data $14.1 (i32.const 1672) "\02\00\00\00\04\00\00\00I\00B") - (data $15 (i32.const 1692) "\1c") - (data $15.1 (i32.const 1704) "\02\00\00\00\04\00\00\00I\00C") - (data $16 (i32.const 1724) "<") - (data $16.1 (i32.const 1736) "\02\00\00\00\1e\00\00\00n\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d") - (data $17 (i32.const 1792) "\12\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "\1c") + (data $19.1 (i32.const 3416) "\02\00\00\00\02\00\00\00A") + (data $20 (i32.const 3436) "\1c") + (data $20.1 (i32.const 3448) "\02\00\00\00\02\00\00\00B") + (data $21 (i32.const 3468) "<") + (data $21.1 (i32.const 3480) "\02\00\00\00(\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s") + (data $22 (i32.const 3532) "\1c") + (data $22.1 (i32.const 3544) "\02\00\00\00\02\00\00\00C") + (data $23 (i32.const 3564) "\1c") + (data $23.1 (i32.const 3576) "\02\00\00\00\02\00\00\00F") + (data $24 (i32.const 3596) "\1c") + (data $24.1 (i32.const 3608) "\02\00\00\00\04\00\00\00I\00B") + (data $25 (i32.const 3628) "\1c") + (data $25.1 (i32.const 3640) "\02\00\00\00\04\00\00\00I\00C") + (data $26 (i32.const 3660) "<") + (data $26.1 (i32.const 3672) "\02\00\00\00\1e\00\00\00n\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d") + (data $27 (i32.const 3728) "\12\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (export "_start" (func $~start)) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3804 + i32.lt_s + if + i32.const 36592 + i32.const 36640 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -97,9 +313,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1280 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1088 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -120,7 +340,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -168,7 +388,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -177,7 +397,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$171 + block $__inlined_func$~lib/rt/itcms/Object#unlink$183 local.get $1 i32.load offset=4 i32.const -4 @@ -189,19 +409,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34636 + i32.const 36572 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$171 + br $__inlined_func$~lib/rt/itcms/Object#unlink$183 end local.get $1 i32.load offset=8 @@ -209,7 +429,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -238,12 +458,12 @@ i32.const 1 else local.get $0 - i32.const 1792 + i32.const 3728 i32.load i32.gt_u if - i32.const 1280 - i32.const 1344 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -252,7 +472,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1796 + i32.const 3732 i32.add i32.load i32.const 32 @@ -304,7 +524,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -318,7 +538,7 @@ i32.lt_u if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -364,7 +584,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -447,7 +667,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -461,7 +681,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -522,7 +742,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -555,7 +775,7 @@ i32.lt_u if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -570,7 +790,7 @@ i32.ne if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -621,7 +841,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -693,7 +913,7 @@ i64.lt_u if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -718,7 +938,7 @@ i32.gt_u if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -745,7 +965,7 @@ i32.gt_u if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -817,10 +1037,10 @@ if unreachable end - i32.const 34640 + i32.const 36576 i32.const 0 i32.store - i32.const 36208 + i32.const 38144 i32.const 0 i32.store loop $for-loop|0 @@ -831,7 +1051,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34640 + i32.const 36576 i32.add i32.const 0 i32.store offset=4 @@ -849,7 +1069,7 @@ i32.add i32.const 2 i32.shl - i32.const 34640 + i32.const 36576 i32.add i32.const 0 i32.store offset=96 @@ -867,14 +1087,14 @@ br $for-loop|0 end end - i32.const 34640 - i32.const 36212 + i32.const 36576 + i32.const 38148 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34640 + i32.const 36576 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -959,7 +1179,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34636 + i32.const 36572 i32.lt_u if local.get $0 @@ -1048,14 +1268,14 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34636 + i32.const 36572 i32.lt_u if local.get $0 @@ -1078,7 +1298,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34636 + i32.const 36572 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1107,7 +1327,7 @@ end if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1137,18 +1357,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1156,32 +1443,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1194,23 +1485,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 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 @@ -1224,9 +1527,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1249,31 +1552,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if memory.size - local.tee $1 + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end i32.const 4 - local.get $2 + local.get $4 i32.load offset=1568 - local.get $1 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1289,8 +1647,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1298,119 +1656,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1418,14 +1793,14 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 + memory.fill + local.get $1 ) (func $class-overloading/A#a@override (param $0 i32) block $default @@ -1440,7 +1815,7 @@ i32.sub br_table $case0 $case1 $case0 $case0 $case2 $default end - i32.const 1520 + i32.const 3456 global.set $class-overloading/which return end @@ -1448,88 +1823,221 @@ call $class-overloading/C#a return end - i32.const 1648 + i32.const 3584 global.set $class-overloading/which return end - i32.const 1488 + i32.const 3424 global.set $class-overloading/which ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $class-overloading/A1 - block $class-overloading/B1 - block $class-overloading/B2 - block $class-overloading/A2 - block $class-overloading/CC - block $class-overloading/IC - block $class-overloading/CA - block $class-overloading/IA - block $class-overloading/F - block $class-overloading/E - block $class-overloading/D - block $class-overloading/C - block $class-overloading/B - block $class-overloading/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-overloading/A $class-overloading/B $class-overloading/C $class-overloading/D $class-overloading/E $class-overloading/F $class-overloading/IA $class-overloading/CA $class-overloading/IC $class-overloading/CC $class-overloading/A2 $class-overloading/B2 $class-overloading/B1 $class-overloading/A1 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:class-overloading + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3804 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3804 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$190 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1056 + local.set $0 + br $__inlined_func$~lib/string/String#concat$190 end - return + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 return end + i32.const 36592 + i32.const 36640 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) - (func $~start - global.get $~started + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3804 + i32.lt_s if - return + i32.const 36592 + i32.const 36640 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 1 - global.set $~started - call $start:class-overloading + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1088 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1120 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $class-overloading/B#constructor (param $0 i32) (result i32) (local $1 i32) @@ -1539,7 +2047,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1868 + i32.const 3804 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1549,6 +2057,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 5 call $~lib/rt/itcms/__new local.tee $0 @@ -1563,7 +2072,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1868 + i32.const 3804 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1573,6 +2082,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 @@ -1599,8 +2109,8 @@ local.get $0 return end - i32.const 34656 - i32.const 34704 + i32.const 36592 + i32.const 36640 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1616,11 +2126,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1868 + i32.const 3804 i32.lt_s if - i32.const 34656 - i32.const 34704 + i32.const 36592 + i32.const 36640 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1719,7 +2229,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$95 + block $__inlined_func$~lib/util/string/compareImpl$98 loop $while-continue|1 local.get $0 local.tee $3 @@ -1739,7 +2249,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$95 + br_if $__inlined_func$~lib/util/string/compareImpl$98 local.get $2 i32.const 2 i32.add @@ -1774,11 +2284,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1868 + i32.const 3804 i32.lt_s if - i32.const 34656 - i32.const 34704 + i32.const 36592 + i32.const 36640 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1790,24 +2300,24 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - i32.const 1520 + i32.const 3456 global.set $class-overloading/which global.get $~lib/memory/__stack_pointer - i32.const 1520 + i32.const 3456 i32.store - i32.const 1520 - i32.const 1520 + i32.const 3456 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 52 i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1616 + i32.const 3552 global.set $class-overloading/which global.get $~lib/memory/__stack_pointer i32.const 4 @@ -1820,11 +2330,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1868 + i32.const 3804 i32.lt_s if - i32.const 34656 - i32.const 34704 + i32.const 36592 + i32.const 36640 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1837,6 +2347,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 7 call $~lib/rt/itcms/__new local.tee $0 @@ -1862,11 +2373,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1868 + i32.const 3804 i32.lt_s if - i32.const 34656 - i32.const 34704 + i32.const 36592 + i32.const 36640 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1879,6 +2390,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 8 call $~lib/rt/itcms/__new local.tee $0 @@ -1907,7 +2419,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1868 + i32.const 3804 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -1916,34 +2428,34 @@ memory.size i32.const 16 i32.shl - i32.const 34636 + i32.const 36572 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1204 - i32.const 1200 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1200 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1236 - i32.const 1232 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1240 - i32.const 1232 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1232 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1380 - i32.const 1376 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1384 - i32.const 1376 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1376 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace i32.const 0 call $class-overloading/B#constructor @@ -1959,12 +2471,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1520 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -1976,7 +2488,7 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@override$153 + block $__inlined_func$class-overloading/A#b@override$164 block $default block $case2 block $case1 @@ -1989,19 +2501,19 @@ i32.sub br_table $case0 $case1 $case0 $case0 $case2 $default end - i32.const 1520 + i32.const 3456 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$153 + br $__inlined_func$class-overloading/A#b@override$164 end - i32.const 1616 + i32.const 3552 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$153 + br $__inlined_func$class-overloading/A#b@override$164 end - i32.const 1648 + i32.const 3584 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$153 + br $__inlined_func$class-overloading/A#b@override$164 end - i32.const 1488 + i32.const 3424 global.set $class-overloading/which end global.get $~lib/memory/__stack_pointer @@ -2009,12 +2521,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1520 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -2026,7 +2538,7 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#get:c@override$154 + block $__inlined_func$class-overloading/A#get:c@override$165 block $default4 block $case25 block $case16 @@ -2039,19 +2551,19 @@ i32.sub br_table $case07 $case16 $case07 $case07 $case25 $default4 end - i32.const 1520 + i32.const 3456 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@override$154 + br $__inlined_func$class-overloading/A#get:c@override$165 end - i32.const 1616 + i32.const 3552 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@override$154 + br $__inlined_func$class-overloading/A#get:c@override$165 end - i32.const 1648 + i32.const 3584 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@override$154 + br $__inlined_func$class-overloading/A#get:c@override$165 end - i32.const 1488 + i32.const 3424 global.set $class-overloading/which end global.get $~lib/memory/__stack_pointer @@ -2059,12 +2571,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1520 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -2076,7 +2588,7 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@override$155 + block $__inlined_func$class-overloading/A#b@override$166 block $default8 block $case29 block $case110 @@ -2089,19 +2601,19 @@ i32.sub br_table $case011 $case110 $case011 $case011 $case29 $default8 end - i32.const 1520 + i32.const 3456 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$155 + br $__inlined_func$class-overloading/A#b@override$166 end - i32.const 1616 + i32.const 3552 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$155 + br $__inlined_func$class-overloading/A#b@override$166 end - i32.const 1648 + i32.const 3584 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$155 + br $__inlined_func$class-overloading/A#b@override$166 end - i32.const 1488 + i32.const 3424 global.set $class-overloading/which end global.get $~lib/memory/__stack_pointer @@ -2109,12 +2621,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1520 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 47 i32.const 1 call $~lib/builtins/abort @@ -2125,13 +2637,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1868 + i32.const 3804 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 6 call $~lib/rt/itcms/__new local.tee $0 @@ -2163,12 +2676,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1616 + i32.const 3552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 71 i32.const 1 call $~lib/builtins/abort @@ -2179,18 +2692,18 @@ global.get $~lib/memory/__stack_pointer global.get $class-overloading/c i32.store - i32.const 1616 + i32.const 3552 global.set $class-overloading/which global.get $~lib/memory/__stack_pointer - i32.const 1616 + i32.const 3552 i32.store - i32.const 1616 - i32.const 1616 + i32.const 3552 + i32.const 3552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 74 i32.const 1 call $~lib/builtins/abort @@ -2201,18 +2714,18 @@ global.get $~lib/memory/__stack_pointer global.get $class-overloading/c i32.store - i32.const 1616 + i32.const 3552 global.set $class-overloading/which global.get $~lib/memory/__stack_pointer - i32.const 1616 + i32.const 3552 i32.store - i32.const 1616 - i32.const 1616 + i32.const 3552 + i32.const 3552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 77 i32.const 1 call $~lib/builtins/abort @@ -2221,18 +2734,18 @@ global.get $~lib/memory/__stack_pointer global.get $class-overloading/c i32.store - i32.const 1616 + i32.const 3552 global.set $class-overloading/which global.get $~lib/memory/__stack_pointer - i32.const 1616 + i32.const 3552 i32.store - i32.const 1616 - i32.const 1616 + i32.const 3552 + i32.const 3552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 79 i32.const 1 call $~lib/builtins/abort @@ -2254,12 +2767,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1520 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 89 i32.const 1 call $~lib/builtins/abort @@ -2271,7 +2784,7 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@override$157 + block $__inlined_func$class-overloading/A#b@override$168 block $default16 block $case217 block $case118 @@ -2284,19 +2797,19 @@ i32.sub br_table $case019 $case118 $case019 $case019 $case217 $default16 end - i32.const 1520 + i32.const 3456 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$157 + br $__inlined_func$class-overloading/A#b@override$168 end - i32.const 1616 + i32.const 3552 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$157 + br $__inlined_func$class-overloading/A#b@override$168 end - i32.const 1648 + i32.const 3584 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$157 + br $__inlined_func$class-overloading/A#b@override$168 end - i32.const 1488 + i32.const 3424 global.set $class-overloading/which end global.get $~lib/memory/__stack_pointer @@ -2304,12 +2817,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1520 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 92 i32.const 1 call $~lib/builtins/abort @@ -2321,7 +2834,7 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#get:c@override$158 + block $__inlined_func$class-overloading/A#get:c@override$169 block $default24 block $case225 block $case126 @@ -2334,19 +2847,19 @@ i32.sub br_table $case027 $case126 $case027 $case027 $case225 $default24 end - i32.const 1520 + i32.const 3456 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@override$158 + br $__inlined_func$class-overloading/A#get:c@override$169 end - i32.const 1616 + i32.const 3552 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@override$158 + br $__inlined_func$class-overloading/A#get:c@override$169 end - i32.const 1648 + i32.const 3584 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@override$158 + br $__inlined_func$class-overloading/A#get:c@override$169 end - i32.const 1488 + i32.const 3424 global.set $class-overloading/which end global.get $~lib/memory/__stack_pointer @@ -2354,12 +2867,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1520 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 95 i32.const 1 call $~lib/builtins/abort @@ -2369,7 +2882,7 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@override$159 + block $__inlined_func$class-overloading/A#b@override$170 block $default32 block $case233 block $case134 @@ -2382,19 +2895,19 @@ i32.sub br_table $case035 $case134 $case035 $case035 $case233 $default32 end - i32.const 1520 + i32.const 3456 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$159 + br $__inlined_func$class-overloading/A#b@override$170 end - i32.const 1616 + i32.const 3552 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$159 + br $__inlined_func$class-overloading/A#b@override$170 end - i32.const 1648 + i32.const 3584 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$159 + br $__inlined_func$class-overloading/A#b@override$170 end - i32.const 1488 + i32.const 3424 global.set $class-overloading/which end global.get $~lib/memory/__stack_pointer @@ -2402,12 +2915,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1520 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 97 i32.const 1 call $~lib/builtins/abort @@ -2429,12 +2942,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1520 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 107 i32.const 1 call $~lib/builtins/abort @@ -2446,7 +2959,7 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@override$160 + block $__inlined_func$class-overloading/A#b@override$171 block $default40 block $case241 block $case142 @@ -2459,19 +2972,19 @@ i32.sub br_table $case043 $case142 $case043 $case043 $case241 $default40 end - i32.const 1520 + i32.const 3456 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$160 + br $__inlined_func$class-overloading/A#b@override$171 end - i32.const 1616 + i32.const 3552 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$160 + br $__inlined_func$class-overloading/A#b@override$171 end - i32.const 1648 + i32.const 3584 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$160 + br $__inlined_func$class-overloading/A#b@override$171 end - i32.const 1488 + i32.const 3424 global.set $class-overloading/which end global.get $~lib/memory/__stack_pointer @@ -2479,12 +2992,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1520 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 110 i32.const 1 call $~lib/builtins/abort @@ -2496,7 +3009,7 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#get:c@override$161 + block $__inlined_func$class-overloading/A#get:c@override$172 block $default48 block $case249 block $case150 @@ -2509,19 +3022,19 @@ i32.sub br_table $case051 $case150 $case051 $case051 $case249 $default48 end - i32.const 1520 + i32.const 3456 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@override$161 + br $__inlined_func$class-overloading/A#get:c@override$172 end - i32.const 1616 + i32.const 3552 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@override$161 + br $__inlined_func$class-overloading/A#get:c@override$172 end - i32.const 1648 + i32.const 3584 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@override$161 + br $__inlined_func$class-overloading/A#get:c@override$172 end - i32.const 1488 + i32.const 3424 global.set $class-overloading/which end global.get $~lib/memory/__stack_pointer @@ -2529,12 +3042,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1520 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 113 i32.const 1 call $~lib/builtins/abort @@ -2544,7 +3057,7 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@override$162 + block $__inlined_func$class-overloading/A#b@override$173 block $default56 block $case257 block $case158 @@ -2557,19 +3070,19 @@ i32.sub br_table $case059 $case158 $case059 $case059 $case257 $default56 end - i32.const 1520 + i32.const 3456 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$162 + br $__inlined_func$class-overloading/A#b@override$173 end - i32.const 1616 + i32.const 3552 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$162 + br $__inlined_func$class-overloading/A#b@override$173 end - i32.const 1648 + i32.const 3584 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$162 + br $__inlined_func$class-overloading/A#b@override$173 end - i32.const 1488 + i32.const 3424 global.set $class-overloading/which end global.get $~lib/memory/__stack_pointer @@ -2577,12 +3090,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1520 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 115 i32.const 1 call $~lib/builtins/abort @@ -2593,13 +3106,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1868 + i32.const 3804 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 9 call $~lib/rt/itcms/__new local.tee $0 @@ -2631,12 +3145,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1648 + i32.const 3584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 137 i32.const 1 call $~lib/builtins/abort @@ -2648,7 +3162,7 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@override$164 + block $__inlined_func$class-overloading/A#b@override$175 block $default64 block $case265 block $case166 @@ -2661,19 +3175,19 @@ i32.sub br_table $case067 $case166 $case067 $case067 $case265 $default64 end - i32.const 1520 + i32.const 3456 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$164 + br $__inlined_func$class-overloading/A#b@override$175 end - i32.const 1616 + i32.const 3552 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$164 + br $__inlined_func$class-overloading/A#b@override$175 end - i32.const 1648 + i32.const 3584 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$164 + br $__inlined_func$class-overloading/A#b@override$175 end - i32.const 1488 + i32.const 3424 global.set $class-overloading/which end global.get $~lib/memory/__stack_pointer @@ -2681,12 +3195,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1648 + i32.const 3584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 140 i32.const 1 call $~lib/builtins/abort @@ -2698,7 +3212,7 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#get:c@override$165 + block $__inlined_func$class-overloading/A#get:c@override$176 block $default72 block $case273 block $case174 @@ -2711,19 +3225,19 @@ i32.sub br_table $case075 $case174 $case075 $case075 $case273 $default72 end - i32.const 1520 + i32.const 3456 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@override$165 + br $__inlined_func$class-overloading/A#get:c@override$176 end - i32.const 1616 + i32.const 3552 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@override$165 + br $__inlined_func$class-overloading/A#get:c@override$176 end - i32.const 1648 + i32.const 3584 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@override$165 + br $__inlined_func$class-overloading/A#get:c@override$176 end - i32.const 1488 + i32.const 3424 global.set $class-overloading/which end global.get $~lib/memory/__stack_pointer @@ -2731,12 +3245,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1648 + i32.const 3584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 143 i32.const 1 call $~lib/builtins/abort @@ -2748,7 +3262,7 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@override$166 + block $__inlined_func$class-overloading/A#b@override$177 block $default80 block $case281 block $case182 @@ -2761,19 +3275,19 @@ i32.sub br_table $case083 $case182 $case083 $case083 $case281 $default80 end - i32.const 1520 + i32.const 3456 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$166 + br $__inlined_func$class-overloading/A#b@override$177 end - i32.const 1616 + i32.const 3552 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$166 + br $__inlined_func$class-overloading/A#b@override$177 end - i32.const 1648 + i32.const 3584 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@override$166 + br $__inlined_func$class-overloading/A#b@override$177 end - i32.const 1488 + i32.const 3424 global.set $class-overloading/which end global.get $~lib/memory/__stack_pointer @@ -2781,12 +3295,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1648 + i32.const 3584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 146 i32.const 1 call $~lib/builtins/abort @@ -2797,13 +3311,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1868 + i32.const 3804 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 11 call $~lib/rt/itcms/__new local.tee $0 @@ -2828,7 +3343,7 @@ global.get $class-overloading/ia local.tee $0 i32.store - block $__inlined_func$class-overloading/IA#foo@override$168 + block $__inlined_func$class-overloading/IA#foo@override$179 block $default88 block $case189 local.get $0 @@ -2845,13 +3360,13 @@ br_if $case189 br $default88 end - i32.const 1680 + i32.const 3616 global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@override$168 + br $__inlined_func$class-overloading/IA#foo@override$179 end - i32.const 1712 + i32.const 3648 global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@override$168 + br $__inlined_func$class-overloading/IA#foo@override$179 end unreachable end @@ -2860,12 +3375,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1680 + i32.const 3616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 162 i32.const 1 call $~lib/builtins/abort @@ -2876,13 +3391,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1868 + i32.const 3804 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 13 call $~lib/rt/itcms/__new local.tee $0 @@ -2907,7 +3423,7 @@ global.get $class-overloading/ic local.tee $0 i32.store - block $__inlined_func$class-overloading/IA#foo@override$170 + block $__inlined_func$class-overloading/IA#foo@override$181 block $default91 block $case192 local.get $0 @@ -2924,13 +3440,13 @@ br_if $case192 br $default91 end - i32.const 1680 + i32.const 3616 global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@override$170 + br $__inlined_func$class-overloading/IA#foo@override$181 end - i32.const 1712 + i32.const 3648 global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@override$170 + br $__inlined_func$class-overloading/IA#foo@override$181 end unreachable end @@ -2939,12 +3455,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1712 + i32.const 3648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3488 i32.const 177 i32.const 1 call $~lib/builtins/abort @@ -2955,13 +3471,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1868 + i32.const 3804 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 15 call $~lib/rt/itcms/__new local.tee $0 @@ -2975,7 +3492,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1868 + i32.const 3804 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2985,6 +3502,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 14 call $~lib/rt/itcms/__new local.tee $0 @@ -3014,7 +3532,7 @@ global.get $class-overloading/b2 local.tee $0 i32.store - block $__inlined_func$class-overloading/A2#foo@override$1 + block $__inlined_func$class-overloading/A2#foo@override local.get $0 i32.const 8 i32.sub @@ -3027,7 +3545,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1868 + i32.const 3804 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3038,13 +3556,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1868 + i32.const 3804 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 16 call $~lib/rt/itcms/__new local.tee $0 @@ -3058,7 +3577,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1868 + i32.const 3804 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3068,6 +3587,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 17 call $~lib/rt/itcms/__new local.tee $0 @@ -3099,7 +3619,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1868 + i32.const 3804 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3115,8 +3635,8 @@ i32.const 16 i32.ne if - i32.const 1744 - i32.const 1552 + i32.const 3680 + i32.const 3488 i32.const 186 i32.const 5 call $~lib/builtins/abort @@ -3130,10 +3650,10 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$class-overloading/A2#foo@override$1 + br $__inlined_func$class-overloading/A2#foo@override end - i32.const 1744 - i32.const 1552 + i32.const 3680 + i32.const 3488 i32.const 198 i32.const 5 call $~lib/builtins/abort @@ -3145,8 +3665,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34656 - i32.const 34704 + i32.const 36592 + i32.const 36640 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3158,11 +3678,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1868 + i32.const 3804 i32.lt_s if - i32.const 34656 - i32.const 34704 + i32.const 36592 + i32.const 36640 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3176,6 +3696,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -3186,4 +3707,71 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-overloading/A1 + block $class-overloading/B1 + block $class-overloading/B2 + block $class-overloading/A2 + block $class-overloading/CC + block $class-overloading/IC + block $class-overloading/CA + block $class-overloading/IA + block $class-overloading/F + block $class-overloading/E + block $class-overloading/D + block $class-overloading/C + block $class-overloading/B + block $class-overloading/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-overloading/A $class-overloading/B $class-overloading/C $class-overloading/D $class-overloading/E $class-overloading/F $class-overloading/IA $class-overloading/CA $class-overloading/IC $class-overloading/CC $class-overloading/A2 $class-overloading/B2 $class-overloading/B1 $class-overloading/A1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/class-override.debug.wat b/tests/compiler/class-override.debug.wat index c354bbb2c2..b8b0b586d3 100644 --- a/tests/compiler/class-override.debug.wat +++ b/tests/compiler/class-override.debug.wat @@ -1,14 +1,20 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,33 +23,470 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $class-override/x (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 480)) - (global $~lib/memory/__data_end i32 (i32.const 516)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33284)) - (global $~lib/memory/__heap_base i32 (i32.const 33284)) + (global $~lib/rt/__rtti_base i32 (i32.const 2448)) + (global $~lib/memory/__data_end i32 (i32.const 2484)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35252)) + (global $~lib/memory/__heap_base i32 (i32.const 35252)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00r\00i\00d\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 480) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00r\00i\00d\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2448) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "fn" (func $class-override/fn)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -108,7 +551,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -178,7 +621,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -195,7 +638,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -225,8 +668,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -294,7 +737,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -446,7 +889,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -466,7 +909,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -529,7 +972,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -682,7 +1125,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -699,7 +1142,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -788,7 +1231,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -831,7 +1274,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -849,7 +1292,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -917,7 +1360,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1034,7 +1477,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1080,7 +1523,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1112,7 +1555,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1356,7 +1799,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1576,7 +2019,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1684,8 +2127,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1787,7 +2230,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1858,7 +2301,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2015,7 +2458,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2130,7 +2573,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2150,7 +2593,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2198,8 +2641,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2259,13 +2702,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -2278,7 +2721,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -2323,71 +2766,6 @@ local.get $1 call $class-override/A#f ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $class-override/x - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $class-override/B - block $class-override/C - block $class-override/D - block $class-override/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-override/A $class-override/D $class-override/C $class-override/B $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - return - end - return - end - unreachable - ) (func $~start call $start:class-override ) @@ -2396,14 +2774,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33312 - i32.const 33360 + i32.const 35280 + i32.const 35328 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $class-override/A#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2638,6 +3221,153 @@ local.get $2 return ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2666,4 +3396,75 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $class-override/x + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $class-override/B + block $class-override/C + block $class-override/D + block $class-override/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-override/A $class-override/D $class-override/C $class-override/B $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/class-override.release.wat b/tests/compiler/class-override.release.wat index 6dc55da64d..b56e34ee26 100644 --- a/tests/compiler/class-override.release.wat +++ b/tests/compiler/class-override.release.wat @@ -1,13 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32) (result i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -19,24 +18,243 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $class-override/x (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34308)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36276)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) "<") - (data $8.1 (i32.const 1448) "\02\00\00\00\"\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00r\00i\00d\00e\00.\00t\00s") - (data $9 (i32.const 1504) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "<") + (data $19.1 (i32.const 3416) "\02\00\00\00\"\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00r\00i\00d\00e\00.\00t\00s") + (data $20 (i32.const 3472) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "fn" (func $class-override/fn)) (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3508 + i32.lt_s + if + i32.const 36304 + i32.const 36352 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -46,9 +264,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -69,7 +291,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -117,7 +339,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -126,7 +348,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$120 + block $__inlined_func$~lib/rt/itcms/Object#unlink$133 local.get $1 i32.load offset=4 i32.const -4 @@ -138,19 +360,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34308 + i32.const 36276 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$120 + br $__inlined_func$~lib/rt/itcms/Object#unlink$133 end local.get $1 i32.load offset=8 @@ -158,7 +380,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -187,12 +409,12 @@ i32.const 1 else local.get $0 - i32.const 1504 + i32.const 3472 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -201,7 +423,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1508 + i32.const 3476 i32.add i32.load i32.const 32 @@ -253,7 +475,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -267,7 +489,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -313,7 +535,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -396,7 +618,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -410,7 +632,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -471,7 +693,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -504,7 +726,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -519,7 +741,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -570,7 +792,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -642,7 +864,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -667,7 +889,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -694,7 +916,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -766,10 +988,10 @@ if unreachable end - i32.const 34320 + i32.const 36288 i32.const 0 i32.store - i32.const 35888 + i32.const 37856 i32.const 0 i32.store loop $for-loop|0 @@ -780,7 +1002,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34320 + i32.const 36288 i32.add i32.const 0 i32.store offset=4 @@ -798,7 +1020,7 @@ i32.add i32.const 2 i32.shl - i32.const 34320 + i32.const 36288 i32.add i32.const 0 i32.store offset=96 @@ -816,14 +1038,14 @@ br $for-loop|0 end end - i32.const 34320 - i32.const 35892 + i32.const 36288 + i32.const 37860 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34320 + i32.const 36288 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -908,7 +1130,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34308 + i32.const 36276 i32.lt_u if local.get $0 @@ -997,14 +1219,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34308 + i32.const 36276 i32.lt_u if local.get $0 @@ -1027,7 +1249,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34308 + i32.const 36276 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1056,7 +1278,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1086,18 +1308,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1105,32 +1394,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1143,23 +1436,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 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 @@ -1173,9 +1478,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1198,31 +1503,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.const 1073741820 + i32.gt_u if - memory.size - local.tee $1 - i32.const 4 - local.get $2 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1238,8 +1598,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1247,119 +1607,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1367,255 +1744,424 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 + memory.fill + local.get $1 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $class-override/B - block $class-override/C - block $class-override/D - block $class-override/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-override/A $class-override/D $class-override/C $class-override/B $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - unreachable - ) - (func $~start + (func $start:class-override (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$start:class-override - memory.size - i32.const 16 - i32.shl - i32.const 34308 - 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 + memory.size + i32.const 16 + i32.shl + i32.const 36276 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 3140 + i32.const 3136 + i32.store + i32.const 3144 + i32.const 3136 + i32.store + i32.const 3136 + global.set $~lib/rt/itcms/pinSpace + i32.const 3172 + i32.const 3168 + i32.store + i32.const 3176 + i32.const 3168 + i32.store + i32.const 3168 + global.set $~lib/rt/itcms/toSpace + i32.const 3316 + i32.const 3312 + i32.store + i32.const 3320 + i32.const 3312 + i32.store + i32.const 3312 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3508 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1540 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + global.get $~lib/memory/__stack_pointer + i32.const 3508 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if global.get $~lib/memory/__stack_pointer - i32.const 5 + i32.const 0 + i32.const 6 call $~lib/rt/itcms/__new local.tee $0 i32.store + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3508 + 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 0 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3508 + 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 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1540 - 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 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1540 - 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 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1540 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1540 - i32.lt_s - br_if $folding-inner0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3508 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 i32.store - local.get $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-override/x + i32.const 0 + call $class-override/fn + i32.const 111 + i32.ne + if + i32.const 0 + i32.const 3424 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + return + end + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + call $start:class-override + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3508 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3508 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$139 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$139 end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + memory.copy local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $1 + local.get $4 + memory.copy global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $class-override/x - i32.const 0 - call $class-override/fn - i32.const 111 - i32.ne - if - i32.const 0 - i32.const 1456 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$start:class-override end - i32.const 34336 - i32.const 34384 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3508 + i32.lt_s + if + i32.const 36304 + i32.const 36352 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $class-override/fn (param $0 i32) (result i32) (local $1 i32) @@ -1625,7 +2171,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1540 + i32.const 3508 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1635,7 +2181,7 @@ global.get $class-override/x local.tee $1 i32.store - block $__inlined_func$class-override/A#f@override$126 + block $__inlined_func$class-override/A#f@override$140 block $default block $case1 block $case0 @@ -1651,14 +2197,14 @@ local.get $0 call $class-override/B#f local.set $0 - br $__inlined_func$class-override/A#f@override$126 + br $__inlined_func$class-override/A#f@override$140 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1540 + i32.const 3508 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1677,7 +2223,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$class-override/A#f@override$126 + br $__inlined_func$class-override/A#f@override$140 end local.get $0 i32.const 1 @@ -1691,8 +2237,8 @@ local.get $0 return end - i32.const 34336 - i32.const 34384 + i32.const 36304 + i32.const 36352 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1704,11 +2250,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1540 + i32.const 3508 i32.lt_s if - i32.const 34336 - i32.const 34384 + i32.const 36304 + i32.const 36352 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1728,4 +2274,41 @@ i32.const 11 i32.add ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-override/B + block $class-override/C + block $class-override/D + block $class-override/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-override/A $class-override/D $class-override/C $class-override/B $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/class-static-function.debug.wat b/tests/compiler/class-static-function.debug.wat index 8c028d9590..c943539770 100644 --- a/tests/compiler/class-static-function.debug.wat +++ b/tests/compiler/class-static-function.debug.wat @@ -1,16 +1,59 @@ (module - (type $0 (func)) - (type $1 (func (result i32))) - (type $2 (func (param i32) (result i32))) - (type $3 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 124)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32892)) - (global $~lib/memory/__heap_base i32 (i32.const 32892)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2496)) + (global $~lib/memory/__data_end i32 (i32.const 2520)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35288)) + (global $~lib/memory/__heap_base i32 (i32.const 35288)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 44) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\00c\00l\00a\00s\00s\00-\00s\00t\00a\00t\00i\00c\00-\00f\00u\00n\00c\00t\00i\00o\00n\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $5 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 572) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 796) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $17 (i32.const 1196) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2252) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $19 (i32.const 2348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\00c\00l\00a\00s\00s\00-\00s\00t\00a\00t\00i\00c\00-\00f\00u\00n\00c\00t\00i\00o\00n\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2496) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00") (table $0 2 2 funcref) (elem $0 (i32.const 1) $class-static-function/Example.staticFunc) (export "memory" (memory $0)) @@ -24,7 +67,2636 @@ global.set $~argumentsLength local.get $func i32.load - call_indirect (type $1) + call_indirect (type $5) + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 352 + i32.const 416 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 224 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 160 + i32.const 496 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 160 + i32.const 224 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 796 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 796 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 return ) (func $~start @@ -35,14 +2707,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 32912 - i32.const 32960 + i32.const 35312 + i32.const 35360 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 128 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2368 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $start:class-static-function (local $0 i32) global.get $~lib/memory/__stack_pointer @@ -53,6 +2930,23 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 304 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 448 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 32 local.set $0 global.get $~lib/memory/__stack_pointer @@ -65,7 +2959,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -76,4 +2970,245 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 592 + i32.const 720 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 784 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 352 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 160 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1216 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2272 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>~visit + return + end + unreachable + ) + (func $~lib/function/Function<%28%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/class-static-function.release.wat b/tests/compiler/class-static-function.release.wat index 10a8811e24..4bfdbc78c7 100644 --- a/tests/compiler/class-static-function.release.wat +++ b/tests/compiler/class-static-function.release.wat @@ -1,14 +1,60 @@ (module (type $0 (func (result i32))) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33916)) + (type $1 (func)) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36312)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") - (data $1 (i32.const 1068) "L") - (data $1.1 (i32.const 1080) "\02\00\00\000\00\00\00c\00l\00a\00s\00s\00-\00s\00t\00a\00t\00i\00c\00-\00f\00u\00n\00c\00t\00i\00o\00n\00.\00t\00s") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02") + (data $4 (i32.const 1164) "<") + (data $4.1 (i32.const 1176) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1228) "<") + (data $5.1 (i32.const 1240) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1356) "<") + (data $8.1 (i32.const 1368) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1420) ",") + (data $9.1 (i32.const 1432) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1500) "<") + (data $11.1 (i32.const 1512) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1564) "\1c") + (data $12.1 (i32.const 1576) "\02\00\00\00\02\00\00\00:") + (data $13 (i32.const 1596) "|") + (data $13.1 (i32.const 1608) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $14 (i32.const 1724) "<") + (data $14.1 (i32.const 1736) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $15 (i32.const 1788) "\1c") + (data $15.1 (i32.const 1800) "\02\00\00\00\02\00\00\000") + (data $16 (i32.const 1820) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $17 (i32.const 2220) "\1c\04") + (data $17.1 (i32.const 2232) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $18 (i32.const 3276) "\\") + (data $18.1 (i32.const 3288) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $19 (i32.const 3372) "<") + (data $19.1 (i32.const 3384) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $20 (i32.const 3436) "L") + (data $20.1 (i32.const 3448) "\02\00\00\000\00\00\00c\00l\00a\00s\00s\00-\00s\00t\00a\00t\00i\00c\00-\00f\00u\00n\00c\00t\00i\00o\00n\00.\00t\00s") + (data $21 (i32.const 3520) "\05\00\00\00 \00\00\00 \00\00\00 ") (table $0 2 2 funcref) (elem $0 (i32.const 1) $class-static-function/Example.staticFunc) (export "memory" (memory $0)) @@ -16,17 +62,1706 @@ (func $class-static-function/Example.staticFunc (result i32) i32.const 42 ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1376 + call $~lib/rt/itcms/__visit + i32.const 1184 + call $~lib/rt/itcms/__visit + i32.const 2240 + call $~lib/rt/itcms/__visit + i32.const 3296 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1248 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$126 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36312 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$126 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3520 + i32.load + i32.gt_u + if + i32.const 1376 + i32.const 1440 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3524 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36320 + i32.const 0 + i32.store + i32.const 37888 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36320 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36320 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36320 + i32.const 37892 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36320 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36312 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1248 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36312 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36312 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1520 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1184 + i32.const 1248 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1184 + i32.const 1520 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1520 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3544 + i32.lt_s + if + i32.const 36336 + i32.const 36384 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1808 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~start global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1148 + i32.const 3544 i32.lt_s if - i32.const 33936 - i32.const 33984 + i32.const 36336 + i32.const 36384 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -35,6 +1770,38 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + memory.size + i32.const 16 + i32.shl + i32.const 36312 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/pinSpace + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/toSpace + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store @@ -47,4 +1814,259 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3544 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3544 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$131 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1152 + local.set $0 + br $__inlined_func$~lib/string/String#concat$131 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36336 + i32.const 36384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3544 + i32.lt_s + if + i32.const 36336 + i32.const 36384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1088 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1120 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3392 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3544 + i32.lt_s + if + i32.const 36336 + i32.const 36384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) ) diff --git a/tests/compiler/class.debug.wat b/tests/compiler/class.debug.wat index 7e5b928f9c..0f4d0b4a5f 100644 --- a/tests/compiler/class.debug.wat +++ b/tests/compiler/class.debug.wat @@ -1,18 +1,24 @@ (module - (type $0 (func (param i32 i32))) - (type $1 (func (param i32) (result i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) (type $6 (func (param f32 f32) (result f32))) (type $7 (func (param i32 i32 i32) (result i32))) (type $8 (func (param i32 f32 f32) (result f32))) - (type $9 (func (param i32 i32 i32 i32))) - (type $10 (func (param i32 i32 i64) (result i32))) - (type $11 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param i32 i32 i64) (result i32))) + (type $13 (func (result i32))) + (type $14 (func (param i32 i32 i32 i32))) (global $class/Animal.ONE (mut 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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -21,29 +27,37 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/rt/__rtti_base i32 (i32.const 512)) - (global $~lib/memory/__data_end i32 (i32.const 544)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33312)) - (global $~lib/memory/__heap_base i32 (i32.const 33312)) + (global $~lib/rt/__rtti_base i32 (i32.const 2480)) + (global $~lib/memory/__data_end i32 (i32.const 2512)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35280)) + (global $~lib/memory/__heap_base i32 (i32.const 35280)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $9 (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $10 (i32.const 512) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\02\t\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $20 (i32.const 2428) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $21 (i32.const 2480) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\02\t\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "testGenericInitializer" (func $class/testGenericInitializer)) @@ -127,6 +141,435 @@ local.get $three i32.store8 offset=6 ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -191,7 +634,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -261,7 +704,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -278,7 +721,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -308,8 +751,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -377,7 +820,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -529,7 +972,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -549,7 +992,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -612,7 +1055,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -765,7 +1208,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -782,7 +1225,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -871,7 +1314,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -914,7 +1357,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -932,7 +1375,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -1000,7 +1443,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1117,7 +1560,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1163,7 +1606,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1195,7 +1638,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1439,7 +1882,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1659,7 +2102,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1767,8 +2210,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1870,7 +2313,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1941,7 +2384,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2098,7 +2541,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2213,7 +2656,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2233,7 +2676,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2281,8 +2724,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2342,7 +2785,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2433,124 +2876,38 @@ call $class/GenericInitializer#constructor drop ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 432 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $class/GenericInitializer~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + (func $~start + call $start:class + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 2112 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 2144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 2288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/array/Array - block $class/GenericInitializer - block $class/Animal - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class/Animal $class/GenericInitializer $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - local.get $0 - local.get $1 - call $class/GenericInitializer~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - unreachable - ) - (func $~start - call $start:class - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 144 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 176 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 320 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 33344 - i32.const 33392 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35312 + i32.const 35360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) (func $class/test (param $animal i32) (result i32) (local $ptr i32) @@ -2655,6 +3012,211 @@ local.get $3 return ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) (local $2 i32) (local $3 i32) @@ -2720,8 +3282,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 480 + i32.const 2400 + i32.const 2448 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -2849,8 +3411,18 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2859,21 +3431,132 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $12 + return ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) @@ -2922,4 +3605,122 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2400 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $class/GenericInitializer~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $class/GenericInitializer + block $class/Animal + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class/Animal $class/GenericInitializer $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + local.get $0 + local.get $1 + call $class/GenericInitializer~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/class.release.wat b/tests/compiler/class.release.wat index d0d28890f0..614fbb77bf 100644 --- a/tests/compiler/class.release.wat +++ b/tests/compiler/class.release.wat @@ -3,11 +3,10 @@ (type $1 (func (param i32))) (type $2 (func (param i32 i32))) (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (type $7 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,35 +17,258 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34336)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36304)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) ",") - (data $8.1 (i32.const 1448) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $9 (i32.const 1484) ",") - (data $9.1 (i32.const 1496) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $10 (i32.const 1536) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\02\t") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $20 (i32.const 3452) ",") + (data $20.1 (i32.const 3464) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $21 (i32.const 3504) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\02\t") (export "testGenericInitializer" (func $class/testGenericInitializer)) (export "memory" (memory $0)) (export "test" (func $export:class/test)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3536 + i32.lt_s + if + i32.const 36336 + i32.const 36384 + 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$3 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$3 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1456 + i32.const 3424 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -67,7 +289,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -100,7 +322,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -109,7 +331,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$139 + block $__inlined_func$~lib/rt/itcms/Object#unlink$152 local.get $0 i32.load offset=4 i32.const -4 @@ -121,19 +343,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34336 + i32.const 36304 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$139 + br $__inlined_func$~lib/rt/itcms/Object#unlink$152 end local.get $0 i32.load offset=8 @@ -141,7 +363,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -170,12 +392,12 @@ i32.const 1 else local.get $1 - i32.const 1536 + i32.const 3504 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -184,7 +406,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1540 + i32.const 3508 i32.add i32.load i32.const 32 @@ -255,7 +477,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -269,7 +491,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -315,7 +537,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -398,7 +620,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -412,7 +634,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -473,7 +695,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -506,7 +728,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -521,7 +743,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -572,7 +794,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -644,7 +866,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -669,7 +891,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -696,7 +918,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -768,10 +990,10 @@ if unreachable end - i32.const 34336 + i32.const 36304 i32.const 0 i32.store - i32.const 35904 + i32.const 37872 i32.const 0 i32.store loop $for-loop|0 @@ -782,7 +1004,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34336 + i32.const 36304 i32.add i32.const 0 i32.store offset=4 @@ -800,7 +1022,7 @@ i32.add i32.const 2 i32.shl - i32.const 34336 + i32.const 36304 i32.add i32.const 0 i32.store offset=96 @@ -818,14 +1040,14 @@ br $for-loop|0 end end - i32.const 34336 - i32.const 35908 + i32.const 36304 + i32.const 37876 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34336 + i32.const 36304 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -910,7 +1132,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34336 + i32.const 36304 i32.lt_u if local.get $0 @@ -999,14 +1221,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34336 + i32.const 36304 i32.lt_u if local.get $0 @@ -1029,7 +1251,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34336 + i32.const 36304 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1058,7 +1280,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1142,7 +1364,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1194,7 +1416,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1226,8 +1448,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1056 - i32.const 1120 + i32.const 3024 + i32.const 3088 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1237,7 +1459,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$71 + block $__inlined_func$~lib/rt/itcms/interrupt$73 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1258,7 +1480,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$71 + br $__inlined_func$~lib/rt/itcms/interrupt$73 end local.get $2 i32.const 0 @@ -1291,8 +1513,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1056 - i32.const 1392 + i32.const 3024 + i32.const 3360 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1394,7 +1616,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1409,7 +1631,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1428,7 +1650,7 @@ i32.and if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1543,7 +1765,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1598,7 +1820,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1568 + i32.const 3536 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1622,7 +1844,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1568 + i32.const 3536 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1652,7 +1874,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1568 + i32.const 3536 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1740,111 +1962,246 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34368 - i32.const 34416 + i32.const 36336 + i32.const 36384 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/array/Array - block $class/GenericInitializer - block $class/Animal - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class/Animal $class/GenericInitializer $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36304 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 3140 + i32.const 3136 + i32.store + i32.const 3144 + i32.const 3136 + i32.store + i32.const 3136 + global.set $~lib/rt/itcms/pinSpace + i32.const 3172 + i32.const 3168 + i32.store + i32.const 3176 + i32.const 3168 + i32.store + i32.const 3168 + global.set $~lib/rt/itcms/toSpace + i32.const 3316 + i32.const 3312 + i32.store + i32.const 3320 + i32.const 3312 + i32.store + i32.const 3312 + global.set $~lib/rt/itcms/fromSpace + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 3536 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1568 + i32.const 3536 i32.lt_s - if - i32.const 34368 - i32.const 34416 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $2 i32.store local.get $0 - i32.load - call $~lib/rt/itcms/__visit + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$157 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$157 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 return end + i32.const 36336 + i32.const 36384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34336 + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 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 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3536 + i32.lt_s + if + i32.const 36336 + i32.const 36384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $export:class/test (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -1853,7 +2210,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1568 + i32.const 3536 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1864,7 +2221,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1568 + i32.const 3536 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1926,11 +2283,76 @@ local.get $0 return end - i32.const 34368 - i32.const 34416 + i32.const 36336 + i32.const 36384 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $class/GenericInitializer + block $class/Animal + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class/Animal $class/GenericInitializer $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3536 + i32.lt_s + if + i32.const 36336 + i32.const 36384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) ) diff --git a/tests/compiler/closure-class.debug.wat b/tests/compiler/closure-class.debug.wat new file mode 100644 index 0000000000..1de522c1dc --- /dev/null +++ b/tests/compiler/closure-class.debug.wat @@ -0,0 +1,14200 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32) (result i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i32 i32) (result i32))) + (type $10 (func (param i32 i64 i32))) + (type $11 (func (param i64 i32) (result i32))) + (type $12 (func (param i32 i64 i32 i32))) + (type $13 (func (param i32 i32 i64) (result i32))) + (type $14 (func (param i32 i32 i32 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 $~lib/native/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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/__closure_env (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/rt/__rtti_base i32 (i32.const 4832)) + (global $~lib/memory/__data_end i32 (i32.const 5004)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37772)) + (global $~lib/memory/__heap_base i32 (i32.const 37772)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00c\00l\00o\00s\00u\00r\00e\00-\00c\00l\00a\00s\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\t\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2700) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00R\00e\00x\00\00\00\00\00\00\00") + (data $30 (i32.const 2764) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00G\00e\00r\00m\00a\00n\00 \00S\00h\00e\00p\00h\00e\00r\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 2828) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 2860) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 2892) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data $34 (i32.const 2924) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $35 (i32.const 2972) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $36 (i32.const 3020) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\r\00\00\00\00\00\00\00\00\00\00\00") + (data $37 (i32.const 3052) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $38 (i32.const 3180) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00*\00\00\00\00\00\00\00\00\00\00\00") + (data $39 (i32.const 3212) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") + (data $40 (i32.const 3244) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") + (data $41 (i32.const 3276) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") + (data $42 (i32.const 3308) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00S\00E\00L\00E\00C\00T\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $43 (i32.const 3356) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00 \00F\00R\00O\00M\00 \00") + (data $44 (i32.const 3388) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00 \00W\00H\00E\00R\00E\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $45 (i32.const 3436) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") + (data $46 (i32.const 3468) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00i\00d\00,\00 \00n\00a\00m\00e\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $47 (i32.const 3516) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00u\00s\00e\00r\00s\00\00\00") + (data $48 (i32.const 3548) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00a\00c\00t\00i\00v\00e\00 \00=\00 \001\00\00\00\00\00\00\00\00\00") + (data $49 (i32.const 3596) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00V\00\00\00S\00E\00L\00E\00C\00T\00 \00i\00d\00,\00 \00n\00a\00m\00e\00 \00F\00R\00O\00M\00 \00u\00s\00e\00r\00s\00 \00W\00H\00E\00R\00E\00 \00a\00c\00t\00i\00v\00e\00 \00=\00 \001\00\00\00\00\00\00\00") + (data $50 (i32.const 3708) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00") + (data $51 (i32.const 3740) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00\00\00\00\00") + (data $52 (i32.const 3772) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00") + (data $53 (i32.const 3804) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00\00\00\00\00") + (data $54 (i32.const 3836) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00") + (data $55 (i32.const 3868) "\1c\00\00\00\00\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00\00\00\00\00") + (data $56 (i32.const 3900) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00") + (data $57 (i32.const 3932) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00\00\00\00\00") + (data $58 (i32.const 3964) "\1c\00\00\00\00\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00") + (data $59 (i32.const 3996) "\1c\00\00\00\00\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00") + (data $60 (i32.const 4028) "\1c\00\00\00\00\00\00\00\00\00\00\00\1d\00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00") + (data $61 (i32.const 4060) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00\00\00\00\00") + (data $62 (i32.const 4092) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00") + (data $63 (i32.const 4124) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00") + (data $64 (i32.const 4156) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $65 (i32.const 4188) "\1c\00\00\00\00\00\00\00\00\00\00\00\1f\00\00\00\08\00\00\00!\00\00\00\00\00\00\00\00\00\00\00") + (data $66 (i32.const 4220) "\1c\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\08\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00") + (data $67 (i32.const 4252) "\1c\00\00\00\00\00\00\00\00\00\00\00\"\00\00\00\08\00\00\00#\00\00\00\00\00\00\00\00\00\00\00") + (data $68 (i32.const 4284) "\1c\00\00\00\00\00\00\00\00\00\00\00\"\00\00\00\08\00\00\00$\00\00\00\00\00\00\00\00\00\00\00") + (data $69 (i32.const 4316) "\1c\00\00\00\00\00\00\00\00\00\00\00$\00\00\00\08\00\00\00%\00\00\00\00\00\00\00\00\00\00\00") + (data $70 (i32.const 4348) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00&\00\00\00\00\00\00\00\00\00\00\00") + (data $71 (i32.const 4380) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00\00\00\00\00") + (data $72 (i32.const 4412) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00(\00\00\00\00\00\00\00\00\00\00\00") + (data $73 (i32.const 4444) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00)\00\00\00\00\00\00\00\00\00\00\00") + (data $74 (i32.const 4476) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00*\00\00\00\00\00\00\00\00\00\00\00") + (data $75 (i32.const 4508) "\1c\00\00\00\00\00\00\00\00\00\00\00&\00\00\00\08\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") + (data $76 (i32.const 4540) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data $77 (i32.const 4572) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data $78 (i32.const 4604) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") + (data $79 (i32.const 4636) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00/\00\00\00\00\00\00\00\00\00\00\00") + (data $80 (i32.const 4668) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $81 (i32.const 4700) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $82 (i32.const 4732) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $83 (i32.const 4764) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data $84 (i32.const 4796) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data $85 (i32.const 4832) "*\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00 \00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\02A\00\00 \00\00\00") + (table $0 53 53 funcref) + (elem $0 (i32.const 1) $closure-class/Counter#getIncrementClosure~anonymous|0 $closure-class/Counter#getCountClosure~anonymous|0 $closure-class/BankAccount#getDepositClosure~anonymous|0 $closure-class/BankAccount#getWithdrawClosure~anonymous|0 $closure-class/BankAccount#getBalanceClosure~anonymous|0 $closure-class/BankAccount#getTransactionCountClosure~anonymous|0 $closure-class/Calculator#getOperationClosure~anonymous|0 $closure-class/Outer#getComputeClosure~anonymous|0 $closure-class/Outer#getInnerSetterClosure~anonymous|0 $closure-class/Animal#getAgeClosure~anonymous|0 $closure-class/Animal#getAgeIncrementClosure~anonymous|0 $closure-class/Dog#getBreedClosure~anonymous|0 $closure-class/DataProcessor#getProcessorClosure~anonymous|0 $closure-class/QueryBuilder#getSelectClosure~anonymous|0 $closure-class/QueryBuilder#getFromClosure~anonymous|0 $closure-class/QueryBuilder#getWhereClosure~anonymous|0 $closure-class/QueryBuilder#getBuildClosure~anonymous|0 $closure-class/StateMachine#getStartClosure~anonymous|0 $closure-class/StateMachine#getPauseClosure~anonymous|0 $closure-class/StateMachine#getStopClosure~anonymous|0 $closure-class/StateMachine#getResetClosure~anonymous|0 $closure-class/StateMachine#getStateClosure~anonymous|0 $closure-class/Observable#getSubscribeClosure~anonymous|0 $closure-class/Observable#getSetClosure~anonymous|0 $closure-class/Observable#getGetClosure~anonymous|0 $closure-class/ObserverState#getCountObserver~anonymous|0 $closure-class/ObserverState#getDiffObserver~anonymous|0 $closure-class/Box#getMapClosure~anonymous|0 $closure-class/Box#getValueClosure~anonymous|0 $closure-class/testBoxMap~anonymous|0 $closure-class/testBoxMap~anonymous|1 $closure-class/testBoxMap~anonymous|2 $closure-class/Box#getFlatMapClosure~anonymous|0 $closure-class/testBoxFlatMap~anonymous|0 $closure-class/ChainableCounter#getAddClosure~anonymous|0 $closure-class/ChainableCounter#getMultiplyClosure~anonymous|0 $closure-class/Task#getThenClosure~anonymous|0 $closure-class/Task#getCompleteClosure~anonymous|0 $closure-class/testTaskCallbacks~anonymous|0 $closure-class/testTaskCallbackAfterComplete~anonymous|0 $closure-class/Resource#getAcquireClosure~anonymous|0 $closure-class/Resource#getReleaseClosure~anonymous|0 $closure-class/Resource#getUseClosure~anonymous|0 $closure-class/testResourceManagement~anonymous|0 $closure-class/testResourceManagement~anonymous|1 $closure-class/testResourceManagement~anonymous|2 $closure-class/testResourceManagement~anonymous|3 $closure-class/testResourceManagement~anonymous|4 $closure-class/TreeNode#getSumClosure~anonymous|0 $closure-class/TreeNode#getDepthClosure~anonymous|0 $closure-class/Range#getHasNextClosure~anonymous|0 $closure-class/Range#getNextClosure~anonymous|0) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2064 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2064 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 2064 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 2192 + i32.const 2256 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 2064 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2064 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 2000 + i32.const 2336 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 2000 + i32.const 2064 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $closure-class/Counter#set:count (param $this i32) (param $count i32) + local.get $this + local.get $count + i32.store + ) + (func $closure-class/Counter#get:count (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/Counter#getIncrementClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 1 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/Counter#getCountClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 2 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/BankAccount#set:balance (param $this i32) (param $balance i32) + local.get $this + local.get $balance + i32.store + ) + (func $closure-class/BankAccount#set:transactionCount (param $this i32) (param $transactionCount i32) + local.get $this + local.get $transactionCount + i32.store offset=4 + ) + (func $closure-class/BankAccount#get:balance (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/BankAccount#get:transactionCount (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/BankAccount#getDepositClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 3 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/BankAccount#getWithdrawClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 4 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/BankAccount#getBalanceClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 5 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/BankAccount#getTransactionCountClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 6 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/Calculator#set:result (param $this i32) (param $result i32) + local.get $this + local.get $result + i32.store + ) + (func $closure-class/Calculator#get:result (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/Calculator#getOperationClosure (param $this i32) (param $operand i32) (param $operation i32) (result i32) + (local $$env i32) + (local $4 i32) + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $operation + i32.store offset=4 + local.get $$env + local.get $this + i32.store offset=8 + local.get $$env + local.get $operand + i32.store offset=12 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 7 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + return + ) + (func $closure-class/Inner#set:value (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 2064 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $closure-class/Outer#set:inner (param $this i32) (param $inner i32) + local.get $this + local.get $inner + i32.store + local.get $this + local.get $inner + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/Outer#set:multiplier (param $this i32) (param $multiplier i32) + local.get $this + local.get $multiplier + i32.store offset=4 + ) + (func $closure-class/Outer#get:inner (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/Inner#get:value (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/Outer#get:multiplier (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/Outer#getComputeClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 8 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/Outer#getInnerSetterClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 9 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/Animal#set:name (param $this i32) (param $name i32) + local.get $this + local.get $name + i32.store + local.get $this + local.get $name + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/Animal#set:age (param $this i32) (param $age i32) + local.get $this + local.get $age + i32.store offset=4 + ) + (func $closure-class/Dog#set:breed (param $this i32) (param $breed i32) + local.get $this + local.get $breed + i32.store offset=8 + local.get $this + local.get $breed + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/Animal#get:age (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/Animal#getAgeClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 10 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/Animal#getAgeIncrementClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 11 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/Dog#get:breed (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $closure-class/Dog#getBreedClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 15 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 12 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/array/Array<%28i32%29=>void>#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<%28i32%29=>void>#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array<%28i32%29=>void>#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array<%28i32%29=>void>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $closure-class/EventEmitter#set:listeners (param $this i32) (param $listeners i32) + local.get $this + local.get $listeners + i32.store + local.get $this + local.get $listeners + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/DataProcessor#set:processedCount (param $this i32) (param $processedCount i32) + local.get $this + local.get $processedCount + i32.store + ) + (func $closure-class/DataProcessor#set:lastValue (param $this i32) (param $lastValue i32) + local.get $this + local.get $lastValue + i32.store offset=4 + ) + (func $closure-class/DataProcessor#set:sum (param $this i32) (param $sum i32) + local.get $this + local.get $sum + i32.store offset=8 + ) + (func $closure-class/DataProcessor#get:processedCount (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/DataProcessor#get:sum (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $closure-class/DataProcessor#getProcessorClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 13 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/EventEmitter#get:listeners (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<%28i32%29=>void>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array<%28i32%29=>void>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/DataProcessor#get:lastValue (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/QueryBuilder#set:selectFields (param $this i32) (param $selectFields i32) + local.get $this + local.get $selectFields + i32.store + local.get $this + local.get $selectFields + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/QueryBuilder#set:tableName (param $this i32) (param $tableName i32) + local.get $this + local.get $tableName + i32.store offset=4 + local.get $this + local.get $tableName + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/QueryBuilder#set:whereClause (param $this i32) (param $whereClause i32) + local.get $this + local.get $whereClause + i32.store offset=8 + local.get $this + local.get $whereClause + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/QueryBuilder#getSelectClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 20 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 14 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/QueryBuilder#getFromClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 20 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 15 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/QueryBuilder#getWhereClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 20 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 16 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/QueryBuilder#get:selectFields (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/QueryBuilder#get:tableName (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/QueryBuilder#get:whereClause (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $closure-class/QueryBuilder#getBuildClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 15 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 17 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/StateMachine#set:state (param $this i32) (param $state i32) + local.get $this + local.get $state + i32.store + ) + (func $closure-class/StateMachine#get:state (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/StateMachine#getStartClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 18 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/StateMachine#getPauseClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 19 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/StateMachine#getStopClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 20 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/StateMachine#getResetClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 21 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/StateMachine#getStateClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 22 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/Observable#set:value (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $closure-class/Observable#set:observers (param $this i32) (param $observers i32) + local.get $this + local.get $observers + i32.store offset=4 + local.get $this + local.get $observers + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/Observable#get:observers (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/Observable#getSubscribeClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 25 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 23 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/Observable#get:value (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/Observable#getSetClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 24 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/Observable#getGetClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 25 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/ObserverState#set:changeCount (param $this i32) (param $changeCount i32) + local.get $this + local.get $changeCount + i32.store + ) + (func $closure-class/ObserverState#set:totalDiff (param $this i32) (param $totalDiff i32) + local.get $this + local.get $totalDiff + i32.store offset=4 + ) + (func $closure-class/ObserverState#get:changeCount (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/ObserverState#getCountObserver (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 27 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 26 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/ObserverState#get:totalDiff (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/ObserverState#getDiffObserver (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 27 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 27 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/Box#set:value (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store + ) + (func $closure-class/Box#get:value (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/Box#getMapClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 29 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 28 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/Box#getValueClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 29 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/testBoxMap~anonymous|0 (param $v i32) (result i32) + local.get $v + i32.const 2 + i32.mul + ) + (func $closure-class/testBoxMap~anonymous|1 (param $v i32) (result i32) + local.get $v + i32.const 3 + i32.add + ) + (func $closure-class/testBoxMap~anonymous|2 (param $v i32) (result i32) + local.get $v + local.get $v + i32.mul + ) + (func $closure-class/Box#getFlatMapClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 31 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 33 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/testBoxFlatMap~anonymous|0 (param $v i32) (result i32) + i32.const 0 + local.get $v + i32.const 10 + i32.mul + call $closure-class/Box#constructor + ) + (func $closure-class/ChainableCounter#set:count (param $this i32) (param $count i32) + local.get $this + local.get $count + i32.store + ) + (func $closure-class/ChainableCounter#get:count (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/ChainableCounter#getAddClosure (param $this i32) (param $amount i32) (result i32) + (local $$env i32) + (local $3 i32) + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + local.get $$env + local.get $amount + i32.store offset=8 + i32.const 8 + i32.const 34 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 35 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/ChainableCounter#getMultiplyClosure (param $this i32) (param $factor i32) (result i32) + (local $$env i32) + (local $3 i32) + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + local.get $$env + local.get $factor + i32.store offset=8 + i32.const 8 + i32.const 34 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 36 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/Task#set:completed (param $this i32) (param $completed i32) + local.get $this + local.get $completed + i32.store8 + ) + (func $closure-class/Task#set:result (param $this i32) (param $result i32) + local.get $this + local.get $result + i32.store offset=4 + ) + (func $closure-class/Task#set:callbacks (param $this i32) (param $callbacks i32) + local.get $this + local.get $callbacks + i32.store offset=8 + local.get $this + local.get $callbacks + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/Task#get:completed (param $this i32) (result i32) + local.get $this + i32.load8_u + ) + (func $closure-class/Task#get:result (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/Task#get:callbacks (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $closure-class/Task#getThenClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 36 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 37 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/Task#getCompleteClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 38 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/testTaskCallbacks~anonymous|0 (param $result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $result + i32.const 2 + i32.mul + i32.store offset=4 + ) + (func $closure-class/testTaskCallbackAfterComplete~anonymous|0 (param $result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $result + i32.store offset=4 + ) + (func $closure-class/Resource#set:acquired (param $this i32) (param $acquired i32) + local.get $this + local.get $acquired + i32.store8 + ) + (func $closure-class/Resource#set:useCount (param $this i32) (param $useCount i32) + local.get $this + local.get $useCount + i32.store offset=4 + ) + (func $closure-class/Resource#get:acquired (param $this i32) (result i32) + local.get $this + i32.load8_u + ) + (func $closure-class/Resource#getAcquireClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 41 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/Resource#getReleaseClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 42 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/Resource#get:useCount (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/Resource#getUseClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 38 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 43 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/testResourceManagement~anonymous|0 (result i32) + i32.const 42 + ) + (func $closure-class/testResourceManagement~anonymous|1 (result i32) + i32.const 10 + ) + (func $closure-class/testResourceManagement~anonymous|2 (result i32) + i32.const 20 + ) + (func $closure-class/testResourceManagement~anonymous|3 (result i32) + i32.const 30 + ) + (func $closure-class/testResourceManagement~anonymous|4 (result i32) + i32.const 42 + ) + (func $closure-class/TreeNode#set:value (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $closure-class/TreeNode#set:children (param $this i32) (param $children i32) + local.get $this + local.get $children + i32.store offset=4 + local.get $this + local.get $children + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/TreeNode#get:children (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/TreeNode#get:value (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/TreeNode#getSumClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 49 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/TreeNode#getDepthClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 50 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/Range#set:current (param $this i32) (param $current i32) + local.get $this + local.get $current + i32.store + ) + (func $closure-class/Range#set:endVal (param $this i32) (param $endVal i32) + local.get $this + local.get $endVal + i32.store offset=4 + ) + (func $closure-class/Range#set:step (param $this i32) (param $step i32) + local.get $this + local.get $step + i32.store offset=8 + ) + (func $closure-class/Range#get:step (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $closure-class/Range#get:current (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/Range#get:endVal (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/Range#getHasNextClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 51 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-class/Range#getNextClosure (param $this i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 52 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $start:closure-class + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 2112 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 2144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 2288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $closure-class/testBasicThisCapture + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testMultipleInstances + i32.const 32 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testBankAccount + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 125 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testCalculatorClosures + i32.const 24 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 168 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testNestedClosures + i32.const 60 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 226 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testInheritanceClosures + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 285 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testEventEmitterPattern + i32.const 120 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 345 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testBuilderPattern + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 403 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testStateMachine + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 486 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testObservable + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 562 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testBoxMap + i32.const 169 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 604 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testBoxFlatMap + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 615 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testClosureChaining + i32.const 35 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 662 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testTaskCallbacks + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 720 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testTaskCallbackAfterComplete + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 738 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testResourceManagement + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 814 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testTreePattern + i32.const 2103 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 889 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testRangeIterator + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 944 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testReverseRangeIterator + i32.const 30 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 959 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + ) + (func $~start + call $start:closure-class + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 37792 + i32.const 37840 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $closure-class/Counter#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/Counter#set:count + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/Counter#getIncrementClosure~anonymous|0 + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-class/Counter#get:count + i32.const 1 + i32.add + call $closure-class/Counter#set:count + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Counter#getCountClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Counter#get:count + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/testBasicThisCapture (result i32) + (local $c i32) + (local $inc i32) + (local $get i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/Counter#constructor + local.tee $c + i32.store + global.get $~lib/memory/__stack_pointer + local.get $c + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $closure-class/Counter#getIncrementClosure + local.tee $inc + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $c + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $closure-class/Counter#getCountClosure + local.tee $get + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $closure-class/testMultipleInstances (result i32) + (local $c1 i32) + (local $c2 i32) + (local $inc1 i32) + (local $inc2 i32) + (local $get1 i32) + (local $get2 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 56 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/Counter#constructor + local.tee $c1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/Counter#constructor + local.tee $c2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $c1 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $closure-class/Counter#getIncrementClosure + local.tee $inc1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $c2 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $closure-class/Counter#getIncrementClosure + local.tee $inc2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $c1 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $closure-class/Counter#getCountClosure + local.tee $get1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $c2 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $closure-class/Counter#getCountClosure + local.tee $get2 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc1 + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc1 + local.tee $7 + i32.store offset=32 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc1 + local.tee $8 + i32.store offset=36 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc2 + local.tee $9 + i32.store offset=40 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc2 + local.tee $10 + i32.store offset=44 + local.get $10 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get1 + local.tee $11 + i32.store offset=48 + local.get $11 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $11 + i32.load + call_indirect (type $2) + i32.const 10 + i32.mul + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get2 + local.tee $12 + i32.store offset=52 + local.get $12 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $12 + i32.load + call_indirect (type $2) + i32.add + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + ) + (func $closure-class/BankAccount#constructor (param $this i32) (param $initialBalance i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $closure-class/BankAccount#set:balance + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $closure-class/BankAccount#set:transactionCount + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $initialBalance + call $closure-class/BankAccount#set:balance + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $closure-class/BankAccount#getDepositClosure~anonymous|0 (param $amount i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/BankAccount#get:balance + local.get $amount + i32.add + call $closure-class/BankAccount#set:balance + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/BankAccount#get:transactionCount + i32.const 1 + i32.add + call $closure-class/BankAccount#set:transactionCount + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/BankAccount#getWithdrawClosure~anonymous|0 (param $amount i32) (result i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $closure-class/BankAccount#get:balance + local.get $amount + i32.ge_s + if + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/BankAccount#get:balance + local.get $amount + i32.sub + call $closure-class/BankAccount#set:balance + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/BankAccount#get:transactionCount + i32.const 1 + i32.add + call $closure-class/BankAccount#set:transactionCount + i32.const 1 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $closure-class/BankAccount#getBalanceClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/BankAccount#get:balance + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/BankAccount#getTransactionCountClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/BankAccount#get:transactionCount + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/testBankAccount (result i32) + (local $account i32) + (local $deposit i32) + (local $withdraw i32) + (local $getBalance i32) + (local $getTxCount i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + global.get $~lib/memory/__stack_pointer + i32.const 68 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 68 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 100 + call $closure-class/BankAccount#constructor + local.tee $account + i32.store + global.get $~lib/memory/__stack_pointer + local.get $account + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=4 + local.get $16 + call $closure-class/BankAccount#getDepositClosure + local.tee $deposit + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $account + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=4 + local.get $16 + call $closure-class/BankAccount#getWithdrawClosure + local.tee $withdraw + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $account + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=4 + local.get $16 + call $closure-class/BankAccount#getBalanceClosure + local.tee $getBalance + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $account + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=4 + local.get $16 + call $closure-class/BankAccount#getTransactionCountClosure + local.tee $getTxCount + i32.store offset=20 + i32.const 50 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $deposit + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getBalance + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + i32.const 150 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 30 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $withdraw + local.tee $7 + i32.store offset=32 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 113 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getBalance + local.tee $8 + i32.store offset=36 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $2) + i32.const 120 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 200 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $withdraw + local.tee $9 + i32.store offset=40 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 116 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getBalance + local.tee $10 + i32.store offset=44 + local.get $10 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $2) + i32.const 120 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 117 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getTxCount + local.tee $11 + i32.store offset=48 + local.get $11 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $11 + i32.load + call_indirect (type $2) + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 118 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 100 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $deposit + local.tee $12 + i32.store offset=52 + local.get $12 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $12 + i32.load + call_indirect (type $3) + i32.const 220 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $withdraw + local.tee $13 + i32.store offset=56 + local.get $13 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $13 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 121 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getBalance + local.tee $14 + i32.store offset=60 + local.get $14 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $14 + i32.load + call_indirect (type $2) + i32.const 1000 + i32.mul + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getTxCount + local.tee $15 + i32.store offset=64 + local.get $15 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $15 + i32.load + call_indirect (type $2) + i32.add + local.set $16 + global.get $~lib/memory/__stack_pointer + i32.const 68 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $16 + return + ) + (func $closure-class/Calculator#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/Calculator#set:result + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/Calculator#getOperationClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 0 + i32.eq + if + local.get $$closureEnv + i32.load offset=8 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $$closureEnv + i32.load offset=8 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-class/Calculator#get:result + local.get $$closureEnv + i32.load offset=12 + i32.add + call $closure-class/Calculator#set:result + else + local.get $$closureEnv + i32.load offset=4 + i32.const 1 + i32.eq + if + local.get $$closureEnv + i32.load offset=8 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $$closureEnv + i32.load offset=8 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-class/Calculator#get:result + local.get $$closureEnv + i32.load offset=12 + i32.sub + call $closure-class/Calculator#set:result + else + local.get $$closureEnv + i32.load offset=4 + i32.const 2 + i32.eq + if + local.get $$closureEnv + i32.load offset=8 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $$closureEnv + i32.load offset=8 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-class/Calculator#get:result + local.get $$closureEnv + i32.load offset=12 + i32.mul + call $closure-class/Calculator#set:result + end + end + end + local.get $$closureEnv + i32.load offset=8 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Calculator#get:result + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/testCalculatorClosures (result i32) + (local $calc i32) + (local $addFive i32) + (local $subtractTwo i32) + (local $multiplyThree i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 36 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/Calculator#constructor + local.tee $calc + i32.store + global.get $~lib/memory/__stack_pointer + local.get $calc + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 0 + call $closure-class/Calculator#getOperationClosure + local.tee $addFive + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $calc + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 1 + call $closure-class/Calculator#getOperationClosure + local.tee $subtractTwo + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $calc + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 2 + call $closure-class/Calculator#getOperationClosure + local.tee $multiplyThree + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $addFive + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $addFive + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $subtractTwo + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $multiplyThree + local.tee $7 + i32.store offset=32 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $2) + drop + local.get $calc + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $closure-class/Calculator#get:result + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $closure-class/Inner#constructor (param $this i32) (param $v i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $closure-class/Inner#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $v + call $closure-class/Inner#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $closure-class/Outer#constructor (param $this i32) (param $innerValue i32) (param $mult i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + call $closure-class/Outer#set:inner + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + call $closure-class/Outer#set:multiplier + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $innerValue + call $closure-class/Inner#constructor + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $closure-class/Outer#set:inner + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $mult + call $closure-class/Outer#set:multiplier + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $closure-class/Outer#getComputeClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-class/Outer#get:inner + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Inner#get:value + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Outer#get:multiplier + i32.mul + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/Outer#getInnerSetterClosure~anonymous|0 (param $v i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/Outer#get:inner + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $v + call $closure-class/Inner#set:value + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/testNestedClosures (result i32) + (local $outer i32) + (local $compute i32) + (local $setInner i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + i32.const 3 + call $closure-class/Outer#constructor + local.tee $outer + i32.store + global.get $~lib/memory/__stack_pointer + local.get $outer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $closure-class/Outer#getComputeClosure + local.tee $compute + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $outer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $closure-class/Outer#getInnerSetterClosure + local.tee $setInner + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $compute + local.tee $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + i32.const 30 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 219 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $setInner + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $compute + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + i32.const 60 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 222 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $compute + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $closure-class/Animal#constructor (param $this i32) (param $name i32) (param $age i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + call $closure-class/Animal#set:name + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + call $closure-class/Animal#set:age + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $name + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $closure-class/Animal#set:name + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $age + call $closure-class/Animal#set:age + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $closure-class/Dog#constructor (param $this i32) (param $name i32) (param $age i32) (param $breed i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $closure-class/Dog#set:breed + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $name + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + local.get $age + call $closure-class/Animal#constructor + local.tee $this + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $breed + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $closure-class/Dog#set:breed + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $closure-class/Animal#getAgeClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Animal#get:age + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/Animal#getAgeIncrementClosure~anonymous|0 + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-class/Animal#get:age + i32.const 1 + i32.add + call $closure-class/Animal#set:age + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Dog#getBreedClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Dog#get:breed + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-class/testInheritanceClosures (result i32) + (local $dog i32) + (local $getAge i32) + (local $incAge i32) + (local $getBreed 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 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2752 + i32.const 3 + i32.const 2784 + call $closure-class/Dog#constructor + local.tee $dog + i32.store + global.get $~lib/memory/__stack_pointer + local.get $dog + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $closure-class/Animal#getAgeClosure + local.tee $getAge + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $dog + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $closure-class/Animal#getAgeIncrementClosure + local.tee $incAge + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $dog + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $closure-class/Dog#getBreedClosure + local.tee $getBreed + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getAge + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 277 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getBreed + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 278 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $incAge + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $incAge + local.tee $7 + i32.store offset=32 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getAge + local.tee $8 + i32.store offset=36 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $2) + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/array/Array<%28i32%29=>void>#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28i32%29=>void>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28i32%29=>void>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28i32%29=>void>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28i32%29=>void>#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 2944 + i32.const 2992 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array<%28i32%29=>void>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array<%28i32%29=>void>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array<%28i32%29=>void>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array<%28i32%29=>void>#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $closure-class/EventEmitter#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<%28i32%29=>void>#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $closure-class/EventEmitter#set:listeners + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/DataProcessor#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/DataProcessor#set:processedCount + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/DataProcessor#set:lastValue + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/DataProcessor#set:sum + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/DataProcessor#getProcessorClosure~anonymous|0 (param $data i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/DataProcessor#get:processedCount + i32.const 1 + i32.add + call $closure-class/DataProcessor#set:processedCount + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $data + call $closure-class/DataProcessor#set:lastValue + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/DataProcessor#get:sum + local.get $data + i32.add + call $closure-class/DataProcessor#set:sum + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 2944 + i32.const 2992 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28i32%29=>void>#push (param $this i32) (param $value i32) (result i32) + (local $oldLen i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<%28i32%29=>void>#get:length_ + local.set $oldLen + local.get $oldLen + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 1 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<%28i32%29=>void>#get:dataStart + local.get $oldLen + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $len + call $~lib/array/Array<%28i32%29=>void>#set:length_ + local.get $len + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $closure-class/EventEmitter#addListener (param $this i32) (param $listener i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $closure-class/EventEmitter#get:listeners + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $listener + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array<%28i32%29=>void>#push + drop + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28i32%29=>void>#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<%28i32%29=>void>#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<%28i32%29=>void>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28i32%29=>void>#get:length_ + i32.ge_u + if + i32.const 2192 + i32.const 2992 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28i32%29=>void>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 3072 + i32.const 2992 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-class/EventEmitter#emit (param $this i32) (param $data i32) + (local $i i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $closure-class/EventEmitter#get:listeners + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<%28i32%29=>void>#get:length + i32.lt_s + if + local.get $data + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $closure-class/EventEmitter#get:listeners + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array<%28i32%29=>void>#__get + local.tee $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $3) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/testEventEmitterPattern (result i32) + (local $emitter i32) + (local $processor1 i32) + (local $processor2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/EventEmitter#constructor + local.tee $emitter + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/DataProcessor#constructor + local.tee $processor1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/DataProcessor#constructor + local.tee $processor2 + i32.store offset=8 + local.get $emitter + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + local.get $processor1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $3 + call $closure-class/DataProcessor#getProcessorClosure + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + call $closure-class/EventEmitter#addListener + local.get $emitter + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + local.get $processor2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $3 + call $closure-class/DataProcessor#getProcessorClosure + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + call $closure-class/EventEmitter#addListener + local.get $emitter + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + i32.const 10 + call $closure-class/EventEmitter#emit + local.get $emitter + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + i32.const 20 + call $closure-class/EventEmitter#emit + local.get $emitter + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + i32.const 30 + call $closure-class/EventEmitter#emit + local.get $processor1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $closure-class/DataProcessor#get:processedCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 336 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $processor2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $closure-class/DataProcessor#get:processedCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 337 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $processor1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $closure-class/DataProcessor#get:sum + i32.const 60 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 338 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $processor2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $closure-class/DataProcessor#get:sum + i32.const 60 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 339 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $processor1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $closure-class/DataProcessor#get:lastValue + i32.const 30 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 340 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $processor2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $closure-class/DataProcessor#get:lastValue + i32.const 30 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 341 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $processor1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $closure-class/DataProcessor#get:sum + local.get $processor2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $closure-class/DataProcessor#get:sum + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-class/QueryBuilder#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3200 + call $closure-class/QueryBuilder#set:selectFields + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 96 + call $closure-class/QueryBuilder#set:tableName + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 96 + call $closure-class/QueryBuilder#set:whereClause + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/QueryBuilder#getSelectClosure~anonymous|0 (param $fields i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $fields + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/QueryBuilder#set:selectFields + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/QueryBuilder#getFromClosure~anonymous|0 (param $table i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $table + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/QueryBuilder#set:tableName + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/QueryBuilder#getWhereClosure~anonymous|0 (param $clause i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $clause + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/QueryBuilder#set:whereClause + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/QueryBuilder#getBuildClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $query i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/__closure_env + local.set $$closureEnv + global.get $~lib/memory/__stack_pointer + i32.const 3328 + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $2 + call $closure-class/QueryBuilder#get:selectFields + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/string/String.__concat + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 3376 + call $~lib/string/String.__concat + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $closure-class/QueryBuilder#get:tableName + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__concat + local.tee $query + i32.store offset=20 + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/QueryBuilder#get:whereClause + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/string/String#get:length + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $query + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 3408 + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $closure-class/QueryBuilder#get:whereClause + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/string/String.__concat + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__concat + local.tee $query + i32.store offset=20 + end + local.get $query + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $closure-class/testBuilderPattern (result i32) + (local $builder i32) + (local $select i32) + (local $from i32) + (local $where i32) + (local $build i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $query i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 44 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/QueryBuilder#constructor + local.tee $builder + i32.store + global.get $~lib/memory/__stack_pointer + local.get $builder + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $closure-class/QueryBuilder#getSelectClosure + local.tee $select + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $builder + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $closure-class/QueryBuilder#getFromClosure + local.tee $from + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $builder + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $closure-class/QueryBuilder#getWhereClosure + local.tee $where + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $builder + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $closure-class/QueryBuilder#getBuildClosure + local.tee $build + i32.store offset=20 + i32.const 3488 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $select + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $3) + i32.const 3536 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $from + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $3) + i32.const 3568 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $where + local.tee $7 + i32.store offset=32 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $build + local.tee $8 + i32.store offset=36 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $2) + local.tee $query + i32.store offset=40 + local.get $query + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + i32.const 3616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 399 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $closure-class/StateMachine#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 21 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/StateMachine#set:state + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/StateMachine#getStartClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/StateMachine#get:state + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/StateMachine#get:state + i32.const 2 + i32.eq + end + if + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1 + call $closure-class/StateMachine#set:state + i32.const 1 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/StateMachine#getPauseClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/StateMachine#get:state + i32.const 1 + i32.eq + if + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + call $closure-class/StateMachine#set:state + i32.const 1 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/StateMachine#getStopClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/StateMachine#get:state + i32.const 1 + i32.eq + if (result i32) + i32.const 1 + else + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/StateMachine#get:state + i32.const 2 + i32.eq + end + if + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 3 + call $closure-class/StateMachine#set:state + i32.const 1 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/StateMachine#getResetClosure~anonymous|0 + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $closure-class/StateMachine#set:state + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/StateMachine#getStateClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/StateMachine#get:state + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/testStateMachine (result i32) + (local $sm i32) + (local $start i32) + (local $pause i32) + (local $stop i32) + (local $reset i32) + (local $getState i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + global.get $~lib/memory/__stack_pointer + i32.const 84 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 84 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/StateMachine#constructor + local.tee $sm + i32.store + global.get $~lib/memory/__stack_pointer + local.get $sm + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=4 + local.get $20 + call $closure-class/StateMachine#getStartClosure + local.tee $start + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $sm + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=4 + local.get $20 + call $closure-class/StateMachine#getPauseClosure + local.tee $pause + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $sm + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=4 + local.get $20 + call $closure-class/StateMachine#getStopClosure + local.tee $stop + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $sm + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=4 + local.get $20 + call $closure-class/StateMachine#getResetClosure + local.tee $reset + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $sm + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=4 + local.get $20 + call $closure-class/StateMachine#getStateClosure + local.tee $getState + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getState + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 463 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $start + local.tee $7 + i32.store offset=32 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 465 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getState + local.tee $8 + i32.store offset=36 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $2) + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 466 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $start + local.tee $9 + i32.store offset=40 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 468 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $pause + local.tee $10 + i32.store offset=44 + local.get $10 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 470 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getState + local.tee $11 + i32.store offset=48 + local.get $11 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $11 + i32.load + call_indirect (type $2) + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 471 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $start + local.tee $12 + i32.store offset=52 + local.get $12 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $12 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 473 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getState + local.tee $13 + i32.store offset=56 + local.get $13 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $13 + i32.load + call_indirect (type $2) + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 474 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $stop + local.tee $14 + i32.store offset=60 + local.get $14 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $14 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 476 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getState + local.tee $15 + i32.store offset=64 + local.get $15 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $15 + i32.load + call_indirect (type $2) + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 477 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $start + local.tee $16 + i32.store offset=68 + local.get $16 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $16 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 479 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $reset + local.tee $17 + i32.store offset=72 + local.get $17 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $17 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getState + local.tee $18 + i32.store offset=76 + local.get $18 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $18 + i32.load + call_indirect (type $2) + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 482 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getState + local.tee $19 + i32.store offset=80 + local.get $19 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $19 + i32.load + call_indirect (type $2) + local.set $20 + global.get $~lib/memory/__stack_pointer + i32.const 84 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $20 + return + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 24 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 2944 + i32.const 2992 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array<%28i32%2Ci32%29=>void>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array<%28i32%2Ci32%29=>void>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array<%28i32%2Ci32%29=>void>#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $closure-class/Observable#constructor (param $this i32) (param $initial i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 23 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $closure-class/Observable#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $closure-class/Observable#set:observers + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $initial + call $closure-class/Observable#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#push (param $this i32) (param $value i32) (result i32) + (local $oldLen i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#get:length_ + local.set $oldLen + local.get $oldLen + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 1 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#get:dataStart + local.get $oldLen + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $len + call $~lib/array/Array<%28i32%2Ci32%29=>void>#set:length_ + local.get $len + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $closure-class/Observable#getSubscribeClosure~anonymous|0 (param $observer i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $closure-class/Observable#get:observers + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $observer + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#push + drop + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#get:length_ + i32.ge_u + if + i32.const 2192 + i32.const 2992 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 3072 + i32.const 2992 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-class/Observable#getSetClosure~anonymous|0 (param $newValue i32) + (local $$closureEnv i32) + (local $oldValue i32) + (local $i i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $closure-class/Observable#get:value + local.set $oldValue + local.get $$closureEnv + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $newValue + call $closure-class/Observable#set:value + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $$closureEnv + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $closure-class/Observable#get:observers + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#get:length + i32.lt_s + if + local.get $oldValue + local.get $newValue + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $$closureEnv + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $closure-class/Observable#get:observers + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $i + call $~lib/array/Array<%28i32%2Ci32%29=>void>#__get + local.tee $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $1) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Observable#getGetClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Observable#get:value + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/ObserverState#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 26 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/ObserverState#set:changeCount + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/ObserverState#set:totalDiff + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/ObserverState#getCountObserver~anonymous|0 (param $oldVal i32) (param $newVal i32) + (local $$closureEnv i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $$closureEnv + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $closure-class/ObserverState#get:changeCount + i32.const 1 + i32.add + call $closure-class/ObserverState#set:changeCount + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/ObserverState#getDiffObserver~anonymous|0 (param $oldVal i32) (param $newVal i32) + (local $$closureEnv i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $$closureEnv + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $closure-class/ObserverState#get:totalDiff + local.get $newVal + local.get $oldVal + i32.sub + i32.add + call $closure-class/ObserverState#set:totalDiff + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/testObservable (result i32) + (local $obs i32) + (local $subscribe i32) + (local $set i32) + (local $get i32) + (local $state i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 56 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $closure-class/Observable#constructor + local.tee $obs + i32.store + global.get $~lib/memory/__stack_pointer + local.get $obs + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $closure-class/Observable#getSubscribeClosure + local.tee $subscribe + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $obs + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $closure-class/Observable#getSetClosure + local.tee $set + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $obs + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $closure-class/Observable#getGetClosure + local.tee $get + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/ObserverState#constructor + local.tee $state + i32.store offset=20 + local.get $state + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=28 + local.get $12 + call $closure-class/ObserverState#getCountObserver + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $subscribe + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $3) + local.get $state + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=28 + local.get $12 + call $closure-class/ObserverState#getDiffObserver + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $subscribe + local.tee $6 + i32.store offset=32 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $3) + i32.const 10 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $set + local.tee $7 + i32.store offset=36 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $3) + i32.const 25 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $set + local.tee $8 + i32.store offset=40 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $3) + i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $set + local.tee $9 + i32.store offset=44 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $10 + i32.store offset=48 + local.get $10 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $2) + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 556 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $state + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $closure-class/ObserverState#get:changeCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $state + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $closure-class/ObserverState#get:totalDiff + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 558 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $11 + i32.store offset=52 + local.get $11 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $11 + i32.load + call_indirect (type $2) + local.get $state + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $closure-class/ObserverState#get:changeCount + i32.add + local.get $state + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $closure-class/ObserverState#get:totalDiff + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $closure-class/Box#constructor (param $this i32) (param $v i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 28 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $closure-class/Box#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $v + call $closure-class/Box#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $closure-class/Box#getMapClosure~anonymous|0 (param $fn i32) + (local $$closureEnv i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $$closureEnv + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $closure-class/Box#get:value + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $fn + local.tee $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + call $closure-class/Box#set:value + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Box#getValueClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Box#get:value + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/testBoxMap (result i32) + (local $box i32) + (local $map i32) + (local $getValue i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $closure-class/Box#constructor + local.tee $box + i32.store + global.get $~lib/memory/__stack_pointer + local.get $box + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $closure-class/Box#getMapClosure + local.tee $map + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $box + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $closure-class/Box#getValueClosure + local.tee $getValue + i32.store offset=12 + i32.const 4112 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $map + local.tee $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $3) + i32.const 4144 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $map + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $3) + i32.const 4176 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $map + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getValue + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $closure-class/Box#getFlatMapClosure~anonymous|0 (param $fn i32) (result i32) + (local $$closureEnv i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $closure-class/Box#get:value + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $fn + local.tee $2 + i32.store + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-class/testBoxFlatMap (result i32) + (local $box i32) + (local $flatMap i32) + (local $2 i32) + (local $result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $closure-class/Box#constructor + local.tee $box + i32.store + global.get $~lib/memory/__stack_pointer + local.get $box + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $closure-class/Box#getFlatMapClosure + local.tee $flatMap + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $flatMap + local.tee $2 + i32.store offset=12 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + local.tee $result + i32.store offset=16 + local.get $result + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $closure-class/Box#get:value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $closure-class/ChainableCounter#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 33 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/ChainableCounter#set:count + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/ChainableCounter#getAddClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-class/ChainableCounter#get:count + local.get $$closureEnv + i32.load offset=8 + i32.add + call $closure-class/ChainableCounter#set:count + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/ChainableCounter#getMultiplyClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-class/ChainableCounter#get:count + local.get $$closureEnv + i32.load offset=8 + i32.mul + call $closure-class/ChainableCounter#set:count + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/testClosureChaining (result i32) + (local $counter i32) + (local $add5 i32) + (local $add10 i32) + (local $mult2 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 36 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/ChainableCounter#constructor + local.tee $counter + i32.store + global.get $~lib/memory/__stack_pointer + local.get $counter + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + call $closure-class/ChainableCounter#getAddClosure + local.tee $add5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $counter + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 10 + call $closure-class/ChainableCounter#getAddClosure + local.tee $add10 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $counter + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + call $closure-class/ChainableCounter#getMultiplyClosure + local.tee $mult2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $add5 + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $add10 + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $mult2 + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $add5 + local.tee $7 + i32.store offset=32 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $2) + drop + local.get $counter + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $closure-class/ChainableCounter#get:count + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $closure-class/Task#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 35 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/Task#set:completed + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/Task#set:result + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<%28i32%29=>void>#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $closure-class/Task#set:callbacks + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/Task#getThenClosure~anonymous|0 (param $callback i32) + (local $$closureEnv i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $closure-class/Task#get:completed + if + local.get $$closureEnv + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $closure-class/Task#get:result + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $callback + local.tee $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $3) + else + local.get $$closureEnv + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $closure-class/Task#get:callbacks + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $callback + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/array/Array<%28i32%29=>void>#push + drop + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Task#getCompleteClosure~anonymous|0 (param $result i32) + (local $$closureEnv i32) + (local $i i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1 + call $closure-class/Task#set:completed + local.get $$closureEnv + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $result + call $closure-class/Task#set:result + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $$closureEnv + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $closure-class/Task#get:callbacks + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<%28i32%29=>void>#get:length + i32.lt_s + if + local.get $result + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $$closureEnv + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $closure-class/Task#get:callbacks + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array<%28i32%29=>void>#__get + local.tee $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $3) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Task#isCompleted (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Task#get:completed + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/testTaskCallbacks (result i32) + (local $$env i32) + (local $task i32) + (local $then i32) + (local $complete i32) + (local $receivedValue i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/Task#constructor + local.tee $task + i32.store + global.get $~lib/memory/__stack_pointer + local.get $task + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $closure-class/Task#getThenClosure + local.tee $then + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $task + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $closure-class/Task#getCompleteClosure + local.tee $complete + i32.store offset=12 + local.get $$env + i32.const 0 + i32.store offset=4 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 39 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $then + local.tee $6 + i32.store offset=16 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $3) + local.get $$env + i32.load offset=4 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 711 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 21 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $complete + local.tee $7 + i32.store offset=20 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $3) + local.get $$env + i32.load offset=4 + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 715 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $task + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $closure-class/Task#isCompleted + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 716 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $$env + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $closure-class/testTaskCallbackAfterComplete (result i32) + (local $$env i32) + (local $task i32) + (local $then i32) + (local $complete i32) + (local $4 i32) + (local $receivedValue i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/Task#constructor + local.tee $task + i32.store + global.get $~lib/memory/__stack_pointer + local.get $task + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $closure-class/Task#getThenClosure + local.tee $then + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $task + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $closure-class/Task#getCompleteClosure + local.tee $complete + i32.store offset=12 + i32.const 50 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $complete + local.tee $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $3) + local.get $$env + i32.const 0 + i32.store offset=4 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.set $6 + local.get $6 + i32.const 40 + i32.store + local.get $6 + local.get $$env + i32.store offset=4 + local.get $6 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $then + local.tee $7 + i32.store offset=20 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $3) + local.get $$env + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $closure-class/Resource#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 37 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/Resource#set:acquired + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/Resource#set:useCount + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/Resource#getAcquireClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Resource#get:acquired + i32.eqz + if + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1 + call $closure-class/Resource#set:acquired + i32.const 1 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/Resource#getReleaseClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Resource#get:acquired + if + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $closure-class/Resource#set:acquired + i32.const 1 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/Resource#getUseClosure~anonymous|0 (param $action i32) (result i32) + (local $$closureEnv i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $closure-class/Resource#get:acquired + if + local.get $$closureEnv + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $$closureEnv + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $closure-class/Resource#get:useCount + i32.const 1 + i32.add + call $closure-class/Resource#set:useCount + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $action + local.tee $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $2) + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + i32.const -1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-class/Resource#getUseCount (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Resource#get:useCount + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/testResourceManagement (result i32) + (local $resource i32) + (local $acquire i32) + (local $release i32) + (local $use i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 56 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/Resource#constructor + local.tee $resource + i32.store + global.get $~lib/memory/__stack_pointer + local.get $resource + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + call $closure-class/Resource#getAcquireClosure + local.tee $acquire + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $resource + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + call $closure-class/Resource#getReleaseClosure + local.tee $release + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $resource + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + call $closure-class/Resource#getUseClosure + local.tee $use + i32.store offset=16 + i32.const 4560 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $use + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 792 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $acquire + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 795 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $acquire + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 796 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4592 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $use + local.tee $7 + i32.store offset=32 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 799 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4624 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $use + local.tee $8 + i32.store offset=36 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $0) + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 800 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4656 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $use + local.tee $9 + i32.store offset=40 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.const 30 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 801 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $resource + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + call $closure-class/Resource#getUseCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 803 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $release + local.tee $10 + i32.store offset=44 + local.get $10 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 806 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $release + local.tee $11 + i32.store offset=48 + local.get $11 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $11 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 807 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4688 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $use + local.tee $12 + i32.store offset=52 + local.get $12 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $12 + i32.load + call_indirect (type $0) + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 810 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $resource + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + call $closure-class/Resource#getUseCount + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 40 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 2944 + i32.const 2992 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $closure-class/TreeNode#constructor (param $this i32) (param $v i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 39 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $closure-class/TreeNode#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $closure-class/TreeNode#set:children + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $v + call $closure-class/TreeNode#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array#push (param $this i32) (param $value i32) (result i32) + (local $oldLen i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $oldLen + local.get $oldLen + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 1 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.get $oldLen + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $len + call $~lib/array/Array#set:length_ + local.get $len + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $closure-class/TreeNode#addChild (param $this i32) (param $child i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $closure-class/TreeNode#get:children + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $child + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 2192 + i32.const 2992 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 3072 + i32.const 2992 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-class/TreeNode#getSumClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $sum i32) + (local $i i32) + (local $childSum i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $closure-class/TreeNode#get:value + local.set $sum + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $$closureEnv + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $closure-class/TreeNode#get:children + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $$closureEnv + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $closure-class/TreeNode#get:children + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $i + call $~lib/array/Array#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $closure-class/TreeNode#getSumClosure + local.tee $childSum + i32.store offset=12 + local.get $sum + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $childSum + local.tee $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + i32.add + local.set $sum + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $sum + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-class/TreeNode#getDepthClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $maxChildDepth i32) + (local $i i32) + (local $childDepth i32) + (local $4 i32) + (local $d i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $closure-class/TreeNode#get:children + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + if + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 0 + local.set $maxChildDepth + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $$closureEnv + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $closure-class/TreeNode#get:children + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $$closureEnv + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $closure-class/TreeNode#get:children + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $i + call $~lib/array/Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $closure-class/TreeNode#getDepthClosure + local.tee $childDepth + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $childDepth + local.tee $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + local.set $d + local.get $d + local.get $maxChildDepth + i32.gt_s + if + local.get $d + local.set $maxChildDepth + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $maxChildDepth + i32.const 1 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure-class/testTreePattern (result i32) + (local $root i32) + (local $n2 i32) + (local $n3 i32) + (local $n4 i32) + (local $n5 i32) + (local $n6 i32) + (local $getSum i32) + (local $getDepth i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 56 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $closure-class/TreeNode#constructor + local.tee $root + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + call $closure-class/TreeNode#constructor + local.tee $n2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $closure-class/TreeNode#constructor + local.tee $n3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $closure-class/TreeNode#constructor + local.tee $n4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $closure-class/TreeNode#constructor + local.tee $n5 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $closure-class/TreeNode#constructor + local.tee $n6 + i32.store offset=20 + local.get $root + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=24 + local.get $12 + local.get $n2 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=28 + local.get $12 + call $closure-class/TreeNode#addChild + local.get $root + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=24 + local.get $12 + local.get $n3 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=28 + local.get $12 + call $closure-class/TreeNode#addChild + local.get $n2 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=24 + local.get $12 + local.get $n4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=28 + local.get $12 + call $closure-class/TreeNode#addChild + local.get $n2 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=24 + local.get $12 + local.get $n5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=28 + local.get $12 + call $closure-class/TreeNode#addChild + local.get $n3 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=24 + local.get $12 + local.get $n6 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=28 + local.get $12 + call $closure-class/TreeNode#addChild + global.get $~lib/memory/__stack_pointer + local.get $root + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=24 + local.get $12 + call $closure-class/TreeNode#getSumClosure + local.tee $getSum + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $root + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=24 + local.get $12 + call $closure-class/TreeNode#getDepthClosure + local.tee $getDepth + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getSum + local.tee $8 + i32.store offset=40 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $2) + i32.const 21 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 884 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getDepth + local.tee $9 + i32.store offset=44 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $2) + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getSum + local.tee $10 + i32.store offset=48 + local.get $10 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $2) + i32.const 100 + i32.mul + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getDepth + local.tee $11 + i32.store offset=52 + local.get $11 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $11 + i32.load + call_indirect (type $2) + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $closure-class/Range#constructor (param $this i32) (param $start i32) (param $endVal i32) (param $step i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 41 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $closure-class/Range#set:current + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $closure-class/Range#set:endVal + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $closure-class/Range#set:step + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $start + call $closure-class/Range#set:current + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $endVal + call $closure-class/Range#set:endVal + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $step + call $closure-class/Range#set:step + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $closure-class/Range#getHasNextClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Range#get:step + i32.const 0 + i32.gt_s + if + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Range#get:current + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Range#get:endVal + i32.lt_s + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + else + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Range#get:current + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Range#get:endVal + i32.gt_s + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + unreachable + ) + (func $closure-class/Range#getNextClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $value i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $closure-class/Range#get:current + local.set $value + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/Range#get:current + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/Range#get:step + i32.add + call $closure-class/Range#set:current + local.get $value + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $closure-class/testRangeIterator (result i32) + (local $range i32) + (local $hasNext i32) + (local $next i32) + (local $sum i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + i32.const 5 + i32.const 1 + call $closure-class/Range#constructor + local.tee $range + i32.store + global.get $~lib/memory/__stack_pointer + local.get $range + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $closure-class/Range#getHasNextClosure + local.tee $hasNext + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $range + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $closure-class/Range#getNextClosure + local.tee $next + i32.store offset=12 + i32.const 0 + local.set $sum + loop $while-continue|0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $hasNext + local.tee $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + if + local.get $sum + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $next + local.tee $5 + i32.store offset=20 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + i32.add + local.set $sum + br $while-continue|0 + end + end + local.get $sum + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure-class/testReverseRangeIterator (result i32) + (local $range i32) + (local $hasNext i32) + (local $next i32) + (local $sum i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + i32.const 0 + i32.const -2 + call $closure-class/Range#constructor + local.tee $range + i32.store + global.get $~lib/memory/__stack_pointer + local.get $range + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $closure-class/Range#getHasNextClosure + local.tee $hasNext + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $range + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $closure-class/Range#getNextClosure + local.tee $next + i32.store offset=12 + i32.const 0 + local.set $sum + loop $while-continue|0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $hasNext + local.tee $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + if + local.get $sum + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $next + local.tee $5 + i32.store offset=20 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + i32.add + local.set $sum + br $while-continue|0 + end + end + local.get $sum + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2944 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 3072 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/function/Function<%28%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>bool>#__visit + ) + (func $closure-class/Outer~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $closure-class/Dog~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $closure-class/Animal~visit + local.get $0 + i32.load offset=8 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $closure-class/Animal~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28%29=>~lib/string/String>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>~lib/string/String>#__visit + ) + (func $closure-class/EventEmitter~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<%28i32%29=>void>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<%28i32%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<%28i32%29=>void>#__visit + ) + (func $closure-class/QueryBuilder~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28~lib/string/String%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28~lib/string/String%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/string/String%29=>void>#__visit + ) + (func $~lib/function/Function<%28%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>bool>#__visit + ) + (func $closure-class/Observable~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#__visit + ) + (func $~lib/function/Function<%28%28i32%2Ci32%29=>void%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%28i32%2Ci32%29=>void%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28i32%2Ci32%29=>void%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>void>#__visit + ) + (func $~lib/function/Function<%28%28i32%29=>i32%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%28i32%29=>i32%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28i32%29=>i32%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28%28i32%29=>closure-class/Box%29=>closure-class/Box>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%28i32%29=>closure-class/Box%29=>closure-class/Box>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28i32%29=>closure-class/Box%29=>closure-class/Box>#__visit + ) + (func $~lib/function/Function<%28i32%29=>closure-class/Box>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>closure-class/Box>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>closure-class/Box>#__visit + ) + (func $~lib/function/Function<%28%29=>closure-class/ChainableCounter>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>closure-class/ChainableCounter>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>closure-class/ChainableCounter>#__visit + ) + (func $closure-class/Task~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load offset=8 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28%28i32%29=>void%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%28i32%29=>void%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28i32%29=>void%29=>void>#__visit + ) + (func $~lib/function/Function<%28%28%29=>i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%28%29=>i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28%29=>i32%29=>i32>#__visit + ) + (func $closure-class/TreeNode~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $closure-class/Range + block $~lib/array/Array + block $closure-class/TreeNode + block $~lib/function/Function<%28%28%29=>i32%29=>i32> + block $closure-class/Resource + block $~lib/function/Function<%28%28i32%29=>void%29=>void> + block $closure-class/Task + block $~lib/function/Function<%28%29=>closure-class/ChainableCounter> + block $closure-class/ChainableCounter + block $~lib/function/Function<%28i32%29=>closure-class/Box> + block $~lib/function/Function<%28%28i32%29=>closure-class/Box%29=>closure-class/Box> + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/function/Function<%28%28i32%29=>i32%29=>void> + block $closure-class/Box + block $~lib/function/Function<%28i32%2Ci32%29=>void> + block $closure-class/ObserverState + block $~lib/function/Function<%28%28i32%2Ci32%29=>void%29=>void> + block $~lib/array/Array<%28i32%2Ci32%29=>void> + block $closure-class/Observable + block $~lib/function/Function<%28%29=>bool> + block $closure-class/StateMachine + block $~lib/function/Function<%28~lib/string/String%29=>void> + block $closure-class/QueryBuilder + block $closure-class/DataProcessor + block $~lib/array/Array<%28i32%29=>void> + block $closure-class/EventEmitter + block $~lib/function/Function<%28%29=>~lib/string/String> + block $closure-class/Animal + block $closure-class/Dog + block $closure-class/Inner + block $closure-class/Outer + block $closure-class/Calculator + block $~lib/function/Function<%28i32%29=>bool> + block $~lib/function/Function<%28i32%29=>void> + block $closure-class/BankAccount + block $~lib/function/Function<%28%29=>i32> + block $~lib/function/Function<%28%29=>void> + block $closure-class/Counter + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $closure-class/Counter $~lib/function/Function<%28%29=>void> $~lib/function/Function<%28%29=>i32> $closure-class/BankAccount $~lib/function/Function<%28i32%29=>void> $~lib/function/Function<%28i32%29=>bool> $closure-class/Calculator $closure-class/Outer $closure-class/Inner $closure-class/Dog $closure-class/Animal $~lib/function/Function<%28%29=>~lib/string/String> $closure-class/EventEmitter $~lib/array/Array<%28i32%29=>void> $closure-class/DataProcessor $closure-class/QueryBuilder $~lib/function/Function<%28~lib/string/String%29=>void> $closure-class/StateMachine $~lib/function/Function<%28%29=>bool> $closure-class/Observable $~lib/array/Array<%28i32%2Ci32%29=>void> $~lib/function/Function<%28%28i32%2Ci32%29=>void%29=>void> $closure-class/ObserverState $~lib/function/Function<%28i32%2Ci32%29=>void> $closure-class/Box $~lib/function/Function<%28%28i32%29=>i32%29=>void> $~lib/function/Function<%28i32%29=>i32> $~lib/function/Function<%28%28i32%29=>closure-class/Box%29=>closure-class/Box> $~lib/function/Function<%28i32%29=>closure-class/Box> $closure-class/ChainableCounter $~lib/function/Function<%28%29=>closure-class/ChainableCounter> $closure-class/Task $~lib/function/Function<%28%28i32%29=>void%29=>void> $closure-class/Resource $~lib/function/Function<%28%28%29=>i32%29=>i32> $closure-class/TreeNode $~lib/array/Array $closure-class/Range $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>bool>~visit + return + end + return + end + local.get $0 + local.get $1 + call $closure-class/Outer~visit + return + end + return + end + local.get $0 + local.get $1 + call $closure-class/Dog~visit + return + end + local.get $0 + local.get $1 + call $closure-class/Animal~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $closure-class/EventEmitter~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<%28i32%29=>void>~visit + return + end + return + end + local.get $0 + local.get $1 + call $closure-class/QueryBuilder~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/string/String%29=>void>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $closure-class/Observable~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<%28i32%2Ci32%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28i32%2Ci32%29=>void%29=>void>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>void>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28i32%29=>i32%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28i32%29=>closure-class/Box%29=>closure-class/Box>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>closure-class/Box>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>closure-class/ChainableCounter>~visit + return + end + local.get $0 + local.get $1 + call $closure-class/Task~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28i32%29=>void%29=>void>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28%29=>i32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $closure-class/TreeNode~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + unreachable + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>~lib/string/String>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28i32%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28i32%29=>void>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28i32%29=>void>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28i32%29=>void>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28~lib/string/String%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28~lib/string/String%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%28i32%2Ci32%29=>void%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%28i32%2Ci32%29=>void%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%28i32%29=>i32%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%28i32%29=>i32%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%28i32%29=>closure-class/Box%29=>closure-class/Box>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%28i32%29=>closure-class/Box%29=>closure-class/Box>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>closure-class/Box>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>closure-class/Box>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>closure-class/ChainableCounter>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>closure-class/ChainableCounter>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%28i32%29=>void%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%28i32%29=>void%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%28%29=>i32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%28%29=>i32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/closure-class.json b/tests/compiler/closure-class.json new file mode 100644 index 0000000000..454738fb3d --- /dev/null +++ b/tests/compiler/closure-class.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--enable", "closures" + ] +} diff --git a/tests/compiler/closure-class.release.wat b/tests/compiler/closure-class.release.wat new file mode 100644 index 0000000000..948c2ce29f --- /dev/null +++ b/tests/compiler/closure-class.release.wat @@ -0,0 +1,10255 @@ +(module + (type $0 (func (result i32))) + (type $1 (func (param i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func)) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (param i32 i32 i32))) + (type $9 (func (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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/__closure_env (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 38796)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "\1c") + (data $19.1 (i32.const 3416) "\05\00\00\00\08\00\00\00\01") + (data $20 (i32.const 3436) "\1c") + (data $20.1 (i32.const 3448) "\06\00\00\00\08\00\00\00\02") + (data $21 (i32.const 3468) "<") + (data $21.1 (i32.const 3480) "\02\00\00\00 \00\00\00c\00l\00o\00s\00u\00r\00e\00-\00c\00l\00a\00s\00s\00.\00t\00s") + (data $22 (i32.const 3532) "\1c") + (data $22.1 (i32.const 3544) "\08\00\00\00\08\00\00\00\03") + (data $23 (i32.const 3564) "\1c") + (data $23.1 (i32.const 3576) "\t\00\00\00\08\00\00\00\04") + (data $24 (i32.const 3596) "\1c") + (data $24.1 (i32.const 3608) "\06\00\00\00\08\00\00\00\05") + (data $25 (i32.const 3628) "\1c") + (data $25.1 (i32.const 3640) "\06\00\00\00\08\00\00\00\06") + (data $26 (i32.const 3660) "\1c") + (data $26.1 (i32.const 3672) "\06\00\00\00\08\00\00\00\07") + (data $27 (i32.const 3692) "\1c") + (data $27.1 (i32.const 3704) "\06\00\00\00\08\00\00\00\08") + (data $28 (i32.const 3724) "\1c") + (data $28.1 (i32.const 3736) "\08\00\00\00\08\00\00\00\t") + (data $29 (i32.const 3756) "\1c") + (data $29.1 (i32.const 3768) "\02\00\00\00\06\00\00\00R\00e\00x") + (data $30 (i32.const 3788) "<") + (data $30.1 (i32.const 3800) "\02\00\00\00\1e\00\00\00G\00e\00r\00m\00a\00n\00 \00S\00h\00e\00p\00h\00e\00r\00d") + (data $31 (i32.const 3852) "\1c") + (data $31.1 (i32.const 3864) "\06\00\00\00\08\00\00\00\n") + (data $32 (i32.const 3884) "\1c") + (data $32.1 (i32.const 3896) "\05\00\00\00\08\00\00\00\0b") + (data $33 (i32.const 3916) "\1c") + (data $33.1 (i32.const 3928) "\0f\00\00\00\08\00\00\00\0c") + (data $34 (i32.const 3948) ",") + (data $34.1 (i32.const 3960) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $35 (i32.const 3996) ",") + (data $35.1 (i32.const 4008) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $36 (i32.const 4044) "\1c") + (data $36.1 (i32.const 4056) "\08\00\00\00\08\00\00\00\r") + (data $37 (i32.const 4076) "|") + (data $37.1 (i32.const 4088) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $38 (i32.const 4204) "\1c") + (data $38.1 (i32.const 4216) "\02\00\00\00\02\00\00\00*") + (data $39 (i32.const 4236) "\1c") + (data $39.1 (i32.const 4248) "\14\00\00\00\08\00\00\00\0e") + (data $40 (i32.const 4268) "\1c") + (data $40.1 (i32.const 4280) "\14\00\00\00\08\00\00\00\0f") + (data $41 (i32.const 4300) "\1c") + (data $41.1 (i32.const 4312) "\14\00\00\00\08\00\00\00\10") + (data $42 (i32.const 4332) ",") + (data $42.1 (i32.const 4344) "\02\00\00\00\0e\00\00\00S\00E\00L\00E\00C\00T\00 ") + (data $43 (i32.const 4380) "\1c") + (data $43.1 (i32.const 4392) "\02\00\00\00\0c\00\00\00 \00F\00R\00O\00M\00 ") + (data $44 (i32.const 4412) ",") + (data $44.1 (i32.const 4424) "\02\00\00\00\0e\00\00\00 \00W\00H\00E\00R\00E\00 ") + (data $45 (i32.const 4460) "\1c") + (data $45.1 (i32.const 4472) "\0f\00\00\00\08\00\00\00\11") + (data $46 (i32.const 4492) ",") + (data $46.1 (i32.const 4504) "\02\00\00\00\10\00\00\00i\00d\00,\00 \00n\00a\00m\00e") + (data $47 (i32.const 4540) "\1c") + (data $47.1 (i32.const 4552) "\02\00\00\00\n\00\00\00u\00s\00e\00r\00s") + (data $48 (i32.const 4572) ",") + (data $48.1 (i32.const 4584) "\02\00\00\00\14\00\00\00a\00c\00t\00i\00v\00e\00 \00=\00 \001") + (data $49 (i32.const 4620) "l") + (data $49.1 (i32.const 4632) "\02\00\00\00V\00\00\00S\00E\00L\00E\00C\00T\00 \00i\00d\00,\00 \00n\00a\00m\00e\00 \00F\00R\00O\00M\00 \00u\00s\00e\00r\00s\00 \00W\00H\00E\00R\00E\00 \00a\00c\00t\00i\00v\00e\00 \00=\00 \001") + (data $50 (i32.const 4732) "\1c") + (data $50.1 (i32.const 4744) "\16\00\00\00\08\00\00\00\12") + (data $51 (i32.const 4764) "\1c") + (data $51.1 (i32.const 4776) "\16\00\00\00\08\00\00\00\13") + (data $52 (i32.const 4796) "\1c") + (data $52.1 (i32.const 4808) "\16\00\00\00\08\00\00\00\14") + (data $53 (i32.const 4828) "\1c") + (data $53.1 (i32.const 4840) "\05\00\00\00\08\00\00\00\15") + (data $54 (i32.const 4860) "\1c") + (data $54.1 (i32.const 4872) "\06\00\00\00\08\00\00\00\16") + (data $55 (i32.const 4892) "\1c") + (data $55.1 (i32.const 4904) "\19\00\00\00\08\00\00\00\17") + (data $56 (i32.const 4924) "\1c") + (data $56.1 (i32.const 4936) "\08\00\00\00\08\00\00\00\18") + (data $57 (i32.const 4956) "\1c") + (data $57.1 (i32.const 4968) "\06\00\00\00\08\00\00\00\19") + (data $58 (i32.const 4988) "\1c") + (data $58.1 (i32.const 5000) "\1b\00\00\00\08\00\00\00\1a") + (data $59 (i32.const 5020) "\1c") + (data $59.1 (i32.const 5032) "\1b\00\00\00\08\00\00\00\1b") + (data $60 (i32.const 5052) "\1c") + (data $60.1 (i32.const 5064) "\1d\00\00\00\08\00\00\00\1c") + (data $61 (i32.const 5084) "\1c") + (data $61.1 (i32.const 5096) "\06\00\00\00\08\00\00\00\1d") + (data $62 (i32.const 5116) "\1c") + (data $62.1 (i32.const 5128) "\1e\00\00\00\08\00\00\00\1e") + (data $63 (i32.const 5148) "\1c") + (data $63.1 (i32.const 5160) "\1e\00\00\00\08\00\00\00\1f") + (data $64 (i32.const 5180) "\1c") + (data $64.1 (i32.const 5192) "\1e\00\00\00\08\00\00\00 ") + (data $65 (i32.const 5212) "\1c") + (data $65.1 (i32.const 5224) "\1f\00\00\00\08\00\00\00!") + (data $66 (i32.const 5244) "\1c") + (data $66.1 (i32.const 5256) " \00\00\00\08\00\00\00\"") + (data $67 (i32.const 5276) "\1c") + (data $67.1 (i32.const 5288) "\"\00\00\00\08\00\00\00#") + (data $68 (i32.const 5308) "\1c") + (data $68.1 (i32.const 5320) "\"\00\00\00\08\00\00\00$") + (data $69 (i32.const 5340) "\1c") + (data $69.1 (i32.const 5352) "$\00\00\00\08\00\00\00%") + (data $70 (i32.const 5372) "\1c") + (data $70.1 (i32.const 5384) "\08\00\00\00\08\00\00\00&") + (data $71 (i32.const 5404) "\1c") + (data $71.1 (i32.const 5416) "\08\00\00\00\08\00\00\00\'") + (data $72 (i32.const 5436) "\1c") + (data $72.1 (i32.const 5448) "\08\00\00\00\08\00\00\00(") + (data $73 (i32.const 5468) "\1c") + (data $73.1 (i32.const 5480) "\16\00\00\00\08\00\00\00)") + (data $74 (i32.const 5500) "\1c") + (data $74.1 (i32.const 5512) "\16\00\00\00\08\00\00\00*") + (data $75 (i32.const 5532) "\1c") + (data $75.1 (i32.const 5544) "&\00\00\00\08\00\00\00+") + (data $76 (i32.const 5564) "\1c") + (data $76.1 (i32.const 5576) "\06\00\00\00\08\00\00\00,") + (data $77 (i32.const 5596) "\1c") + (data $77.1 (i32.const 5608) "\06\00\00\00\08\00\00\00-") + (data $78 (i32.const 5628) "\1c") + (data $78.1 (i32.const 5640) "\06\00\00\00\08\00\00\00.") + (data $79 (i32.const 5660) "\1c") + (data $79.1 (i32.const 5672) "\06\00\00\00\08\00\00\00/") + (data $80 (i32.const 5692) "\1c") + (data $80.1 (i32.const 5704) "\06\00\00\00\08\00\00\000") + (data $81 (i32.const 5724) "\1c") + (data $81.1 (i32.const 5736) "\06\00\00\00\08\00\00\001") + (data $82 (i32.const 5756) "\1c") + (data $82.1 (i32.const 5768) "\06\00\00\00\08\00\00\002") + (data $83 (i32.const 5788) "\1c") + (data $83.1 (i32.const 5800) "\16\00\00\00\08\00\00\003") + (data $84 (i32.const 5820) "\1c") + (data $84.1 (i32.const 5832) "\06\00\00\00\08\00\00\004") + (data $85 (i32.const 5856) "*\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (data $85.1 (i32.const 5888) " ") + (data $85.2 (i32.const 5900) " \00\00\00\00\00\00\00 ") + (data $85.3 (i32.const 5928) "\02A\00\00 ") + (data $85.4 (i32.const 5944) " ") + (data $85.5 (i32.const 5956) "\02A\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") + (data $85.6 (i32.const 5992) " ") + (data $85.7 (i32.const 6008) " ") + (data $85.8 (i32.const 6020) "\02A\00\00 ") + (table $0 53 53 funcref) + (elem $0 (i32.const 1) $closure-class/Counter#getIncrementClosure~anonymous|0 $closure-class/Counter#getCountClosure~anonymous|0 $closure-class/BankAccount#getDepositClosure~anonymous|0 $closure-class/BankAccount#getWithdrawClosure~anonymous|0 $closure-class/Counter#getCountClosure~anonymous|0 $closure-class/BankAccount#getTransactionCountClosure~anonymous|0 $closure-class/Calculator#getOperationClosure~anonymous|0 $closure-class/Outer#getComputeClosure~anonymous|0 $closure-class/Outer#getInnerSetterClosure~anonymous|0 $closure-class/BankAccount#getTransactionCountClosure~anonymous|0 $closure-class/Animal#getAgeIncrementClosure~anonymous|0 $closure-class/Dog#getBreedClosure~anonymous|0 $closure-class/DataProcessor#getProcessorClosure~anonymous|0 $closure-class/QueryBuilder#getSelectClosure~anonymous|0 $closure-class/QueryBuilder#getFromClosure~anonymous|0 $closure-class/QueryBuilder#getWhereClosure~anonymous|0 $closure-class/QueryBuilder#getBuildClosure~anonymous|0 $closure-class/StateMachine#getStartClosure~anonymous|0 $closure-class/StateMachine#getPauseClosure~anonymous|0 $closure-class/StateMachine#getStopClosure~anonymous|0 $closure-class/StateMachine#getResetClosure~anonymous|0 $closure-class/Counter#getCountClosure~anonymous|0 $closure-class/Observable#getSubscribeClosure~anonymous|0 $closure-class/Observable#getSetClosure~anonymous|0 $closure-class/Counter#getCountClosure~anonymous|0 $closure-class/ObserverState#getCountObserver~anonymous|0 $closure-class/ObserverState#getDiffObserver~anonymous|0 $closure-class/Box#getMapClosure~anonymous|0 $closure-class/Counter#getCountClosure~anonymous|0 $closure-class/testBoxMap~anonymous|0 $closure-class/testBoxMap~anonymous|1 $closure-class/testBoxMap~anonymous|2 $closure-class/Box#getFlatMapClosure~anonymous|0 $closure-class/testBoxFlatMap~anonymous|0 $closure-class/ChainableCounter#getAddClosure~anonymous|0 $closure-class/ChainableCounter#getMultiplyClosure~anonymous|0 $closure-class/Task#getThenClosure~anonymous|0 $closure-class/Task#getCompleteClosure~anonymous|0 $closure-class/testTaskCallbacks~anonymous|0 $closure-class/testTaskCallbackAfterComplete~anonymous|0 $closure-class/Resource#getAcquireClosure~anonymous|0 $closure-class/Resource#getReleaseClosure~anonymous|0 $closure-class/Resource#getUseClosure~anonymous|0 $closure-class/testResourceManagement~anonymous|0 $closure-class/testResourceManagement~anonymous|1 $closure-class/testResourceManagement~anonymous|2 $closure-class/testResourceManagement~anonymous|3 $closure-class/testResourceManagement~anonymous|0 $closure-class/TreeNode#getSumClosure~anonymous|0 $closure-class/TreeNode#getDepthClosure~anonymous|0 $closure-class/Range#getHasNextClosure~anonymous|0 $closure-class/Range#getNextClosure~anonymous|0) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 3216 + call $~lib/rt/itcms/__visit + i32.const 3968 + call $~lib/rt/itcms/__visit + i32.const 4096 + call $~lib/rt/itcms/__visit + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3088 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 3088 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$531 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 38796 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3088 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$531 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 3088 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 5856 + i32.load + i32.gt_u + if + i32.const 3216 + i32.const 3280 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 5860 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 3360 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 3360 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 3360 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 3360 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 3360 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 38800 + i32.const 0 + i32.store + i32.const 40368 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 38800 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 38800 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 38800 + i32.const 40372 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 38800 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 38796 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 3088 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 38796 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 38796 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 3360 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $3 + end + else + local.get $3 + end + i32.const 4 + local.get $0 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 3360 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) + (func $~lib/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 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$71 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + 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$71 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $closure-class/Counter#getIncrementClosure (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-class/Counter#getCountClosure (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 2 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-class/Calculator#getOperationClosure (param $0 i32) (param $1 i32) (param $2 i32) (result 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 + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + local.tee $4 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $4 + local.get $2 + i32.store offset=8 + local.get $4 + local.get $0 + i32.store offset=12 + local.get $4 + local.get $1 + i32.store offset=16 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 7 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + ) + (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 3088 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $closure-class/DataProcessor#getProcessorClosure (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 13 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-class/testBoxMap~anonymous|0 (param $0 i32) (result i32) + local.get $0 + i32.const 1 + i32.shl + ) + (func $closure-class/testBoxMap~anonymous|1 (param $0 i32) (result i32) + local.get $0 + i32.const 3 + i32.add + ) + (func $closure-class/testBoxMap~anonymous|2 (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.mul + ) + (func $closure-class/testBoxFlatMap~anonymous|0 (param $0 i32) (result i32) + local.get $0 + i32.const 10 + i32.mul + call $closure-class/Box#constructor + ) + (func $closure-class/ChainableCounter#getAddClosure (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + i32.const 4 + i32.add + local.tee $2 + i32.const 0 + i32.store + local.get $3 + local.get $0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + i32.const 8 + i32.const 34 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 35 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + ) + (func $closure-class/Task#getThenClosure (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 36 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 37 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-class/Task#getCompleteClosure (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 38 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-class/testTaskCallbacks~anonymous|0 (param $0 i32) + global.get $~lib/__closure_env + local.get $0 + i32.const 1 + i32.shl + i32.store offset=4 + ) + (func $closure-class/testTaskCallbackAfterComplete~anonymous|0 (param $0 i32) + global.get $~lib/__closure_env + local.get $0 + i32.store offset=4 + ) + (func $closure-class/testResourceManagement~anonymous|0 (result i32) + i32.const 42 + ) + (func $closure-class/testResourceManagement~anonymous|1 (result i32) + i32.const 10 + ) + (func $closure-class/testResourceManagement~anonymous|2 (result i32) + i32.const 20 + ) + (func $closure-class/testResourceManagement~anonymous|3 (result i32) + i32.const 30 + ) + (func $closure-class/TreeNode#getSumClosure (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 49 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-class/TreeNode#getDepthClosure (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 50 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-class/Range#getHasNextClosure (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 51 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-class/Range#getNextClosure (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 52 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $start:closure-class + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + memory.size + i32.const 16 + i32.shl + i32.const 38796 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 3140 + i32.const 3136 + i32.store + i32.const 3144 + i32.const 3136 + i32.store + i32.const 3136 + global.set $~lib/rt/itcms/pinSpace + i32.const 3172 + i32.const 3168 + i32.store + i32.const 3176 + i32.const 3168 + i32.store + i32.const 3168 + global.set $~lib/rt/itcms/toSpace + i32.const 3316 + i32.const 3312 + i32.store + i32.const 3320 + i32.const 3312 + i32.store + i32.const 3312 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + call $closure-class/Counter#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/Counter#getIncrementClosure + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/Counter#getCountClosure + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=28 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 56 + memory.fill + global.get $~lib/memory/__stack_pointer + call $closure-class/Counter#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + call $closure-class/Counter#constructor + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/Counter#getIncrementClosure + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $closure-class/Counter#getIncrementClosure + local.tee $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/Counter#getCountClosure + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $closure-class/Counter#getCountClosure + local.tee $1 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=32 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=36 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=40 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=44 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 10 + i32.mul + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=52 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + local.get $0 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 32 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testBankAccount + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 125 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 36 + memory.fill + 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 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 5 + i32.const 0 + call $closure-class/Calculator#getOperationClosure + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + i32.const 1 + call $closure-class/Calculator#getOperationClosure + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 3 + i32.const 2 + call $closure-class/Calculator#getOperationClosure + local.tee $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=32 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 24 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 168 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 10 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 8 + i32.store + local.get $3 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 9 + i32.store + local.get $1 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 219 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 20 + local.get $1 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=24 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + i32.const 60 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 222 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=28 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 60 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 226 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3776 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3776 + i32.store offset=8 + local.get $0 + i32.const 3776 + i32.store + local.get $0 + i32.const 3776 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3808 + i32.store offset=8 + local.get $0 + i32.const 3808 + i32.store offset=8 + local.get $0 + i32.const 3808 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 10 + i32.store + local.get $3 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 11 + i32.store + local.get $4 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 12 + i32.store + local.get $0 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 277 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3808 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3488 + i32.const 278 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=28 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=32 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=36 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 285 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testEventEmitterPattern + i32.const 120 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 345 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 44 + memory.fill + 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 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4224 + i32.store + local.get $1 + i32.const 4224 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1120 + i32.store offset=4 + local.get $1 + i32.const 1120 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1120 + i32.store offset=8 + local.get $1 + i32.const 1120 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + i32.const 8 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 14 + i32.store + local.get $3 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + i32.const 8 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 15 + i32.store + local.get $4 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + i32.const 8 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 16 + i32.store + local.get $5 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $5 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + i32.const 8 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 17 + i32.store + local.get $1 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=24 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 4512 + local.get $3 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=28 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 4560 + local.get $4 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 4592 + local.get $5 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + call_indirect (type $0) + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3488 + i32.const 399 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.add + global.set $~lib/memory/__stack_pointer + call $closure-class/testStateMachine + if + i32.const 0 + i32.const 3488 + i32.const 486 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testObservable + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 562 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $closure-class/Box#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 29 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 28 + i32.store + local.get $3 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 29 + i32.store + local.get $0 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 5136 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 5136 + local.get $3 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + i32.const 5168 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 5168 + local.get $3 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + i32.const 5200 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=24 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 5200 + local.get $3 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=28 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 169 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 604 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $closure-class/Box#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 31 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 33 + i32.store + local.get $0 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + global.get $~lib/memory/__stack_pointer + i32.const 5264 + local.get $0 + i32.load + call_indirect (type $2) + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 615 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 36 + memory.fill + 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 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 33 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 5 + call $closure-class/ChainableCounter#getAddClosure + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 10 + call $closure-class/ChainableCounter#getAddClosure + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $4 + i32.const 0 + i32.store offset=4 + local.get $4 + local.get $1 + i32.store offset=8 + local.get $4 + i32.const 2 + i32.store offset=12 + i32.const 8 + i32.const 34 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 36 + i32.store + local.get $5 + local.get $4 + i32.const 4 + i32.add + i32.store offset=4 + local.get $5 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=24 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=32 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 35 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 662 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + call $closure-class/Task#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $closure-class/Task#getThenClosure + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $closure-class/Task#getCompleteClosure + local.tee $3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 39 + i32.store + local.get $4 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + local.get $2 + i32.load + call_indirect (type $1) + local.get $0 + i32.load offset=8 + if + i32.const 0 + i32.const 3488 + i32.const 711 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 21 + local.get $3 + i32.load + call_indirect (type $1) + local.get $0 + i32.load offset=8 + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 715 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + if + i32.const 0 + i32.const 3488 + i32.const 716 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 720 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + call $closure-class/Task#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $closure-class/Task#getThenClosure + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $closure-class/Task#getCompleteClosure + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 50 + local.get $1 + i32.load + call_indirect (type $1) + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 40 + i32.store + local.get $1 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + local.get $2 + i32.load + call_indirect (type $1) + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 738 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testResourceManagement + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 814 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 56 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $closure-class/TreeNode#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $closure-class/TreeNode#constructor + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $closure-class/TreeNode#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $closure-class/TreeNode#constructor + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $closure-class/TreeNode#constructor + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $closure-class/TreeNode#constructor + local.tee $5 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=28 + local.get $0 + local.get $1 + call $closure-class/TreeNode#addChild + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $0 + local.get $2 + call $closure-class/TreeNode#addChild + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=28 + local.get $1 + local.get $3 + call $closure-class/TreeNode#addChild + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=28 + local.get $1 + local.get $4 + call $closure-class/TreeNode#addChild + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $2 + local.get $5 + call $closure-class/TreeNode#addChild + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/TreeNode#getSumClosure + local.tee $1 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/TreeNode#getDepthClosure + local.tee $0 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=40 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.const 21 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 884 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=44 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=48 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.const 100 + i32.mul + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=52 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + local.get $1 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2103 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 889 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + i32.const 1 + call $closure-class/Range#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/Range#getHasNextClosure + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/Range#getNextClosure + local.tee $2 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $while-continue|0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + local.get $0 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 944 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 10 + i32.const 0 + i32.const -2 + call $closure-class/Range#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/Range#getHasNextClosure + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/Range#getNextClosure + local.tee $2 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $while-continue|01 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + local.get $0 + i32.add + local.set $0 + br $while-continue|01 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 959 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + return + end + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + call $start:closure-class + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$538 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$538 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $closure-class/Counter#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-class/Counter#getIncrementClosure~anonymous|0 + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $1 + i32.load offset=4 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load + i32.const 1 + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Counter#getCountClosure~anonymous|0 (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 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/BankAccount#getDepositClosure~anonymous|0 (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $2 + i32.load offset=4 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=4 + local.tee $1 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $1 + i32.load + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=4 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=4 + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/BankAccount#getWithdrawClosure~anonymous|0 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $1 + i32.load offset=4 + local.tee $2 + i32.store + local.get $0 + local.get $2 + i32.load + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $3 + i32.store offset=4 + local.get $2 + local.get $3 + i32.load + local.get $0 + i32.sub + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $closure-class/BankAccount#getTransactionCountClosure~anonymous|0 (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 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/testBankAccount (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 68 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 68 + memory.fill + 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 6028 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 3 + i32.store + local.get $4 + local.get $3 + i32.store offset=4 + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 4 + i32.store + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $5 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 5 + i32.store + local.get $2 + local.get $5 + i32.store offset=4 + local.get $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $5 + i32.const 4 + i32.add + local.tee $6 + i32.const 0 + i32.store + local.get $5 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 6 + i32.store + local.get $0 + local.get $6 + i32.store offset=4 + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=24 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 50 + local.get $4 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + i32.const 150 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 30 + local.get $1 + i32.load + call_indirect (type $2) + i32.eqz + if + i32.const 0 + i32.const 3488 + i32.const 113 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=36 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + i32.const 120 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=40 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 200 + local.get $1 + i32.load + call_indirect (type $2) + if + i32.const 0 + i32.const 3488 + i32.const 116 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=44 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + i32.const 120 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 117 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 118 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=52 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 100 + local.get $4 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=56 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 220 + local.get $1 + i32.load + call_indirect (type $2) + i32.eqz + if + i32.const 0 + i32.const 3488 + i32.const 121 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=60 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + i32.const 1000 + i32.mul + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=64 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + local.get $1 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 68 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-class/Calculator#getOperationClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=4 + local.tee $1 + if + local.get $1 + i32.const 1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $2 + i32.store offset=4 + local.get $1 + local.get $2 + i32.load + local.get $0 + i32.load offset=12 + i32.sub + i32.store + else + local.get $0 + i32.load offset=4 + i32.const 2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $2 + i32.store offset=4 + local.get $1 + local.get $2 + i32.load + local.get $0 + i32.load offset=12 + i32.mul + i32.store + end + end + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $2 + i32.store offset=4 + local.get $1 + local.get $2 + i32.load + local.get $0 + i32.load offset=12 + i32.add + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Outer#getComputeClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=4 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.mul + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Outer#getInnerSetterClosure~anonymous|0 (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 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + i32.load offset=4 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Animal#getAgeIncrementClosure~anonymous|0 + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $1 + i32.load offset=4 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Dog#getBreedClosure~anonymous|0 (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 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$200 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$200 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/array/Array<%28i32%29=>void>#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 32 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-class/DataProcessor#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-class/DataProcessor#getProcessorClosure~anonymous|0 (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $2 + i32.load offset=4 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=4 + local.tee $3 + i32.store offset=4 + local.get $1 + local.get $3 + i32.load + i32.const 1 + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=4 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=4 + local.tee $2 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $2 + i32.load offset=8 + i32.add + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28i32%29=>void>#push (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $6 + i32.const 1 + i32.add + local.tee $5 + 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 6028 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $2 + i32.const 268435455 + i32.gt_u + if + i32.const 3968 + i32.const 4016 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$496 + i32.const 1073741820 + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.const 8 + local.get $2 + local.get $2 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $2 + local.get $2 + local.get $3 + i32.lt_u + select + local.tee $4 + local.get $0 + i32.load + local.tee $3 + i32.const 20 + i32.sub + local.tee $7 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $7 + local.get $4 + i32.store offset=16 + local.get $3 + local.set $2 + br $__inlined_func$~lib/rt/itcms/__renew$496 + end + local.get $4 + local.get $7 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $3 + local.get $4 + local.get $7 + i32.load offset=16 + local.tee $7 + local.get $4 + local.get $7 + i32.lt_u + select + memory.copy + end + local.get $2 + local.get $3 + i32.ne + if + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $4 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-class/EventEmitter#addListener (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/array/Array<%28i32%29=>void>#push + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28i32%29=>void>#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28i32%29=>void>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 3216 + i32.const 4016 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 4096 + i32.const 4016 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-class/EventEmitter#emit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $3 + i32.store + local.get $3 + call $~lib/array/Array<%28i32%29=>void>#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 + call $~lib/array/Array<%28i32%29=>void>#__get + local.tee $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + local.get $3 + i32.load + call_indirect (type $1) + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/testEventEmitterPattern (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + call $~lib/array/Array<%28i32%29=>void>#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + call $closure-class/DataProcessor#constructor + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + call $closure-class/DataProcessor#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + call $closure-class/DataProcessor#getProcessorClosure + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $1 + local.get $3 + call $closure-class/EventEmitter#addListener + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $2 + call $closure-class/DataProcessor#getProcessorClosure + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $1 + local.get $3 + call $closure-class/EventEmitter#addListener + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 10 + call $closure-class/EventEmitter#emit + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 20 + call $closure-class/EventEmitter#emit + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 30 + call $closure-class/EventEmitter#emit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.load + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 336 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + i32.load + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 337 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.load offset=8 + i32.const 60 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 338 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + i32.load offset=8 + i32.const 60 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 339 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.load offset=4 + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 340 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + i32.load offset=4 + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 341 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + i32.load offset=8 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-class/QueryBuilder#getSelectClosure~anonymous|0 (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 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + i32.load offset=4 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/QueryBuilder#getFromClosure~anonymous|0 (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 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + i32.load offset=4 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/QueryBuilder#getWhereClosure~anonymous|0 (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 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + i32.load offset=4 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/QueryBuilder#getBuildClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $1 + i32.load offset=4 + local.tee $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $2 + i32.store offset=12 + i32.const 4352 + local.get $2 + call $~lib/string/String.__concat + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 4400 + call $~lib/string/String.__concat + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=4 + local.tee $3 + i32.store offset=4 + local.get $2 + local.get $3 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=8 + local.tee $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=8 + local.tee $1 + i32.store offset=8 + i32.const 4432 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=20 + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-class/StateMachine#getStartClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + i32.load + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + i32.load + i32.const 2 + i32.eq + else + i32.const 1 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $closure-class/StateMachine#getPauseClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + i32.load + i32.const 1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store + 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 + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $closure-class/StateMachine#getStopClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + i32.load + i32.const 1 + i32.eq + if (result i32) + i32.const 1 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + i32.load + i32.const 2 + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.const 3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $closure-class/StateMachine#getResetClosure~anonymous|0 + (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 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/testStateMachine (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 84 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 84 + memory.fill + 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 6028 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 21 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.tee $2 + i32.const 0 + i32.store + local.get $0 + local.get $4 + i32.store offset=8 + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 18 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $1 + local.get $4 + i32.store offset=8 + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 19 + i32.store + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $5 + i32.const 0 + i32.store + local.get $2 + local.get $4 + i32.store offset=8 + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 20 + i32.store + local.get $2 + local.get $5 + i32.store offset=4 + local.get $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + i32.const 4 + i32.add + local.tee $6 + i32.const 0 + i32.store + local.get $3 + local.get $4 + i32.store offset=8 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 21 + i32.store + local.get $3 + local.get $6 + i32.store offset=4 + local.get $3 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $6 + i32.const 4 + i32.add + local.tee $7 + i32.const 0 + i32.store + local.get $6 + local.get $4 + i32.store offset=8 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 22 + i32.store + local.get $4 + local.get $7 + i32.store offset=4 + local.get $4 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=28 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + if + i32.const 0 + i32.const 3488 + i32.const 463 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=32 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.eqz + if + i32.const 0 + i32.const 3488 + i32.const 465 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=36 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 466 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=40 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + if + i32.const 0 + i32.const 3488 + i32.const 468 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=44 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.eqz + if + i32.const 0 + i32.const 3488 + i32.const 470 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=48 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 471 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=52 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.eqz + if + i32.const 0 + i32.const 3488 + i32.const 473 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=56 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 474 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=60 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + i32.eqz + if + i32.const 0 + i32.const 3488 + i32.const 476 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=64 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 477 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=68 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + if + i32.const 0 + i32.const 3488 + i32.const 479 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=72 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=76 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + if + i32.const 0 + i32.const 3488 + i32.const 482 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=80 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 84 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-class/Observable#getSubscribeClosure~anonymous|0 (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + i32.load offset=4 + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/array/Array<%28i32%29=>void>#push + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Observable#getSetClosure~anonymous|0 (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $1 + i32.load offset=4 + local.tee $3 + i32.store + local.get $3 + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $4 + i32.store + local.get $4 + local.get $0 + i32.store + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.load offset=4 + local.tee $4 + i32.store + local.get $4 + call $~lib/array/Array<%28i32%29=>void>#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.load offset=4 + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + call $~lib/array/Array<%28i32%29=>void>#__get + local.tee $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + local.get $0 + local.get $4 + i32.load + call_indirect (type $4) + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/ObserverState#getCountObserver~anonymous|0 (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $1 + i32.load offset=4 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load + i32.const 1 + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/ObserverState#getDiffObserver~anonymous|0 (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $3 + i32.load offset=4 + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=4 + local.tee $3 + i32.store offset=4 + local.get $2 + local.get $3 + i32.load offset=4 + local.get $1 + local.get $0 + i32.sub + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/testObservable (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 56 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 56 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 23 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 24 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 32 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $0 + local.get $2 + i32.store offset=8 + i32.const 8 + i32.const 25 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 23 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 4 + i32.add + local.tee $4 + i32.const 0 + i32.store + local.get $1 + local.get $2 + i32.store offset=8 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 24 + i32.store + local.get $1 + local.get $4 + i32.store offset=4 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $4 + i32.const 4 + i32.add + local.tee $5 + i32.const 0 + i32.store + local.get $4 + local.get $2 + i32.store offset=8 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 25 + i32.store + local.get $2 + local.get $5 + i32.store offset=4 + local.get $2 + i32.store offset=16 + 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 6028 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 26 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/object/Object#constructor + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=28 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + i32.const 4 + i32.add + local.tee $5 + i32.const 0 + i32.store + local.get $3 + local.get $4 + i32.store offset=8 + i32.const 8 + i32.const 27 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 26 + i32.store + local.get $3 + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + local.get $0 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=28 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + i32.const 4 + i32.add + local.tee $5 + i32.const 0 + i32.store + local.get $3 + local.get $4 + i32.store offset=8 + i32.const 8 + i32.const 27 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 27 + i32.store + local.get $3 + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=32 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + local.get $0 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 10 + local.get $1 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=40 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 25 + local.get $1 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=44 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 20 + local.get $1 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 556 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 558 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=52 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load + i32.add + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-class/Box#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 28 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/Box#getMapClosure~anonymous|0 (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $2 + i32.load offset=4 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=4 + local.tee $2 + i32.store offset=8 + local.get $2 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + local.get $2 + local.get $0 + i32.load + call_indirect (type $2) + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Box#getFlatMapClosure~anonymous|0 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + i32.load offset=4 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/ChainableCounter#getAddClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $1 + i32.load offset=4 + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + local.get $2 + local.get $0 + i32.load + local.get $1 + i32.load offset=8 + i32.add + i32.store + local.get $1 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/ChainableCounter#getMultiplyClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $1 + i32.load offset=4 + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + local.get $2 + local.get $0 + i32.load + local.get $1 + i32.load offset=8 + i32.mul + i32.store + local.get $1 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Task#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 35 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + call $~lib/array/Array<%28i32%29=>void>#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-class/Task#getThenClosure~anonymous|0 (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $1 + i32.load offset=4 + local.tee $2 + i32.store + local.get $2 + i32.load8_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $1) + else + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=8 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 + call $~lib/array/Array<%28i32%29=>void>#push + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Task#getCompleteClosure~anonymous|0 (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $1 + i32.load offset=4 + local.tee $3 + i32.store + local.get $3 + i32.const 1 + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $3 + i32.store + local.get $3 + local.get $0 + i32.store offset=4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=8 + local.tee $3 + i32.store + local.get $3 + call $~lib/array/Array<%28i32%29=>void>#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=8 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 + call $~lib/array/Array<%28i32%29=>void>#__get + local.tee $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + local.get $3 + i32.load + call_indirect (type $1) + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Resource#getAcquireClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + i32.load8_u + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.const 1 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $closure-class/Resource#getReleaseClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + i32.load8_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $closure-class/Resource#getUseClosure~anonymous|0 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $1 + i32.load offset=4 + local.tee $2 + i32.store + local.get $2 + i32.load8_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $1 + i32.store offset=4 + local.get $2 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $closure-class/Resource#getUseCount (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/testResourceManagement (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 56 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 56 + memory.fill + 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 6028 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 37 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 41 + i32.store + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $4 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 42 + i32.store + local.get $2 + local.get $4 + i32.store offset=4 + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $4 + i32.const 4 + i32.add + local.tee $5 + i32.const 0 + i32.store + local.get $4 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 38 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 43 + i32.store + local.get $4 + local.get $5 + i32.store offset=4 + local.get $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 5584 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 5584 + local.get $4 + i32.load + call_indirect (type $2) + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 792 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.eqz + if + i32.const 0 + i32.const 3488 + i32.const 795 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=28 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + if + i32.const 0 + i32.const 3488 + i32.const 796 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5616 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=32 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 5616 + local.get $4 + i32.load + call_indirect (type $2) + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 799 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5648 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=36 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 5648 + local.get $4 + i32.load + call_indirect (type $2) + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 800 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5680 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=40 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 5680 + local.get $4 + i32.load + call_indirect (type $2) + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 801 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $closure-class/Resource#getUseCount + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 803 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=44 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + i32.eqz + if + i32.const 0 + i32.const 3488 + i32.const 806 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + if + i32.const 0 + i32.const 3488 + i32.const 807 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5712 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=52 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 5712 + local.get $4 + i32.load + call_indirect (type $2) + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 810 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $closure-class/Resource#getUseCount + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-class/TreeNode#constructor (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 39 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 40 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 32 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-class/TreeNode#addChild (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/array/Array<%28i32%29=>void>#push + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/TreeNode#getSumClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $2 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.load + local.set $0 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=4 + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=4 + local.tee $3 + i32.store + local.get $3 + call $~lib/array/Array<%28i32%29=>void>#get:length + local.get $1 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=4 + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.load offset=4 + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $1 + call $~lib/array/Array<%28i32%29=>void>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $closure-class/TreeNode#getSumClosure + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + local.get $0 + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-class/TreeNode#getDepthClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $3 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array<%28i32%29=>void>#get:length + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array<%28i32%29=>void>#get:length + local.get $4 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=4 + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $4 + call $~lib/array/Array<%28i32%29=>void>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $closure-class/TreeNode#getDepthClosure + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + local.get $0 + i32.load + call_indirect (type $0) + local.tee $0 + i32.lt_s + if + local.get $0 + local.set $1 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + ) + (func $closure-class/Range#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 41 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $closure-class/Range#getHasNextClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + i32.load offset=8 + i32.const 0 + i32.gt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.lt_s + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.gt_s + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Range#getNextClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $1 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $3 + i32.store offset=4 + local.get $3 + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $1 + i32.load offset=8 + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + if + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner4 + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $closure-class/Range + block $closure-class/TreeNode + block $closure-class/Resource + block $closure-class/ChainableCounter + block $closure-class/Box + block $closure-class/ObserverState + block $closure-class/Observable + block $closure-class/StateMachine + block $closure-class/QueryBuilder + block $closure-class/DataProcessor + block $closure-class/Dog + block $closure-class/Inner + block $closure-class/Calculator + block $closure-class/BankAccount + block $closure-class/Counter + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner2 $closure-class/Counter $folding-inner0 $folding-inner0 $closure-class/BankAccount $folding-inner0 $folding-inner0 $closure-class/Calculator $folding-inner2 $closure-class/Inner $closure-class/Dog $folding-inner2 $folding-inner0 $folding-inner2 $folding-inner1 $closure-class/DataProcessor $closure-class/QueryBuilder $folding-inner0 $closure-class/StateMachine $folding-inner0 $closure-class/Observable $folding-inner1 $folding-inner0 $closure-class/ObserverState $folding-inner0 $closure-class/Box $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $closure-class/ChainableCounter $folding-inner0 $folding-inner3 $folding-inner0 $closure-class/Resource $folding-inner0 $closure-class/TreeNode $folding-inner1 $closure-class/Range $invalid + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + br $folding-inner3 + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + br $folding-inner3 + end + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6028 + i32.lt_s + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + return + end + i32.const 38816 + i32.const 38864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/closure-class.ts b/tests/compiler/closure-class.ts new file mode 100644 index 0000000000..988238bcef --- /dev/null +++ b/tests/compiler/closure-class.ts @@ -0,0 +1,964 @@ +// ============================================================================= +// CLOSURE CLASS TEST +// ============================================================================= + +// ============================================================================= +// SECTION 1: Basic Method Closures Capturing "this" directly +// ============================================================================= + +class Counter { + count: i32 = 0; + + increment(): void { + this.count++; + } + + getIncrementClosure(): () => void { + return (): void => { + this.count++; + }; + } + + getCount(): i32 { + return this.count; + } + + getCountClosure(): () => i32 { + return (): i32 => this.count; + } +} + +// Test 1.1: Basic this capture in closure +function testBasicThisCapture(): i32 { + let c = new Counter(); + let inc = c.getIncrementClosure(); + let get = c.getCountClosure(); + + inc(); + inc(); + inc(); + + return get(); +} +assert(testBasicThisCapture() == 3); + +// Test 1.2: Multiple instances with their own closures +function testMultipleInstances(): i32 { + let c1 = new Counter(); + let c2 = new Counter(); + + let inc1 = c1.getIncrementClosure(); + let inc2 = c2.getIncrementClosure(); + let get1 = c1.getCountClosure(); + let get2 = c2.getCountClosure(); + + inc1(); inc1(); inc1(); // c1.count = 3 + inc2(); inc2(); // c2.count = 2 + + return get1() * 10 + get2(); // 30 + 2 = 32 +} +assert(testMultipleInstances() == 32); + +// ============================================================================= +// SECTION 2: Complex State Management with Closures +// ============================================================================= + +class BankAccount { + private balance: i32; + private transactionCount: i32 = 0; + + constructor(initialBalance: i32) { + this.balance = initialBalance; + } + + getDepositClosure(): (amount: i32) => void { + return (amount: i32): void => { + this.balance += amount; + this.transactionCount++; + }; + } + + getWithdrawClosure(): (amount: i32) => bool { + return (amount: i32): bool => { + if (this.balance >= amount) { + this.balance -= amount; + this.transactionCount++; + return true; + } + return false; + }; + } + + getBalanceClosure(): () => i32 { + return (): i32 => this.balance; + } + + getTransactionCountClosure(): () => i32 { + return (): i32 => this.transactionCount; + } +} + +// Test 2.1: Bank account operations +function testBankAccount(): i32 { + let account = new BankAccount(100); + + let deposit = account.getDepositClosure(); + let withdraw = account.getWithdrawClosure(); + let getBalance = account.getBalanceClosure(); + let getTxCount = account.getTransactionCountClosure(); + + deposit(50); // balance = 150, txCount = 1 + assert(getBalance() == 150); + + assert(withdraw(30) == true); // balance = 120, txCount = 2 + assert(getBalance() == 120); + + assert(withdraw(200) == false); // insufficient funds, txCount still 2 + assert(getBalance() == 120); + assert(getTxCount() == 2); + + deposit(100); // balance = 220, txCount = 3 + assert(withdraw(220) == true); // balance = 0, txCount = 4 + + return getBalance() * 1000 + getTxCount(); // 0 * 1000 + 4 = 4 +} +assert(testBankAccount() == 4); + +// ============================================================================= +// SECTION 3: Closure Capturing Both "this" and Local Variables +// ============================================================================= + +class Calculator { + result: i32 = 0; + + getOperationClosure(operand: i32, operation: i32): () => i32 { + // Captures both 'this' and parameters 'operand' and 'operation' + return (): i32 => { + if (operation == 0) { // add + this.result += operand; + } else if (operation == 1) { // subtract + this.result -= operand; + } else if (operation == 2) { // multiply + this.result *= operand; + } + return this.result; + }; + } + + reset(): void { + this.result = 0; + } +} + +// Test 3.1: Calculator with mixed captures +function testCalculatorClosures(): i32 { + let calc = new Calculator(); + + let addFive = calc.getOperationClosure(5, 0); + let subtractTwo = calc.getOperationClosure(2, 1); + let multiplyThree = calc.getOperationClosure(3, 2); + + addFive(); // result = 5 + addFive(); // result = 10 + subtractTwo(); // result = 8 + multiplyThree(); // result = 24 + + return calc.result; +} +assert(testCalculatorClosures() == 24); + +// ============================================================================= +// SECTION 4: Nested Classes with Closures +// ============================================================================= + +class Inner { + value: i32; + + constructor(v: i32) { + this.value = v; + } + + getValueClosure(): () => i32 { + return (): i32 => this.value; + } + + getSetterClosure(): (v: i32) => void { + return (v: i32): void => { + this.value = v; + }; + } +} + +class Outer { + inner: Inner; + multiplier: i32; + + constructor(innerValue: i32, mult: i32) { + this.inner = new Inner(innerValue); + this.multiplier = mult; + } + + getComputeClosure(): () => i32 { + // Captures this, which has access to inner + return (): i32 => this.inner.value * this.multiplier; + } + + getInnerSetterClosure(): (v: i32) => void { + return (v: i32): void => { + this.inner.value = v; + }; + } +} + +// Test 4.1: Nested object access through closures +function testNestedClosures(): i32 { + let outer = new Outer(10, 3); + let compute = outer.getComputeClosure(); + let setInner = outer.getInnerSetterClosure(); + + assert(compute() == 30); // 10 * 3 + + setInner(20); + assert(compute() == 60); // 20 * 3 + + return compute(); +} +assert(testNestedClosures() == 60); + +// ============================================================================= +// SECTION 5: Closures with Inheritance +// ============================================================================= + +class Animal { + name: string; + age: i32; + + constructor(name: string, age: i32) { + this.name = name; + this.age = age; + } + + getAgeClosure(): () => i32 { + return (): i32 => this.age; + } + + getAgeIncrementClosure(): () => void { + return (): void => { + this.age++; + }; + } +} + +class Dog extends Animal { + breed: string; + + constructor(name: string, age: i32, breed: string) { + super(name, age); + this.breed = breed; + } + + getBreedClosure(): () => string { + return (): string => this.breed; + } + + getFullInfoClosure(): () => string { + return (): string => this.name + " (" + this.breed + ")"; + } +} + +// Test 5.1: Inheritance with closures +function testInheritanceClosures(): i32 { + let dog = new Dog("Rex", 3, "German Shepherd"); + + let getAge = dog.getAgeClosure(); + let incAge = dog.getAgeIncrementClosure(); + let getBreed = dog.getBreedClosure(); + + assert(getAge() == 3); + assert(getBreed() == "German Shepherd"); + + incAge(); + incAge(); + + return getAge(); // 5 +} +assert(testInheritanceClosures() == 5); + +// ============================================================================= +// SECTION 6: Factory Pattern with Closures +// ============================================================================= + +class EventEmitter { + private listeners: Array<(data: i32) => void> = new Array<(data: i32) => void>(); + + addListener(listener: (data: i32) => void): void { + this.listeners.push(listener); + } + + emit(data: i32): void { + for (let i = 0; i < this.listeners.length; i++) { + this.listeners[i](data); + } + } + + getListenerCount(): i32 { + return this.listeners.length; + } +} + +class DataProcessor { + processedCount: i32 = 0; + lastValue: i32 = 0; + sum: i32 = 0; + + getProcessorClosure(): (data: i32) => void { + return (data: i32): void => { + this.processedCount++; + this.lastValue = data; + this.sum += data; + }; + } +} + +// Test 6.1: Event emitter pattern with closures +function testEventEmitterPattern(): i32 { + let emitter = new EventEmitter(); + let processor1 = new DataProcessor(); + let processor2 = new DataProcessor(); + + emitter.addListener(processor1.getProcessorClosure()); + emitter.addListener(processor2.getProcessorClosure()); + + emitter.emit(10); + emitter.emit(20); + emitter.emit(30); + + assert(processor1.processedCount == 3); + assert(processor2.processedCount == 3); + assert(processor1.sum == 60); + assert(processor2.sum == 60); + assert(processor1.lastValue == 30); + assert(processor2.lastValue == 30); + + return processor1.sum + processor2.sum; // 120 +} +assert(testEventEmitterPattern() == 120); + +// ============================================================================= +// SECTION 7: Builder Pattern with Closures +// ============================================================================= + +class QueryBuilder { + private selectFields: string = "*"; + private tableName: string = ""; + private whereClause: string = ""; + + getSelectClosure(): (fields: string) => void { + return (fields: string): void => { + this.selectFields = fields; + }; + } + + getFromClosure(): (table: string) => void { + return (table: string): void => { + this.tableName = table; + }; + } + + getWhereClosure(): (clause: string) => void { + return (clause: string): void => { + this.whereClause = clause; + }; + } + + getBuildClosure(): () => string { + return (): string => { + let query = "SELECT " + this.selectFields + " FROM " + this.tableName; + if (this.whereClause.length > 0) { + query += " WHERE " + this.whereClause; + } + return query; + }; + } +} + +// Test 7.1: Builder pattern with closures +function testBuilderPattern(): bool { + let builder = new QueryBuilder(); + + let select = builder.getSelectClosure(); + let from = builder.getFromClosure(); + let where = builder.getWhereClosure(); + let build = builder.getBuildClosure(); + + select("id, name"); + from("users"); + where("active = 1"); + + let query = build(); + assert(query == "SELECT id, name FROM users WHERE active = 1"); + + return true; +} +assert(testBuilderPattern() == true); + +// ============================================================================= +// SECTION 8: State Machine with Closures +// ============================================================================= + +class StateMachine { + private state: i32 = 0; // 0=idle, 1=running, 2=paused, 3=stopped + + getStartClosure(): () => bool { + return (): bool => { + if (this.state == 0 || this.state == 2) { + this.state = 1; + return true; + } + return false; + }; + } + + getPauseClosure(): () => bool { + return (): bool => { + if (this.state == 1) { + this.state = 2; + return true; + } + return false; + }; + } + + getStopClosure(): () => bool { + return (): bool => { + if (this.state == 1 || this.state == 2) { + this.state = 3; + return true; + } + return false; + }; + } + + getResetClosure(): () => void { + return (): void => { + this.state = 0; + }; + } + + getStateClosure(): () => i32 { + return (): i32 => this.state; + } +} + +// Test 8.1: State machine transitions +function testStateMachine(): i32 { + let sm = new StateMachine(); + + let start = sm.getStartClosure(); + let pause = sm.getPauseClosure(); + let stop = sm.getStopClosure(); + let reset = sm.getResetClosure(); + let getState = sm.getStateClosure(); + + assert(getState() == 0); // idle + + assert(start() == true); + assert(getState() == 1); // running + + assert(start() == false); // already running + + assert(pause() == true); + assert(getState() == 2); // paused + + assert(start() == true); // can restart from paused + assert(getState() == 1); // running again + + assert(stop() == true); + assert(getState() == 3); // stopped + + assert(start() == false); // can't start from stopped + + reset(); + assert(getState() == 0); // back to idle + + return getState(); +} +assert(testStateMachine() == 0); + +// ============================================================================= +// SECTION 9: Observable Pattern with Closures +// ============================================================================= + +class Observable { + private value: i32; + private observers: Array<(oldVal: i32, newVal: i32) => void> = new Array<(oldVal: i32, newVal: i32) => void>(); + + constructor(initial: i32) { + this.value = initial; + } + + getSubscribeClosure(): (observer: (oldVal: i32, newVal: i32) => void) => void { + return (observer: (oldVal: i32, newVal: i32) => void): void => { + this.observers.push(observer); + }; + } + + getSetClosure(): (newValue: i32) => void { + return (newValue: i32): void => { + let oldValue = this.value; + this.value = newValue; + for (let i = 0; i < this.observers.length; i++) { + this.observers[i](oldValue, newValue); + } + }; + } + + getGetClosure(): () => i32 { + return (): i32 => this.value; + } +} + +// Helper class for tracking observer state +class ObserverState { + changeCount: i32 = 0; + totalDiff: i32 = 0; + + getCountObserver(): (oldVal: i32, newVal: i32) => void { + return (oldVal: i32, newVal: i32): void => { + this.changeCount++; + }; + } + + getDiffObserver(): (oldVal: i32, newVal: i32) => void { + return (oldVal: i32, newVal: i32): void => { + this.totalDiff += newVal - oldVal; + }; + } +} + +// Test 9.1: Observable with multiple observers +function testObservable(): i32 { + let obs = new Observable(0); + + let subscribe = obs.getSubscribeClosure(); + let set = obs.getSetClosure(); + let get = obs.getGetClosure(); + + let state = new ObserverState(); + + subscribe(state.getCountObserver()); + subscribe(state.getDiffObserver()); + + set(10); // changeCount = 1, totalDiff = 10 + set(25); // changeCount = 2, totalDiff = 25 (10 + 15) + set(20); // changeCount = 3, totalDiff = 20 (25 - 5) + + assert(get() == 20); + assert(state.changeCount == 3); + assert(state.totalDiff == 20); + + return get() + state.changeCount + state.totalDiff; // 20 + 3 + 20 = 43 +} +assert(testObservable() == 43); + +// ============================================================================= +// SECTION 10: Complex Generic-like Patterns +// ============================================================================= + +class Box { + value: i32; + + constructor(v: i32) { + this.value = v; + } + + getMapClosure(): (fn: (v: i32) => i32) => void { + return (fn: (v: i32) => i32): void => { + this.value = fn(this.value); + }; + } + + getFlatMapClosure(): (fn: (v: i32) => Box) => Box { + return (fn: (v: i32) => Box): Box => { + return fn(this.value); + }; + } + + getValueClosure(): () => i32 { + return (): i32 => this.value; + } +} + +// Test 10.1: Functor-like map operation +function testBoxMap(): i32 { + let box = new Box(5); + let map = box.getMapClosure(); + let getValue = box.getValueClosure(); + + map((v: i32): i32 => v * 2); // 10 + map((v: i32): i32 => v + 3); // 13 + map((v: i32): i32 => v * v); // 169 + + return getValue(); +} +assert(testBoxMap() == 169); + +// Test 10.2: FlatMap with closure +function testBoxFlatMap(): i32 { + let box = new Box(5); + let flatMap = box.getFlatMapClosure(); + + let result = flatMap((v: i32): Box => new Box(v * 10)); + + return result.value; // 50 +} +assert(testBoxFlatMap() == 50); + +// ============================================================================= +// SECTION 11: Closure Chaining with This +// ============================================================================= + +class ChainableCounter { + count: i32 = 0; + + // Returns a closure that returns this for chaining + getAddClosure(amount: i32): () => ChainableCounter { + return (): ChainableCounter => { + this.count += amount; + return this; + }; + } + + getMultiplyClosure(factor: i32): () => ChainableCounter { + return (): ChainableCounter => { + this.count *= factor; + return this; + }; + } + + getResetClosure(): () => ChainableCounter { + return (): ChainableCounter => { + this.count = 0; + return this; + }; + } +} + +// Test 11.1: Method chaining through closures +function testClosureChaining(): i32 { + let counter = new ChainableCounter(); + + let add5 = counter.getAddClosure(5); + let add10 = counter.getAddClosure(10); + let mult2 = counter.getMultiplyClosure(2); + + add5(); // count = 5 + add10(); // count = 15 + mult2(); // count = 30 + add5(); // count = 35 + + return counter.count; +} +assert(testClosureChaining() == 35); + +// ============================================================================= +// SECTION 12: Callback-based Async-like Patterns +// ============================================================================= + +class Task { + private completed: bool = false; + private result: i32 = 0; + private callbacks: Array<(result: i32) => void> = new Array<(result: i32) => void>(); + + getThenClosure(): (callback: (result: i32) => void) => void { + return (callback: (result: i32) => void): void => { + if (this.completed) { + callback(this.result); + } else { + this.callbacks.push(callback); + } + }; + } + + getCompleteClosure(): (result: i32) => void { + return (result: i32): void => { + this.completed = true; + this.result = result; + for (let i = 0; i < this.callbacks.length; i++) { + this.callbacks[i](result); + } + }; + } + + isCompleted(): bool { + return this.completed; + } +} + +// Test 12.1: Promise-like pattern +function testTaskCallbacks(): i32 { + let task = new Task(); + let then = task.getThenClosure(); + let complete = task.getCompleteClosure(); + + let receivedValue: i32 = 0; + + // Register callback before completion + then((result: i32): void => { + receivedValue = result * 2; + }); + + assert(receivedValue == 0); // Not called yet + + complete(21); + + assert(receivedValue == 42); // Callback was called + assert(task.isCompleted() == true); + + return receivedValue; +} +assert(testTaskCallbacks() == 42); + +// Test 12.2: Register callback after completion +function testTaskCallbackAfterComplete(): i32 { + let task = new Task(); + let then = task.getThenClosure(); + let complete = task.getCompleteClosure(); + + complete(50); + + let receivedValue: i32 = 0; + then((result: i32): void => { + receivedValue = result; + }); + + // Should be called immediately since task is already complete + return receivedValue; +} +assert(testTaskCallbackAfterComplete() == 50); + +// ============================================================================= +// SECTION 13: Resource Management Pattern +// ============================================================================= + +class Resource { + private acquired: bool = false; + private useCount: i32 = 0; + + getAcquireClosure(): () => bool { + return (): bool => { + if (!this.acquired) { + this.acquired = true; + return true; + } + return false; + }; + } + + getReleaseClosure(): () => bool { + return (): bool => { + if (this.acquired) { + this.acquired = false; + return true; + } + return false; + }; + } + + getUseClosure(): (action: () => i32) => i32 { + return (action: () => i32): i32 => { + if (this.acquired) { + this.useCount++; + return action(); + } + return -1; // Error: not acquired + }; + } + + getUseCount(): i32 { + return this.useCount; + } +} + +// Test 13.1: Resource acquire/use/release +function testResourceManagement(): i32 { + let resource = new Resource(); + + let acquire = resource.getAcquireClosure(); + let release = resource.getReleaseClosure(); + let use = resource.getUseClosure(); + + // Can't use without acquiring + assert(use((): i32 => 42) == -1); + + // Acquire + assert(acquire() == true); + assert(acquire() == false); // Already acquired + + // Use + assert(use((): i32 => 10) == 10); + assert(use((): i32 => 20) == 20); + assert(use((): i32 => 30) == 30); + + assert(resource.getUseCount() == 3); + + // Release + assert(release() == true); + assert(release() == false); // Already released + + // Can't use after release + assert(use((): i32 => 42) == -1); + + return resource.getUseCount(); +} +assert(testResourceManagement() == 3); + +// ============================================================================= +// SECTION 14: Composite Pattern with Closures +// ============================================================================= + +class TreeNode { + value: i32; + children: Array = new Array(); + + constructor(v: i32) { + this.value = v; + } + + addChild(child: TreeNode): void { + this.children.push(child); + } + + getSumClosure(): () => i32 { + return (): i32 => { + let sum = this.value; + for (let i = 0; i < this.children.length; i++) { + let childSum = this.children[i].getSumClosure(); + sum += childSum(); + } + return sum; + }; + } + + getDepthClosure(): () => i32 { + return (): i32 => { + if (this.children.length == 0) { + return 1; + } + let maxChildDepth: i32 = 0; + for (let i = 0; i < this.children.length; i++) { + let childDepth = this.children[i].getDepthClosure(); + let d = childDepth(); + if (d > maxChildDepth) { + maxChildDepth = d; + } + } + return maxChildDepth + 1; + }; + } +} + +// Test 14.1: Tree traversal with closures +function testTreePattern(): i32 { + // 1 + // / \ + // 2 3 + // / \ \ + // 4 5 6 + let root = new TreeNode(1); + let n2 = new TreeNode(2); + let n3 = new TreeNode(3); + let n4 = new TreeNode(4); + let n5 = new TreeNode(5); + let n6 = new TreeNode(6); + + root.addChild(n2); + root.addChild(n3); + n2.addChild(n4); + n2.addChild(n5); + n3.addChild(n6); + + let getSum = root.getSumClosure(); + let getDepth = root.getDepthClosure(); + + assert(getSum() == 21); // 1+2+3+4+5+6 + assert(getDepth() == 3); + + return getSum() * 100 + getDepth(); // 2103 +} +assert(testTreePattern() == 2103); + +// ============================================================================= +// SECTION 15: Iterator Pattern with Closures +// ============================================================================= + +class Range { + private current: i32; + private endVal: i32; + private step: i32; + + constructor(start: i32, endVal: i32, step: i32 = 1) { + this.current = start; + this.endVal = endVal; + this.step = step; + } + + getHasNextClosure(): () => bool { + return (): bool => { + if (this.step > 0) { + return this.current < this.endVal; + } else { + return this.current > this.endVal; + } + }; + } + + getNextClosure(): () => i32 { + return (): i32 => { + let value = this.current; + this.current += this.step; + return value; + }; + } + + getResetClosure(start: i32): () => void { + return (): void => { + this.current = start; + }; + } +} + +// Test 15.1: Forward iteration +function testRangeIterator(): i32 { + let range = new Range(0, 5, 1); + let hasNext = range.getHasNextClosure(); + let next = range.getNextClosure(); + + let sum: i32 = 0; + while (hasNext()) { + sum += next(); + } + + return sum; // 0+1+2+3+4 = 10 +} +assert(testRangeIterator() == 10); + +// Test 15.2: Backward iteration with step +function testReverseRangeIterator(): i32 { + let range = new Range(10, 0, -2); + let hasNext = range.getHasNextClosure(); + let next = range.getNextClosure(); + + let sum: i32 = 0; + while (hasNext()) { + sum += next(); + } + + return sum; // 10+8+6+4+2 = 30 +} +assert(testReverseRangeIterator() == 30); + +// ============================================================================= +// Final assertion to confirm all tests passed +// ============================================================================= +assert(true); // If we reach here, all tests passed! diff --git a/tests/compiler/closure-complex.debug.wat b/tests/compiler/closure-complex.debug.wat new file mode 100644 index 0000000000..43d15cacb8 --- /dev/null +++ b/tests/compiler/closure-complex.debug.wat @@ -0,0 +1,6601 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i64) (result i32))) + (type $12 (func (param i32 i32 i32) (result i32))) + (type $13 (func (param i32 i32 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 $~lib/native/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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/__closure_env (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/rt/__rtti_base i32 (i32.const 3376)) + (global $~lib/memory/__data_end i32 (i32.const 3448)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36216)) + (global $~lib/memory/__heap_base i32 (i32.const 36216)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00c\00l\00o\00s\00u\00r\00e\00-\00c\00o\00m\00p\00l\00e\00x\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2604) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $26 (i32.const 2652) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $27 (i32.const 2700) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2732) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 2860) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 2892) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 2924) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 2956) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 2988) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $34 (i32.const 3020) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data $35 (i32.const 3052) "\1c\00\00\00\00\00\00\00\00\00\00\00\r\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 3084) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data $37 (i32.const 3116) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\r\00\00\00\00\00\00\00\00\00\00\00") + (data $38 (i32.const 3148) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") + (data $39 (i32.const 3180) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $40 (i32.const 3228) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") + (data $41 (i32.const 3260) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $42 (i32.const 3308) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") + (data $43 (i32.const 3340) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") + (data $44 (i32.const 3376) "\11\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\02A\00\00\02\t\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 18 18 funcref) + (elem $0 (i32.const 1) $closure-complex/testNestedArrowsWithClassCapture~anonymous|0 $closure-complex/testNestedArrowsWithClassCapture~anonymous|1 $closure-complex/testArrowClosureWithClass~anonymous|0 $closure-complex/createCounterOperations~anonymous|0 $closure-complex/createCounterOperations~anonymous|1 $closure-complex/testDeeplyNestedClassCreation~anonymous|0~anonymous|0~anonymous|0 $closure-complex/testDeeplyNestedClassCreation~anonymous|0~anonymous|0 $closure-complex/testDeeplyNestedClassCreation~anonymous|0 $closure-complex/ClosureFactory#createAdder~anonymous|0 $closure-complex/SelfReferencing#addCallback~anonymous|0 $closure-complex/testMultipleClosuresSharing~anonymous|0 $closure-complex/testMultipleClosuresSharing~anonymous|1 $closure-complex/testNestedArrowFunctions~anonymous|0~anonymous|0 $closure-complex/testNestedArrowFunctions~anonymous|0 $closure-complex/testComplexPipeline~anonymous|0 $closure-complex/testCurriedWithClass~anonymous|0~anonymous|0 $closure-complex/testCurriedWithClass~anonymous|0) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2064 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2064 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 2064 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 2192 + i32.const 2256 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 2064 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2064 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 2000 + i32.const 2336 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 2000 + i32.const 2064 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $closure-complex/Counter#set:count (param $this i32) (param $count i32) + local.get $this + local.get $count + i32.store + ) + (func $closure-complex/Counter#get:count (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-complex/Calculator#set:result (param $this i32) (param $result i32) + local.get $this + local.get $result + i32.store + ) + (func $closure-complex/Calculator#get:result (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) + (local $buffer i32) + local.get $size + local.get $id + call $~lib/rt/itcms/__new + local.set $buffer + local.get $data + if + local.get $buffer + local.get $data + local.get $size + memory.copy + end + local.get $buffer + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 2064 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array<%28%29=>i32>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array<%28%29=>i32>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<%28%29=>i32>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $closure-complex/ClosureFactory#set:baseValue (param $this i32) (param $baseValue i32) + local.get $this + local.get $baseValue + i32.store + ) + (func $closure-complex/ClosureFactory#get:baseValue (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-complex/ClosureFactory#createAdder~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + local.get $$closureEnv + i32.load offset=8 + local.get $$closureEnv + i32.load offset=12 + i32.add + local.get $$closureEnv + i32.load offset=4 + i32.add + return + ) + (func $closure-complex/SelfReferencing#set:value (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store + ) + (func $closure-complex/SelfReferencing#set:callbacks (param $this i32) (param $callbacks i32) + local.get $this + local.get $callbacks + i32.store offset=4 + local.get $this + local.get $callbacks + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-complex/SelfReferencing#get:callbacks (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-complex/SelfReferencing#get:value (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-complex/testMultipleClosuresSharing~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure-complex/testNestedArrowFunctions~anonymous|0~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 2 + i32.mul + ) + (func $closure-complex/testNestedArrowFunctions~anonymous|0 (param $x i32) (result i32) + (local $$closureEnv i32) + (local $$env i32) + (local $captured i32) + (local $4 i32) + global.get $~lib/__closure_env + local.set $$closureEnv + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $$closureEnv + i32.store + local.get $$env + local.get $x + local.get $$closureEnv + i32.load offset=4 + i32.add + i32.store offset=4 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 13 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + return + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-complex/testCurriedWithClass~anonymous|0 (param $c i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $c + i32.store offset=4 + i32.const 8 + i32.const 15 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 16 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $start:closure-complex + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 2112 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 2144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 2288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $closure-complex/testNestedArrowsWithClassCapture + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-complex/testArrowClosureWithClass + i32.const 40 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 73 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-complex/testFactoryWithClassMethods + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-complex/testDeeplyNestedClassCreation + i32.const 222 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 123 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-complex/testClassReturningClosures + i32.const 223 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 155 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-complex/testThisCaptureInClosures + i32.const 120 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 199 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-complex/testMultipleClosuresSharing + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 217 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-complex/testNestedArrowFunctions + i32.const 70 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 235 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-complex/testComplexPipeline + i32.const 35 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 257 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-complex/testCurriedWithClass + i32.const 60 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2464 + i32.const 279 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:closure-complex + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 36240 + i32.const 36288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $closure-complex/Counter#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-complex/Counter#set:count + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-complex/Counter#increment (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-complex/Counter#get:count + i32.const 1 + i32.add + call $closure-complex/Counter#set:count + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-complex/Counter#get:count + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-complex/testNestedArrowsWithClassCapture~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $closure-complex/Counter#increment + local.set $result + local.get $result + local.get $$closureEnv + i32.load offset=8 + i32.mul + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $closure-complex/Calculator#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-complex/Calculator#set:result + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-complex/Calculator#add (param $this i32) (param $x i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-complex/Calculator#get:result + local.get $x + i32.add + call $closure-complex/Calculator#set:result + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $closure-complex/testArrowClosureWithClass~anonymous|0 (param $x i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $x + call $closure-complex/Calculator#add + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-complex/Calculator#getResult (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-complex/Calculator#get:result + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-complex/testArrowClosureWithClass (result i32) + (local $$env i32) + (local $calc i32) + (local $2 i32) + (local $addToCalc i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + call $closure-complex/Calculator#constructor + i32.store offset=4 + local.get $$env + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 10 + call $closure-complex/Calculator#set:result + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 3 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $addToCalc + i32.store offset=4 + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $addToCalc + local.tee $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $4) + i32.const 10 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $addToCalc + local.tee $5 + i32.store offset=12 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $4) + i32.const 15 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $addToCalc + local.tee $6 + i32.store offset=16 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $4) + local.get $$env + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $closure-complex/Calculator#getResult + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $closure-complex/createCounterOperations~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-complex/Counter#increment + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 2624 + i32.const 2672 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#push (param $this i32) (param $value i32) (result i32) + (local $oldLen i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<%28%29=>i32>#get:length_ + local.set $oldLen + local.get $oldLen + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 1 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<%28%29=>i32>#get:dataStart + local.get $oldLen + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $len + call $~lib/array/Array<%28%29=>i32>#set:length_ + local.get $len + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $closure-complex/Counter#getCount (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-complex/Counter#get:count + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-complex/createCounterOperations~anonymous|1 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-complex/Counter#getCount + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-complex/createCounterOperations (param $counter i32) (result i32) + (local $1 i32) + (local $operations i32) + (local $$env i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $counter + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 8 + i32.const 2560 + call $~lib/rt/__newArray + local.tee $operations + i32.store + local.get $operations + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 4 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/array/Array<%28%29=>i32>#push + drop + local.get $operations + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 5 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/array/Array<%28%29=>i32>#push + drop + local.get $operations + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/array/Array<%28%29=>i32>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28%29=>i32>#get:length_ + i32.ge_u + if + i32.const 2192 + i32.const 2672 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28%29=>i32>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 2752 + i32.const 2672 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-complex/testFactoryWithClassMethods (result i32) + (local $counter i32) + (local $ops i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-complex/Counter#constructor + local.tee $counter + i32.store + global.get $~lib/memory/__stack_pointer + local.get $counter + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $closure-complex/createCounterOperations + local.tee $ops + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $ops + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $2 + i32.store offset=12 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $2) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $ops + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $ops + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $ops + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure-complex/testDeeplyNestedClassCreation~anonymous|0~anonymous|0~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $calc i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-complex/Calculator#constructor + local.tee $calc + i32.store + local.get $calc + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $$closureEnv + i32.load + i32.load + i32.load offset=4 + local.get $$closureEnv + i32.load + i32.load offset=4 + i32.add + local.get $$closureEnv + i32.load offset=4 + i32.add + call $closure-complex/Calculator#set:result + local.get $calc + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $closure-complex/Calculator#multiply (param $this i32) (param $x i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-complex/Calculator#get:result + local.get $x + i32.mul + call $closure-complex/Calculator#set:result + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $closure-complex/testDeeplyNestedClassCreation~anonymous|0~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $$env i32) + (local $level2Value i32) + (local $3 i32) + (local $level3 i32) + (local $5 i32) + (local $calculator i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/__closure_env + local.set $$closureEnv + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $$closureEnv + i32.store + local.get $$env + i32.const 1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 6 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.tee $level3 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $level3 + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + local.tee $calculator + i32.store offset=8 + local.get $calculator + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 2 + call $closure-complex/Calculator#multiply + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $closure-complex/Calculator#getResult + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $closure-complex/ClosureFactory#constructor (param $this i32) (param $baseValue i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $closure-complex/ClosureFactory#set:baseValue + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $baseValue + call $closure-complex/ClosureFactory#set:baseValue + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $closure-complex/ClosureFactory#createAdder (param $this i32) (param $amount i32) (result i32) + (local $$env i32) + (local $base i32) + (local $counter i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $amount + i32.store offset=12 + local.get $$env + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $closure-complex/ClosureFactory#get:baseValue + i32.store offset=8 + local.get $$env + i32.const 0 + i32.store offset=4 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 9 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure-complex/testClassReturningClosures (result i32) + (local $factory i32) + (local $adder i32) + (local $sum i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 100 + call $closure-complex/ClosureFactory#constructor + local.tee $factory + i32.store + global.get $~lib/memory/__stack_pointer + local.get $factory + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 10 + call $closure-complex/ClosureFactory#createAdder + local.tee $adder + i32.store offset=8 + i32.const 0 + local.set $sum + local.get $sum + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $adder + local.tee $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + i32.add + local.set $sum + local.get $sum + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $adder + local.tee $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + i32.add + local.set $sum + local.get $sum + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-complex/SelfReferencing#constructor (param $this i32) (param $value i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + call $closure-complex/SelfReferencing#set:value + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + i32.const 8 + i32.const 3008 + call $~lib/rt/__newArray + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $closure-complex/SelfReferencing#set:callbacks + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $value + call $closure-complex/SelfReferencing#set:value + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $closure-complex/SelfReferencing#addCallback~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-complex/SelfReferencing#get:value + i32.const 2 + i32.mul + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-complex/SelfReferencing#addCallback (param $this i32) + (local $$env i32) + (local $self i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $this + i32.store offset=4 + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $closure-complex/SelfReferencing#get:callbacks + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 10 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/array/Array<%28%29=>i32>#push + drop + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-complex/SelfReferencing#setValue (param $this i32) (param $newValue i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newValue + call $closure-complex/SelfReferencing#set:value + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<%28%29=>i32>#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-complex/SelfReferencing#executeCallbacks (param $this i32) (result i32) + (local $sum i32) + (local $i i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + local.set $sum + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $closure-complex/SelfReferencing#get:callbacks + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<%28%29=>i32>#get:length + i32.lt_s + if + local.get $sum + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $closure-complex/SelfReferencing#get:callbacks + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + i32.add + local.set $sum + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $sum + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $closure-complex/testThisCaptureInClosures (result i32) + (local $obj i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $closure-complex/SelfReferencing#constructor + local.tee $obj + i32.store + local.get $obj + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-complex/SelfReferencing#addCallback + local.get $obj + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-complex/SelfReferencing#addCallback + local.get $obj + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 20 + call $closure-complex/SelfReferencing#setValue + local.get $obj + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-complex/SelfReferencing#addCallback + local.get $obj + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-complex/SelfReferencing#executeCallbacks + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-complex/testMultipleClosuresSharing~anonymous|0 + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $$closureEnv + i32.load offset=8 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-complex/Counter#increment + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 2192 + i32.const 2672 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-complex/testComplexPipeline~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-complex/Counter#increment + drop + local.get $$closureEnv + i32.load offset=8 + local.get $$closureEnv + i32.load offset=12 + i32.mul + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-complex/testComplexPipeline (result i32) + (local $$env i32) + (local $counter i32) + (local $2 i32) + (local $data i32) + (local $multiplier i32) + (local $result i32) + (local $i i32) + (local $value i32) + (local $8 i32) + (local $process i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + call $closure-complex/Counter#constructor + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 9 + i32.const 3280 + call $~lib/rt/__newArray + local.tee $data + i32.store + local.get $$env + i32.const 2 + i32.store offset=12 + i32.const 0 + local.set $result + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $data + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $$env + local.get $data + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $i + call $~lib/array/Array#__get + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $8 + local.get $8 + i32.const 15 + i32.store + local.get $8 + local.get $$env + i32.store offset=4 + local.get $8 + local.tee $process + i32.store offset=8 + local.get $result + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $process + local.tee $10 + i32.store offset=12 + local.get $10 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $2) + i32.add + local.set $result + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $result + local.get $$env + i32.load offset=4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $closure-complex/Counter#getCount + i32.add + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $closure-complex/testCurriedWithClass~anonymous|0~anonymous|0 (param $x i32) (result i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $x + call $closure-complex/Calculator#add + drop + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $closure-complex/testCurriedWithClass (result i32) + (local $calc i32) + (local $1 i32) + (local $addTo i32) + (local $3 i32) + (local $adder i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-complex/Calculator#constructor + local.tee $calc + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 16 + call $~lib/rt/itcms/__new + local.set $1 + local.get $1 + i32.const 17 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.tee $addTo + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $calc + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $addTo + local.tee $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + local.tee $adder + i32.store offset=16 + i32.const 10 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $adder + local.tee $5 + i32.store offset=20 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + drop + i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $adder + local.tee $6 + i32.store offset=24 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + drop + i32.const 30 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $adder + local.tee $7 + i32.store offset=28 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + drop + local.get $calc + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $closure-complex/Calculator#getResult + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-complex/testNestedArrowsWithClassCapture~anonymous|1 (result i32) + (local $$closureEnv i32) + (local $sum i32) + (local $i i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + i32.const 0 + local.set $sum + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + i32.const 3 + i32.lt_s + if + local.get $sum + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $$closureEnv + i32.load offset=12 + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + i32.add + local.set $sum + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $sum + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $closure-complex/testNestedArrowsWithClassCapture (result i32) + (local $$env i32) + (local $counter i32) + (local $multiplier i32) + (local $3 i32) + (local $innerIncrement i32) + (local $5 i32) + (local $innerProcess i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + call $closure-complex/Counter#constructor + i32.store offset=4 + local.get $$env + i32.const 2 + i32.store offset=8 + local.get $$env + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 1 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 2 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + local.tee $innerProcess + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $innerProcess + local.tee $7 + i32.store offset=4 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $2) + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $closure-complex/testDeeplyNestedClassCreation~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $$env i32) + (local $level1Value i32) + (local $3 i32) + (local $level2 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $$closureEnv + i32.store + local.get $$env + i32.const 10 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 7 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.tee $level2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $level2 + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure-complex/testDeeplyNestedClassCreation (result i32) + (local $$env i32) + (local $outerValue i32) + (local $2 i32) + (local $level1 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 100 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 8 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $level1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $level1 + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-complex/testMultipleClosuresSharing (result i32) + (local $$env i32) + (local $shared i32) + (local $counter i32) + (local $3 i32) + (local $incrementShared i32) + (local $5 i32) + (local $getShared i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.store offset=4 + local.get $$env + i32.const 0 + call $closure-complex/Counter#constructor + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 13 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 11 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.tee $incrementShared + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 12 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + local.tee $getShared + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $incrementShared + local.tee $7 + i32.store offset=8 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $incrementShared + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $incrementShared + local.tee $9 + i32.store offset=16 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getShared + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $2) + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $closure-complex/testNestedArrowFunctions (result i32) + (local $$env i32) + (local $base i32) + (local $2 i32) + (local $outer i32) + (local $4 i32) + (local $fn1 i32) + (local $6 i32) + (local $fn2 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 10 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 14 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 14 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $outer + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $outer + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + local.tee $fn1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 10 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $outer + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + local.tee $fn2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn1 + local.tee $8 + i32.store offset=20 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn2 + local.tee $9 + i32.store offset=24 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $2) + i32.add + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2624 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2752 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>void>#__visit + ) + (func $~lib/array/Array<%28%29=>i32>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<%28%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<%28%29=>i32>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28%29=>closure-complex/Calculator>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>closure-complex/Calculator>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>closure-complex/Calculator>#__visit + ) + (func $closure-complex/SelfReferencing~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%29=>%28%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>%28%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>%28%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%29=>closure-complex/Calculator>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>closure-complex/Calculator>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>closure-complex/Calculator>#__visit + ) + (func $~lib/function/Function<%28closure-complex/Calculator%29=>%28i32%29=>closure-complex/Calculator>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28closure-complex/Calculator%29=>%28i32%29=>closure-complex/Calculator>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28closure-complex/Calculator%29=>%28i32%29=>closure-complex/Calculator>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28closure-complex/Calculator%29=>%28i32%29=>closure-complex/Calculator> + block $~lib/function/Function<%28i32%29=>closure-complex/Calculator> + block $~lib/function/Function<%28i32%29=>%28%29=>i32> + block $~lib/function/Function<%28%29=>void> + block $closure-complex/SelfReferencing + block $closure-complex/ClosureFactory + block $~lib/function/Function<%28%29=>closure-complex/Calculator> + block $~lib/array/Array + block $~lib/array/Array<%28%29=>i32> + block $~lib/function/Function<%28i32%29=>void> + block $closure-complex/Calculator + block $~lib/function/Function<%28%29=>i32> + block $closure-complex/Counter + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $closure-complex/Counter $~lib/function/Function<%28%29=>i32> $closure-complex/Calculator $~lib/function/Function<%28i32%29=>void> $~lib/array/Array<%28%29=>i32> $~lib/array/Array $~lib/function/Function<%28%29=>closure-complex/Calculator> $closure-complex/ClosureFactory $closure-complex/SelfReferencing $~lib/function/Function<%28%29=>void> $~lib/function/Function<%28i32%29=>%28%29=>i32> $~lib/function/Function<%28i32%29=>closure-complex/Calculator> $~lib/function/Function<%28closure-complex/Calculator%29=>%28i32%29=>closure-complex/Calculator> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<%28%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>closure-complex/Calculator>~visit + return + end + return + end + local.get $0 + local.get $1 + call $closure-complex/SelfReferencing~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>%28%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>closure-complex/Calculator>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28closure-complex/Calculator%29=>%28i32%29=>closure-complex/Calculator>~visit + return + end + unreachable + ) + (func $~lib/function/Function<%28%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28%29=>i32>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28%29=>i32>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28%29=>i32>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>closure-complex/Calculator>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>closure-complex/Calculator>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>%28%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>%28%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>closure-complex/Calculator>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>closure-complex/Calculator>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28closure-complex/Calculator%29=>%28i32%29=>closure-complex/Calculator>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28closure-complex/Calculator%29=>%28i32%29=>closure-complex/Calculator>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/closure-complex.json b/tests/compiler/closure-complex.json new file mode 100644 index 0000000000..454738fb3d --- /dev/null +++ b/tests/compiler/closure-complex.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--enable", "closures" + ] +} diff --git a/tests/compiler/closure-complex.release.wat b/tests/compiler/closure-complex.release.wat new file mode 100644 index 0000000000..de6ba188b1 --- /dev/null +++ b/tests/compiler/closure-complex.release.wat @@ -0,0 +1,4782 @@ +(module + (type $0 (func (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (param i32 i32 i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i32) (result i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/__closure_env (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37240)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "\1c") + (data $19.1 (i32.const 3416) "\05\00\00\00\08\00\00\00\01") + (data $20 (i32.const 3436) "\1c") + (data $20.1 (i32.const 3448) "\05\00\00\00\08\00\00\00\02") + (data $21 (i32.const 3468) "<") + (data $21.1 (i32.const 3480) "\02\00\00\00$\00\00\00c\00l\00o\00s\00u\00r\00e\00-\00c\00o\00m\00p\00l\00e\00x\00.\00t\00s") + (data $22 (i32.const 3532) "\1c") + (data $22.1 (i32.const 3544) "\07\00\00\00\08\00\00\00\03") + (data $23 (i32.const 3564) "\1c") + (data $23.1 (i32.const 3576) "\01") + (data $24 (i32.const 3596) "\1c") + (data $24.1 (i32.const 3608) "\05\00\00\00\08\00\00\00\04") + (data $25 (i32.const 3628) ",") + (data $25.1 (i32.const 3640) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $26 (i32.const 3676) ",") + (data $26.1 (i32.const 3688) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $27 (i32.const 3724) "\1c") + (data $27.1 (i32.const 3736) "\05\00\00\00\08\00\00\00\05") + (data $28 (i32.const 3756) "|") + (data $28.1 (i32.const 3768) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $29 (i32.const 3884) "\1c") + (data $29.1 (i32.const 3896) "\n\00\00\00\08\00\00\00\06") + (data $30 (i32.const 3916) "\1c") + (data $30.1 (i32.const 3928) "\05\00\00\00\08\00\00\00\07") + (data $31 (i32.const 3948) "\1c") + (data $31.1 (i32.const 3960) "\05\00\00\00\08\00\00\00\08") + (data $32 (i32.const 3980) "\1c") + (data $32.1 (i32.const 3992) "\05\00\00\00\08\00\00\00\t") + (data $33 (i32.const 4012) "\1c") + (data $33.1 (i32.const 4024) "\01") + (data $34 (i32.const 4044) "\1c") + (data $34.1 (i32.const 4056) "\05\00\00\00\08\00\00\00\n") + (data $35 (i32.const 4076) "\1c") + (data $35.1 (i32.const 4088) "\r\00\00\00\08\00\00\00\0b") + (data $36 (i32.const 4108) "\1c") + (data $36.1 (i32.const 4120) "\05\00\00\00\08\00\00\00\0c") + (data $37 (i32.const 4140) "\1c") + (data $37.1 (i32.const 4152) "\05\00\00\00\08\00\00\00\r") + (data $38 (i32.const 4172) "\1c") + (data $38.1 (i32.const 4184) "\0e\00\00\00\08\00\00\00\0e") + (data $39 (i32.const 4204) ",") + (data $39.1 (i32.const 4216) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $40 (i32.const 4252) "\1c") + (data $40.1 (i32.const 4264) "\05\00\00\00\08\00\00\00\0f") + (data $41 (i32.const 4284) ",") + (data $41.1 (i32.const 4296) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $42 (i32.const 4332) "\1c") + (data $42.1 (i32.const 4344) "\0f\00\00\00\08\00\00\00\10") + (data $43 (i32.const 4364) "\1c") + (data $43.1 (i32.const 4376) "\10\00\00\00\08\00\00\00\11") + (data $44 (i32.const 4400) "\11\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\02A\00\00\02\t\00\00\00\00\00\00 ") + (table $0 18 18 funcref) + (elem $0 (i32.const 1) $closure-complex/testNestedArrowsWithClassCapture~anonymous|0 $closure-complex/testNestedArrowsWithClassCapture~anonymous|1 $closure-complex/testArrowClosureWithClass~anonymous|0 $closure-complex/createCounterOperations~anonymous|0 $closure-complex/createCounterOperations~anonymous|1 $closure-complex/testDeeplyNestedClassCreation~anonymous|0~anonymous|0~anonymous|0 $closure-complex/testDeeplyNestedClassCreation~anonymous|0~anonymous|0 $closure-complex/testDeeplyNestedClassCreation~anonymous|0 $closure-complex/ClosureFactory#createAdder~anonymous|0 $closure-complex/SelfReferencing#addCallback~anonymous|0 $closure-complex/testMultipleClosuresSharing~anonymous|0 $closure-complex/testMultipleClosuresSharing~anonymous|1 $closure-complex/testNestedArrowFunctions~anonymous|0~anonymous|0 $closure-complex/testNestedArrowFunctions~anonymous|0 $closure-complex/testComplexPipeline~anonymous|0 $closure-complex/testCurriedWithClass~anonymous|0~anonymous|0 $closure-complex/testCurriedWithClass~anonymous|0) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 3216 + call $~lib/rt/itcms/__visit + i32.const 3648 + call $~lib/rt/itcms/__visit + i32.const 3776 + call $~lib/rt/itcms/__visit + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3088 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 3088 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$248 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 37240 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3088 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$248 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 3088 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 4400 + i32.load + i32.gt_u + if + i32.const 3216 + i32.const 3280 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 4404 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 3360 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 3360 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 3360 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 3360 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 3360 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 37248 + i32.const 0 + i32.store + i32.const 38816 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 37248 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 37248 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 37248 + i32.const 38820 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 37248 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 37240 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 3088 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 37240 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 37240 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 3360 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $3 + end + else + local.get $3 + end + i32.const 4 + local.get $0 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 3360 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) + (func $~lib/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 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$71 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + 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$71 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3088 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $closure-complex/ClosureFactory#createAdder~anonymous|0 (result i32) + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + local.get $0 + i32.load offset=12 + i32.add + i32.add + ) + (func $closure-complex/testMultipleClosuresSharing~anonymous|1 (result i32) + global.get $~lib/__closure_env + i32.load offset=4 + ) + (func $closure-complex/testNestedArrowFunctions~anonymous|0~anonymous|0 (result i32) + global.get $~lib/__closure_env + i32.load offset=4 + i32.const 1 + i32.shl + ) + (func $closure-complex/testNestedArrowFunctions~anonymous|0 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/__closure_env + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + i32.const 4 + i32.add + local.tee $2 + local.get $1 + i32.store + local.get $3 + local.get $0 + local.get $1 + i32.load offset=4 + i32.add + i32.store offset=8 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 13 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + ) + (func $closure-complex/testCurriedWithClass~anonymous|0 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 16 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $start:closure-complex + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + memory.size + i32.const 16 + i32.shl + i32.const 37240 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 3140 + i32.const 3136 + i32.store + i32.const 3144 + i32.const 3136 + i32.store + i32.const 3136 + global.set $~lib/rt/itcms/pinSpace + i32.const 3172 + i32.const 3168 + i32.store + i32.const 3176 + i32.const 3168 + i32.store + i32.const 3168 + global.set $~lib/rt/itcms/toSpace + i32.const 3316 + i32.const 3312 + i32.store + i32.const 3320 + i32.const 3312 + i32.store + i32.const 3312 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + i32.const 4 + i32.add + local.tee $4 + i32.const 0 + i32.store + local.get $3 + call $closure-complex/Counter#constructor + i32.store offset=8 + local.get $3 + i32.const 2 + i32.store offset=12 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 1 + i32.store + local.get $5 + local.get $4 + i32.store offset=4 + local.get $3 + local.get $5 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 2 + i32.store + local.get $5 + local.get $4 + i32.store offset=4 + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + i32.const 4 + i32.add + local.tee $4 + i32.const 0 + i32.store + local.get $3 + call $closure-complex/Calculator#constructor + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=8 + local.tee $5 + i32.store + local.get $5 + i32.const 10 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $6 + i32.const 3 + i32.store + local.get $6 + local.get $4 + i32.store offset=4 + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 5 + local.get $6 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 10 + local.get $6 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 15 + local.get $6 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=8 + local.tee $3 + i32.store + local.get $3 + call $closure-complex/Calculator#getResult + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 40 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 73 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + global.get $~lib/memory/__stack_pointer + call $closure-complex/Counter#constructor + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $5 + i32.const 4 + i32.add + local.tee $6 + i32.const 0 + i32.store + local.get $5 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + i32.const 3584 + call $~lib/rt/__newArray + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 4 + i32.store + local.get $5 + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $3 + local.get $5 + call $~lib/array/Array<%28%29=>i32>#push + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 5 + i32.store + local.get $5 + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $3 + local.get $5 + call $~lib/array/Array<%28%29=>i32>#push + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $4 + i32.store offset=12 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $3 + i32.store offset=24 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + i32.const 4 + i32.add + local.tee $4 + i32.const 0 + i32.store + local.get $3 + i32.const 100 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 8 + i32.store + local.get $5 + local.get $4 + i32.store offset=4 + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 222 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 123 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + local.tee $5 + i32.const 4 + i32.add + local.tee $6 + i32.const 0 + i32.store + local.get $5 + i32.const 10 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $5 + local.get $4 + i32.load + i32.store offset=12 + local.get $5 + i32.const 0 + i32.store offset=8 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 9 + i32.store + local.get $4 + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + local.get $3 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 223 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 155 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 0 + i32.const 8 + i32.const 4032 + call $~lib/rt/__newArray + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store offset=4 + local.get $4 + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 10 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $closure-complex/SelfReferencing#addCallback + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $closure-complex/SelfReferencing#addCallback + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 20 + 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 $4 + i32.store offset=4 + local.get $4 + call $closure-complex/SelfReferencing#addCallback + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.load offset=4 + local.tee $3 + i32.store + local.get $3 + call $~lib/array/Array<%28%29=>i32>#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.load offset=4 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + local.get $1 + i32.add + local.set $1 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 120 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 199 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 4 + i32.add + local.tee $2 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + call $closure-complex/Counter#constructor + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 11 + i32.store + local.get $3 + local.get $2 + i32.store offset=4 + local.get $3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 12 + i32.store + local.get $4 + local.get $2 + i32.store offset=4 + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 217 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 4 + i32.add + local.tee $2 + i32.const 0 + i32.store + local.get $1 + i32.const 10 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 14 + i32.store + local.get $3 + local.get $2 + i32.store offset=4 + local.get $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + global.get $~lib/memory/__stack_pointer + i32.const 5 + local.get $3 + i32.load + call_indirect (type $1) + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + global.get $~lib/memory/__stack_pointer + i32.const 10 + local.get $3 + i32.load + call_indirect (type $1) + local.tee $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=24 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + local.get $1 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 70 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 235 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $1 + call $closure-complex/Counter#constructor + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 9 + i32.const 4304 + call $~lib/rt/__newArray + local.tee $4 + i32.store + local.get $1 + i32.const 2 + i32.store offset=16 + i32.const 0 + local.set $2 + loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/array/Array<%28%29=>i32>#get:length + local.get $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $0 + local.get $4 + i32.load offset=12 + i32.ge_u + if + i32.const 3216 + i32.const 3696 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $6 + i32.const 15 + i32.store + local.get $6 + local.get $3 + i32.store offset=4 + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + local.get $2 + i32.add + local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=8 + local.tee $0 + i32.store offset=4 + local.get $0 + call $closure-complex/Calculator#getResult + local.get $2 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 35 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 257 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + call $closure-complex/Calculator#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 17 + i32.store + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.load + call_indirect (type $1) + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 10 + local.get $1 + i32.load + call_indirect (type $1) + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 20 + local.get $1 + i32.load + call_indirect (type $1) + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=28 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 30 + local.get $1 + i32.load + call_indirect (type $1) + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $closure-complex/Calculator#getResult + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 60 + i32.ne + if + i32.const 0 + i32.const 3488 + i32.const 279 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + return + end + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + call $start:closure-complex + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$253 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$253 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $closure-complex/Counter#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-complex/Counter#increment (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-complex/testNestedArrowsWithClassCapture~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + call $closure-complex/Counter#increment + local.get $0 + i32.load offset=8 + i32.mul + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-complex/Calculator#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-complex/Calculator#add (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $0 + i32.load + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-complex/testArrowClosureWithClass~anonymous|0 (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + local.get $0 + call $closure-complex/Calculator#add + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-complex/Calculator#getResult (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-complex/createCounterOperations~anonymous|0 (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 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + call $closure-complex/Counter#increment + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#push (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $6 + i32.const 1 + i32.add + local.tee $5 + 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 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $2 + i32.const 268435455 + i32.gt_u + if + i32.const 3648 + i32.const 3696 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$236 + i32.const 1073741820 + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.const 8 + local.get $2 + local.get $2 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $2 + local.get $2 + local.get $3 + i32.lt_u + select + local.tee $4 + local.get $0 + i32.load + local.tee $3 + i32.const 20 + i32.sub + local.tee $7 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $7 + local.get $4 + i32.store offset=16 + local.get $3 + local.set $2 + br $__inlined_func$~lib/rt/itcms/__renew$236 + end + local.get $4 + local.get $7 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $3 + local.get $4 + local.get $7 + i32.load offset=16 + local.tee $7 + local.get $4 + local.get $7 + i32.lt_u + select + memory.copy + end + local.get $2 + local.get $3 + i32.ne + if + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $4 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-complex/createCounterOperations~anonymous|1 (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 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + call $closure-complex/Calculator#getResult + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 3216 + i32.const 3696 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 3776 + i32.const 3696 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-complex/testDeeplyNestedClassCreation~anonymous|0~anonymous|0~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $1 + global.get $~lib/memory/__stack_pointer + call $closure-complex/Calculator#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + local.tee $1 + i32.load + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.add + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-complex/testDeeplyNestedClassCreation~anonymous|0~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/__closure_env + local.set $0 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 4 + i32.add + local.tee $2 + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 6 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + call_indirect (type $0) + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.shl + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $closure-complex/Calculator#getResult + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-complex/SelfReferencing#addCallback~anonymous|0 (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 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-complex/SelfReferencing#addCallback (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 10 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/array/Array<%28%29=>i32>#push + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-complex/testMultipleClosuresSharing~anonymous|0 + (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 + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $2 + i32.store + local.get $0 + local.get $2 + call $closure-complex/Counter#increment + local.get $1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-complex/testComplexPipeline~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + call $closure-complex/Counter#increment + drop + local.get $0 + i32.load offset=8 + local.get $0 + i32.load offset=12 + i32.mul + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-complex/testCurriedWithClass~anonymous|0~anonymous|0 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $1 + i32.load offset=4 + local.tee $2 + i32.store + local.get $2 + local.get $0 + call $closure-complex/Calculator#add + local.get $1 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-complex/testNestedArrowsWithClassCapture~anonymous|1 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $3 + loop $for-loop|0 + local.get $0 + i32.const 3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=12 + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + local.get $2 + i32.add + local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.set $3 + local.get $2 + if + local.get $3 + local.get $2 + local.get $4 + memory.copy + end + local.get $3 + i32.store + i32.const 16 + local.get $1 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-complex/testDeeplyNestedClassCreation~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + if + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $0 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 4 + i32.add + local.tee $2 + local.get $0 + i32.store + local.get $1 + i32.const 10 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 7 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $invalid + block $closure-complex/SelfReferencing + block $closure-complex/ClosureFactory + block $~lib/array/Array + block $~lib/array/Array<%28%29=>i32> + block $closure-complex/Calculator + block $closure-complex/Counter + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $closure-complex/Counter $folding-inner1 $closure-complex/Calculator $folding-inner1 $~lib/array/Array<%28%29=>i32> $~lib/array/Array $folding-inner1 $closure-complex/ClosureFactory $closure-complex/SelfReferencing $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner2 + 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 4472 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner2 + end + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4472 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 37264 + i32.const 37312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/closure-complex.ts b/tests/compiler/closure-complex.ts new file mode 100644 index 0000000000..26eeeed9be --- /dev/null +++ b/tests/compiler/closure-complex.ts @@ -0,0 +1,279 @@ +class Counter { + private count: i32 = 0; + + increment(): i32 { + this.count++; + return this.count; + } + + getCount(): i32 { + return this.count; + } +} + +class Calculator { + result: i32 = 0; + + add(x: i32): Calculator { + this.result += x; + return this; + } + + multiply(x: i32): Calculator { + this.result *= x; + return this; + } + + getResult(): i32 { + return this.result; + } +} + +// ============================================================================ +// Test 1: Nested arrow functions with class instance capture +// ============================================================================ +function testNestedArrowsWithClassCapture(): i32 { + let counter = new Counter(); + let multiplier = 2; + + let innerIncrement = (): i32 => { + let result = counter.increment(); + return result * multiplier; + }; + + let innerProcess = (): i32 => { + let sum = 0; + for (let i = 0; i < 3; i++) { + sum += innerIncrement(); + } + return sum; + }; + + return innerProcess(); // (1*2) + (2*2) + (3*2) = 12 +} +assert(testNestedArrowsWithClassCapture() == 12); + +// ============================================================================ +// Test 2: Arrow closure capturing class instance +// ============================================================================ +function testArrowClosureWithClass(): i32 { + let calc = new Calculator(); + calc.result = 10; + + let addToCalc = (x: i32): void => { + calc.add(x); + }; + + addToCalc(5); + addToCalc(10); + addToCalc(15); + + return calc.getResult(); // 10 + 5 + 10 + 15 = 40 +} +assert(testArrowClosureWithClass() == 40); + +// ============================================================================ +// Test 3: Factory function returning closures that use class methods +// ============================================================================ +function createCounterOperations(counter: Counter): Array<() => i32> { + let operations: Array<() => i32> = []; + operations.push((): i32 => counter.increment()); + operations.push((): i32 => counter.getCount()); + return operations; +} + +function testFactoryWithClassMethods(): i32 { + let counter = new Counter(); + let ops = createCounterOperations(counter); + + ops[0](); // increment -> 1 + ops[0](); // increment -> 2 + ops[0](); // increment -> 3 + return ops[1](); // getCount -> 3 +} +assert(testFactoryWithClassMethods() == 3); + +// ============================================================================ +// Test 4: Deeply nested arrow functions creating classes +// ============================================================================ +function testDeeplyNestedClassCreation(): i32 { + let outerValue = 100; + + let level1 = (): i32 => { + let level1Value = 10; + + let level2 = (): i32 => { + let level2Value = 1; + + let level3 = (): Calculator => { + let calc = new Calculator(); + calc.result = outerValue + level1Value + level2Value; + return calc; + }; + + let calculator = level3(); + return calculator.multiply(2).getResult(); + }; + + return level2(); + }; + + return level1(); // (100 + 10 + 1) * 2 = 222 +} +assert(testDeeplyNestedClassCreation() == 222); + +// ============================================================================ +// Test 5: Class with method returning closure +// ============================================================================ +class ClosureFactory { + private baseValue: i32; + + constructor(baseValue: i32) { + this.baseValue = baseValue; + } + + createAdder(amount: i32): () => i32 { + let base = this.baseValue; + let counter = 0; + return (): i32 => { + counter++; + return base + amount + counter; + }; + } +} + +function testClassReturningClosures(): i32 { + let factory = new ClosureFactory(100); + let adder = factory.createAdder(10); + + let sum = 0; + sum += adder(); // 100 + 10 + 1 = 111 + sum += adder(); // 100 + 10 + 2 = 112 + + return sum; // 111 + 112 = 223 +} +assert(testClassReturningClosures() == 223); + +// ============================================================================ +// Test 6: Closure capturing 'this' in class methods +// ============================================================================ +class SelfReferencing { + value: i32; + callbacks: Array<() => i32> = []; + + constructor(value: i32) { + this.value = value; + } + + addCallback(): void { + let self = this; + this.callbacks.push((): i32 => { + return self.value * 2; + }); + } + + executeCallbacks(): i32 { + let sum = 0; + for (let i = 0; i < this.callbacks.length; i++) { + sum += this.callbacks[i](); + } + return sum; + } + + setValue(newValue: i32): void { + this.value = newValue; + } +} + +function testThisCaptureInClosures(): i32 { + let obj = new SelfReferencing(10); + + obj.addCallback(); + obj.addCallback(); + obj.setValue(20); + obj.addCallback(); + + // value is now 20, each callback returns 40 + return obj.executeCallbacks(); // 40 + 40 + 40 = 120 +} +assert(testThisCaptureInClosures() == 120); + +// ============================================================================ +// Test 7: Multiple closures sharing same variables +// ============================================================================ +function testMultipleClosuresSharing(): i32 { + let shared = 0; + let counter = new Counter(); + + let incrementShared = (): void => { shared += counter.increment(); }; + let getShared = (): i32 => shared; + + incrementShared(); // shared = 0 + 1 = 1 + incrementShared(); // shared = 1 + 2 = 3 + incrementShared(); // shared = 3 + 3 = 6 + + return getShared(); // 6 +} +assert(testMultipleClosuresSharing() == 6); + +// ============================================================================ +// Test 8: Nested arrow functions +// ============================================================================ +function testNestedArrowFunctions(): i32 { + let base = 10; + + let outer = (x: i32): (() => i32) => { + let captured = x + base; + return (): i32 => captured * 2; + }; + + let fn1 = outer(5); // captured = 15, returns () => 30 + let fn2 = outer(10); // captured = 20, returns () => 40 + + return fn1() + fn2(); // 30 + 40 = 70 +} +assert(testNestedArrowFunctions() == 70); + +// ============================================================================ +// Test 9: Complex pipeline with closures and classes +// ============================================================================ +function testComplexPipeline(): i32 { + let counter = new Counter(); + let data: Array = [1, 2, 3, 4, 5]; + let multiplier = 2; + + let result = 0; + for (let i = 0; i < data.length; i++) { + let value = data[i]; + let process = (): i32 => { + counter.increment(); + return value * multiplier; + }; + result += process(); + } + + return result + counter.getCount(); // (2+4+6+8+10) + 5 = 30 + 5 = 35 +} +assert(testComplexPipeline() == 35); + +// ============================================================================ +// Test 10: Curried function with class +// ============================================================================ +function testCurriedWithClass(): i32 { + let calc = new Calculator(); + + let addTo = (c: Calculator): (x: i32) => Calculator => { + return (x: i32): Calculator => { + c.add(x); + return c; + }; + }; + + let adder = addTo(calc); + adder(10); + adder(20); + adder(30); + + return calc.getResult(); // 10 + 20 + 30 = 60 +} +assert(testCurriedWithClass() == 60); diff --git a/tests/compiler/closure-stress.debug.wat b/tests/compiler/closure-stress.debug.wat new file mode 100644 index 0000000000..21e392bdae --- /dev/null +++ b/tests/compiler/closure-stress.debug.wat @@ -0,0 +1,12912 @@ +(module + (type $0 (func (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32 i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (result f64))) + (type $8 (func (param i32 i32 i32) (result i32))) + (type $9 (func (result i64))) + (type $10 (func (result f32))) + (type $11 (func (param i32 i32 i32 i32))) + (type $12 (func (param i32 i64 i32))) + (type $13 (func (param i64 i32) (result i32))) + (type $14 (func (param i32 i64 i32 i32))) + (type $15 (func (param i32 i32 i64) (result i32))) + (type $16 (func (param i64) (result i32))) + (type $17 (func (param f32) (result i32))) + (type $18 (func (param f64) (result i32))) + (type $19 (func (param i32 i64 f32 f64) (result i32))) + (type $20 (func (param i32 i32 i32 i32 i32 i32 i32 i32) (result i32))) + (type $21 (func (param i32 i32 i32 i32 i32) (result i32))) + (global $~lib/__closure_env (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/native/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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $closure-stress/counter1 (mut i32) (i32.const 0)) + (global $closure-stress/counter2 (mut i32) (i32.const 0)) + (global $closure-stress/addTo10 (mut i32) (i32.const 0)) + (global $closure-stress/greaterThan5 (mut i32) (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $closure-stress/add5 (mut i32) (i32.const 0)) + (global $closure-stress/add10 (mut i32) (i32.const 0)) + (global $closure-stress/double (mut i32) (i32.const 0)) + (global $closure-stress/triple (mut i32) (i32.const 0)) + (global $closure-stress/addThenDouble (mut i32) (i32.const 0)) + (global $closure-stress/callCount (mut i32) (i32.const 0)) + (global $closure-stress/fact (mut i32) (i32.const 0)) + (global $closure-stress/addResult (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 5408)) + (global $~lib/memory/__data_end i32 (i32.const 5492)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 38260)) + (global $~lib/memory/__heap_base i32 (i32.const 38260)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 172) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 396) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $9 (i32.const 796) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 1852) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $11 (i32.const 1948) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 2012) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $13 (i32.const 2076) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00c\00l\00o\00s\00u\00r\00e\00-\00s\00t\00r\00e\00s\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2476) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2700) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 2764) "\1c\00\00\00\00\00\00\00\00\00\00\00\t\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 2796) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 2828) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00\r\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 2860) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") + (data $34 (i32.const 2892) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") + (data $35 (i32.const 2924) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 2956) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") + (data $37 (i32.const 2988) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00") + (data $38 (i32.const 3020) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00\00\00\00\00") + (data $39 (i32.const 3052) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $40 (i32.const 3100) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $41 (i32.const 3148) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00") + (data $42 (i32.const 3180) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00\00\00\00\00") + (data $43 (i32.const 3212) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00") + (data $44 (i32.const 3244) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $45 (i32.const 3372) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00\00\00\00\00") + (data $46 (i32.const 3404) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00") + (data $47 (i32.const 3436) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00\00\00\00\00") + (data $48 (i32.const 3468) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00") + (data $49 (i32.const 3500) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00") + (data $50 (i32.const 3532) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00") + (data $51 (i32.const 3564) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00\00\00\00\00") + (data $52 (i32.const 3596) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00") + (data $53 (i32.const 3628) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00") + (data $54 (i32.const 3660) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $55 (i32.const 3692) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00!\00\00\00\00\00\00\00\00\00\00\00") + (data $56 (i32.const 3724) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00") + (data $57 (i32.const 3756) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00#\00\00\00\00\00\00\00\00\00\00\00") + (data $58 (i32.const 3788) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00$\00\00\00\00\00\00\00\00\00\00\00") + (data $59 (i32.const 3820) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00%\00\00\00\00\00\00\00\00\00\00\00") + (data $60 (i32.const 3852) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00&\00\00\00\00\00\00\00\00\00\00\00") + (data $61 (i32.const 3884) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $62 (i32.const 3948) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00\00\00\00\00\00\00\00\00") + (data $63 (i32.const 4012) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00\00\00\00\00\00\00") + (data $64 (i32.const 4060) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00\00\00\00\00") + (data $65 (i32.const 4092) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00(\00\00\00\00\00\00\00\00\00\00\00") + (data $66 (i32.const 4124) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00)\00\00\00\00\00\00\00\00\00\00\00") + (data $67 (i32.const 4156) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00*\00\00\00\00\00\00\00\00\00\00\00") + (data $68 (i32.const 4188) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") + (data $69 (i32.const 4220) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data $70 (i32.const 4252) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data $71 (i32.const 4284) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") + (data $72 (i32.const 4316) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00/\00\00\00\00\00\00\00\00\00\00\00") + (data $73 (i32.const 4348) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $74 (i32.const 4380) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $75 (i32.const 4412) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $76 (i32.const 4444) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data $77 (i32.const 4476) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data $78 (i32.const 4508) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\005\00\00\00\00\00\00\00\00\00\00\00") + (data $79 (i32.const 4540) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\006\00\00\00\00\00\00\00\00\00\00\00") + (data $80 (i32.const 4572) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\007\00\00\00\00\00\00\00\00\00\00\00") + (data $81 (i32.const 4604) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\008\00\00\00\00\00\00\00\00\00\00\00") + (data $82 (i32.const 4636) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\009\00\00\00\00\00\00\00\00\00\00\00") + (data $83 (i32.const 4668) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $84 (i32.const 4700) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00;\00\00\00\00\00\00\00\00\00\00\00") + (data $85 (i32.const 4732) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00<\00\00\00\00\00\00\00\00\00\00\00") + (data $86 (i32.const 4764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00H\00e\00l\00l\00o\00\00\00") + (data $87 (i32.const 4796) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00=\00\00\00\00\00\00\00\00\00\00\00") + (data $88 (i32.const 4828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00A\00\00\00\00\00\00\00\00\00\00\00") + (data $89 (i32.const 4860) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00>\00\00\00\00\00\00\00\00\00\00\00") + (data $90 (i32.const 4892) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00?\00\00\00\00\00\00\00\00\00\00\00") + (data $91 (i32.const 4924) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\00\00\00\00") + (data $92 (i32.const 4956) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00C\00\00\00\00\00\00\00\00\00\00\00") + (data $93 (i32.const 4988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00D\00\00\00\00\00\00\00\00\00\00\00") + (data $94 (i32.const 5020) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00B\00C\00D\00\00\00\00\00") + (data $95 (i32.const 5052) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00@\00\00\00\00\00\00\00\00\00\00\00") + (data $96 (i32.const 5084) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00A\00\00\00\00\00\00\00\00\00\00\00") + (data $97 (i32.const 5116) "\1c\00\00\00\00\00\00\00\00\00\00\00\t\00\00\00\08\00\00\00B\00\00\00\00\00\00\00\00\00\00\00") + (data $98 (i32.const 5148) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00C\00\00\00\00\00\00\00\00\00\00\00") + (data $99 (i32.const 5180) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00D\00\00\00\00\00\00\00\00\00\00\00") + (data $100 (i32.const 5212) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00E\00\00\00\00\00\00\00\00\00\00\00") + (data $101 (i32.const 5244) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00F\00\00\00\00\00\00\00\00\00\00\00") + (data $102 (i32.const 5276) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00G\00\00\00\00\00\00\00\00\00\00\00") + (data $103 (i32.const 5308) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00H\00\00\00\00\00\00\00\00\00\00\00") + (data $104 (i32.const 5340) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00I\00\00\00\00\00\00\00\00\00\00\00") + (data $105 (i32.const 5372) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00J\00\00\00\00\00\00\00\00\00\00\00") + (data $106 (i32.const 5408) "\14\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\02\t\00\00 \00\00\00\00\00\00\00\10\t\12\00\00\00\00\00\00\00\00\00") + (table $0 75 75 funcref) + (elem $0 (i32.const 1) $closure-stress/captureI32Param~anonymous|0 $closure-stress/captureI64Param~anonymous|0 $closure-stress/captureF32Param~anonymous|0 $closure-stress/captureF64Param~anonymous|0 $closure-stress/captureBool~anonymous|0 $closure-stress/captureMultipleI32~anonymous|0 $closure-stress/captureMixedTypes~anonymous|0 $closure-stress/capture8Params~anonymous|0 $closure-stress/captureParamsAndLocals~anonymous|0 $closure-stress/makeCounter~anonymous|0 $closure-stress/testBidirectionalMutation~anonymous|0 $closure-stress/testBidirectionalMutation~anonymous|1 $closure-stress/testSharedMutation~anonymous|0 $closure-stress/testSharedMutation~anonymous|1 $closure-stress/testSharedMutation~anonymous|2 $closure-stress/testOuterScopeMutation~anonymous|0 $closure-stress/testOuterScopeMutation~anonymous|1 $closure-stress/curriedAdd~anonymous|0 $closure-stress/makeGreaterThan~anonymous|0 $closure-stress/simpleClosureArray~anonymous|0 $closure-stress/simpleClosureArray~anonymous|1 $closure-stress/simpleClosureArray~anonymous|2 $closure-stress/closureInConditional~anonymous|0 $closure-stress/closureInConditional~anonymous|1 $closure-stress/closureEscapingBlock~anonymous|0 $closure-stress/captureArray~anonymous|0 $closure-stress/mutateCapturedArray~anonymous|0 $closure-stress/mutateCapturedArray~anonymous|1 $closure-stress/captureClassInstance~anonymous|0 $closure-stress/captureClassInstance~anonymous|1 $closure-stress/testMapWithClosure~anonymous|0 $closure-stress/testFilterWithClosure~anonymous|0 $closure-stress/testReduceWithClosure~anonymous|0 $closure-stress/testReduceWithClosure~anonymous|1 $closure-stress/makeAdder~anonymous|0 $closure-stress/makeMultiplier~anonymous|0 $closure-stress/compose~anonymous|0 $closure-stress/expensiveComputation $closure-stress/memoize~anonymous|0 $closure-stress/emptyClosure~anonymous|0 $closure-stress/captureOnlyNoParams~anonymous|0 $closure-stress/ignoreCapture~anonymous|0 $closure-stress/multipleClosureReturns~anonymous|0 $closure-stress/multipleClosureReturns~anonymous|1 $closure-stress/multipleClosureReturns~anonymous|2 $closure-stress/makeFactorial~anonymous|0 $closure-stress/captureSmallTypes~anonymous|0 $closure-stress/manyClosuresSameEnv~anonymous|0 $closure-stress/manyClosuresSameEnv~anonymous|1 $closure-stress/manyClosuresSameEnv~anonymous|2 $closure-stress/manyClosuresSameEnv~anonymous|3 $closure-stress/manyClosuresSameEnv~anonymous|4 $closure-stress/manyClosuresSameEnv~anonymous|5 $closure-stress/manyCaptures~anonymous|0 $closure-stress/simpleIIFE~anonymous|0 $closure-stress/captureLoopValue~anonymous|0 $closure-stress/interleavedClosures~anonymous|0 $closure-stress/interleavedClosures~anonymous|1 $closure-stress/interleavedClosures~anonymous|2 $closure-stress/interleavedClosures~anonymous|3 $closure-stress/captureString~anonymous|0 $closure-stress/mutateStringRef~anonymous|0 $closure-stress/mutateStringRef~anonymous|1 $closure-stress/testNestedClosureFunctions~anonymous|0~anonymous|0 $closure-stress/testNestedClosureFunctions~anonymous|0 $closure-stress/testRangeWithClosure~anonymous|0 $closure-stress/add~anonymous|0 $closure-stress/testTwoClosuresSameVar~anonymous|0 $closure-stress/testTwoClosuresSameVar~anonymous|1 $closure-stress/testDeeplyNestedClosures~anonymous|0~anonymous|0~anonymous|0 $closure-stress/testDeeplyNestedClosures~anonymous|0~anonymous|0 $closure-stress/testDeeplyNestedClosures~anonymous|0 $closure-stress/makeAdderPair~anonymous|0 $closure-stress/makeAdderPair~anonymous|1) + (export "memory" (memory $0)) + (start $~start) + (func $closure-stress/captureI32Param~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 396 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 396 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 396 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 396 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 816 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 816 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1872 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1872 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2096 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2096 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 2096 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 2224 + i32.const 2288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 2096 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2096 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 2032 + i32.const 2368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 2032 + i32.const 2096 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $closure-stress/captureI32Param (param $x i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $x + i32.store offset=4 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 1 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/captureI64Param~anonymous|0 (result i64) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i64.load offset=8 + ) + (func $closure-stress/captureI64Param (param $x i64) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $x + i64.store offset=8 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 2 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/captureF32Param~anonymous|0 (result f32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + f32.load offset=4 + ) + (func $closure-stress/captureF32Param (param $x f32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $x + f32.store offset=4 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 3 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/captureF64Param~anonymous|0 (result f64) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + f64.load offset=8 + ) + (func $closure-stress/captureF64Param (param $x f64) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $x + f64.store offset=8 + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 4 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/captureBool~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load8_u offset=4 + ) + (func $closure-stress/captureBool (param $x i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $x + i32.store8 offset=4 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 5 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/captureMultipleI32~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $$closureEnv + i32.load offset=8 + i32.add + local.get $$closureEnv + i32.load offset=12 + i32.add + ) + (func $closure-stress/captureMultipleI32 (param $a i32) (param $b i32) (param $c i32) (result i32) + (local $$env i32) + (local $4 i32) + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $a + i32.store offset=4 + local.get $$env + local.get $b + i32.store offset=8 + local.get $$env + local.get $c + i32.store offset=12 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 6 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + return + ) + (func $closure-stress/captureMixedTypes~anonymous|0 (result f64) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + f64.convert_i32_s + local.get $$closureEnv + i64.load offset=8 + f64.convert_i64_s + f64.add + local.get $$closureEnv + f32.load offset=16 + f64.promote_f32 + f64.add + local.get $$closureEnv + f64.load offset=24 + f64.add + ) + (func $closure-stress/captureMixedTypes (param $a i32) (param $b i64) (param $c f32) (param $d f64) (result i32) + (local $$env i32) + (local $5 i32) + i32.const 32 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $a + i32.store offset=4 + local.get $$env + local.get $b + i64.store offset=8 + local.get $$env + local.get $c + f32.store offset=16 + local.get $$env + local.get $d + f64.store offset=24 + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 7 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + return + ) + (func $closure-stress/capture8Params~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $$closureEnv + i32.load offset=8 + i32.add + local.get $$closureEnv + i32.load offset=12 + i32.add + local.get $$closureEnv + i32.load offset=16 + i32.add + local.get $$closureEnv + i32.load offset=20 + i32.add + local.get $$closureEnv + i32.load offset=24 + i32.add + local.get $$closureEnv + i32.load offset=28 + i32.add + local.get $$closureEnv + i32.load offset=32 + i32.add + ) + (func $closure-stress/capture8Params (param $a i32) (param $b i32) (param $c i32) (param $d i32) (param $e i32) (param $f i32) (param $g i32) (param $h i32) (result i32) + (local $$env i32) + (local $9 i32) + i32.const 36 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $a + i32.store offset=4 + local.get $$env + local.get $b + i32.store offset=8 + local.get $$env + local.get $c + i32.store offset=12 + local.get $$env + local.get $d + i32.store offset=16 + local.get $$env + local.get $e + i32.store offset=20 + local.get $$env + local.get $f + i32.store offset=24 + local.get $$env + local.get $g + i32.store offset=28 + local.get $$env + local.get $h + i32.store offset=32 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $9 + local.get $9 + i32.const 8 + i32.store + local.get $9 + local.get $$env + i32.store offset=4 + local.get $9 + return + ) + (func $closure-stress/captureParamsAndLocals~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $$closureEnv + i32.load offset=8 + i32.add + local.get $$closureEnv + i32.load offset=12 + i32.add + local.get $$closureEnv + i32.load offset=16 + i32.add + ) + (func $closure-stress/captureParamsAndLocals (param $a i32) (param $b i32) (result i32) + (local $$env i32) + (local $c i32) + (local $d i32) + (local $5 i32) + i32.const 20 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $a + i32.store offset=4 + local.get $$env + local.get $b + i32.store offset=8 + local.get $$env + i32.const 100 + i32.store offset=12 + local.get $$env + i32.const 200 + i32.store offset=16 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 9 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + return + ) + (func $closure-stress/makeCounter~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + local.get $$closureEnv + i32.load offset=4 + return + ) + (func $closure-stress/makeCounter (result i32) + (local $$env i32) + (local $count i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.store offset=4 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 10 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/testBidirectionalMutation~anonymous|0 (param $x i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $x + i32.store offset=4 + ) + (func $closure-stress/testBidirectionalMutation~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure-stress/testSharedMutation~anonymous|0 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + ) + (func $closure-stress/testSharedMutation~anonymous|1 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + ) + (func $closure-stress/testSharedMutation~anonymous|2 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure-stress/testOuterScopeMutation~anonymous|0 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 2 + i32.mul + i32.store offset=4 + ) + (func $closure-stress/testOuterScopeMutation~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure-stress/curriedAdd~anonymous|0 (param $b i32) (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $b + i32.add + ) + (func $closure-stress/curriedAdd (param $a i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $a + i32.store offset=4 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 18 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/makeGreaterThan~anonymous|0 (param $x i32) (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $x + local.get $$closureEnv + i32.load offset=4 + i32.gt_s + ) + (func $closure-stress/makeGreaterThan (param $threshold i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $threshold + i32.store offset=4 + i32.const 8 + i32.const 12 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 19 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 2096 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array<%28%29=>i32>#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<%28%29=>i32>#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array<%28%29=>i32>#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array<%28%29=>i32>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $closure-stress/simpleClosureArray~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $~lib/array/Array<%28%29=>i32>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array<%28%29=>i32>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-stress/simpleClosureArray~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=8 + ) + (func $closure-stress/simpleClosureArray~anonymous|2 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=12 + ) + (func $closure-stress/closureInConditional~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure-stress/closureInConditional~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=8 + ) + (func $closure-stress/closureEscapingBlock~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-stress/Counter#set:value (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store + ) + (func $closure-stress/Counter#get:value (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-stress/testMapWithClosure~anonymous|0 (param $x i32) (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $x + local.get $$closureEnv + i32.load offset=4 + i32.mul + ) + (func $closure-stress/testFilterWithClosure~anonymous|0 (param $x i32) (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $x + local.get $$closureEnv + i32.load offset=4 + i32.ge_s + ) + (func $closure-stress/testReduceWithClosure~anonymous|0 (param $acc i32) (param $x i32) (result i32) + local.get $acc + local.get $x + i32.add + ) + (func $closure-stress/testReduceWithClosure~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $$closureEnv + i32.load offset=8 + i32.add + ) + (func $closure-stress/makeAdder~anonymous|0 (param $x i32) (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $x + local.get $$closureEnv + i32.load offset=4 + i32.add + ) + (func $closure-stress/makeAdder (param $amount i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $amount + i32.store offset=4 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 35 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/makeMultiplier~anonymous|0 (param $x i32) (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $x + local.get $$closureEnv + i32.load offset=4 + i32.mul + ) + (func $closure-stress/makeMultiplier (param $factor i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $factor + i32.store offset=4 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 36 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/compose (param $f i32) (param $g i32) (result i32) + (local $$env i32) + (local $3 i32) + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $f + i32.store offset=4 + local.get $$env + local.get $g + i32.store offset=8 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 37 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-stress/expensiveComputation (param $x i32) (result i32) + global.get $closure-stress/callCount + i32.const 1 + i32.add + global.set $closure-stress/callCount + local.get $x + local.get $x + i32.mul + return + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key i32) (result i32) + (local $key|1 i32) + (local $len i32) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + block $~lib/util/hash/hash32|inlined.0 (result i32) + local.get $key + local.set $key|1 + i32.const 4 + local.set $len + i32.const 0 + i32.const 374761393 + i32.add + local.get $len + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash32|inlined.0 + end + return + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store offset=4 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=8 + ) + (func $closure-stress/memoize (param $fn i32) (result i32) + (local $$env i32) + (local $cache i32) + (local $3 i32) + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $fn + i32.store offset=8 + local.get $$env + i32.const 0 + call $"~lib/map/Map#constructor" + i32.store offset=4 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 39 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-stress/emptyClosure~anonymous|0 (result i32) + i32.const 42 + ) + (func $closure-stress/emptyClosure (result i32) + i32.const 4112 + return + ) + (func $closure-stress/captureOnlyNoParams~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $$closureEnv + i32.load offset=8 + i32.add + ) + (func $closure-stress/ignoreCapture~anonymous|0 (result i32) + i32.const 42 + ) + (func $closure-stress/multipleClosureReturns~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure-stress/multipleClosureReturns~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=8 + ) + (func $closure-stress/multipleClosureReturns~anonymous|2 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=12 + ) + (func $closure-stress/multipleClosureReturns (param $which i32) (result i32) + (local $$env i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 10 + i32.store offset=4 + local.get $$env + i32.const 20 + i32.store offset=8 + local.get $$env + i32.const 30 + i32.store offset=12 + local.get $which + i32.const 0 + i32.eq + if + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 43 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + return + else + local.get $which + i32.const 1 + i32.eq + if + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $6 + local.get $6 + i32.const 44 + i32.store + local.get $6 + local.get $$env + i32.store offset=4 + local.get $6 + return + else + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $7 + local.get $7 + i32.const 45 + i32.store + local.get $7 + local.get $$env + i32.store offset=4 + local.get $7 + return + end + unreachable + end + unreachable + ) + (func $closure-stress/makeFactorial~anonymous|0 (param $n i32) (result i32) + (local $result i32) + (local $i i32) + i32.const 1 + local.set $result + i32.const 2 + local.set $i + loop $for-loop|0 + local.get $i + local.get $n + i32.le_s + if + local.get $result + local.get $i + i32.mul + local.set $result + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $result + return + ) + (func $closure-stress/makeFactorial (result i32) + i32.const 4304 + return + ) + (func $closure-stress/captureSmallTypes~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load8_s offset=4 + local.get $$closureEnv + i32.load8_u offset=5 + i32.add + local.get $$closureEnv + i32.load16_s offset=6 + i32.add + local.get $$closureEnv + i32.load16_u offset=8 + i32.add + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|0 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|1 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 2 + i32.add + i32.store offset=4 + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|2 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 3 + i32.add + i32.store offset=4 + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|3 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 4 + i32.add + i32.store offset=4 + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|4 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 5 + i32.add + i32.store offset=4 + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|5 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure-stress/manyCaptures~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $$closureEnv + i32.load offset=8 + i32.add + local.get $$closureEnv + i32.load offset=12 + i32.add + local.get $$closureEnv + i32.load offset=16 + i32.add + local.get $$closureEnv + i32.load offset=20 + i32.add + local.get $$closureEnv + i32.load offset=24 + i32.add + local.get $$closureEnv + i32.load offset=28 + i32.add + local.get $$closureEnv + i32.load offset=32 + i32.add + local.get $$closureEnv + i32.load offset=36 + i32.add + local.get $$closureEnv + i32.load offset=40 + i32.add + local.get $$closureEnv + i32.load offset=44 + i32.add + local.get $$closureEnv + i32.load offset=48 + i32.add + ) + (func $closure-stress/simpleIIFE~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 9 + i32.add + return + ) + (func $closure-stress/captureLoopValue~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure-stress/captureLoopValue (param $val i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $val + i32.store offset=4 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 56 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/interleavedClosures~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure-stress/interleavedClosures~anonymous|1 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + ) + (func $closure-stress/interleavedClosures~anonymous|2 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 10 + i32.add + i32.store offset=4 + ) + (func $closure-stress/interleavedClosures~anonymous|3 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 100 + i32.add + i32.store offset=4 + ) + (func $closure-stress/captureString~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $closure-stress/mutateStringRef~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure-stress/testNestedClosureFunctions~anonymous|0~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + local.get $$closureEnv + i32.load offset=4 + return + ) + (func $closure-stress/testRangeWithClosure~anonymous|0 (param $i i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $i + i32.add + i32.store offset=4 + ) + (func $closure-stress/range (param $a i32) (param $b i32) (param $fn i32) + (local $i i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.set $i + loop $for-loop|0 + local.get $i + local.get $b + i32.lt_s + if + local.get $i + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $fn + local.tee $4 + i32.store + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $5) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/add~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $$closureEnv + i32.load offset=8 + i32.add + ) + (func $closure-stress/add (param $a i32) (param $b i32) (result i32) + (local $$env i32) + (local $3 i32) + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $a + i32.store offset=4 + local.get $$env + local.get $b + i32.store offset=8 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 67 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-stress/testTwoClosuresSameVar~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure-stress/testTwoClosuresSameVar~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + local.get $$closureEnv + i32.load offset=4 + return + ) + (func $closure-stress/testDeeplyNestedClosures~anonymous|0~anonymous|0~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + i32.load + i32.load offset=4 + local.get $$closureEnv + i32.load + i32.load offset=4 + i32.add + local.get $$closureEnv + i32.load offset=4 + i32.add + return + ) + (func $closure-stress/makeAdderPair~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + local.get $$closureEnv + i32.load offset=4 + return + ) + (func $closure-stress/makeAdderPair~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $~start + call $start:closure-stress + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 38288 + i32.const 38336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 128 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 160 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 160 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1968 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array<%28%29=>i32>#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 3072 + i32.const 3120 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array<%28%29=>i32>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array<%28%29=>i32>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array<%28%29=>i32>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array<%28%29=>i32>#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 3072 + i32.const 3120 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28%29=>i32>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 2224 + i32.const 3120 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array<%28%29=>i32>#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28%29=>i32>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28%29=>i32>#get:length_ + i32.ge_u + if + i32.const 2224 + i32.const 3120 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28%29=>i32>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 3264 + i32.const 3120 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-stress/simpleClosureArray (result i32) + (local $$env i32) + (local $fns i32) + (local $v0 i32) + (local $3 i32) + (local $v1 i32) + (local $5 i32) + (local $v2 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/array/Array<%28%29=>i32>#constructor + local.tee $fns + i32.store + local.get $$env + i32.const 10 + i32.store offset=4 + local.get $fns + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + i32.const 0 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 20 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $$env + i32.const 20 + i32.store offset=8 + local.get $fns + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + i32.const 1 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 21 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $$env + i32.const 30 + i32.store offset=12 + local.get $fns + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + i32.const 2 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $7 + local.get $7 + i32.const 22 + i32.store + local.get $7 + local.get $$env + i32.store offset=4 + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array<%28%29=>i32>#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fns + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fns + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + i32.const 1 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $9 + i32.store offset=16 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fns + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + i32.const 2 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $0) + i32.add + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 3072 + i32.const 3120 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 2224 + i32.const 3120 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 2224 + i32.const 3120 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-stress/captureArray~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.add + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-stress/captureArray (result i32) + (local $$env i32) + (local $arr i32) + (local $2 i32) + (local $sum i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.const 3 + call $~lib/array/Array#constructor + i32.store offset=4 + local.get $$env + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + local.get $$env + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + local.get $$env + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 26 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $sum + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $sum + local.tee $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-stress/mutateCapturedArray~anonymous|0 + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.const 2 + i32.mul + call $~lib/array/Array#__set + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1 + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.const 2 + i32.mul + call $~lib/array/Array#__set + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.mul + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/mutateCapturedArray~anonymous|1 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.add + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-stress/mutateCapturedArray (result i32) + (local $$env i32) + (local $arr i32) + (local $2 i32) + (local $doubleAll i32) + (local $4 i32) + (local $sum i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.const 3 + call $~lib/array/Array#constructor + i32.store offset=4 + local.get $$env + i32.load offset=4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + local.get $$env + i32.load offset=4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + local.get $$env + i32.load offset=4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 27 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $doubleAll + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 28 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $sum + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $sum + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 250 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $doubleAll + local.tee $7 + i32.store offset=16 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $sum + local.tee $8 + i32.store offset=20 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $0) + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 252 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $doubleAll + local.tee $9 + i32.store offset=24 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $sum + local.tee $10 + i32.store offset=28 + local.get $10 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $0) + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $closure-stress/Counter#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-stress/Counter#set:value + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-stress/captureClassInstance~anonymous|0 + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-stress/Counter#get:value + i32.const 1 + i32.add + call $closure-stress/Counter#set:value + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/captureClassInstance~anonymous|1 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-stress/Counter#get:value + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-stress/mapArray (param $arr i32) (param $fn i32) (result i32) + (local $result i32) + (local $i i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + call $~lib/array/Array#constructor + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $result + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $i + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $fn + local.tee $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $1) + call $~lib/array/Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $result + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-stress/testMapWithClosure (result i32) + (local $$env i32) + (local $multiplier i32) + (local $arr i32) + (local $3 i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 10 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/array/Array#constructor + local.tee $arr + i32.store + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 31 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $closure-stress/mapArray + local.tee $result + i32.store offset=12 + local.get $result + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + call $~lib/array/Array#__get + local.get $result + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + call $~lib/array/Array#__get + i32.add + local.get $result + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + call $~lib/array/Array#__get + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/array/Array#push (param $this i32) (param $value i32) (result i32) + (local $oldLen i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $oldLen + local.get $oldLen + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 0 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.get $oldLen + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $len + call $~lib/array/Array#set:length_ + local.get $len + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $closure-stress/filterArray (param $arr i32) (param $pred i32) (result i32) + (local $result i32) + (local $i i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.tee $result + i32.store + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $i + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $pred + local.tee $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $1) + if + local.get $result + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i + call $~lib/array/Array#__get + call $~lib/array/Array#push + drop + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $result + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-stress/testFilterWithClosure (result i32) + (local $$env i32) + (local $threshold i32) + (local $arr i32) + (local $i i32) + (local $4 i32) + (local $result i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/array/Array#constructor + local.tee $arr + i32.store + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + i32.const 10 + i32.lt_s + if + local.get $arr + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $i + local.get $i + call $~lib/array/Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $arr + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 8 + i32.const 12 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 32 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $closure-stress/filterArray + local.tee $result + i32.store offset=12 + local.get $result + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure-stress/reduceArray (param $arr i32) (param $fn i32) (param $initial i32) (result i32) + (local $acc i32) + (local $i i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $initial + local.set $acc + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $arr + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $acc + local.get $arr + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $fn + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $4) + local.set $acc + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $acc + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure-stress/testReduceWithClosure (result i32) + (local $$env i32) + (local $bonus i32) + (local $arr i32) + (local $result i32) + (local $4 i32) + (local $addBonus i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 100 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/array/Array#constructor + local.tee $arr + i32.store + local.get $arr + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + local.get $arr + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + local.get $arr + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + local.get $arr + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + i32.const 4 + call $~lib/array/Array#__set + local.get $arr + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 4 + i32.const 5 + call $~lib/array/Array#__set + local.get $$env + local.get $arr + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3712 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 0 + call $closure-stress/reduceArray + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 34 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $addBonus + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $addBonus + local.tee $6 + i32.store offset=16 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + local.get $key + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#has" (param $this i32) (param $key i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $"~lib/map/Map#get" (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 3968 + i32.const 4032 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $entry + call $"~lib/map/MapEntry#get:value" + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key i32) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $closure-stress/memoize~anonymous|0 (param $x i32) (result i32) + (local $$closureEnv i32) + (local $2 i32) + (local $result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $x + call $"~lib/map/Map#has" + if + local.get $$closureEnv + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $x + call $"~lib/map/Map#get" + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $x + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $$closureEnv + i32.load offset=8 + local.tee $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $1) + local.set $result + local.get $$closureEnv + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $x + local.get $result + call $"~lib/map/Map#set" + drop + local.get $result + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $closure-stress/testMemoization (result i32) + (local $memoized i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 0 + global.set $closure-stress/callCount + global.get $~lib/memory/__stack_pointer + i32.const 3872 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $closure-stress/memoize + local.tee $memoized + i32.store offset=4 + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $memoized + local.tee $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $1) + i32.const 25 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $memoized + local.tee $2 + i32.store offset=12 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $1) + i32.const 25 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $memoized + local.tee $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $1) + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 418 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $memoized + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $1) + i32.const 25 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 419 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 420 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-stress/closureArrayOps (result i32) + (local $closures i32) + (local $i i32) + (local $captured i32) + (local $sum i32) + (local $i|4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/array/Array<%28%29=>i32>#constructor + local.tee $closures + i32.store + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + i32.const 10 + i32.lt_s + if + local.get $i + i32.const 10 + i32.mul + local.set $captured + local.get $closures + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $i + local.get $captured + call $closure-stress/captureLoopValue + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $sum + i32.const 0 + local.set $i|4 + loop $for-loop|1 + local.get $i|4 + i32.const 10 + i32.lt_s + if + local.get $sum + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $closures + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $i|4 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $5 + i32.store offset=12 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + i32.add + local.set $sum + local.get $i|4 + i32.const 1 + i32.add + local.set $i|4 + br $for-loop|1 + end + end + local.get $sum + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-stress/mutateStringRef~anonymous|0 (param $suffix i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $suffix + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__concat + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/testRangeWithClosure (result i32) + (local $$env i32) + (local $sum i32) + (local $n i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.store offset=4 + i32.const 10 + local.set $n + i32.const 0 + local.get $n + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 66 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $closure-stress/range + local.get $$env + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $closure-stress/makeAdderPair (param $initial i32) (result i32) + (local $$env i32) + (local $value i32) + (local $arr i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $initial + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + call $~lib/array/Array<%28%29=>i32>#constructor + local.tee $arr + i32.store + local.get $arr + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 73 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $arr + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 74 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $arr + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure-stress/testClosureEscapesFunction (result i32) + (local $pair i32) + (local $increment i32) + (local $getValue i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $pair2 i32) + (local $increment2 i32) + (local $getValue2 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 64 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 64 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $closure-stress/makeAdderPair + local.tee $pair + i32.store + global.get $~lib/memory/__stack_pointer + local.get $pair + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=4 + local.get $15 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $increment + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $pair + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=4 + local.get $15 + i32.const 1 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $getValue + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getValue + local.tee $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 730 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $increment + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $increment + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getValue + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 733 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 100 + call $closure-stress/makeAdderPair + local.tee $pair2 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $pair2 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=4 + local.get $15 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $increment2 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $pair2 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=4 + local.get $15 + i32.const 1 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $getValue2 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $increment2 + local.tee $10 + i32.store offset=44 + local.get $10 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getValue2 + local.tee $11 + i32.store offset=48 + local.get $11 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $11 + i32.load + call_indirect (type $0) + i32.const 101 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 741 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getValue + local.tee $12 + i32.store offset=52 + local.get $12 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $12 + i32.load + call_indirect (type $0) + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 742 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getValue + local.tee $13 + i32.store offset=56 + local.get $13 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $13 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getValue2 + local.tee $14 + i32.store offset=60 + local.get $14 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $14 + i32.load + call_indirect (type $0) + i32.add + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 64 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + ) + (func $start:closure-stress + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 172 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 172 + memory.fill + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 2144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 2176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 2320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 42 + call $closure-stress/captureI32Param + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const -1 + call $closure-stress/captureI32Param + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 2147483647 + call $closure-stress/captureI32Param + local.tee $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + i32.const 2147483647 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i64.const 42 + call $closure-stress/captureI64Param + local.tee $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $9) + i64.const 42 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i64.const 9223372036854775807 + call $closure-stress/captureI64Param + local.tee $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $9) + i64.const 9223372036854775807 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + f32.const 3.140000104904175 + call $closure-stress/captureF32Param + local.tee $5 + i32.store offset=20 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $10) + f32.const 3.140000104904175 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + f32.const 0 + call $closure-stress/captureF32Param + local.tee $6 + i32.store offset=24 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $10) + f32.const 0 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + f64.const 3.141592653589793 + call $closure-stress/captureF64Param + local.tee $7 + i32.store offset=28 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $7) + f64.const 3.141592653589793 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + f64.const inf + call $closure-stress/captureF64Param + local.tee $8 + i32.store offset=32 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $7) + f64.const inf + f64.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 1 + call $closure-stress/captureBool + local.tee $9 + i32.store offset=36 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $closure-stress/captureBool + local.tee $10 + i32.store offset=40 + local.get $10 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 1 + i32.const 2 + i32.const 3 + call $closure-stress/captureMultipleI32 + local.tee $11 + i32.store offset=44 + local.get $11 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $11 + i32.load + call_indirect (type $0) + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 53 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 100 + i32.const 200 + i32.const 300 + call $closure-stress/captureMultipleI32 + local.tee $12 + i32.store offset=48 + local.get $12 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $12 + i32.load + call_indirect (type $0) + i32.const 600 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 1 + i64.const 2 + f32.const 3 + f64.const 4 + call $closure-stress/captureMixedTypes + local.tee $13 + i32.store offset=52 + local.get $13 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $13 + i32.load + call_indirect (type $7) + f64.const 10 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 4 + i32.const 5 + i32.const 6 + i32.const 7 + i32.const 8 + call $closure-stress/capture8Params + local.tee $14 + i32.store offset=56 + local.get $14 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $14 + i32.load + call_indirect (type $0) + i32.const 36 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 69 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 1 + i32.const 2 + call $closure-stress/captureParamsAndLocals + local.tee $15 + i32.store offset=60 + local.get $15 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $15 + i32.load + call_indirect (type $0) + i32.const 303 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/makeCounter + global.set $closure-stress/counter1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure-stress/counter1 + local.tee $16 + i32.store offset=64 + local.get $16 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $16 + i32.load + call_indirect (type $0) + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure-stress/counter1 + local.tee $17 + i32.store offset=68 + local.get $17 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $17 + i32.load + call_indirect (type $0) + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure-stress/counter1 + local.tee $18 + i32.store offset=72 + local.get $18 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $18 + i32.load + call_indirect (type $0) + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/makeCounter + global.set $closure-stress/counter2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure-stress/counter2 + local.tee $19 + i32.store offset=76 + local.get $19 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $19 + i32.load + call_indirect (type $0) + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 96 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure-stress/counter1 + local.tee $20 + i32.store offset=80 + local.get $20 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $20 + i32.load + call_indirect (type $0) + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 97 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testBidirectionalMutation + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testSharedMutation + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 127 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testOuterScopeMutation + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 142 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + call $closure-stress/curriedAdd + global.set $closure-stress/addTo10 + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/addTo10 + local.tee $21 + i32.store offset=84 + local.get $21 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $21 + i32.load + call_indirect (type $1) + i32.const 15 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 153 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/addTo10 + local.tee $22 + i32.store offset=88 + local.get $22 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $22 + i32.load + call_indirect (type $1) + i32.const 30 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 154 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + call $closure-stress/makeGreaterThan + global.set $closure-stress/greaterThan5 + i32.const 10 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/greaterThan5 + local.tee $23 + i32.store offset=92 + local.get $23 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $23 + i32.load + call_indirect (type $1) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 161 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/greaterThan5 + local.tee $24 + i32.store offset=96 + local.get $24 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $24 + i32.load + call_indirect (type $1) + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 162 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/simpleClosureArray + i32.const 60 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 183 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $closure-stress/closureInConditional + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 199 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $closure-stress/closureInConditional + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 200 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/closureEscapingBlock + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 216 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/captureArray + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 233 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/mutateCapturedArray + i32.const 24 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 257 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/captureClassInstance + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 280 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testMapWithClosure + i32.const 60 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 306 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testFilterWithClosure + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 330 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testReduceWithClosure + i32.const 115 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 357 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + call $closure-stress/makeAdder + global.set $closure-stress/add5 + i32.const 10 + call $closure-stress/makeAdder + global.set $closure-stress/add10 + i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/add5 + local.tee $25 + i32.store offset=100 + local.get $25 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $25 + i32.load + call_indirect (type $1) + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 369 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/add10 + local.tee $26 + i32.store offset=104 + local.get $26 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $26 + i32.load + call_indirect (type $1) + i32.const 13 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 370 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/add10 + local.tee $27 + i32.store offset=112 + local.get $27 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $27 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/add5 + local.tee $28 + i32.store offset=108 + local.get $28 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $28 + i32.load + call_indirect (type $1) + i32.const 15 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 371 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $closure-stress/makeMultiplier + global.set $closure-stress/double + i32.const 3 + call $closure-stress/makeMultiplier + global.set $closure-stress/triple + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/double + local.tee $29 + i32.store offset=116 + local.get $29 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $29 + i32.load + call_indirect (type $1) + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 379 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/triple + local.tee $30 + i32.store offset=120 + local.get $30 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $30 + i32.load + call_indirect (type $1) + i32.const 15 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 380 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/triple + local.tee $31 + i32.store offset=128 + local.get $31 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $31 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/double + local.tee $32 + i32.store offset=124 + local.get $32 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $32 + i32.load + call_indirect (type $1) + i32.const 24 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 381 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/double + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=132 + local.get $41 + global.get $closure-stress/add5 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=136 + local.get $41 + call $closure-stress/compose + global.set $closure-stress/addThenDouble + i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/addThenDouble + local.tee $33 + i32.store offset=140 + local.get $33 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $33 + i32.load + call_indirect (type $1) + i32.const 16 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 388 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testMemoization + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 424 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + call $closure-stress/emptyClosure + local.tee $34 + i32.store offset=144 + local.get $34 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $34 + i32.load + call_indirect (type $0) + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 434 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/captureOnlyNoParams + i32.const 30 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 443 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/ignoreCapture + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 451 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $closure-stress/multipleClosureReturns + local.tee $35 + i32.store offset=148 + local.get $35 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $35 + i32.load + call_indirect (type $0) + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 467 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 1 + call $closure-stress/multipleClosureReturns + local.tee $36 + i32.store offset=152 + local.get $36 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $36 + i32.load + call_indirect (type $0) + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 468 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 2 + call $closure-stress/multipleClosureReturns + local.tee $37 + i32.store offset=156 + local.get $37 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $37 + i32.load + call_indirect (type $0) + i32.const 30 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 469 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/makeFactorial + global.set $closure-stress/fact + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/fact + local.tee $38 + i32.store offset=160 + local.get $38 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $38 + i32.load + call_indirect (type $1) + i32.const 120 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 483 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/fact + local.tee $39 + i32.store offset=164 + local.get $39 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $39 + i32.load + call_indirect (type $1) + i32.const 720 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 484 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/captureSmallTypes + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 496 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/manyClosuresSameEnv + i32.const 15 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 517 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/manyCaptures + i32.const 78 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 529 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/simpleIIFE + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 539 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/closureArrayOps + i32.const 450 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 564 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/interleavedClosures + i32.const 123 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 585 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/captureString + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=132 + local.get $41 + i32.const 4784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 597 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/mutateStringRef + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=132 + local.get $41 + i32.const 5040 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 611 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testNestedClosureFunctions + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 634 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testRangeWithClosure + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 654 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 4 + call $closure-stress/add + global.set $closure-stress/addResult + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure-stress/addResult + local.tee $40 + i32.store offset=168 + local.get $40 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $40 + i32.load + call_indirect (type $0) + i32.const 7 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 662 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testTwoClosuresSameVar + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 682 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testDeeplyNestedClosures + i32.const 111 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 707 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testClosureEscapesFunction + i32.const 113 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 746 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 172 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 192 + i32.const 320 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 384 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $closure-stress/testBidirectionalMutation (result i32) + (local $$env i32) + (local $value i32) + (local $2 i32) + (local $setter i32) + (local $4 i32) + (local $getter i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 11 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $setter + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 12 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $getter + i32.store offset=4 + i32.const 10 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $setter + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getter + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $setter + local.tee $8 + i32.store offset=16 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getter + local.tee $9 + i32.store offset=20 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getter + local.tee $10 + i32.store offset=24 + local.get $10 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $0) + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $closure-stress/testSharedMutation (result i32) + (local $$env i32) + (local $value i32) + (local $2 i32) + (local $inc i32) + (local $4 i32) + (local $dec i32) + (local $6 i32) + (local $get i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 13 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $inc + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 14 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $dec + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $6 + local.get $6 + i32.const 15 + i32.store + local.get $6 + local.get $$env + i32.store offset=4 + local.get $6 + local.tee $get + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $9 + i32.store offset=16 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $dec + local.tee $11 + i32.store offset=24 + local.get $11 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $11 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $12 + i32.store offset=28 + local.get $12 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $12 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $13 + i32.store offset=32 + local.get $13 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $13 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $14 + i32.store offset=36 + local.get $14 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $14 + i32.load + call_indirect (type $0) + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + ) + (func $closure-stress/testOuterScopeMutation (result i32) + (local $$env i32) + (local $value i32) + (local $2 i32) + (local $double i32) + (local $4 i32) + (local $get i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 16 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $double + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 17 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $get + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $double + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $double + local.tee $8 + i32.store offset=16 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $9 + i32.store offset=20 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 138 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $10 + i32.store offset=24 + local.get $10 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $0) + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $closure-stress/closureInConditional (param $useFirst i32) (result i32) + (local $$env i32) + (local $a i32) + (local $b i32) + (local $getter i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 10 + i32.store offset=4 + local.get $$env + i32.const 20 + i32.store offset=8 + local.get $useFirst + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 23 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + local.tee $getter + i32.store + else + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $6 + local.get $6 + i32.const 24 + i32.store + local.get $6 + local.get $$env + i32.store offset=4 + local.get $6 + local.tee $getter + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getter + local.tee $7 + i32.store offset=4 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $closure-stress/closureEscapingBlock (result i32) + (local $$env i32) + (local $value i32) + (local $captured i32) + (local $inner i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + i32.const 0 + local.set $value + local.get $$env + i32.const 42 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 25 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $captured + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $captured + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + local.set $value + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $captured + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-stress/captureClassInstance (result i32) + (local $$env i32) + (local $c i32) + (local $2 i32) + (local $inc i32) + (local $4 i32) + (local $get i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + call $closure-stress/Counter#constructor + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 29 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $inc + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 30 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $get + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $8 + i32.store offset=16 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $9 + i32.store offset=20 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $closure-stress/compose~anonymous|0 (param $x i32) (result i32) + (local $$closureEnv i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $x + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $$closureEnv + i32.load offset=8 + local.tee $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $$closureEnv + i32.load offset=4 + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $1) + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) + (local $buffer i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.gt_u + if + i32.const 3072 + i32.const 3904 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-stress/captureOnlyNoParams (result i32) + (local $$env i32) + (local $x i32) + (local $y i32) + (local $3 i32) + (local $fn i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 10 + i32.store offset=4 + local.get $$env + i32.const 20 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 41 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.tee $fn + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure-stress/ignoreCapture (result i32) + (local $unused i32) + (local $fn i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 999 + local.set $unused + global.get $~lib/memory/__stack_pointer + i32.const 4176 + local.tee $fn + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn + local.tee $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-stress/captureSmallTypes (result i32) + (local $$env i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $d i32) + (local $5 i32) + (local $fn i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 10 + i32.store8 offset=4 + local.get $$env + i32.const 20 + i32.store8 offset=5 + local.get $$env + i32.const 30 + i32.store16 offset=6 + local.get $$env + i32.const 40 + i32.store16 offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 47 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + local.tee $fn + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn + local.tee $7 + i32.store offset=4 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $closure-stress/manyClosuresSameEnv (result i32) + (local $$env i32) + (local $value i32) + (local $2 i32) + (local $inc1 i32) + (local $4 i32) + (local $inc2 i32) + (local $6 i32) + (local $inc3 i32) + (local $8 i32) + (local $inc4 i32) + (local $10 i32) + (local $inc5 i32) + (local $12 i32) + (local $get i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 48 + memory.fill + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 48 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $inc1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 49 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $inc2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $6 + local.get $6 + i32.const 50 + i32.store + local.get $6 + local.get $$env + i32.store offset=4 + local.get $6 + local.tee $inc3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $8 + local.get $8 + i32.const 51 + i32.store + local.get $8 + local.get $$env + i32.store offset=4 + local.get $8 + local.tee $inc4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $10 + local.get $10 + i32.const 52 + i32.store + local.get $10 + local.get $$env + i32.store offset=4 + local.get $10 + local.tee $inc5 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $12 + local.get $12 + i32.const 53 + i32.store + local.get $12 + local.get $$env + i32.store offset=4 + local.get $12 + local.tee $get + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc1 + local.tee $14 + i32.store offset=24 + local.get $14 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $14 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc2 + local.tee $15 + i32.store offset=28 + local.get $15 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $15 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc3 + local.tee $16 + i32.store offset=32 + local.get $16 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $16 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc4 + local.tee $17 + i32.store offset=36 + local.get $17 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $17 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc5 + local.tee $18 + i32.store offset=40 + local.get $18 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $18 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $19 + i32.store offset=44 + local.get $19 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $19 + i32.load + call_indirect (type $0) + local.set $20 + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $20 + return + ) + (func $closure-stress/manyCaptures (result i32) + (local $$env i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $d i32) + (local $e i32) + (local $f i32) + (local $g i32) + (local $h i32) + (local $i i32) + (local $j i32) + (local $k i32) + (local $l i32) + (local $13 i32) + (local $fn i32) + (local $15 i32) + (local $16 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 52 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 1 + i32.store offset=4 + local.get $$env + i32.const 2 + i32.store offset=8 + local.get $$env + i32.const 3 + i32.store offset=12 + local.get $$env + i32.const 4 + i32.store offset=16 + local.get $$env + i32.const 5 + i32.store offset=20 + local.get $$env + i32.const 6 + i32.store offset=24 + local.get $$env + i32.const 7 + i32.store offset=28 + local.get $$env + i32.const 8 + i32.store offset=32 + local.get $$env + i32.const 9 + i32.store offset=36 + local.get $$env + i32.const 10 + i32.store offset=40 + local.get $$env + i32.const 11 + i32.store offset=44 + local.get $$env + i32.const 12 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $13 + local.get $13 + i32.const 54 + i32.store + local.get $13 + local.get $$env + i32.store offset=4 + local.get $13 + local.tee $fn + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn + local.tee $15 + i32.store offset=4 + local.get $15 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $15 + i32.load + call_indirect (type $0) + local.set $16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $16 + return + ) + (func $closure-stress/simpleIIFE (result i32) + (local $$env i32) + (local $v1 i32) + (local $2 i32) + (local $3 i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 55 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + local.set $result + local.get $result + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-stress/interleavedClosures (result i32) + (local $$env i32) + (local $total i32) + (local $2 i32) + (local $get i32) + (local $4 i32) + (local $add1 i32) + (local $6 i32) + (local $7 i32) + (local $add10 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $add100 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 44 + memory.fill + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 57 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $get + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 58 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $add1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $add1 + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $7 + local.get $7 + i32.const 59 + i32.store + local.get $7 + local.get $$env + i32.store offset=4 + local.get $7 + local.tee $add10 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $add1 + local.tee $9 + i32.store offset=16 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $add10 + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $11 + local.get $11 + i32.const 60 + i32.store + local.get $11 + local.get $$env + i32.store offset=4 + local.get $11 + local.tee $add100 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $add1 + local.tee $13 + i32.store offset=28 + local.get $13 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $13 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $add10 + local.tee $14 + i32.store offset=32 + local.get $14 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $14 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $add100 + local.tee $15 + i32.store offset=36 + local.get $15 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $15 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $16 + i32.store offset=40 + local.get $16 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $16 + i32.load + call_indirect (type $0) + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + ) + (func $closure-stress/captureString (result i32) + (local $$env i32) + (local $s i32) + (local $2 i32) + (local $fn i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 4784 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 18 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 61 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $fn + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-stress/mutateStringRef (result i32) + (local $$env i32) + (local $s i32) + (local $2 i32) + (local $append i32) + (local $4 i32) + (local $get i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 4848 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 19 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 62 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $append + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 18 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 63 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $get + i32.store offset=4 + i32.const 4944 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $append + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $5) + i32.const 4976 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $append + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $5) + i32.const 5008 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $append + local.tee $8 + i32.store offset=16 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $9 + i32.store offset=20 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $closure-stress/testNestedClosureFunctions~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + (local $innerInner i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $1 + local.get $1 + i32.const 64 + i32.store + local.get $1 + local.get $$closureEnv + i32.store offset=4 + local.get $1 + local.tee $innerInner + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $innerInner + local.tee $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + drop + local.get $$closureEnv + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $closure-stress/testNestedClosureFunctions (result i32) + (local $$env i32) + (local $x i32) + (local $2 i32) + (local $inner i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 65 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $inner + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inner + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-stress/testTwoClosuresSameVar (result i32) + (local $$env i32) + (local $a i32) + (local $2 i32) + (local $b i32) + (local $4 i32) + (local $c i32) + (local $6 i32) + (local $br i32) + (local $8 i32) + (local $cr i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 68 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $b + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 69 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $c + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $b + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + local.set $br + local.get $br + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 675 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $c + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $0) + local.set $cr + local.get $cr + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 677 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $$env + i32.load offset=4 + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 678 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $$env + i32.load offset=4 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $closure-stress/testDeeplyNestedClosures~anonymous|0~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $$env i32) + (local $level3 i32) + (local $3 i32) + (local $fn3 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $$closureEnv + i32.store + local.get $$env + i32.const 100 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 70 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.tee $fn3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn3 + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure-stress/testDeeplyNestedClosures~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $$env i32) + (local $level2 i32) + (local $3 i32) + (local $fn2 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $$closureEnv + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $$closureEnv + i32.store + local.get $$env + i32.const 10 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 71 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.tee $fn2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn2 + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure-stress/testDeeplyNestedClosures (result i32) + (local $$env i32) + (local $level1 i32) + (local $2 i32) + (local $fn1 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 72 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $fn1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn1 + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 3072 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 3264 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 3968 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2032 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 816 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1872 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>#__visit + ) + (func $~lib/function/Function<%28%29=>i64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>i64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i64>#__visit + ) + (func $~lib/function/Function<%28%29=>f32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>f32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>f32>#__visit + ) + (func $~lib/function/Function<%28%29=>f64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>f64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>f64>#__visit + ) + (func $~lib/function/Function<%28%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i32%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>void>#__visit + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>bool>#__visit + ) + (func $~lib/array/Array<%28%29=>i32>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<%28%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<%28%29=>i32>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/function/Function<%28%29=>~lib/string/String>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>~lib/string/String>#__visit + ) + (func $~lib/function/Function<%28~lib/string/String%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28~lib/string/String%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/string/String%29=>void>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28~lib/string/String%29=>void> + block $~lib/function/Function<%28%29=>~lib/string/String> + block $"~lib/map/Map" + block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $closure-stress/Counter + block $~lib/array/Array + block $~lib/array/Array<%28%29=>i32> + block $~lib/function/Function<%28i32%29=>bool> + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/function/Function<%28%29=>void> + block $~lib/function/Function<%28i32%29=>void> + block $~lib/function/Function<%28%29=>bool> + block $~lib/function/Function<%28%29=>f64> + block $~lib/function/Function<%28%29=>f32> + block $~lib/function/Function<%28%29=>i64> + block $~lib/function/Function<%28%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>i32> $~lib/function/Function<%28%29=>i64> $~lib/function/Function<%28%29=>f32> $~lib/function/Function<%28%29=>f64> $~lib/function/Function<%28%29=>bool> $~lib/function/Function<%28i32%29=>void> $~lib/function/Function<%28%29=>void> $~lib/function/Function<%28i32%29=>i32> $~lib/function/Function<%28i32%29=>bool> $~lib/array/Array<%28%29=>i32> $~lib/array/Array $closure-stress/Counter $~lib/function/Function<%28i32%2Ci32%29=>i32> $"~lib/map/Map" $~lib/function/Function<%28%29=>~lib/string/String> $~lib/function/Function<%28~lib/string/String%29=>void> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>f32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>f64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<%28%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/string/String%29=>void>~visit + return + end + unreachable + ) + (func $~lib/function/Function<%28%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>i64>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>i64>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>f32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>f32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>f64>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>f64>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28%29=>i32>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28%29=>i32>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28%29=>i32>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>~lib/string/String>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28~lib/string/String%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28~lib/string/String%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/closure-stress.json b/tests/compiler/closure-stress.json new file mode 100644 index 0000000000..454738fb3d --- /dev/null +++ b/tests/compiler/closure-stress.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--enable", "closures" + ] +} diff --git a/tests/compiler/closure-stress.release.wat b/tests/compiler/closure-stress.release.wat new file mode 100644 index 0000000000..48c116fafd --- /dev/null +++ b/tests/compiler/closure-stress.release.wat @@ -0,0 +1,9803 @@ +(module + (type $0 (func (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (result f64))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32))) + (type $8 (func (result i64))) + (type $9 (func (result f32))) + (type $10 (func (param i32 i32 i32) (result i32))) + (type $11 (func (param i32 i32 i64))) + (type $12 (func (param i64) (result i32))) + (type $13 (func (param f32) (result i32))) + (type $14 (func (param f64) (result i32))) + (type $15 (func (param i32 i32 i32 i32))) + (global $~lib/__closure_env (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $closure-stress/counter1 (mut i32) (i32.const 0)) + (global $closure-stress/counter2 (mut i32) (i32.const 0)) + (global $closure-stress/addTo10 (mut i32) (i32.const 0)) + (global $closure-stress/greaterThan5 (mut i32) (i32.const 0)) + (global $closure-stress/add5 (mut i32) (i32.const 0)) + (global $closure-stress/add10 (mut i32) (i32.const 0)) + (global $closure-stress/double (mut i32) (i32.const 0)) + (global $closure-stress/triple (mut i32) (i32.const 0)) + (global $closure-stress/addThenDouble (mut i32) (i32.const 0)) + (global $closure-stress/callCount (mut i32) (i32.const 0)) + (global $closure-stress/fact (mut i32) (i32.const 0)) + (global $closure-stress/addResult (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 39284)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02") + (data $4 (i32.const 1164) "\1c") + (data $4.1 (i32.const 1176) "\02\00\00\00\02\00\00\00:") + (data $5 (i32.const 1196) "|") + (data $5.1 (i32.const 1208) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $6 (i32.const 1324) "<") + (data $6.1 (i32.const 1336) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $7 (i32.const 1388) "\1c") + (data $7.1 (i32.const 1400) "\02\00\00\00\02\00\00\000") + (data $8 (i32.const 1420) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $9 (i32.const 1820) "\1c\04") + (data $9.1 (i32.const 1832) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $10 (i32.const 2876) "\\") + (data $10.1 (i32.const 2888) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $11 (i32.const 2972) "<") + (data $11.1 (i32.const 2984) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $12 (i32.const 3036) "<") + (data $12.1 (i32.const 3048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $13 (i32.const 3100) "<") + (data $13.1 (i32.const 3112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $16 (i32.const 3228) "<") + (data $16.1 (i32.const 3240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $17 (i32.const 3292) ",") + (data $17.1 (i32.const 3304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $19 (i32.const 3372) "<") + (data $19.1 (i32.const 3384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $20 (i32.const 3436) "<") + (data $20.1 (i32.const 3448) "\02\00\00\00\"\00\00\00c\00l\00o\00s\00u\00r\00e\00-\00s\00t\00r\00e\00s\00s\00.\00t\00s") + (data $21 (i32.const 3500) "\1c") + (data $21.1 (i32.const 3512) "\05\00\00\00\08\00\00\00\02") + (data $22 (i32.const 3532) "\1c") + (data $22.1 (i32.const 3544) "\06\00\00\00\08\00\00\00\03") + (data $23 (i32.const 3564) "\1c") + (data $23.1 (i32.const 3576) "\07\00\00\00\08\00\00\00\04") + (data $24 (i32.const 3596) "\1c") + (data $24.1 (i32.const 3608) "\08\00\00\00\08\00\00\00\05") + (data $25 (i32.const 3628) "\1c") + (data $25.1 (i32.const 3640) "\04\00\00\00\08\00\00\00\06") + (data $26 (i32.const 3660) "\1c") + (data $26.1 (i32.const 3672) "\07\00\00\00\08\00\00\00\07") + (data $27 (i32.const 3692) "\1c") + (data $27.1 (i32.const 3704) "\04\00\00\00\08\00\00\00\08") + (data $28 (i32.const 3724) "\1c") + (data $28.1 (i32.const 3736) "\04\00\00\00\08\00\00\00\t") + (data $29 (i32.const 3756) "\1c") + (data $29.1 (i32.const 3768) "\04\00\00\00\08\00\00\00\n") + (data $30 (i32.const 3788) "\1c") + (data $30.1 (i32.const 3800) "\t\00\00\00\08\00\00\00\0b") + (data $31 (i32.const 3820) "\1c") + (data $31.1 (i32.const 3832) "\04\00\00\00\08\00\00\00\0c") + (data $32 (i32.const 3852) "\1c") + (data $32.1 (i32.const 3864) "\n\00\00\00\08\00\00\00\r") + (data $33 (i32.const 3884) "\1c") + (data $33.1 (i32.const 3896) "\n\00\00\00\08\00\00\00\0e") + (data $34 (i32.const 3916) "\1c") + (data $34.1 (i32.const 3928) "\04\00\00\00\08\00\00\00\0f") + (data $35 (i32.const 3948) "\1c") + (data $35.1 (i32.const 3960) "\n\00\00\00\08\00\00\00\10") + (data $36 (i32.const 3980) "\1c") + (data $36.1 (i32.const 3992) "\04\00\00\00\08\00\00\00\11") + (data $37 (i32.const 4012) "\1c") + (data $37.1 (i32.const 4024) "\0b\00\00\00\08\00\00\00\12") + (data $38 (i32.const 4044) "\1c") + (data $38.1 (i32.const 4056) "\0c\00\00\00\08\00\00\00\13") + (data $39 (i32.const 4076) ",") + (data $39.1 (i32.const 4088) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $40 (i32.const 4124) ",") + (data $40.1 (i32.const 4136) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $41 (i32.const 4172) "\1c") + (data $41.1 (i32.const 4184) "\04\00\00\00\08\00\00\00\14") + (data $42 (i32.const 4204) "\1c") + (data $42.1 (i32.const 4216) "\04\00\00\00\08\00\00\00\15") + (data $43 (i32.const 4236) "\1c") + (data $43.1 (i32.const 4248) "\04\00\00\00\08\00\00\00\16") + (data $44 (i32.const 4268) "|") + (data $44.1 (i32.const 4280) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $45 (i32.const 4396) "\1c") + (data $45.1 (i32.const 4408) "\04\00\00\00\08\00\00\00\17") + (data $46 (i32.const 4428) "\1c") + (data $46.1 (i32.const 4440) "\04\00\00\00\08\00\00\00\18") + (data $47 (i32.const 4460) "\1c") + (data $47.1 (i32.const 4472) "\04\00\00\00\08\00\00\00\19") + (data $48 (i32.const 4492) "\1c") + (data $48.1 (i32.const 4504) "\04\00\00\00\08\00\00\00\1a") + (data $49 (i32.const 4524) "\1c") + (data $49.1 (i32.const 4536) "\n\00\00\00\08\00\00\00\1b") + (data $50 (i32.const 4556) "\1c") + (data $50.1 (i32.const 4568) "\04\00\00\00\08\00\00\00\1c") + (data $51 (i32.const 4588) "\1c") + (data $51.1 (i32.const 4600) "\n\00\00\00\08\00\00\00\1d") + (data $52 (i32.const 4620) "\1c") + (data $52.1 (i32.const 4632) "\04\00\00\00\08\00\00\00\1e") + (data $53 (i32.const 4652) "\1c") + (data $53.1 (i32.const 4664) "\0b\00\00\00\08\00\00\00\1f") + (data $54 (i32.const 4684) "\1c") + (data $54.1 (i32.const 4696) "\0c\00\00\00\08\00\00\00 ") + (data $55 (i32.const 4716) "\1c") + (data $55.1 (i32.const 4728) "\10\00\00\00\08\00\00\00!") + (data $56 (i32.const 4748) "\1c") + (data $56.1 (i32.const 4760) "\04\00\00\00\08\00\00\00\"") + (data $57 (i32.const 4780) "\1c") + (data $57.1 (i32.const 4792) "\0b\00\00\00\08\00\00\00#") + (data $58 (i32.const 4812) "\1c") + (data $58.1 (i32.const 4824) "\0b\00\00\00\08\00\00\00$") + (data $59 (i32.const 4844) "\1c") + (data $59.1 (i32.const 4856) "\0b\00\00\00\08\00\00\00%") + (data $60 (i32.const 4876) "\1c") + (data $60.1 (i32.const 4888) "\0b\00\00\00\08\00\00\00&") + (data $61 (i32.const 4908) "<") + (data $61.1 (i32.const 4920) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $62 (i32.const 4972) "<") + (data $62.1 (i32.const 4984) "\02\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") + (data $63 (i32.const 5036) ",") + (data $63.1 (i32.const 5048) "\02\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") + (data $64 (i32.const 5084) "\1c") + (data $64.1 (i32.const 5096) "\0b\00\00\00\08\00\00\00\'") + (data $65 (i32.const 5116) "\1c") + (data $65.1 (i32.const 5128) "\04\00\00\00\08\00\00\00(") + (data $66 (i32.const 5148) "\1c") + (data $66.1 (i32.const 5160) "\04\00\00\00\08\00\00\00)") + (data $67 (i32.const 5180) "\1c") + (data $67.1 (i32.const 5192) "\04\00\00\00\08\00\00\00*") + (data $68 (i32.const 5212) "\1c") + (data $68.1 (i32.const 5224) "\04\00\00\00\08\00\00\00+") + (data $69 (i32.const 5244) "\1c") + (data $69.1 (i32.const 5256) "\04\00\00\00\08\00\00\00,") + (data $70 (i32.const 5276) "\1c") + (data $70.1 (i32.const 5288) "\04\00\00\00\08\00\00\00-") + (data $71 (i32.const 5308) "\1c") + (data $71.1 (i32.const 5320) "\0b\00\00\00\08\00\00\00.") + (data $72 (i32.const 5340) "\1c") + (data $72.1 (i32.const 5352) "\04\00\00\00\08\00\00\00/") + (data $73 (i32.const 5372) "\1c") + (data $73.1 (i32.const 5384) "\n\00\00\00\08\00\00\000") + (data $74 (i32.const 5404) "\1c") + (data $74.1 (i32.const 5416) "\n\00\00\00\08\00\00\001") + (data $75 (i32.const 5436) "\1c") + (data $75.1 (i32.const 5448) "\n\00\00\00\08\00\00\002") + (data $76 (i32.const 5468) "\1c") + (data $76.1 (i32.const 5480) "\n\00\00\00\08\00\00\003") + (data $77 (i32.const 5500) "\1c") + (data $77.1 (i32.const 5512) "\n\00\00\00\08\00\00\004") + (data $78 (i32.const 5532) "\1c") + (data $78.1 (i32.const 5544) "\04\00\00\00\08\00\00\005") + (data $79 (i32.const 5564) "\1c") + (data $79.1 (i32.const 5576) "\04\00\00\00\08\00\00\006") + (data $80 (i32.const 5596) "\1c") + (data $80.1 (i32.const 5608) "\04\00\00\00\08\00\00\007") + (data $81 (i32.const 5628) "\1c") + (data $81.1 (i32.const 5640) "\04\00\00\00\08\00\00\008") + (data $82 (i32.const 5660) "\1c") + (data $82.1 (i32.const 5672) "\04\00\00\00\08\00\00\009") + (data $83 (i32.const 5692) "\1c") + (data $83.1 (i32.const 5704) "\n\00\00\00\08\00\00\00:") + (data $84 (i32.const 5724) "\1c") + (data $84.1 (i32.const 5736) "\n\00\00\00\08\00\00\00;") + (data $85 (i32.const 5756) "\1c") + (data $85.1 (i32.const 5768) "\n\00\00\00\08\00\00\00<") + (data $86 (i32.const 5788) "\1c") + (data $86.1 (i32.const 5800) "\02\00\00\00\n\00\00\00H\00e\00l\00l\00o") + (data $87 (i32.const 5820) "\1c") + (data $87.1 (i32.const 5832) "\12\00\00\00\08\00\00\00=") + (data $88 (i32.const 5852) "\1c") + (data $88.1 (i32.const 5864) "\02\00\00\00\02\00\00\00A") + (data $89 (i32.const 5884) "\1c") + (data $89.1 (i32.const 5896) "\13\00\00\00\08\00\00\00>") + (data $90 (i32.const 5916) "\1c") + (data $90.1 (i32.const 5928) "\12\00\00\00\08\00\00\00?") + (data $91 (i32.const 5948) "\1c") + (data $91.1 (i32.const 5960) "\02\00\00\00\02\00\00\00B") + (data $92 (i32.const 5980) "\1c") + (data $92.1 (i32.const 5992) "\02\00\00\00\02\00\00\00C") + (data $93 (i32.const 6012) "\1c") + (data $93.1 (i32.const 6024) "\02\00\00\00\02\00\00\00D") + (data $94 (i32.const 6044) "\1c") + (data $94.1 (i32.const 6056) "\02\00\00\00\08\00\00\00A\00B\00C\00D") + (data $95 (i32.const 6076) "\1c") + (data $95.1 (i32.const 6088) "\04\00\00\00\08\00\00\00@") + (data $96 (i32.const 6108) "\1c") + (data $96.1 (i32.const 6120) "\04\00\00\00\08\00\00\00A") + (data $97 (i32.const 6140) "\1c") + (data $97.1 (i32.const 6152) "\t\00\00\00\08\00\00\00B") + (data $98 (i32.const 6172) "\1c") + (data $98.1 (i32.const 6184) "\04\00\00\00\08\00\00\00C") + (data $99 (i32.const 6204) "\1c") + (data $99.1 (i32.const 6216) "\04\00\00\00\08\00\00\00D") + (data $100 (i32.const 6236) "\1c") + (data $100.1 (i32.const 6248) "\04\00\00\00\08\00\00\00E") + (data $101 (i32.const 6268) "\1c") + (data $101.1 (i32.const 6280) "\04\00\00\00\08\00\00\00F") + (data $102 (i32.const 6300) "\1c") + (data $102.1 (i32.const 6312) "\04\00\00\00\08\00\00\00G") + (data $103 (i32.const 6332) "\1c") + (data $103.1 (i32.const 6344) "\04\00\00\00\08\00\00\00H") + (data $104 (i32.const 6364) "\1c") + (data $104.1 (i32.const 6376) "\04\00\00\00\08\00\00\00I") + (data $105 (i32.const 6396) "\1c") + (data $105.1 (i32.const 6408) "\04\00\00\00\08\00\00\00J") + (data $106 (i32.const 6432) "\14\00\00\00 \00\00\00 \00\00\00 ") + (data $106.1 (i32.const 6488) "\02A\00\00\02\t\00\00 \00\00\00\00\00\00\00\10\t\12") + (table $0 75 75 funcref) + (elem $0 (i32.const 1) $closure-stress/captureI32Param~anonymous|0 $closure-stress/captureI64Param~anonymous|0 $closure-stress/captureF32Param~anonymous|0 $closure-stress/captureF64Param~anonymous|0 $closure-stress/captureBool~anonymous|0 $closure-stress/captureMultipleI32~anonymous|0 $closure-stress/captureMixedTypes~anonymous|0 $closure-stress/capture8Params~anonymous|0 $closure-stress/captureParamsAndLocals~anonymous|0 $closure-stress/makeCounter~anonymous|0 $closure-stress/testBidirectionalMutation~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/testSharedMutation~anonymous|0 $closure-stress/testSharedMutation~anonymous|1 $closure-stress/captureI32Param~anonymous|0 $closure-stress/testOuterScopeMutation~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/curriedAdd~anonymous|0 $closure-stress/makeGreaterThan~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/simpleClosureArray~anonymous|1 $closure-stress/simpleClosureArray~anonymous|2 $closure-stress/captureI32Param~anonymous|0 $closure-stress/simpleClosureArray~anonymous|1 $closure-stress/captureI32Param~anonymous|0 $closure-stress/captureArray~anonymous|0 $closure-stress/mutateCapturedArray~anonymous|0 $closure-stress/captureArray~anonymous|0 $closure-stress/captureClassInstance~anonymous|0 $closure-stress/captureClassInstance~anonymous|1 $closure-stress/testMapWithClosure~anonymous|0 $closure-stress/testFilterWithClosure~anonymous|0 $closure-stress/testReduceWithClosure~anonymous|0 $closure-stress/testReduceWithClosure~anonymous|1 $closure-stress/makeAdder~anonymous|0 $closure-stress/testMapWithClosure~anonymous|0 $closure-stress/compose~anonymous|0 $closure-stress/expensiveComputation $closure-stress/memoize~anonymous|0 $closure-stress/emptyClosure~anonymous|0 $closure-stress/testReduceWithClosure~anonymous|1 $closure-stress/emptyClosure~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/simpleClosureArray~anonymous|1 $closure-stress/simpleClosureArray~anonymous|2 $closure-stress/makeFactorial~anonymous|0 $closure-stress/captureSmallTypes~anonymous|0 $closure-stress/testSharedMutation~anonymous|0 $closure-stress/manyClosuresSameEnv~anonymous|1 $closure-stress/manyClosuresSameEnv~anonymous|2 $closure-stress/manyClosuresSameEnv~anonymous|3 $closure-stress/manyClosuresSameEnv~anonymous|4 $closure-stress/captureI32Param~anonymous|0 $closure-stress/manyCaptures~anonymous|0 $closure-stress/simpleIIFE~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/testSharedMutation~anonymous|0 $closure-stress/interleavedClosures~anonymous|2 $closure-stress/interleavedClosures~anonymous|3 $closure-stress/captureString~anonymous|0 $closure-stress/mutateStringRef~anonymous|0 $closure-stress/captureString~anonymous|0 $closure-stress/makeCounter~anonymous|0 $closure-stress/testNestedClosureFunctions~anonymous|0 $closure-stress/testRangeWithClosure~anonymous|0 $closure-stress/testReduceWithClosure~anonymous|1 $closure-stress/captureI32Param~anonymous|0 $closure-stress/makeCounter~anonymous|0 $closure-stress/testDeeplyNestedClosures~anonymous|0~anonymous|0~anonymous|0 $closure-stress/testDeeplyNestedClosures~anonymous|0~anonymous|0 $closure-stress/testDeeplyNestedClosures~anonymous|0 $closure-stress/makeCounter~anonymous|0 $closure-stress/captureI32Param~anonymous|0) + (export "memory" (memory $0)) + (start $~start) + (func $closure-stress/captureI32Param~anonymous|0 (result i32) + global.get $~lib/__closure_env + i32.load offset=4 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1408 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1420 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1420 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1420 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1420 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 3248 + call $~lib/rt/itcms/__visit + i32.const 4096 + call $~lib/rt/itcms/__visit + i32.const 4288 + call $~lib/rt/itcms/__visit + i32.const 4992 + call $~lib/rt/itcms/__visit + i32.const 3056 + call $~lib/rt/itcms/__visit + i32.const 1840 + call $~lib/rt/itcms/__visit + i32.const 2896 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 3120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$375 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 39284 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$375 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 3120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 6432 + i32.load + i32.gt_u + if + i32.const 3248 + i32.const 3312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 6436 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 3392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 3392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 3392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 3392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 3392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 3392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 3392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 3392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 3392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 3392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 39296 + i32.const 0 + i32.store + i32.const 40864 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 39296 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 39296 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 39296 + i32.const 40868 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 39296 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 39284 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 3120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 39284 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 39284 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 3392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 3392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 3056 + i32.const 3392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $3 + end + else + local.get $3 + end + i32.const 4 + local.get $0 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 3392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 3392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) + (func $~lib/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 3056 + i32.const 3120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$71 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + 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$71 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $closure-stress/captureI32Param (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-stress/captureI64Param~anonymous|0 (result i64) + global.get $~lib/__closure_env + i64.load offset=8 + ) + (func $closure-stress/captureI64Param (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i64.store offset=12 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 2 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + ) + (func $closure-stress/captureF32Param~anonymous|0 (result f32) + global.get $~lib/__closure_env + f32.load offset=4 + ) + (func $closure-stress/captureF32Param (param $0 f32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + f32.store offset=8 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 3 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + ) + (func $closure-stress/captureF64Param~anonymous|0 (result f64) + global.get $~lib/__closure_env + f64.load offset=8 + ) + (func $closure-stress/captureF64Param (param $0 f64) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + f64.store offset=12 + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 4 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + ) + (func $closure-stress/captureBool~anonymous|0 (result i32) + global.get $~lib/__closure_env + i32.load8_u offset=4 + ) + (func $closure-stress/captureBool (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store8 offset=8 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 5 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-stress/captureMultipleI32~anonymous|0 (result i32) + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=12 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + i32.add + i32.add + ) + (func $closure-stress/captureMultipleI32 (param $0 i32) (param $1 i32) (param $2 i32) (result 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 + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + local.tee $4 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $4 + local.get $0 + i32.store offset=8 + local.get $4 + local.get $1 + i32.store offset=12 + local.get $4 + local.get $2 + i32.store offset=16 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 6 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + ) + (func $closure-stress/captureMixedTypes~anonymous|0 (result f64) + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=4 + f64.convert_i32_s + local.get $0 + i64.load offset=8 + f64.convert_i64_s + f64.add + local.get $0 + f32.load offset=16 + f64.promote_f32 + f64.add + local.get $0 + f64.load offset=24 + f64.add + ) + (func $closure-stress/capture8Params~anonymous|0 (result i32) + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=32 + local.get $0 + i32.load offset=28 + local.get $0 + i32.load offset=24 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + i32.add + i32.add + i32.add + i32.add + i32.add + i32.add + i32.add + ) + (func $closure-stress/captureParamsAndLocals~anonymous|0 (result i32) + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + i32.add + i32.add + i32.add + ) + (func $closure-stress/makeCounter~anonymous|0 (result i32) + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + i32.load offset=4 + ) + (func $closure-stress/makeCounter (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 4 + i32.add + local.tee $0 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=8 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 10 + i32.store + local.get $1 + local.get $0 + i32.store offset=4 + local.get $1 + ) + (func $closure-stress/testBidirectionalMutation~anonymous|0 (param $0 i32) + global.get $~lib/__closure_env + local.get $0 + i32.store offset=4 + ) + (func $closure-stress/testSharedMutation~anonymous|0 + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + ) + (func $closure-stress/testSharedMutation~anonymous|1 + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + ) + (func $closure-stress/testOuterScopeMutation~anonymous|0 + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.store offset=4 + ) + (func $closure-stress/curriedAdd~anonymous|0 (param $0 i32) (result i32) + global.get $~lib/__closure_env + i32.load offset=4 + local.get $0 + i32.add + ) + (func $closure-stress/makeGreaterThan~anonymous|0 (param $0 i32) (result i32) + local.get $0 + global.get $~lib/__closure_env + i32.load offset=4 + i32.gt_s + ) + (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 3120 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $closure-stress/simpleClosureArray~anonymous|1 (result i32) + global.get $~lib/__closure_env + i32.load offset=8 + ) + (func $closure-stress/simpleClosureArray~anonymous|2 (result i32) + global.get $~lib/__closure_env + i32.load offset=12 + ) + (func $closure-stress/testMapWithClosure~anonymous|0 (param $0 i32) (result i32) + local.get $0 + global.get $~lib/__closure_env + i32.load offset=4 + i32.mul + ) + (func $closure-stress/testFilterWithClosure~anonymous|0 (param $0 i32) (result i32) + local.get $0 + global.get $~lib/__closure_env + i32.load offset=4 + i32.ge_s + ) + (func $closure-stress/testReduceWithClosure~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $closure-stress/testReduceWithClosure~anonymous|1 (result i32) + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + i32.add + ) + (func $closure-stress/makeAdder~anonymous|0 (param $0 i32) (result i32) + local.get $0 + global.get $~lib/__closure_env + i32.load offset=4 + i32.add + ) + (func $closure-stress/makeAdder (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 35 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-stress/makeMultiplier (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 36 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-stress/expensiveComputation (param $0 i32) (result i32) + global.get $closure-stress/callCount + i32.const 1 + i32.add + global.set $closure-stress/callCount + local.get $0 + local.get $0 + i32.mul + ) + (func $closure-stress/emptyClosure~anonymous|0 (result i32) + i32.const 42 + ) + (func $closure-stress/multipleClosureReturns (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + i32.const 10 + i32.store offset=8 + local.get $2 + i32.const 20 + i32.store offset=12 + local.get $2 + i32.const 30 + i32.store offset=16 + local.get $0 + if + local.get $0 + i32.const 1 + i32.eq + if + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 44 + i32.store + else + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 45 + i32.store + end + else + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 43 + i32.store + end + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-stress/makeFactorial~anonymous|0 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + i32.const 1 + local.set $2 + i32.const 2 + local.set $1 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.ge_s + if + local.get $1 + local.get $2 + i32.mul + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + local.get $2 + ) + (func $closure-stress/captureSmallTypes~anonymous|0 (result i32) + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + i32.load16_u offset=8 + local.get $0 + i32.load16_s offset=6 + local.get $0 + i32.load8_s offset=4 + local.get $0 + i32.load8_u offset=5 + i32.add + i32.add + i32.add + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|1 + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.add + i32.store offset=4 + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|2 + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.add + i32.store offset=4 + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|3 + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 4 + i32.add + i32.store offset=4 + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|4 + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 5 + i32.add + i32.store offset=4 + ) + (func $closure-stress/manyCaptures~anonymous|0 (result i32) + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=48 + local.get $0 + i32.load offset=44 + local.get $0 + i32.load offset=40 + local.get $0 + i32.load offset=36 + local.get $0 + i32.load offset=32 + local.get $0 + i32.load offset=28 + local.get $0 + i32.load offset=24 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + i32.add + i32.add + i32.add + i32.add + i32.add + i32.add + i32.add + i32.add + i32.add + i32.add + i32.add + ) + (func $closure-stress/simpleIIFE~anonymous|0 (result i32) + global.get $~lib/__closure_env + i32.load offset=4 + i32.const 9 + i32.add + ) + (func $closure-stress/interleavedClosures~anonymous|2 + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 10 + i32.add + i32.store offset=4 + ) + (func $closure-stress/interleavedClosures~anonymous|3 + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 100 + i32.add + i32.store offset=4 + ) + (func $closure-stress/captureString~anonymous|0 (result i32) + global.get $~lib/__closure_env + i32.load offset=4 + ) + (func $closure-stress/testRangeWithClosure~anonymous|0 (param $0 i32) + (local $1 i32) + global.get $~lib/__closure_env + local.tee $1 + local.get $1 + i32.load offset=4 + local.get $0 + i32.add + i32.store offset=4 + ) + (func $closure-stress/testDeeplyNestedClosures~anonymous|0~anonymous|0~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/__closure_env + local.tee $1 + i32.load + local.set $0 + local.get $1 + i32.load offset=4 + local.get $0 + i32.load + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.add + i32.add + ) + (func $~start + call $start:closure-stress + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$380 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1152 + local.set $0 + br $__inlined_func$~lib/string/String#concat$380 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1088 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1120 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1184 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1184 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2992 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array<%28%29=>i32>#constructor (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 268435455 + i32.gt_u + if + i32.const 4096 + i32.const 4144 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $0 + local.get $0 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 4096 + i32.const 4144 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$308 + i32.const 1073741820 + local.get $2 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.tee $3 + local.get $0 + i32.load + local.tee $2 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $4 + local.get $3 + i32.store offset=16 + local.get $2 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew$308 + end + local.get $3 + local.get $4 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $2 + local.get $3 + local.get $4 + i32.load offset=16 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_u + select + memory.copy + end + local.get $1 + local.get $2 + i32.ne + if + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $3 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 3248 + i32.const 4144 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 3248 + i32.const 4144 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 4288 + i32.const 4144 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#constructor (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 268435455 + i32.gt_u + if + i32.const 4096 + i32.const 4144 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $0 + local.get $0 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 3248 + i32.const 4144 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 3248 + i32.const 4144 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/captureArray~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $1 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + local.get $2 + i32.add + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + local.get $0 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/mutateCapturedArray~anonymous|0 + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=4 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $2 + i32.store offset=4 + local.get $1 + i32.const 0 + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + i32.const 1 + i32.shl + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $2 + i32.store offset=4 + local.get $1 + i32.const 1 + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.shl + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + local.get $1 + i32.const 2 + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 1 + i32.shl + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/captureClassInstance~anonymous|0 + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $1 + i32.load offset=4 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load + i32.const 1 + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/captureClassInstance~anonymous|1 (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 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i32.load + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $7 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $9 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $10 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $4 + local.set $3 + loop $while-continue|0 + local.get $5 + local.get $10 + i32.ne + if + local.get $10 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $10 + i32.load + local.tee $11 + i32.store + local.get $3 + local.get $10 + i32.load offset=4 + i32.store offset=4 + local.get $3 + local.get $9 + local.get $8 + local.get $11 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $11 + local.get $11 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $11 + local.get $11 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $11 + local.get $11 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $11 + i32.load + i32.store offset=8 + local.get $11 + local.get $3 + i32.store + local.get $3 + i32.const 12 + i32.add + local.set $3 + end + local.get $10 + i32.const 12 + i32.add + local.set $10 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $0 + local.get $9 + i32.store + local.get $0 + local.get $9 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store + local.get $3 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $7 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-stress/memoize~anonymous|0 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $2 + i32.load offset=4 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + local.get $3 + i32.const 15 + i32.shr_u + local.tee $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=4 + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + local.get $1 + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz + if + i32.const 4992 + i32.const 5056 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=8 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=4 + local.tee $2 + i32.store + local.get $2 + local.get $0 + local.get $1 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$218 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$218 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $closure-stress/mutateStringRef~anonymous|0 (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 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $1 + i32.load offset=4 + local.tee $2 + i32.store + 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 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/makeAdderPair (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $~lib/array/Array<%28%29=>i32>#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 73 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 0 + local.get $2 + call $~lib/array/Array<%28%29=>i32>#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 74 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 1 + local.get $2 + call $~lib/array/Array<%28%29=>i32>#__set + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $start:closure-stress + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 172 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 172 + memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 39284 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 3172 + i32.const 3168 + i32.store + i32.const 3176 + i32.const 3168 + i32.store + i32.const 3168 + global.set $~lib/rt/itcms/pinSpace + i32.const 3204 + i32.const 3200 + i32.store + i32.const 3208 + i32.const 3200 + i32.store + i32.const 3200 + global.set $~lib/rt/itcms/toSpace + i32.const 3348 + i32.const 3344 + i32.store + i32.const 3352 + i32.const 3344 + i32.store + i32.const 3344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 42 + call $closure-stress/captureI32Param + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const -1 + call $closure-stress/captureI32Param + local.tee $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2147483647 + call $closure-stress/captureI32Param + local.tee $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 2147483647 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 42 + call $closure-stress/captureI64Param + local.tee $0 + i32.store offset=12 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $8) + i64.const 42 + i64.ne + if + i32.const 0 + i32.const 3456 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 9223372036854775807 + call $closure-stress/captureI64Param + local.tee $0 + i32.store offset=16 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $8) + i64.const 9223372036854775807 + i64.ne + if + i32.const 0 + i32.const 3456 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + f32.const 3.140000104904175 + call $closure-stress/captureF32Param + local.tee $0 + i32.store offset=20 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $9) + f32.const 3.140000104904175 + f32.ne + if + i32.const 0 + i32.const 3456 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + f32.const 0 + call $closure-stress/captureF32Param + local.tee $0 + i32.store offset=24 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $9) + f32.const 0 + f32.ne + if + i32.const 0 + i32.const 3456 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + f64.const 3.141592653589793 + call $closure-stress/captureF64Param + local.tee $0 + i32.store offset=28 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $5) + f64.const 3.141592653589793 + f64.ne + if + i32.const 0 + i32.const 3456 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + f64.const inf + call $closure-stress/captureF64Param + local.tee $0 + i32.store offset=32 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $5) + f64.const inf + f64.ne + if + i32.const 0 + i32.const 3456 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $closure-stress/captureBool + local.tee $0 + i32.store offset=36 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.eqz + if + i32.const 0 + i32.const 3456 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-stress/captureBool + local.tee $0 + i32.store offset=40 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + if + i32.const 0 + i32.const 3456 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 3 + call $closure-stress/captureMultipleI32 + local.tee $0 + i32.store offset=44 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 53 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 100 + i32.const 200 + i32.const 300 + call $closure-stress/captureMultipleI32 + local.tee $0 + i32.store offset=48 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 600 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~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 32 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.store offset=8 + local.get $3 + i64.const 2 + i64.store offset=12 + local.get $3 + f32.const 3 + f32.store offset=20 + local.get $3 + f64.const 4 + f64.store offset=28 + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 7 + i32.store + local.get $4 + local.get $3 + i32.const 4 + i32.add + i32.store offset=4 + local.get $4 + i32.store offset=52 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $5) + f64.const 10 + f64.ne + if + i32.const 0 + i32.const 3456 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~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 36 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.store offset=8 + local.get $3 + i32.const 2 + i32.store offset=12 + local.get $3 + i32.const 3 + i32.store offset=16 + local.get $3 + i32.const 4 + i32.store offset=20 + local.get $3 + i32.const 5 + i32.store offset=24 + local.get $3 + i32.const 6 + i32.store offset=28 + local.get $3 + i32.const 7 + i32.store offset=32 + local.get $3 + i32.const 8 + i32.store offset=36 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 8 + i32.store + local.get $4 + local.get $3 + i32.const 4 + i32.add + i32.store offset=4 + local.get $4 + i32.store offset=56 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + i32.const 36 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 69 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~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 20 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.store offset=8 + local.get $3 + i32.const 2 + i32.store offset=12 + local.get $3 + i32.const 100 + i32.store offset=16 + local.get $3 + i32.const 200 + i32.store offset=20 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 9 + i32.store + local.get $4 + local.get $3 + i32.const 4 + i32.add + i32.store offset=4 + local.get $4 + i32.store offset=60 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + i32.const 303 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/makeCounter + global.set $closure-stress/counter1 + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/counter1 + local.tee $0 + i32.store offset=64 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/counter1 + local.tee $0 + i32.store offset=68 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/counter1 + local.tee $0 + i32.store offset=72 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/makeCounter + global.set $closure-stress/counter2 + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/counter2 + local.tee $0 + i32.store offset=76 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 96 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/counter1 + local.tee $0 + i32.store offset=80 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 97 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.set $3 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 11 + i32.store + local.get $4 + local.get $3 + i32.store offset=4 + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 12 + i32.store + local.get $5 + local.get $3 + i32.store offset=4 + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 10 + local.get $4 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 20 + local.get $4 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.set $3 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 13 + i32.store + local.get $4 + local.get $3 + i32.store offset=4 + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 14 + i32.store + local.get $5 + local.get $3 + i32.store offset=4 + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $6 + i32.const 15 + i32.store + local.get $6 + local.get $3 + i32.store offset=4 + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=28 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=32 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=36 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 127 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.set $3 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 16 + i32.store + local.get $4 + local.get $3 + i32.store offset=4 + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 17 + i32.store + local.get $5 + local.get $3 + i32.store offset=4 + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 138 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 142 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.store offset=8 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 18 + i32.store + local.get $3 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + local.get $3 + global.set $closure-stress/addTo10 + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/addTo10 + local.tee $0 + i32.store offset=84 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 5 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 15 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 153 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/addTo10 + local.tee $0 + i32.store offset=88 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 20 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 154 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.store offset=8 + i32.const 8 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 19 + i32.store + local.get $3 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + local.get $3 + global.set $closure-stress/greaterThan5 + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/greaterThan5 + local.tee $0 + i32.store offset=92 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 10 + local.get $0 + i32.load + call_indirect (type $1) + i32.eqz + if + i32.const 0 + i32.const 3456 + i32.const 161 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/greaterThan5 + local.tee $0 + i32.store offset=96 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 3 + local.get $0 + i32.load + call_indirect (type $1) + if + i32.const 0 + i32.const 3456 + i32.const 162 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.set $3 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/array/Array<%28%29=>i32>#constructor + local.tee $4 + i32.store + local.get $0 + i32.const 10 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 20 + i32.store + local.get $5 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + i32.const 0 + local.get $5 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $0 + i32.const 20 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 21 + i32.store + local.get $5 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + i32.const 1 + local.get $5 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $0 + i32.const 30 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 22 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + i32.const 2 + local.get $0 + call $~lib/array/Array<%28%29=>i32>#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $0 + i32.store offset=12 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + local.get $0 + i32.add + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $3 + i32.store offset=20 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + local.get $0 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 60 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 183 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $closure-stress/closureInConditional + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 199 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $closure-stress/closureInConditional + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 200 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 42 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 25 + i32.store + local.get $4 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 216 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/array/Array#constructor + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 26 + i32.store + local.get $4 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 233 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.set $3 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/array/Array#constructor + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $4 + i32.store + local.get $4 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $4 + i32.store + local.get $4 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 27 + i32.store + local.get $4 + local.get $3 + i32.store offset=4 + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 28 + i32.store + local.get $5 + local.get $3 + i32.store offset=4 + local.get $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 250 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 252 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=24 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 24 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 257 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + i32.const 4 + i32.add + local.set $4 + local.get $3 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + 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 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 29 + i32.store + local.get $3 + local.get $4 + i32.store offset=4 + local.get $3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 30 + i32.store + local.get $5 + local.get $4 + i32.store offset=4 + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 280 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 31 + i32.store + local.get $5 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + call $~lib/array/Array#get:length + call $~lib/array/Array#constructor + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + local.get $2 + call $~lib/array/Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + local.get $2 + local.get $6 + local.get $5 + i32.load + call_indirect (type $1) + call $~lib/array/Array#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + local.get $2 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + local.get $2 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 60 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 306 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/array/Array#constructor + local.tee $0 + i32.store + loop $for-loop|1 + local.get $1 + i32.const 10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $1 + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 32 + i32.store + local.get $3 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + i32.const 0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/array/Array#constructor + local.tee $4 + i32.store + loop $for-loop|02 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $4 + i32.load offset=12 + local.tee $6 + i32.const 1 + i32.add + local.tee $7 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|02 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/array/Array#get:length + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 330 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 100 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/array/Array#constructor + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 + i32.const 4 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 4 + i32.const 5 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4736 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + loop $for-loop|04 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + local.get $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $0 + call $~lib/array/Array#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4736 + i32.store offset=4 + i32.const 4740 + i32.load + global.set $~lib/__closure_env + local.get $1 + local.get $5 + i32.const 4736 + i32.load + call_indirect (type $4) + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|04 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 34 + i32.store + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 115 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 357 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + call $closure-stress/makeAdder + global.set $closure-stress/add5 + i32.const 10 + call $closure-stress/makeAdder + global.set $closure-stress/add10 + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/add5 + local.tee $0 + i32.store offset=100 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 3 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 369 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/add10 + local.tee $0 + i32.store offset=104 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 3 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 13 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 370 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/add10 + local.tee $0 + i32.store offset=112 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 0 + local.get $0 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/add5 + local.tee $1 + i32.store offset=108 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $1) + i32.const 15 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 371 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $closure-stress/makeMultiplier + global.set $closure-stress/double + i32.const 3 + call $closure-stress/makeMultiplier + global.set $closure-stress/triple + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/double + local.tee $0 + i32.store offset=116 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 5 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 379 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/triple + local.tee $0 + i32.store offset=120 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 5 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 15 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 380 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/triple + local.tee $0 + i32.store offset=128 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 4 + local.get $0 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/double + local.tee $1 + i32.store offset=124 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $1) + i32.const 24 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 381 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/double + local.tee $0 + i32.store offset=132 + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/add5 + local.tee $1 + i32.store offset=136 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=12 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 37 + i32.store + local.get $0 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $0 + global.set $closure-stress/addThenDouble + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/addThenDouble + local.tee $0 + i32.store offset=140 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 3 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 16 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 388 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 0 + global.set $closure-stress/callCount + global.get $~lib/memory/__stack_pointer + i32.const 4896 + i32.store + global.get $~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 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 4 + i32.add + local.set $2 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 4896 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $3 + local.get $4 + i32.store + local.get $3 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $3 + local.get $4 + i32.store offset=8 + local.get $3 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $3 + i32.store offset=8 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 39 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 5 + local.get $1 + i32.load + call_indirect (type $1) + i32.const 25 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 5 + local.get $1 + i32.load + call_indirect (type $1) + i32.const 25 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 3 + local.get $1 + i32.load + call_indirect (type $1) + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 418 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 5 + local.get $1 + i32.load + call_indirect (type $1) + i32.const 25 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 419 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 420 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $closure-stress/callCount + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 424 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5136 + i32.store offset=144 + i32.const 5140 + i32.load + global.set $~lib/__closure_env + i32.const 5136 + i32.load + call_indirect (type $0) + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 434 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.store offset=8 + local.get $0 + i32.const 20 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 41 + i32.store + local.get $2 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 443 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 5200 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5200 + i32.store offset=4 + i32.const 5204 + i32.load + global.set $~lib/__closure_env + i32.const 5200 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 451 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-stress/multipleClosureReturns + local.tee $0 + i32.store offset=148 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 467 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $closure-stress/multipleClosureReturns + local.tee $0 + i32.store offset=152 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 468 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $closure-stress/multipleClosureReturns + local.tee $0 + i32.store offset=156 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 469 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5328 + global.set $closure-stress/fact + global.get $~lib/memory/__stack_pointer + i32.const 5328 + i32.store offset=160 + i32.const 5332 + i32.load + global.set $~lib/__closure_env + i32.const 5 + i32.const 5328 + i32.load + call_indirect (type $1) + i32.const 120 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 483 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/fact + local.tee $0 + i32.store offset=164 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 6 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 720 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 484 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.store8 offset=8 + local.get $0 + i32.const 20 + i32.store8 offset=9 + local.get $0 + i32.const 30 + i32.store16 offset=10 + local.get $0 + i32.const 40 + i32.store16 offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 47 + i32.store + local.get $2 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 496 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 48 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 48 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 49 + i32.store + local.get $3 + local.get $1 + i32.store offset=4 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 50 + i32.store + local.get $4 + local.get $1 + i32.store offset=4 + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 51 + i32.store + local.get $5 + local.get $1 + i32.store offset=4 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $6 + i32.const 52 + i32.store + local.get $6 + local.get $1 + i32.store offset=4 + local.get $6 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $7 + i32.const 53 + i32.store + local.get $7 + local.get $1 + i32.store offset=4 + local.get $7 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=24 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=28 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=32 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=40 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=44 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 15 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 517 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 52 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store offset=8 + local.get $0 + i32.const 2 + i32.store offset=12 + local.get $0 + i32.const 3 + i32.store offset=16 + local.get $0 + i32.const 4 + i32.store offset=20 + local.get $0 + i32.const 5 + i32.store offset=24 + local.get $0 + i32.const 6 + i32.store offset=28 + local.get $0 + i32.const 7 + i32.store offset=32 + local.get $0 + i32.const 8 + i32.store offset=36 + local.get $0 + i32.const 9 + i32.store offset=40 + local.get $0 + i32.const 10 + i32.store offset=44 + local.get $0 + i32.const 11 + i32.store offset=48 + local.get $0 + i32.const 12 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 54 + i32.store + local.get $2 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 78 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 529 + 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 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 55 + i32.store + local.get $2 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 539 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/array/Array<%28%29=>i32>#constructor + local.tee $2 + i32.store + i32.const 0 + local.set $0 + loop $for-loop|05 + local.get $0 + i32.const 10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $0 + i32.const 10 + i32.mul + i32.store offset=8 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 56 + i32.store + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $3 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|05 + end + end + i32.const 0 + local.set $0 + i32.const 0 + local.set $1 + loop $for-loop|10 + local.get $1 + i32.const 10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $1 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + local.get $0 + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|10 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 450 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 564 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 44 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 57 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 58 + i32.store + local.get $3 + local.get $1 + i32.store offset=4 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 59 + i32.store + local.get $4 + local.get $1 + i32.store offset=4 + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 60 + i32.store + local.get $5 + local.get $1 + i32.store offset=4 + local.get $5 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=28 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=32 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=40 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 123 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 585 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 5808 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 61 + i32.store + local.get $2 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=132 + local.get $0 + i32.const 5808 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3456 + i32.const 597 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 5872 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 62 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 63 + i32.store + local.get $3 + local.get $1 + i32.store offset=4 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 5968 + local.get $2 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 6000 + local.get $2 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 6032 + local.get $2 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=132 + local.get $0 + i32.const 6064 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3456 + i32.const 611 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 65 + i32.store + local.get $2 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 634 + 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 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + local.set $1 + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 66 + i32.store + local.get $2 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + loop $for-loop|01 + local.get $1 + i32.const 10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + local.get $2 + i32.load + call_indirect (type $3) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|01 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 654 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 67 + i32.store + local.get $1 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + local.get $1 + global.set $closure-stress/addResult + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/addResult + local.tee $0 + i32.store offset=168 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 662 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 68 + i32.store + local.get $3 + local.get $1 + i32.store offset=4 + local.get $3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 69 + i32.store + local.get $4 + local.get $1 + i32.store offset=4 + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 675 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 677 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 678 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 682 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 72 + i32.store + local.get $2 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 111 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 707 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const -64 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 64 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $closure-stress/makeAdderPair + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 730 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=28 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 733 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 100 + call $closure-stress/makeAdderPair + local.tee $1 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $2 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $1 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=44 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=48 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.const 101 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 741 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=52 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 742 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=56 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=60 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + local.get $0 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const -64 + i32.sub + global.set $~lib/memory/__stack_pointer + i32.const 113 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 746 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 172 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-stress/closureInConditional (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + i32.const 10 + i32.store offset=8 + local.get $2 + i32.const 20 + i32.store offset=12 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.set $2 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 23 + i32.store + else + global.get $~lib/memory/__stack_pointer + local.set $2 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 24 + i32.store + end + local.get $0 + local.get $1 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/compose~anonymous|0 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/__closure_env + local.tee $2 + i32.load offset=8 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $1) + 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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 4096 + i32.const 4928 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-stress/testNestedClosureFunctions~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.tee $2 + local.get $2 + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 64 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + drop + local.get $2 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/testDeeplyNestedClosures~anonymous|0~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $0 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 4 + i32.add + local.tee $2 + local.get $0 + i32.store + local.get $1 + i32.const 100 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 70 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/testDeeplyNestedClosures~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + if + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/__closure_env + local.set $0 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 4 + i32.add + local.tee $2 + local.get $0 + i32.store + local.get $1 + i32.const 10 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 71 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $invalid + block $"~lib/map/Map" + block $closure-stress/Counter + block $~lib/array/Array + block $~lib/array/Array<%28%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $~lib/array/Array<%28%29=>i32> $~lib/array/Array $closure-stress/Counter $folding-inner1 $"~lib/map/Map" $folding-inner1 $folding-inner1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner2 + 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 6516 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner2 + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6516 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + 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 6516 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 39312 + i32.const 39360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/closure-stress.ts b/tests/compiler/closure-stress.ts new file mode 100644 index 0000000000..cb95fadda1 --- /dev/null +++ b/tests/compiler/closure-stress.ts @@ -0,0 +1,751 @@ +// ============================================================================= +// CLOSURE STRESS TEST +// ============================================================================= + +// ============================================================================= +// SECTION 1: Basic Capture Patterns +// ============================================================================= + +// Test 1.1: Capture single i32 parameter +function captureI32Param(x: i32): () => i32 { + return (): i32 => x; +} +assert(captureI32Param(42)() == 42); +assert(captureI32Param(-1)() == -1); +assert(captureI32Param(0x7FFFFFFF)() == 0x7FFFFFFF); + +// Test 1.2: Capture single i64 parameter +function captureI64Param(x: i64): () => i64 { + return (): i64 => x; +} +assert(captureI64Param(42)() == 42); +assert(captureI64Param(0x7FFFFFFFFFFFFFFF)() == 0x7FFFFFFFFFFFFFFF); + +// Test 1.3: Capture single f32 parameter +function captureF32Param(x: f32): () => f32 { + return (): f32 => x; +} +assert(captureF32Param(3.14)() == 3.14); +assert(captureF32Param(0.0)() == 0.0); + +// Test 1.4: Capture single f64 parameter +function captureF64Param(x: f64): () => f64 { + return (): f64 => x; +} +assert(captureF64Param(3.141592653589793)() == 3.141592653589793); +assert(captureF64Param(Infinity)() == Infinity); + +// Test 1.5: Capture boolean +function captureBool(x: bool): () => bool { + return (): bool => x; +} +assert(captureBool(true)() == true); +assert(captureBool(false)() == false); + +// ============================================================================= +// SECTION 2: Multiple Captures with Different Types +// ============================================================================= + +// Test 2.1: Capture multiple i32s +function captureMultipleI32(a: i32, b: i32, c: i32): () => i32 { + return (): i32 => a + b + c; +} +assert(captureMultipleI32(1, 2, 3)() == 6); +assert(captureMultipleI32(100, 200, 300)() == 600); + +// Test 2.2: Capture mixed types (i32, i64, f32, f64) +function captureMixedTypes(a: i32, b: i64, c: f32, d: f64): () => f64 { + return (): f64 => a + b + c + d; +} +assert(captureMixedTypes(1, 2, 3.0, 4.0)() == 10.0); + +// Test 2.3: Capture 8 parameters (stress test alignment) +function capture8Params( + a: i32, b: i32, c: i32, d: i32, + e: i32, f: i32, g: i32, h: i32 +): () => i32 { + return (): i32 => a + b + c + d + e + f + g + h; +} +assert(capture8Params(1, 2, 3, 4, 5, 6, 7, 8)() == 36); + +// Test 2.4: Capture parameters and locals mixed +function captureParamsAndLocals(a: i32, b: i32): () => i32 { + let c: i32 = 100; + let d: i32 = 200; + return (): i32 => a + b + c + d; +} +assert(captureParamsAndLocals(1, 2)() == 303); + +// ============================================================================= +// SECTION 3: Mutable Captures (Reference Semantics) +// ============================================================================= + +// Test 3.1: Simple counter +function makeCounter(): () => i32 { + let count: i32 = 0; + return (): i32 => { + count = count + 1; + return count; + }; +} +let counter1 = makeCounter(); +assert(counter1() == 1); +assert(counter1() == 2); +assert(counter1() == 3); +let counter2 = makeCounter(); // New counter should start at 0 +assert(counter2() == 1); +assert(counter1() == 4); // Original counter continues + +// Test 3.2: Bidirectional mutation +function testBidirectionalMutation(): i32 { + let value: i32 = 0; + let setter = (x: i32): void => { value = x; }; + let getter = (): i32 => value; + + setter(10); + assert(getter() == 10); + setter(20); + assert(getter() == 20); + + return getter(); +} +assert(testBidirectionalMutation() == 20); + +// Test 3.3: Multiple closures mutating same variable +function testSharedMutation(): i32 { + let value: i32 = 0; + let inc = (): void => { value = value + 1; }; + let dec = (): void => { value = value - 1; }; + let get = (): i32 => value; + + inc(); inc(); inc(); // value = 3 + dec(); // value = 2 + inc(); inc(); // value = 4 + + return get(); +} +assert(testSharedMutation() == 4); + +// Test 3.4: Mutation affects outer scope +function testOuterScopeMutation(): i32 { + let value: i32 = 5; + let double = (): void => { value = value * 2; }; + let get = (): i32 => value; + + double(); // value = 10 + assert(get() == 10); + double(); // value = 20 + assert(get() == 20); + + return get(); +} +assert(testOuterScopeMutation() == 20); + +// ============================================================================= +// SECTION 4: Simple Currying (single level capture only) +// ============================================================================= + +// Test 4.1: Simple currying pattern +function curriedAdd(a: i32): (b: i32) => i32 { + return (b: i32): i32 => a + b; +} +let addTo10 = curriedAdd(10); +assert(addTo10(5) == 15); +assert(addTo10(20) == 30); + +// Test 4.2: Another currying example +function makeGreaterThan(threshold: i32): (x: i32) => bool { + return (x: i32): bool => x > threshold; +} +let greaterThan5 = makeGreaterThan(5); +assert(greaterThan5(10) == true); +assert(greaterThan5(3) == false); + +// ============================================================================= +// SECTION 5: Closures with Complex Control Flow +// ============================================================================= + +// Test 5.1: Simple array of closures +function simpleClosureArray(): i32 { + let fns = new Array<() => i32>(3); + + let v0: i32 = 10; + fns[0] = (): i32 => v0; + + let v1: i32 = 20; + fns[1] = (): i32 => v1; + + let v2: i32 = 30; + fns[2] = (): i32 => v2; + + return fns[0]() + fns[1]() + fns[2](); +} +assert(simpleClosureArray() == 60); + +// Test 5.2: Closure in conditional +function closureInConditional(useFirst: bool): i32 { + let a: i32 = 10; + let b: i32 = 20; + + let getter: () => i32; + if (useFirst) { + getter = (): i32 => a; + } else { + getter = (): i32 => b; + } + + return getter(); +} +assert(closureInConditional(true) == 10); +assert(closureInConditional(false) == 20); + +// Test 5.3: Closure escaping try block (simulated) +function closureEscapingBlock(): i32 { + let value: i32 = 0; + let captured: () => i32; + + { + let inner: i32 = 42; + captured = (): i32 => inner; + value = captured(); + } + + // Inner scope ended but closure still works + return captured(); +} +assert(closureEscapingBlock() == 42); + +// ============================================================================= +// SECTION 6: Closures with Objects and Arrays +// ============================================================================= + +// Test 6.1: Capture array reference +function captureArray(): i32 { + let arr = new Array(3); + arr[0] = 1; + arr[1] = 2; + arr[2] = 3; + + let sum = (): i32 => arr[0] + arr[1] + arr[2]; + + return sum(); +} +assert(captureArray() == 6); + +// Test 6.2: Mutate captured array +function mutateCapturedArray(): i32 { + let arr = new Array(3); + arr[0] = 1; + arr[1] = 2; + arr[2] = 3; + + let doubleAll = (): void => { + arr[0] = arr[0] * 2; + arr[1] = arr[1] * 2; + arr[2] = arr[2] * 2; + }; + + let sum = (): i32 => arr[0] + arr[1] + arr[2]; + + assert(sum() == 6); + doubleAll(); + assert(sum() == 12); + doubleAll(); + + return sum(); +} +assert(mutateCapturedArray() == 24); + +// Test 6.3: Capture class instance +class Counter { + value: i32 = 0; + + increment(): void { + this.value++; + } +} + +function captureClassInstance(): i32 { + let c = new Counter(); + + let inc = (): void => { c.value = c.value + 1; }; + let get = (): i32 => c.value; + + inc(); + inc(); + inc(); + + return get(); +} +assert(captureClassInstance() == 3); + +// ============================================================================= +// SECTION 7: Higher-Order Functions with Closures +// ============================================================================= + +// Test 7.1: Map-like operation +function mapArray(arr: Array, fn: (x: i32) => i32): Array { + let result = new Array(arr.length); + for (let i: i32 = 0; i < arr.length; i++) { + result[i] = fn(arr[i]); + } + return result; +} + +function testMapWithClosure(): i32 { + let multiplier: i32 = 10; + let arr = new Array(3); + arr[0] = 1; + arr[1] = 2; + arr[2] = 3; + + let result = mapArray(arr, (x: i32): i32 => x * multiplier); + + return result[0] + result[1] + result[2]; // 10 + 20 + 30 +} +assert(testMapWithClosure() == 60); + +// Test 7.2: Filter-like operation +function filterArray(arr: Array, pred: (x: i32) => bool): Array { + let result = new Array(0); + for (let i: i32 = 0; i < arr.length; i++) { + if (pred(arr[i])) { + result.push(arr[i]); + } + } + return result; +} + +function testFilterWithClosure(): i32 { + let threshold: i32 = 5; + let arr = new Array(10); + for (let i: i32 = 0; i < 10; i++) { + arr[i] = i; + } + + let result = filterArray(arr, (x: i32): bool => x >= threshold); + + return result.length; // 5, 6, 7, 8, 9 = 5 elements +} +assert(testFilterWithClosure() == 5); + +// Test 7.3: Reduce-like operation +function reduceArray(arr: Array, fn: (acc: i32, x: i32) => i32, initial: i32): i32 { + let acc = initial; + for (let i: i32 = 0; i < arr.length; i++) { + acc = fn(acc, arr[i]); + } + return acc; +} + +function testReduceWithClosure(): i32 { + let bonus: i32 = 100; + let arr = new Array(5); + arr[0] = 1; + arr[1] = 2; + arr[2] = 3; + arr[3] = 4; + arr[4] = 5; + + // Sum all elements and add bonus at the end + let result = reduceArray(arr, (acc: i32, x: i32): i32 => acc + x, 0); + + let addBonus = (): i32 => result + bonus; + + return addBonus(); // 15 + 100 +} +assert(testReduceWithClosure() == 115); + +// ============================================================================= +// SECTION 8: Closure Factory Patterns +// ============================================================================= + +// Test 8.1: Adder factory +function makeAdder(amount: i32): (x: i32) => i32 { + return (x: i32): i32 => x + amount; +} +let add5 = makeAdder(5); +let add10 = makeAdder(10); +assert(add5(3) == 8); +assert(add10(3) == 13); +assert(add5(add10(0)) == 15); + +// Test 8.2: Multiplier factory +function makeMultiplier(factor: i32): (x: i32) => i32 { + return (x: i32): i32 => x * factor; +} +let double = makeMultiplier(2); +let triple = makeMultiplier(3); +assert(double(5) == 10); +assert(triple(5) == 15); +assert(double(triple(4)) == 24); + +// Test 8.3: Compose functions +function compose(f: (x: i32) => i32, g: (x: i32) => i32): (x: i32) => i32 { + return (x: i32): i32 => f(g(x)); +} +let addThenDouble = compose(double, add5); +assert(addThenDouble(3) == 16); // (3 + 5) * 2 = 16 + +// Test 8.4: Memoization pattern +function memoize(fn: (x: i32) => i32): (x: i32) => i32 { + let cache = new Map(); + return (x: i32): i32 => { + if (cache.has(x)) { + return cache.get(x); + } + let result = fn(x); + cache.set(x, result); + return result; + }; +} + +let callCount: i32 = 0; +function expensiveComputation(x: i32): i32 { + callCount++; + return x * x; +} + +function testMemoization(): i32 { + callCount = 0; + let memoized = memoize(expensiveComputation); + + assert(memoized(5) == 25); + assert(callCount == 1); + assert(memoized(5) == 25); // Should use cache + assert(callCount == 1); + assert(memoized(3) == 9); + assert(callCount == 2); + assert(memoized(5) == 25); // Still cached + assert(callCount == 2); + + return callCount; +} +assert(testMemoization() == 2); + +// ============================================================================= +// SECTION 9: Edge Cases and Corner Cases +// ============================================================================= + +// Test 9.1: Empty closure (captures nothing) +function emptyClosure(): () => i32 { + return (): i32 => 42; +} +assert(emptyClosure()() == 42); + +// Test 9.2: Capture only, no parameters +function captureOnlyNoParams(): i32 { + let x: i32 = 10; + let y: i32 = 20; + let fn = (): i32 => x + y; + return fn(); +} +assert(captureOnlyNoParams() == 30); + +// Test 9.3: Closure that ignores captured value +function ignoreCapture(): i32 { + let unused: i32 = 999; + let fn = (): i32 => 42; + return fn(); +} +assert(ignoreCapture() == 42); + +// Test 9.4: Multiple returns of same closure type +function multipleClosureReturns(which: i32): () => i32 { + let a: i32 = 10; + let b: i32 = 20; + let c: i32 = 30; + + if (which == 0) { + return (): i32 => a; + } else if (which == 1) { + return (): i32 => b; + } else { + return (): i32 => c; + } +} +assert(multipleClosureReturns(0)() == 10); +assert(multipleClosureReturns(1)() == 20); +assert(multipleClosureReturns(2)() == 30); + +// Test 9.5: Recursive closure pattern (using wrapper) +function makeFactorial(): (n: i32) => i32 { + // Use a simple iterative approach since recursive closures are complex + return (n: i32): i32 => { + let result: i32 = 1; + for (let i: i32 = 2; i <= n; i++) { + result = result * i; + } + return result; + }; +} +let fact = makeFactorial(); +assert(fact(5) == 120); +assert(fact(6) == 720); + +// Test 9.6: Closure with i8/u8/i16/u16 captures +function captureSmallTypes(): i32 { + let a: i8 = 10; + let b: u8 = 20; + let c: i16 = 30; + let d: u16 = 40; + + let fn = (): i32 => a + b + c + d; + return fn(); +} +assert(captureSmallTypes() == 100); + +// ============================================================================= +// SECTION 10: Stress Tests +// ============================================================================= + +// Test 10.1: Many closures sharing same environment +function manyClosuresSameEnv(): i32 { + let value: i32 = 0; + + let inc1 = (): void => { value += 1; }; + let inc2 = (): void => { value += 2; }; + let inc3 = (): void => { value += 3; }; + let inc4 = (): void => { value += 4; }; + let inc5 = (): void => { value += 5; }; + let get = (): i32 => value; + + inc1(); inc2(); inc3(); inc4(); inc5(); + + return get(); // 1 + 2 + 3 + 4 + 5 = 15 +} +assert(manyClosuresSameEnv() == 15); + +// Test 10.2: Large number of captures +function manyCaptures(): i32 { + let a: i32 = 1, b: i32 = 2, c: i32 = 3, d: i32 = 4; + let e: i32 = 5, f: i32 = 6, g: i32 = 7, h: i32 = 8; + let i: i32 = 9, j: i32 = 10, k: i32 = 11, l: i32 = 12; + + let fn = (): i32 => a + b + c + d + e + f + g + h + i + j + k + l; + + return fn(); // 78 +} +assert(manyCaptures() == 78); + +// Test 10.3: Simple IIFE (Immediately Invoked Function Expression) +function simpleIIFE(): i32 { + let v1: i32 = 1; + let result = ((): i32 => { + return v1 + 9; + })(); + return result; +} +assert(simpleIIFE() == 10); + +// Test 10.4: Closure array manipulation +// Note: Loop closures need a helper function to capture by value because +// AssemblyScript closures share their environment (reference semantics). +function captureLoopValue(val: i32): () => i32 { + return (): i32 => val; +} + +function closureArrayOps(): i32 { + let closures = new Array<() => i32>(10); + + for (let i: i32 = 0; i < 10; i++) { + let captured = i * 10; + // Use helper function to capture the current value of 'captured' + closures[i] = captureLoopValue(captured); + } + + let sum: i32 = 0; + for (let i: i32 = 0; i < 10; i++) { + sum += closures[i](); + } + + return sum; // 0 + 10 + 20 + ... + 90 = 450 +} +assert(closureArrayOps() == 450); + +// Test 10.5: Interleaved closure creation and execution +function interleavedClosures(): i32 { + let total: i32 = 0; + let get = (): i32 => total; + + let add1 = (): void => { total += 1; }; + add1(); + + let add10 = (): void => { total += 10; }; + add1(); + add10(); + + let add100 = (): void => { total += 100; }; + add1(); + add10(); + add100(); + + return get(); // 1 + 1 + 10 + 1 + 10 + 100 = 123 +} +assert(interleavedClosures() == 123); + +// ============================================================================= +// SECTION 11: Closure with String captures +// ============================================================================= + +// Test 11.1: Capture string +function captureString(): string { + let s: string = "Hello"; + let fn = (): string => s; + return fn(); +} +assert(captureString() == "Hello"); + +// Test 11.2: Mutate captured string reference +function mutateStringRef(): string { + let s: string = "A"; + let append = (suffix: string): void => { s = s + suffix; }; + let get = (): string => s; + + append("B"); + append("C"); + append("D"); + + return get(); +} +assert(mutateStringRef() == "ABCD"); + +// ============================================================================= +// SECTION 12: Tests from Issue #798 Discussion +// ============================================================================= + +// Test 12.1: Nested closures (outer -> inner -> innerInner) from @dcodeIO's example +// This tests the parent environment chain - innerInner captures x from grandparent scope +function testNestedClosureFunctions(): i32 { + let x: i32 = 0; + + let inner = (): i32 => { + x += 1; + let innerInner = (): i32 => { + x += 1; // Capture from grandparent scope! + return x; + }; + innerInner(); + return x; + }; + + return inner(); // x should be 2 (incremented twice) +} +assert(testNestedClosureFunctions() == 2); + +// Test 12.2: Range callback pattern from @MaxGraey's original example +// Tests passing closures to higher-order functions with captures +function range(a: i32, b: i32, fn: (n: i32) => void): void { + for (let i = a; i < b; i++) { + fn(i); + } +} + +function testRangeWithClosure(): i32 { + let sum: i32 = 0; + let n: i32 = 10; + + range(0, n, (i: i32): void => { + sum += i; // captures sum + }); + + return sum; // 0+1+2+3+4+5+6+7+8+9 = 45 +} +assert(testRangeWithClosure() == 45); + +// Test 12.3: Return closure pattern from @jtenner's question +// function add(a, b) { return () => a + b; } +function add(a: i32, b: i32): () => i32 { + return (): i32 => a + b; +} +let addResult = add(3, 4); +assert(addResult() == 7); + +// Test 12.4: Two closures different views of same variable from @jtenner's example +// let a = 1; let b = () => a; let c = () => a += 1; +function testTwoClosuresSameVar(): i32 { + let a: i32 = 1; + let b = (): i32 => a; + let c = (): i32 => { + a += 1; + return a; + }; + + let br = b(); // 1 + assert(br == 1); + let cr = c(); // 2 + assert(cr == 2); + assert(a == 2); + + return a; +} +assert(testTwoClosuresSameVar() == 2); + +// Test 12.5: Deeply nested closure chain +// Tests multiple levels of environment parent pointers +function testDeeplyNestedClosures(): i32 { + let level1: i32 = 1; + + let fn1 = (): i32 => { + let level2: i32 = 10; + + let fn2 = (): i32 => { + let level3: i32 = 100; + + let fn3 = (): i32 => { + return level1 + level2 + level3; // captures from 3 levels up! + }; + + return fn3(); + }; + + return fn2(); + }; + + return fn1(); // 1 + 10 + 100 = 111 +} +assert(testDeeplyNestedClosures() == 111); + +// Test 12.6: Closure escapes outer function and is called later +// Tests that environment stays alive after outer function returns +function makeAdderPair(initial: i32): (() => i32)[] { + let value = initial; + let arr = new Array<() => i32>(2); + + arr[0] = (): i32 => { + value += 1; + return value; + }; + + arr[1] = (): i32 => value; + + return arr; +} + +function testClosureEscapesFunction(): i32 { + let pair = makeAdderPair(10); + let increment = pair[0]; + let getValue = pair[1]; + + assert(getValue() == 10); + increment(); // 11 + increment(); // 12 + assert(getValue() == 12); + + // Create another independent pair + let pair2 = makeAdderPair(100); + let increment2 = pair2[0]; + let getValue2 = pair2[1]; + + increment2(); // 101 + assert(getValue2() == 101); + assert(getValue() == 12); // Original pair unchanged + + return getValue() + getValue2(); // 12 + 101 = 113 +} +assert(testClosureEscapesFunction() == 113); + +// ============================================================================= +// Final assertion to confirm all tests passed +// ============================================================================= +assert(true); // If we reach here, all tests passed! diff --git a/tests/compiler/closure.debug.wat b/tests/compiler/closure.debug.wat new file mode 100644 index 0000000000..ffe32e942d --- /dev/null +++ b/tests/compiler/closure.debug.wat @@ -0,0 +1,6586 @@ +(module + (type $0 (func (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32 i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i64) (result i32))) + (type $12 (func (param i32 i32 i32) (result i32))) + (type $13 (func (param i32 i32 i32 i32) (result i32))) + (global $~lib/__closure_env (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/native/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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $closure/fn1 (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $closure/fn2 (mut i32) (i32.const 0)) + (global $closure/fn3 (mut i32) (i32.const 0)) + (global $closure/fn5 (mut i32) (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $closure/counter1 (mut i32) (i32.const 0)) + (global $closure/counter2 (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 3552)) + (global $~lib/memory/__data_end i32 (i32.const 3616)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36384)) + (global $~lib/memory/__heap_base i32 (i32.const 36384)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 172) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 396) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $9 (i32.const 796) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 1852) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $11 (i32.const 1948) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 2012) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $13 (i32.const 2076) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00c\00l\00o\00s\00u\00r\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2588) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 2620) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2652) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2684) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 2716) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 2748) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 2780) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 2812) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\r\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 2844) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") + (data $34 (i32.const 2876) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") + (data $35 (i32.const 2908) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 2940) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") + (data $37 (i32.const 2972) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $38 (i32.const 3020) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $39 (i32.const 3068) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $40 (i32.const 3196) "\1c\00\00\00\00\00\00\00\00\00\00\00\t\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00") + (data $41 (i32.const 3228) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00\00\00\00\00") + (data $42 (i32.const 3260) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $43 (i32.const 3292) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00") + (data $44 (i32.const 3324) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $45 (i32.const 3356) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00\00\00\00\00") + (data $46 (i32.const 3388) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00") + (data $47 (i32.const 3420) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00\00\00\00\00") + (data $48 (i32.const 3452) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00") + (data $49 (i32.const 3484) "\1c\00\00\00\00\00\00\00\00\00\00\00\r\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00\00\00\00\00") + (data $50 (i32.const 3516) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00") + (data $51 (i32.const 3552) "\0f\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\02\t\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 27 27 funcref) + (elem $0 (i32.const 1) $closure/testCaptureParam~anonymous|0 $closure/testCaptureVar~anonymous|0 $closure/testCaptureLet~anonymous|0 $closure/testClosureWrite~anonymous|0 $closure/testClosureWrite~anonymous|1 $closure/testMultipleCaptures~anonymous|0 $closure/testSharedEnvironment~anonymous|0 $closure/testSharedEnvironment~anonymous|1 $closure/testCaptureInWhile~anonymous|0 $closure/testCaptureInDoWhile~anonymous|0 $closure/testCaptureInFor~anonymous|0 $closure/testCaptureInSwitch~anonymous|0 $closure/testCaptureInSwitch~anonymous|1 $closure/testCaptureInSwitch~anonymous|2 $closure/testCaptureInArrayLiteral~anonymous|0 $closure/testCaptureInArrayLiteral~anonymous|1 $closure/testCaptureInArrayLiteral~anonymous|2 $closure/testNestedClosureCapture~anonymous|0~anonymous|0 $closure/testNestedClosureCapture~anonymous|0 $closure/testMultipleClosuresInArray~anonymous|0 $closure/testCaptureInTernary~anonymous|0 $closure/testCaptureFromCondition~anonymous|0 $closure/testDeepLoopCapture~anonymous|0 $closure/makeCounter~anonymous|0 $closure/testDefaultParamCapture~anonymous|0@varargs $closure/testDefaultParamWithOtherParam~anonymous|0@varargs) + (export "memory" (memory $0)) + (start $~start) + (func $closure/testCaptureParam~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 396 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 396 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 396 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 396 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 816 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 816 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1872 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1872 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2096 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2096 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 2096 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 2224 + i32.const 2288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 2096 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2096 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 2032 + i32.const 2368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 2032 + i32.const 2096 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $closure/testCaptureParam (param $x i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $x + i32.store offset=4 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 1 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure/testCaptureVar~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure/testCaptureVar (result i32) + (local $$env i32) + (local $x i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 100 + i32.store offset=4 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 2 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure/testCaptureLet~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure/testCaptureLet (result i32) + (local $$env i32) + (local $x i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 200 + i32.store offset=4 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 3 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure/testClosureWrite~anonymous|0 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + ) + (func $closure/testClosureWrite~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure/testMultipleCaptures~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $$closureEnv + i32.load offset=8 + i32.add + local.get $$closureEnv + i32.load offset=12 + i32.add + ) + (func $closure/testMultipleCaptures (param $a i32) (param $b i32) (result i32) + (local $$env i32) + (local $c i32) + (local $4 i32) + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $a + i32.store offset=4 + local.get $$env + local.get $b + i32.store offset=8 + local.get $$env + i32.const 10 + i32.store offset=12 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 6 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + return + ) + (func $closure/testSharedEnvironment~anonymous|0 (param $x i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $x + i32.store offset=4 + ) + (func $closure/testSharedEnvironment~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure/testCaptureInWhile~anonymous|0 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $$closureEnv + i32.load offset=8 + i32.add + i32.store offset=4 + ) + (func $closure/testCaptureInDoWhile~anonymous|0 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $$closureEnv + i32.load offset=8 + i32.mul + i32.store offset=4 + ) + (func $closure/testCaptureInFor~anonymous|0 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $$closureEnv + i32.load offset=8 + i32.add + i32.store offset=4 + ) + (func $closure/testCaptureInSwitch~anonymous|0 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.const 10 + i32.store offset=4 + ) + (func $closure/testCaptureInSwitch~anonymous|1 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.const 20 + i32.store offset=4 + ) + (func $closure/testCaptureInSwitch~anonymous|2 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.const 99 + i32.store offset=4 + ) + (func $closure/testCaptureInArrayLiteral~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure/testCaptureInArrayLiteral~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=8 + ) + (func $closure/testCaptureInArrayLiteral~anonymous|2 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $$closureEnv + i32.load offset=8 + i32.add + ) + (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) + (local $buffer i32) + local.get $size + local.get $id + call $~lib/rt/itcms/__new + local.set $buffer + local.get $data + if + local.get $buffer + local.get $data + local.get $size + memory.copy + end + local.get $buffer + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 2096 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array<%28%29=>i32>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array<%28%29=>i32>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array<%28%29=>i32>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure/testNestedClosureCapture~anonymous|0~anonymous|0 (param $y i32) (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $y + i32.add + ) + (func $closure/testNestedClosureCapture~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/__closure_env + local.set $$closureEnv + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.set $1 + local.get $1 + i32.const 18 + i32.store + local.get $1 + local.get $$closureEnv + i32.store offset=4 + local.get $1 + return + ) + (func $closure/testMultipleClosuresInArray~anonymous|0 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + ) + (func $~lib/array/Array<%28%29=>void>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<%28%29=>void>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<%28%29=>void>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $closure/testCaptureInTernary~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load8_u offset=4 + if (result i32) + local.get $$closureEnv + i32.load offset=8 + else + local.get $$closureEnv + i32.load offset=12 + end + ) + (func $closure/testCaptureFromCondition~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $$closureEnv + i32.load offset=8 + i32.gt_s + ) + (func $closure/testDeepLoopCapture~anonymous|0 + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $$closureEnv + i32.load offset=8 + i32.add + local.get $$closureEnv + i32.load offset=12 + i32.add + i32.store offset=4 + ) + (func $closure/makeCounter~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + local.get $$closureEnv + i32.load offset=4 + return + ) + (func $closure/makeCounter (result i32) + (local $$env i32) + (local $count i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.store offset=4 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 24 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure/testDefaultParamCapture~anonymous|0 (param $x i32) (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $x + ) + (func $closure/testDefaultParamWithOtherParam~anonymous|0 (param $a i32) (param $b i32) (result i32) + (local $$closureEnv i32) + global.get $~lib/__closure_env + local.set $$closureEnv + local.get $b + ) + (func $start:closure + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 36 + memory.fill + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 2144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 2176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 2320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 42 + call $closure/testCaptureParam + global.set $closure/fn1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure/fn1 + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testCaptureVar + global.set $closure/fn2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure/fn2 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testCaptureLet + global.set $closure/fn3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure/fn3 + local.tee $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + i32.const 200 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testClosureWrite + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + call $closure/testMultipleCaptures + global.set $closure/fn5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure/fn5 + local.tee $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + i32.const 13 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testSharedEnvironment + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 53 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testCaptureInWhile + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testCaptureInDoWhile + i32.const 24 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 83 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testCaptureInFor + i32.const 15 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $closure/testCaptureInSwitch + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 118 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $closure/testCaptureInSwitch + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 119 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + call $closure/testCaptureInSwitch + i32.const 99 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testCaptureInArrayLiteral + i32.const 30 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 133 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testNestedClosureCapture + i32.const 123 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 144 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testMultipleClosuresInArray + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 161 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testCaptureInTernary + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 174 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testCaptureFromCondition + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 186 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testDeepLoopCapture + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 200 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/makeCounter + global.set $closure/counter1 + call $closure/makeCounter + global.set $closure/counter2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure/counter1 + local.tee $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 212 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure/counter1 + local.tee $5 + i32.store offset=20 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 213 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure/counter2 + local.tee $6 + i32.store offset=24 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 214 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure/counter1 + local.tee $7 + i32.store offset=28 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 215 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure/counter2 + local.tee $8 + i32.store offset=32 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $0) + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 216 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testDefaultParamCapture + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 224 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testDefaultParamWithOtherParam + i32.const 30 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 232 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure/testDefaultParamCapture~anonymous|0@varargs (param $x i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/__closure_env + i32.load offset=4 + local.set $x + end + local.get $x + call $closure/testDefaultParamCapture~anonymous|0 + ) + (func $closure/testDefaultParamWithOtherParam~anonymous|0@varargs (param $a i32) (param $b i32) (result 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 $a + global.get $~lib/__closure_env + i32.load offset=4 + i32.mul + local.set $b + end + local.get $a + local.get $b + call $closure/testDefaultParamWithOtherParam~anonymous|0 + ) + (func $~start + call $start:closure + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 36416 + i32.const 36464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 128 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 160 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 160 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1968 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 3040 + i32.const 2992 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28%29=>i32>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 2224 + i32.const 2992 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array<%28%29=>i32>#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28%29=>i32>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28%29=>i32>#get:length_ + i32.ge_u + if + i32.const 2224 + i32.const 2992 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28%29=>i32>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 3088 + i32.const 2992 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure/testCaptureInArrayLiteral (result i32) + (local $$env i32) + (local $x i32) + (local $y i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $fns i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 5 + i32.store offset=4 + local.get $$env + i32.const 10 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 7 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 15 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $3 + i32.const 1 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 16 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $3 + i32.const 2 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $6 + local.get $6 + i32.const 17 + i32.store + local.get $6 + local.get $$env + i32.store offset=4 + local.get $6 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $3 + local.tee $fns + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fns + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fns + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + i32.const 1 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $9 + i32.store offset=16 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fns + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + i32.const 2 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $0) + i32.add + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/array/Array<%28%29=>void>#push (param $this i32) (param $value i32) (result i32) + (local $oldLen i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<%28%29=>void>#get:length_ + local.set $oldLen + local.get $oldLen + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 1 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<%28%29=>void>#get:dataStart + local.get $oldLen + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $len + call $~lib/array/Array<%28%29=>void>#set:length_ + local.get $len + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array<%28%29=>void>#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<%28%29=>void>#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<%28%29=>void>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28%29=>void>#get:length_ + i32.ge_u + if + i32.const 2224 + i32.const 2992 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28%29=>void>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 3088 + i32.const 2992 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure/testMultipleClosuresInArray (result i32) + (local $$env i32) + (local $shared i32) + (local $2 i32) + (local $incrementers i32) + (local $i i32) + (local $5 i32) + (local $i|6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 11 + i32.const 3344 + call $~lib/rt/__newArray + local.tee $incrementers + i32.store + i32.const 0 + local.set $i + loop $for-loop|2 + local.get $i + i32.const 3 + i32.lt_s + if + local.get $incrementers + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 20 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/array/Array<%28%29=>void>#push + drop + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|2 + end + end + i32.const 0 + local.set $i|6 + loop $for-loop|3 + local.get $i|6 + local.get $incrementers + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array<%28%29=>void>#get:length + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $incrementers + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $i|6 + call $~lib/array/Array<%28%29=>void>#__get + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $3) + local.get $i|6 + i32.const 1 + i32.add + local.set $i|6 + br $for-loop|3 + end + end + local.get $$env + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 192 + i32.const 320 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 384 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $closure/testClosureWrite (result i32) + (local $$env i32) + (local $counter i32) + (local $2 i32) + (local $increment i32) + (local $4 i32) + (local $getCounter i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 4 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $increment + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 5 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $getCounter + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $increment + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $increment + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $increment + local.tee $8 + i32.store offset=16 + local.get $8 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getCounter + local.tee $9 + i32.store offset=20 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $closure/testSharedEnvironment (result i32) + (local $$env i32) + (local $value i32) + (local $2 i32) + (local $setter i32) + (local $4 i32) + (local $getter i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 7 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $setter + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 8 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $getter + i32.store offset=4 + i32.const 50 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $setter + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getter + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $closure/testCaptureInWhile (result i32) + (local $$env i32) + (local $sum i32) + (local $i i32) + (local $3 i32) + (local $adder i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.store offset=4 + local.get $$env + i32.const 0 + i32.store offset=8 + loop $while-continue|1 + local.get $$env + i32.load offset=8 + i32.const 3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 9 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.tee $adder + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $adder + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $3) + local.get $$env + local.get $$env + i32.load offset=8 + i32.const 1 + i32.add + i32.store offset=8 + br $while-continue|1 + end + end + local.get $$env + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure/testCaptureInDoWhile (result i32) + (local $$env i32) + (local $product i32) + (local $i i32) + (local $3 i32) + (local $multiplier i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 1 + i32.store offset=4 + local.get $$env + i32.const 1 + i32.store offset=8 + loop $do-loop|1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 10 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.tee $multiplier + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $multiplier + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $3) + local.get $$env + local.get $$env + i32.load offset=8 + i32.const 1 + i32.add + i32.store offset=8 + local.get $$env + i32.load offset=8 + i32.const 4 + i32.le_s + br_if $do-loop|1 + end + local.get $$env + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure/testCaptureInFor (result i32) + (local $$env i32) + (local $result i32) + (local $i i32) + (local $3 i32) + (local $addI i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.store offset=4 + local.get $$env + i32.const 1 + i32.store offset=8 + loop $for-loop|1 + local.get $$env + i32.load offset=8 + i32.const 5 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 11 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.tee $addI + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $addI + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $3) + local.get $$env + local.get $$env + i32.load offset=8 + i32.const 1 + i32.add + i32.store offset=8 + br $for-loop|1 + end + end + local.get $$env + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure/testCaptureInSwitch (param $x i32) (result i32) + (local $$env i32) + (local $captured i32) + (local $3 i32) + (local $4 i32) + (local $setCaptured i32) + (local $6 i32) + (local $7 i32) + (local $setCaptured|8 i32) + (local $9 i32) + (local $10 i32) + (local $setCaptured|11 i32) + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.store offset=4 + block $break|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $x + local.set $3 + local.get $3 + i32.const 1 + i32.eq + br_if $case0|1 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|1 + br $case2|1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 12 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $setCaptured + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $setCaptured + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $3) + br $break|1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $7 + local.get $7 + i32.const 13 + i32.store + local.get $7 + local.get $$env + i32.store offset=4 + local.get $7 + local.tee $setCaptured|8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $setCaptured|8 + local.tee $9 + i32.store offset=12 + local.get $9 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $3) + br $break|1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $10 + local.get $10 + i32.const 14 + i32.store + local.get $10 + local.get $$env + i32.store offset=4 + local.get $10 + local.tee $setCaptured|11 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $setCaptured|11 + local.tee $12 + i32.store offset=20 + local.get $12 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $12 + i32.load + call_indirect (type $3) + br $break|1 + end + local.get $$env + i32.load offset=4 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $closure/testNestedClosureCapture (result i32) + (local $$env i32) + (local $outer i32) + (local $2 i32) + (local $makeAdder i32) + (local $4 i32) + (local $adder i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 100 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 19 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $makeAdder + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $makeAdder + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + local.tee $adder + i32.store offset=8 + i32.const 23 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $adder + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $1) + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $closure/testCaptureInTernary (result i32) + (local $$env i32) + (local $flag i32) + (local $a i32) + (local $b i32) + (local $4 i32) + (local $chooser i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 1 + i32.store8 offset=4 + local.get $$env + i32.const 10 + i32.store offset=8 + local.get $$env + i32.const 20 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 21 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $chooser + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $chooser + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 170 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $$env + i32.const 0 + i32.store8 offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $chooser + local.tee $7 + i32.store offset=8 + local.get $7 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $closure/testCaptureFromCondition (result i32) + (local $$env i32) + (local $threshold i32) + (local $value i32) + (local $3 i32) + (local $isAboveThreshold i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 50 + i32.store offset=8 + local.get $$env + i32.const 75 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 12 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 22 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.tee $isAboveThreshold + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $isAboveThreshold + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 182 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $$env + i32.const 25 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $isAboveThreshold + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + if (result i32) + i32.const 1 + else + i32.const 0 + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $closure/testDeepLoopCapture (result i32) + (local $$env i32) + (local $total i32) + (local $i i32) + (local $j i32) + (local $4 i32) + (local $addBoth i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.store offset=4 + local.get $$env + i32.const 0 + i32.store offset=8 + loop $for-loop|2 + local.get $$env + i32.load offset=8 + i32.const 2 + i32.lt_s + if + local.get $$env + i32.const 0 + i32.store offset=12 + loop $for-loop|3 + local.get $$env + i32.load offset=12 + i32.const 2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 23 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $addBoth + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $addBoth + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $3) + local.get $$env + local.get $$env + i32.load offset=12 + i32.const 1 + i32.add + i32.store offset=12 + br $for-loop|3 + end + end + local.get $$env + local.get $$env + i32.load offset=8 + i32.const 1 + i32.add + i32.store offset=8 + br $for-loop|2 + end + end + local.get $$env + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $closure/testDefaultParamCapture (result i32) + (local $$env i32) + (local $defaultVal i32) + (local $2 i32) + (local $fn i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 42 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 13 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 25 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $fn + i32.store + i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $1) + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure/testDefaultParamWithOtherParam (result i32) + (local $$env i32) + (local $multiplier i32) + (local $2 i32) + (local $fn i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 14 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 26 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $fn + i32.store + i32.const 10 + i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $fn + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $4) + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 3040 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 3088 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2032 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 816 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1872 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>#__visit + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>void>#__visit + ) + (func $~lib/array/Array<%28%29=>i32>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<%28%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<%28%29=>i32>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28%29=>%28i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>%28i32%29=>i32>#__visit + ) + (func $~lib/array/Array<%28%29=>void>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<%28%29=>void>#__visit + ) + (func $~lib/function/Function<%28%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i32?%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32?%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32?%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32?%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32?%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32?%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28i32%2Ci32?%29=>i32> + block $~lib/function/Function<%28i32?%29=>i32> + block $~lib/function/Function<%28%29=>bool> + block $~lib/array/Array<%28%29=>void> + block $~lib/function/Function<%28%29=>%28i32%29=>i32> + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/array/Array + block $~lib/array/Array<%28%29=>i32> + block $~lib/function/Function<%28i32%29=>void> + block $~lib/function/Function<%28%29=>void> + block $~lib/function/Function<%28%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>i32> $~lib/function/Function<%28%29=>void> $~lib/function/Function<%28i32%29=>void> $~lib/array/Array<%28%29=>i32> $~lib/array/Array $~lib/function/Function<%28i32%29=>i32> $~lib/function/Function<%28%29=>%28i32%29=>i32> $~lib/array/Array<%28%29=>void> $~lib/function/Function<%28%29=>bool> $~lib/function/Function<%28i32?%29=>i32> $~lib/function/Function<%28i32%2Ci32?%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<%28%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>%28i32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32?%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32?%29=>i32>~visit + return + end + unreachable + ) + (func $~lib/function/Function<%28%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28%29=>i32>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28%29=>i32>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28%29=>i32>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>%28i32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>%28i32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28%29=>void>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28%29=>void>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28%29=>void>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32?%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32?%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32?%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32?%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/closure.json b/tests/compiler/closure.json index 043415b403..454738fb3d 100644 --- a/tests/compiler/closure.json +++ b/tests/compiler/closure.json @@ -1,17 +1,5 @@ { "asc_flags": [ - ], - "stderr": [ - "AS100: Not implemented: Closures", - "$local1; // closure 1", - "AS100: Not implemented: Closures", - "$local0; // closure 2", - "AS100: Not implemented: Closures", - "$local0; // closure 3", - "AS100: Not implemented: Closures", - "$local0(123); // closure 4", - "AS100: Not implemented: Closures", - "$local0 = 10; // closure 5", - "EOF" + "--enable", "closures" ] } diff --git a/tests/compiler/closure.release.wat b/tests/compiler/closure.release.wat new file mode 100644 index 0000000000..d41d0330ac --- /dev/null +++ b/tests/compiler/closure.release.wat @@ -0,0 +1,4648 @@ +(module + (type $0 (func (result i32))) + (type $1 (func)) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func (param i32 i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i32) (result i32))) + (global $~lib/__closure_env (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $closure/fn1 (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $closure/fn2 (mut i32) (i32.const 0)) + (global $closure/fn3 (mut i32) (i32.const 0)) + (global $closure/fn5 (mut i32) (i32.const 0)) + (global $closure/counter1 (mut i32) (i32.const 0)) + (global $closure/counter2 (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37408)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02") + (data $4 (i32.const 1164) "\1c") + (data $4.1 (i32.const 1176) "\02\00\00\00\02\00\00\00:") + (data $5 (i32.const 1196) "|") + (data $5.1 (i32.const 1208) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $6 (i32.const 1324) "<") + (data $6.1 (i32.const 1336) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $7 (i32.const 1388) "\1c") + (data $7.1 (i32.const 1400) "\02\00\00\00\02\00\00\000") + (data $8 (i32.const 1420) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $9 (i32.const 1820) "\1c\04") + (data $9.1 (i32.const 1832) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $10 (i32.const 2876) "\\") + (data $10.1 (i32.const 2888) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $11 (i32.const 2972) "<") + (data $11.1 (i32.const 2984) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $12 (i32.const 3036) "<") + (data $12.1 (i32.const 3048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $13 (i32.const 3100) "<") + (data $13.1 (i32.const 3112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $16 (i32.const 3228) "<") + (data $16.1 (i32.const 3240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $17 (i32.const 3292) ",") + (data $17.1 (i32.const 3304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $19 (i32.const 3372) "<") + (data $19.1 (i32.const 3384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $20 (i32.const 3436) ",") + (data $20.1 (i32.const 3448) "\02\00\00\00\14\00\00\00c\00l\00o\00s\00u\00r\00e\00.\00t\00s") + (data $21 (i32.const 3484) "\1c") + (data $21.1 (i32.const 3496) "\04\00\00\00\08\00\00\00\02") + (data $22 (i32.const 3516) "\1c") + (data $22.1 (i32.const 3528) "\04\00\00\00\08\00\00\00\03") + (data $23 (i32.const 3548) "\1c") + (data $23.1 (i32.const 3560) "\05\00\00\00\08\00\00\00\04") + (data $24 (i32.const 3580) "\1c") + (data $24.1 (i32.const 3592) "\04\00\00\00\08\00\00\00\05") + (data $25 (i32.const 3612) "\1c") + (data $25.1 (i32.const 3624) "\04\00\00\00\08\00\00\00\06") + (data $26 (i32.const 3644) "\1c") + (data $26.1 (i32.const 3656) "\06\00\00\00\08\00\00\00\07") + (data $27 (i32.const 3676) "\1c") + (data $27.1 (i32.const 3688) "\04\00\00\00\08\00\00\00\08") + (data $28 (i32.const 3708) "\1c") + (data $28.1 (i32.const 3720) "\05\00\00\00\08\00\00\00\t") + (data $29 (i32.const 3740) "\1c") + (data $29.1 (i32.const 3752) "\05\00\00\00\08\00\00\00\n") + (data $30 (i32.const 3772) "\1c") + (data $30.1 (i32.const 3784) "\05\00\00\00\08\00\00\00\0b") + (data $31 (i32.const 3804) "\1c") + (data $31.1 (i32.const 3816) "\05\00\00\00\08\00\00\00\0c") + (data $32 (i32.const 3836) "\1c") + (data $32.1 (i32.const 3848) "\05\00\00\00\08\00\00\00\r") + (data $33 (i32.const 3868) "\1c") + (data $33.1 (i32.const 3880) "\05\00\00\00\08\00\00\00\0e") + (data $34 (i32.const 3900) "\1c") + (data $34.1 (i32.const 3912) "\04\00\00\00\08\00\00\00\0f") + (data $35 (i32.const 3932) "\1c") + (data $35.1 (i32.const 3944) "\04\00\00\00\08\00\00\00\10") + (data $36 (i32.const 3964) "\1c") + (data $36.1 (i32.const 3976) "\04\00\00\00\08\00\00\00\11") + (data $37 (i32.const 3996) ",") + (data $37.1 (i32.const 4008) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $38 (i32.const 4044) ",") + (data $38.1 (i32.const 4056) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $39 (i32.const 4092) "|") + (data $39.1 (i32.const 4104) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $40 (i32.const 4220) "\1c") + (data $40.1 (i32.const 4232) "\t\00\00\00\08\00\00\00\12") + (data $41 (i32.const 4252) "\1c") + (data $41.1 (i32.const 4264) "\n\00\00\00\08\00\00\00\13") + (data $42 (i32.const 4284) "\1c") + (data $42.1 (i32.const 4296) "\01") + (data $43 (i32.const 4316) "\1c") + (data $43.1 (i32.const 4328) "\05\00\00\00\08\00\00\00\14") + (data $44 (i32.const 4348) "\1c") + (data $44.1 (i32.const 4360) "\01") + (data $45 (i32.const 4380) "\1c") + (data $45.1 (i32.const 4392) "\04\00\00\00\08\00\00\00\15") + (data $46 (i32.const 4412) "\1c") + (data $46.1 (i32.const 4424) "\0c\00\00\00\08\00\00\00\16") + (data $47 (i32.const 4444) "\1c") + (data $47.1 (i32.const 4456) "\05\00\00\00\08\00\00\00\17") + (data $48 (i32.const 4476) "\1c") + (data $48.1 (i32.const 4488) "\04\00\00\00\08\00\00\00\18") + (data $49 (i32.const 4508) "\1c") + (data $49.1 (i32.const 4520) "\r\00\00\00\08\00\00\00\19") + (data $50 (i32.const 4540) "\1c") + (data $50.1 (i32.const 4552) "\0e\00\00\00\08\00\00\00\1a") + (data $51 (i32.const 4576) "\0f\00\00\00 \00\00\00 \00\00\00 ") + (data $51.1 (i32.const 4608) "\02A\00\00\02\t") + (data $51.2 (i32.const 4624) "\02A") + (table $0 27 27 funcref) + (elem $0 (i32.const 1) $closure/testCaptureParam~anonymous|0 $closure/testCaptureParam~anonymous|0 $closure/testCaptureParam~anonymous|0 $closure/testClosureWrite~anonymous|0 $closure/testCaptureParam~anonymous|0 $closure/testMultipleCaptures~anonymous|0 $closure/testSharedEnvironment~anonymous|0 $closure/testCaptureParam~anonymous|0 $closure/testCaptureInWhile~anonymous|0 $closure/testCaptureInDoWhile~anonymous|0 $closure/testCaptureInWhile~anonymous|0 $closure/testCaptureInSwitch~anonymous|0 $closure/testCaptureInSwitch~anonymous|1 $closure/testCaptureInSwitch~anonymous|2 $closure/testCaptureParam~anonymous|0 $closure/testCaptureInArrayLiteral~anonymous|1 $closure/testCaptureInArrayLiteral~anonymous|2 $closure/testNestedClosureCapture~anonymous|0~anonymous|0 $closure/testNestedClosureCapture~anonymous|0 $closure/testClosureWrite~anonymous|0 $closure/testCaptureInTernary~anonymous|0 $closure/testCaptureFromCondition~anonymous|0 $closure/testDeepLoopCapture~anonymous|0 $closure/makeCounter~anonymous|0 $closure/testDefaultParamCapture~anonymous|0@varargs $closure/testDefaultParamWithOtherParam~anonymous|0@varargs) + (export "memory" (memory $0)) + (start $~start) + (func $closure/testCaptureParam~anonymous|0 (result i32) + global.get $~lib/__closure_env + i32.load offset=4 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 4640 + i32.lt_s + if + i32.const 37440 + i32.const 37488 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1408 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1420 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1420 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1420 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1420 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 3248 + call $~lib/rt/itcms/__visit + i32.const 4064 + call $~lib/rt/itcms/__visit + i32.const 4112 + call $~lib/rt/itcms/__visit + i32.const 3056 + call $~lib/rt/itcms/__visit + i32.const 1840 + call $~lib/rt/itcms/__visit + i32.const 2896 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 3120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$212 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 37408 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$212 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 3120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 4576 + i32.load + i32.gt_u + if + i32.const 3248 + i32.const 3312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 4580 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 3392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 3392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 3392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 3392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 3392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 3392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 3392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 3392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 3392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 3392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 37408 + i32.const 0 + i32.store + i32.const 38976 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 37408 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 37408 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 37408 + i32.const 38980 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 37408 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 37408 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 3120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 37408 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 37408 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 3392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 3392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 3056 + i32.const 3392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $3 + end + else + local.get $3 + end + i32.const 4 + local.get $0 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 3392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 3392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) + (func $~lib/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 3056 + i32.const 3120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$71 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + 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$71 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $closure/testClosureWrite~anonymous|0 + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + ) + (func $closure/testMultipleCaptures~anonymous|0 (result i32) + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=12 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + i32.add + i32.add + ) + (func $closure/testSharedEnvironment~anonymous|0 (param $0 i32) + global.get $~lib/__closure_env + i32.const 50 + i32.store offset=4 + ) + (func $closure/testCaptureInWhile~anonymous|0 + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + i32.add + i32.store offset=4 + ) + (func $closure/testCaptureInDoWhile~anonymous|0 + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + i32.mul + i32.store offset=4 + ) + (func $closure/testCaptureInSwitch~anonymous|0 + global.get $~lib/__closure_env + i32.const 10 + i32.store offset=4 + ) + (func $closure/testCaptureInSwitch~anonymous|1 + global.get $~lib/__closure_env + i32.const 20 + i32.store offset=4 + ) + (func $closure/testCaptureInSwitch~anonymous|2 + global.get $~lib/__closure_env + i32.const 99 + i32.store offset=4 + ) + (func $closure/testCaptureInArrayLiteral~anonymous|1 (result i32) + global.get $~lib/__closure_env + i32.load offset=8 + ) + (func $closure/testCaptureInArrayLiteral~anonymous|2 (result i32) + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + i32.add + ) + (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 3120 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $closure/testNestedClosureCapture~anonymous|0~anonymous|0 (param $0 i32) (result i32) + global.get $~lib/__closure_env + i32.load offset=4 + local.get $0 + i32.add + ) + (func $closure/testNestedClosureCapture~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/__closure_env + local.set $1 + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 18 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure/testCaptureInTernary~anonymous|0 (result i32) + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + i32.load8_u offset=4 + if (result i32) + local.get $0 + i32.load offset=8 + else + local.get $0 + i32.load offset=12 + end + ) + (func $closure/testCaptureFromCondition~anonymous|0 (result i32) + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + i32.gt_s + ) + (func $closure/testDeepLoopCapture~anonymous|0 + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + local.get $0 + i32.load offset=12 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + i32.add + i32.add + i32.store offset=4 + ) + (func $closure/makeCounter~anonymous|0 (result i32) + (local $0 i32) + global.get $~lib/__closure_env + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + i32.load offset=4 + ) + (func $closure/makeCounter (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 4 + i32.add + local.tee $0 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=8 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 24 + i32.store + local.get $1 + local.get $0 + i32.store offset=4 + local.get $1 + ) + (func $start:closure + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 36 + memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 37408 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 3172 + i32.const 3168 + i32.store + i32.const 3176 + i32.const 3168 + i32.store + i32.const 3168 + global.set $~lib/rt/itcms/pinSpace + i32.const 3204 + i32.const 3200 + i32.store + i32.const 3208 + i32.const 3200 + i32.store + i32.const 3200 + global.set $~lib/rt/itcms/toSpace + i32.const 3348 + i32.const 3344 + i32.store + i32.const 3352 + i32.const 3344 + i32.store + i32.const 3344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $2 + i32.const 42 + i32.store offset=8 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 1 + i32.store + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + global.set $closure/fn1 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $closure/fn1 + local.tee $2 + i32.store + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $2 + i32.const 100 + i32.store offset=8 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 2 + i32.store + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + global.set $closure/fn2 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $closure/fn2 + local.tee $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $2 + i32.const 200 + i32.store offset=8 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 3 + i32.store + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + global.set $closure/fn3 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $closure/fn3 + local.tee $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + i32.const 200 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 4640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 4 + i32.store + local.get $4 + local.get $3 + i32.store offset=4 + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 5 + i32.store + local.get $5 + local.get $3 + i32.store offset=4 + local.get $5 + i32.store offset=4 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $1) + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $1) + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $1) + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $2 + i32.const 1 + i32.store offset=8 + local.get $2 + i32.const 2 + i32.store offset=12 + local.get $2 + i32.const 10 + i32.store offset=16 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 6 + i32.store + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + global.set $closure/fn5 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $closure/fn5 + local.tee $2 + i32.store offset=12 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + i32.const 13 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 7 + i32.store + local.get $4 + local.get $3 + i32.store offset=4 + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 8 + i32.store + local.get $5 + local.get $3 + i32.store offset=4 + local.get $5 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 50 + local.get $4 + i32.load + call_indirect (type $4) + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 53 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=12 + loop $while-continue|1 + local.get $2 + i32.load offset=12 + i32.const 3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 9 + i32.store + local.get $5 + local.get $3 + i32.store offset=4 + local.get $5 + i32.store + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $1) + local.get $2 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.add + i32.store offset=12 + br $while-continue|1 + end + end + local.get $2 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $2 + i32.const 1 + i32.store offset=8 + local.get $2 + i32.const 1 + i32.store offset=12 + loop $do-loop|1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 10 + i32.store + local.get $5 + local.get $3 + i32.store offset=4 + local.get $5 + i32.store + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $1) + local.get $2 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.add + i32.store offset=12 + local.get $2 + i32.load offset=12 + i32.const 4 + i32.le_s + br_if $do-loop|1 + end + local.get $2 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 24 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 83 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 1 + i32.store offset=12 + loop $for-loop|1 + local.get $2 + i32.load offset=12 + i32.const 5 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 11 + i32.store + local.get $5 + local.get $3 + i32.store offset=4 + local.get $5 + i32.store + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $1) + local.get $2 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.add + i32.store offset=12 + br $for-loop|1 + end + end + local.get $2 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 15 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $closure/testCaptureInSwitch + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 118 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $closure/testCaptureInSwitch + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 119 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + call $closure/testCaptureInSwitch + i32.const 99 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 4640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $2 + i32.const 5 + i32.store offset=8 + local.get $2 + i32.const 10 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 7 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 15 + i32.store + local.get $5 + local.get $3 + i32.store offset=4 + local.get $4 + i32.const 0 + local.get $5 + call $~lib/array/Array<%28%29=>i32>#__set + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 16 + i32.store + local.get $5 + local.get $3 + i32.store offset=4 + local.get $4 + i32.const 1 + local.get $5 + call $~lib/array/Array<%28%29=>i32>#__set + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 17 + i32.store + local.get $5 + local.get $3 + i32.store offset=4 + local.get $4 + i32.const 2 + local.get $5 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $4 + i32.store offset=4 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $2 + i32.store offset=12 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + local.set $2 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + local.get $2 + i32.add + local.set $2 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $3 + i32.store offset=20 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + local.get $2 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 133 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $3 + i32.const 0 + i32.store + local.get $2 + i32.const 100 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 19 + i32.store + local.get $4 + local.get $3 + i32.store offset=4 + local.get $4 + i32.store + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $~lib/__closure_env + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.load + call_indirect (type $0) + local.tee $2 + i32.store offset=8 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 23 + local.get $2 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 123 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 144 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $4 + i32.const 4 + i32.add + local.tee $5 + i32.const 0 + i32.store + local.get $4 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 11 + i32.const 4368 + call $~lib/rt/__newArray + local.tee $6 + i32.store + loop $for-loop|2 + local.get $1 + i32.const 3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 20 + i32.store + local.get $2 + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $6 + i32.load offset=12 + local.tee $3 + i32.const 1 + i32.add + local.tee $7 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $6 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + loop $for-loop|3 + global.get $~lib/memory/__stack_pointer + local.get $6 + 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 4640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.load offset=12 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.lt_s + if + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + local.get $0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $1) + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + local.get $4 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 161 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $0 + i32.const 1 + i32.store8 offset=8 + local.get $0 + i32.const 10 + i32.store offset=12 + local.get $0 + i32.const 20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 21 + i32.store + local.get $3 + local.get $1 + i32.store offset=4 + local.get $3 + i32.store + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 170 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.store8 offset=8 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 174 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $0 + i32.const 50 + i32.store offset=12 + local.get $0 + i32.const 75 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 22 + i32.store + local.get $3 + local.get $1 + i32.store offset=4 + local.get $3 + i32.store + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + i32.eqz + if + i32.const 0 + i32.const 3456 + i32.const 182 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 25 + i32.store offset=8 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + if + i32.const 0 + i32.const 3456 + i32.const 186 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + loop $for-loop|20 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.lt_s + if + local.get $0 + i32.const 0 + i32.store offset=16 + loop $for-loop|31 + local.get $0 + i32.load offset=16 + i32.const 2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 23 + i32.store + local.get $3 + local.get $1 + i32.store offset=4 + local.get $3 + i32.store + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $1) + local.get $0 + local.get $0 + i32.load offset=16 + i32.const 1 + i32.add + i32.store offset=16 + br $for-loop|31 + end + end + local.get $0 + local.get $0 + i32.load offset=12 + i32.const 1 + i32.add + i32.store offset=12 + br $for-loop|20 + end + end + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 200 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/makeCounter + global.set $closure/counter1 + call $closure/makeCounter + global.set $closure/counter2 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $closure/counter1 + local.tee $0 + i32.store offset=16 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 212 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $closure/counter1 + local.tee $0 + i32.store offset=20 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 213 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $closure/counter2 + local.tee $0 + i32.store offset=24 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 214 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $closure/counter1 + local.tee $0 + i32.store offset=28 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 215 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $closure/counter2 + local.tee $0 + i32.store offset=32 + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 216 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $0 + i32.const 42 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 25 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + i32.store + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 0 + local.get $2 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 224 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $0 + i32.const 3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 26 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $~lib/__closure_env + i32.const 10 + i32.const 0 + local.get $2 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 3456 + i32.const 232 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 37440 + i32.const 37488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure/testDefaultParamCapture~anonymous|0@varargs (param $0 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/__closure_env + i32.load offset=4 + local.set $0 + end + local.get $0 + ) + (func $closure/testDefaultParamWithOtherParam~anonymous|0@varargs (param $0 i32) (param $1 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/__closure_env + i32.load offset=4 + i32.const 10 + i32.mul + local.set $1 + end + local.get $1 + ) + (func $~start + call $start:closure + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$217 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1152 + local.set $0 + br $__inlined_func$~lib/string/String#concat$217 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 37440 + i32.const 37488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + if + i32.const 37440 + i32.const 37488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1088 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1120 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1184 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1184 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2992 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + if + i32.const 37440 + i32.const 37488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 4064 + i32.const 4016 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$202 + i32.const 1073741820 + local.get $2 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.tee $3 + local.get $0 + i32.load + local.tee $2 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $4 + local.get $3 + i32.store offset=16 + local.get $2 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew$202 + end + local.get $3 + local.get $4 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $2 + local.get $3 + local.get $4 + i32.load offset=16 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_u + select + memory.copy + end + local.get $1 + local.get $2 + i32.ne + if + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $3 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + if + i32.const 37440 + i32.const 37488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 3248 + i32.const 4016 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + if + i32.const 37440 + i32.const 37488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 3248 + i32.const 4016 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 4112 + i32.const 4016 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure/testCaptureInSwitch (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + if + i32.const 37440 + i32.const 37488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=8 + block $break|1 + block $case2|1 + block $case1|1 + local.get $0 + i32.const 1 + i32.ne + if + local.get $0 + i32.const 2 + i32.eq + br_if $case1|1 + br $case2|1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 12 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.store + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + br $break|1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 13 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.store offset=8 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + br $break|1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 14 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.store offset=16 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + end + local.get $0 + i32.load offset=4 + global.set $~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $1) + local.get $2 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + if + i32.const 37440 + i32.const 37488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.set $3 + local.get $2 + if + local.get $3 + local.get $2 + local.get $4 + memory.copy + end + local.get $3 + i32.store + i32.const 16 + local.get $1 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array<%28%29=>i32>~visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + if + i32.const 37440 + i32.const 37488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/array/Array<%28%29=>void> + block $~lib/array/Array + block $~lib/array/Array<%28%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $~lib/array/Array<%28%29=>i32> $~lib/array/Array $folding-inner0 $folding-inner0 $~lib/array/Array<%28%29=>void> $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array<%28%29=>i32>~visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 + call $~lib/array/Array<%28%29=>i32>~visit + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 37440 + i32.const 37488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/closure.ts b/tests/compiler/closure.ts index 26ba15304b..b181b2547f 100644 --- a/tests/compiler/closure.ts +++ b/tests/compiler/closure.ts @@ -1,39 +1,232 @@ -function testParam($local0: i32, $local1: i32): (value: i32) => i32 { - return function inner(value: i32) { - return $local1; // closure 1 - }; +// Test 1: Basic closure capturing parameter - read +function testCaptureParam(x: i32): () => i32 { + return (): i32 => x; } -testParam(1, 2); +let fn1 = testCaptureParam(42); +assert(fn1() == 42); -function testVar(): (value: i32) => i32 { - var $local0 = 0; - return function inner(value: i32) { - return $local0; // closure 2 - }; +// Test 2: Basic closure capturing var - read +function testCaptureVar(): () => i32 { + var x = 100; + return (): i32 => x; } -testVar(); +let fn2 = testCaptureVar(); +assert(fn2() == 100); -function testLet(): (value: i32) => i32 { - let $local0 = 0; - return function inner(value: i32): i32 { - return $local0; // closure 3 - }; +// Test 3: Basic closure capturing let - read +function testCaptureLet(): () => i32 { + let x = 200; + return (): i32 => x; +} +let fn3 = testCaptureLet(); +assert(fn3() == 200); + +// Test 4: Closure with write - mutation affects outer scope +function testClosureWrite(): i32 { + let counter = 0; + let increment = (): void => { counter = counter + 1; }; + let getCounter = (): i32 => counter; + increment(); + increment(); + increment(); + return getCounter(); +} +assert(testClosureWrite() == 3); + +// Test 5: Multiple captures +function testMultipleCaptures(a: i32, b: i32): () => i32 { + let c = 10; + return (): i32 => a + b + c; +} +let fn5 = testMultipleCaptures(1, 2); +assert(fn5() == 13); + +// Test 6: Two closures sharing same environment - verify reference semantics +function testSharedEnvironment(): i32 { + let value = 0; + let setter = (x: i32): void => { value = x; }; + let getter = (): i32 => value; + + setter(50); + return getter(); +} +assert(testSharedEnvironment() == 50); + +// ============================================================================ +// Tests for closure capture from various control flow constructs +// ============================================================================ + +// Test 7: Capture from while loop +function testCaptureInWhile(): i32 { + let sum = 0; + let i = 0; + while (i < 3) { + let adder = (): void => { sum = sum + i; }; + adder(); + i++; + } + return sum; // 0 + 1 + 2 = 3 +} +assert(testCaptureInWhile() == 3); + +// Test 8: Capture from do-while loop +function testCaptureInDoWhile(): i32 { + let product = 1; + let i = 1; + do { + let multiplier = (): void => { product = product * i; }; + multiplier(); + i++; + } while (i <= 4); + return product; // 1 * 1 * 2 * 3 * 4 = 24 +} +assert(testCaptureInDoWhile() == 24); + +// Test 9: Capture from for loop +function testCaptureInFor(): i32 { + let result = 0; + for (let i = 1; i <= 5; i++) { + let addI = (): void => { result = result + i; }; + addI(); + } + return result; // 1 + 2 + 3 + 4 + 5 = 15 +} +assert(testCaptureInFor() == 15); + +// Test 10: Capture from switch statement +function testCaptureInSwitch(x: i32): i32 { + let captured = 0; + switch (x) { + case 1: { + let setCaptured = (): void => { captured = 10; }; + setCaptured(); + break; + } + case 2: { + let setCaptured = (): void => { captured = 20; }; + setCaptured(); + break; + } + default: { + let setCaptured = (): void => { captured = 99; }; + setCaptured(); + break; + } + } + return captured; } -testLet(); +assert(testCaptureInSwitch(1) == 10); +assert(testCaptureInSwitch(2) == 20); +assert(testCaptureInSwitch(3) == 99); -function testFuncParam($local0: (x: i32) => void): () => void { - return () => { - $local0(123); // closure 4 +// Test 11: Capture from array literal +function testCaptureInArrayLiteral(): i32 { + let x = 5; + let y = 10; + let fns = [ + (): i32 => x, + (): i32 => y, + (): i32 => x + y + ]; + return fns[0]() + fns[1]() + fns[2](); // 5 + 10 + 15 = 30 +} +assert(testCaptureInArrayLiteral() == 30); + +// Test 12: Closure returning closure (nested capture) +function testNestedClosureCapture(): i32 { + let outer = 100; + let makeAdder = (): (y: i32) => i32 => { + return (y: i32): i32 => outer + y; }; + let adder = makeAdder(); + return adder(23); // 100 + 23 = 123 +} +assert(testNestedClosureCapture() == 123); + +// Test 13: Multiple closures in array capturing same variable +function testMultipleClosuresInArray(): i32 { + let shared = 0; + let incrementers: Array<() => void> = []; + + for (let i = 0; i < 3; i++) { + incrementers.push((): void => { shared = shared + 1; }); + } + + for (let i = 0; i < incrementers.length; i++) { + incrementers[i](); + } + + return shared; // Should be 3 +} +assert(testMultipleClosuresInArray() == 3); + +// Test 14: Closure with ternary expression using captured variable +function testCaptureInTernary(): i32 { + let flag = true; + let a = 10; + let b = 20; + let chooser = (): i32 => flag ? a : b; + + assert(chooser() == 10); + flag = false; + return chooser(); // Should be 20 now } -testFuncParam((x: i32) => {}); +assert(testCaptureInTernary() == 20); + +// Test 15: Closure capturing from condition expression +function testCaptureFromCondition(): i32 { + let threshold = 50; + let value = 75; + let isAboveThreshold = (): bool => value > threshold; -function testAssign(): (value: i32) => void { - let $local0 = 0; - return function inner(value: i32): void { - $local0 = 10; // closure 5 + assert(isAboveThreshold() == true); + value = 25; + return isAboveThreshold() ? 1 : 0; // Should be 0 +} +assert(testCaptureFromCondition() == 0); + +// Test 16: Deeply nested loops with closure +function testDeepLoopCapture(): i32 { + let total = 0; + for (let i = 0; i < 2; i++) { + for (let j = 0; j < 2; j++) { + let addBoth = (): void => { total = total + i + j; }; + addBoth(); + } + } + // i=0,j=0: +0, i=0,j=1: +1, i=1,j=0: +1, i=1,j=1: +2 = 4 + return total; +} +assert(testDeepLoopCapture() == 4); + +// Test 17: Closure capturing counter pattern +function makeCounter(): () => i32 { + let count = 0; + return (): i32 => { + count = count + 1; + return count; }; } -testAssign(); +let counter1 = makeCounter(); +let counter2 = makeCounter(); +assert(counter1() == 1); +assert(counter1() == 2); +assert(counter2() == 1); // Independent counter +assert(counter1() == 3); +assert(counter2() == 2); + +// Test 18: Closure with parameter default value capturing outer variable +function testDefaultParamCapture(): i32 { + let defaultVal = 42; + let fn = (x: i32 = defaultVal): i32 => x; + return fn(); +} +assert(testDefaultParamCapture() == 42); -ERROR("EOF"); +// Test 19: Closure with parameter default value using another param +function testDefaultParamWithOtherParam(): i32 { + let multiplier = 3; + let fn = (a: i32, b: i32 = a * multiplier): i32 => b; + return fn(10); // b defaults to 10 * 3 = 30 +} +assert(testDefaultParamWithOtherParam() == 30); diff --git a/tests/compiler/comma.debug.wat b/tests/compiler/comma.debug.wat index e329144ab1..5add668f02 100644 --- a/tests/compiler/comma.debug.wat +++ b/tests/compiler/comma.debug.wat @@ -1,18 +1,2692 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $comma/a (mut i32) (i32.const 0)) (global $comma/b (mut i32) (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 60)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) - (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2452)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35220)) + (global $~lib/memory/__heap_base i32 (i32.const 35220)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2432) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $start:comma (local $0 i32) (local $c i32) @@ -25,13 +2699,30 @@ global.set $comma/b global.get $comma/a drop + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $comma/a i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4 i32.const 1 call $~lib/builtins/abort @@ -43,7 +2734,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -61,7 +2752,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -73,7 +2764,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -95,7 +2786,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -107,7 +2798,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -127,7 +2818,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -139,7 +2830,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -169,7 +2860,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -185,4 +2876,421 @@ (func $~start call $start:comma ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35248 + i32.const 35296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/comma.release.wat b/tests/compiler/comma.release.wat index bf36eae36e..148154864c 100644 --- a/tests/compiler/comma.release.wat +++ b/tests/compiler/comma.release.wat @@ -1,14 +1,1751 @@ (module - (type $0 (func (param i32 i32 i32 i32))) - (type $1 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) (global $comma/a (mut i32) (i32.const 0)) (global $comma/b (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36244)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s") + (data $20 (i32.const 3456) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$120 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36244 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$120 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3456 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3460 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36256 + i32.const 0 + i32.store + i32.const 37824 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36256 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36256 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36256 + i32.const 37828 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36256 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36244 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36244 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36244 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3476 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~start (local $0 i32) (local $1 i32) @@ -19,12 +1756,44 @@ global.set $comma/a local.get $1 global.set $comma/b + memory.size + i32.const 16 + i32.shl + i32.const 36244 + 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 $comma/a i32.const 1 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4 i32.const 1 call $~lib/builtins/abort @@ -33,7 +1802,7 @@ global.get $comma/b if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -50,7 +1819,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -61,7 +1830,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -102,11 +1871,235 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$125 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$125 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/constructor.debug.wat b/tests/compiler/constructor.debug.wat index b607b591d6..e8cfdcc8c8 100644 --- a/tests/compiler/constructor.debug.wat +++ b/tests/compiler/constructor.debug.wat @@ -1,15 +1,21 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (type $9 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (param i32 i32 i32 i32))) + (type $12 (func (param i32 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 $~lib/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,9 +24,6 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) @@ -36,25 +39,465 @@ (global $constructor/ctorConditionallyReturns (mut i32) (i32.const 0)) (global $constructor/ctorConditionallyReturnsThis (mut i32) (i32.const 0)) (global $constructor/ctorFieldInitOrder (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 464)) - (global $~lib/memory/__data_end i32 (i32.const 532)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33300)) - (global $~lib/memory/__heap_base i32 (i32.const 33300)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2500)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35268)) + (global $~lib/memory/__heap_base i32 (i32.const 35268)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00c\00o\00n\00s\00t\00r\00u\00c\00t\00o\00r\00.\00t\00s\00") - (data $9 (i32.const 464) "\10\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00c\00o\00n\00s\00t\00r\00u\00c\00t\00o\00r\00.\00t\00s\00") + (data $20 (i32.const 2432) "\10\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -119,7 +562,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -189,7 +632,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -206,7 +649,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -236,8 +679,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -305,7 +748,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -457,7 +900,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -477,7 +920,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -540,7 +983,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -693,7 +1136,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -710,7 +1153,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -799,7 +1242,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -842,7 +1285,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -860,7 +1303,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -928,7 +1371,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1045,7 +1488,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1091,7 +1534,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1123,7 +1566,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1367,7 +1810,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1587,7 +2030,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1695,8 +2138,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1798,7 +2241,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1869,7 +2312,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2026,7 +2469,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2141,7 +2584,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2161,7 +2604,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2209,8 +2652,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2329,180 +2772,226 @@ local.get $c i32.store ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $constructor/emptyCtor - local.tee $1 + (func $~start + call $start:constructor + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 35296 + i32.const 35344 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $constructor/emptyCtorWithFieldInit - local.tee $1 + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - global.get $constructor/emptyCtorWithFieldNoInit - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/emptyCtorWithFieldAccess - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/none - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/justFieldInit - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/justFieldNoInit - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/ctorReturns - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/ctorConditionallyReturns - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/ctorConditionallyReturnsThis - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/ctorFieldInitOrder - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $constructor/CtorFieldInitOrder - block $constructor/CtorFieldInitWithoutConstructor - block $constructor/CtorConditionallyReturnsThis - block $constructor/CtorConditionallyReturns - block $constructor/CtorReturns - block $constructor/JustFieldNoInit - block $constructor/JustFieldInit - block $constructor/None - block $constructor/EmptyCtorWithFieldAccess - block $constructor/EmptyCtorWithFieldNoInit - block $constructor/EmptyCtorWithFieldInit - block $constructor/EmptyCtor - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $constructor/EmptyCtor $constructor/EmptyCtorWithFieldInit $constructor/EmptyCtorWithFieldNoInit $constructor/EmptyCtorWithFieldAccess $constructor/None $constructor/JustFieldInit $constructor/JustFieldNoInit $constructor/CtorReturns $constructor/CtorConditionallyReturns $constructor/CtorConditionallyReturnsThis $constructor/CtorFieldInitWithoutConstructor $constructor/CtorFieldInitOrder $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - unreachable - ) - (func $~start - call $start:constructor + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33328 - i32.const 33376 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $constructor/EmptyCtorWithFieldInit#constructor (param $this i32) (result i32) (local $1 i32) @@ -2880,7 +3369,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 101 i32.const 5 call $~lib/builtins/abort @@ -2898,7 +3387,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 102 i32.const 5 call $~lib/builtins/abort @@ -2910,7 +3399,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 103 i32.const 5 call $~lib/builtins/abort @@ -2928,7 +3417,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 104 i32.const 5 call $~lib/builtins/abort @@ -2946,7 +3435,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 105 i32.const 5 call $~lib/builtins/abort @@ -2978,13 +3467,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -3030,7 +3519,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 94 i32.const 1 call $~lib/builtins/abort @@ -3049,7 +3538,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 95 i32.const 1 call $~lib/builtins/abort @@ -3072,7 +3561,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 110 i32.const 1 call $~lib/builtins/abort @@ -3090,7 +3579,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 111 i32.const 1 call $~lib/builtins/abort @@ -3108,7 +3597,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 112 i32.const 1 call $~lib/builtins/abort @@ -3119,6 +3608,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $constructor/EmptyCtor#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -3253,4 +3889,169 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $constructor/emptyCtor + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldInit + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldNoInit + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldAccess + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/none + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/justFieldInit + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/justFieldNoInit + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorReturns + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorConditionallyReturns + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorConditionallyReturnsThis + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorFieldInitOrder + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $constructor/CtorFieldInitOrder + block $constructor/CtorFieldInitWithoutConstructor + block $constructor/CtorConditionallyReturnsThis + block $constructor/CtorConditionallyReturns + block $constructor/CtorReturns + block $constructor/JustFieldNoInit + block $constructor/JustFieldInit + block $constructor/None + block $constructor/EmptyCtorWithFieldAccess + block $constructor/EmptyCtorWithFieldNoInit + block $constructor/EmptyCtorWithFieldInit + block $constructor/EmptyCtor + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $constructor/EmptyCtor $constructor/EmptyCtorWithFieldInit $constructor/EmptyCtorWithFieldNoInit $constructor/EmptyCtorWithFieldAccess $constructor/None $constructor/JustFieldInit $constructor/JustFieldNoInit $constructor/CtorReturns $constructor/CtorConditionallyReturns $constructor/CtorConditionallyReturnsThis $constructor/CtorFieldInitWithoutConstructor $constructor/CtorFieldInitOrder $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/constructor.release.wat b/tests/compiler/constructor.release.wat index 339b5624fc..20d45d88d5 100644 --- a/tests/compiler/constructor.release.wat +++ b/tests/compiler/constructor.release.wat @@ -1,13 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) - (type $4 (func (param i32 i32) (result i32))) - (type $5 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (result i32))) (type $6 (func (param i32 i32 i64))) - (type $7 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -27,23 +26,242 @@ (global $constructor/justFieldNoInit (mut i32) (i32.const 0)) (global $constructor/ctorConditionallyReturnsThis (mut i32) (i32.const 0)) (global $constructor/ctorFieldInitOrder (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34324)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36292)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) ",") - (data $8.1 (i32.const 1448) "\02\00\00\00\1c\00\00\00c\00o\00n\00s\00t\00r\00u\00c\00t\00o\00r\00.\00t\00s") - (data $9 (i32.const 1488) "\10\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1c\00\00\00c\00o\00n\00s\00t\00r\00u\00c\00t\00o\00r\00.\00t\00s") + (data $20 (i32.const 3456) "\10\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3524 + i32.lt_s + if + i32.const 36320 + i32.const 36368 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -101,9 +319,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -124,7 +346,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -172,7 +394,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -181,7 +403,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$153 + block $__inlined_func$~lib/rt/itcms/Object#unlink$166 local.get $1 i32.load offset=4 i32.const -4 @@ -193,19 +415,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34324 + i32.const 36292 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$153 + br $__inlined_func$~lib/rt/itcms/Object#unlink$166 end local.get $1 i32.load offset=8 @@ -213,7 +435,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -242,12 +464,12 @@ i32.const 1 else local.get $0 - i32.const 1488 + i32.const 3456 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -256,7 +478,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1492 + i32.const 3460 i32.add i32.load i32.const 32 @@ -308,7 +530,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -322,7 +544,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -368,7 +590,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -451,7 +673,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -465,7 +687,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -526,7 +748,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -559,7 +781,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -574,7 +796,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -625,7 +847,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -697,7 +919,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -722,7 +944,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -749,7 +971,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -821,10 +1043,10 @@ if unreachable end - i32.const 34336 + i32.const 36304 i32.const 0 i32.store - i32.const 35904 + i32.const 37872 i32.const 0 i32.store loop $for-loop|0 @@ -835,7 +1057,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34336 + i32.const 36304 i32.add i32.const 0 i32.store offset=4 @@ -853,7 +1075,7 @@ i32.add i32.const 2 i32.shl - i32.const 34336 + i32.const 36304 i32.add i32.const 0 i32.store offset=96 @@ -871,14 +1093,14 @@ br $for-loop|0 end end - i32.const 34336 - i32.const 35908 + i32.const 36304 + i32.const 37876 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34336 + i32.const 36304 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -963,7 +1185,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34324 + i32.const 36292 i32.lt_u if local.get $0 @@ -1052,14 +1274,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34324 + i32.const 36292 i32.lt_u if local.get $0 @@ -1082,7 +1304,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34324 + i32.const 36292 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1111,7 +1333,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1195,7 +1417,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1247,7 +1469,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1279,8 +1501,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1056 - i32.const 1120 + i32.const 3024 + i32.const 3088 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1290,7 +1512,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1311,7 +1533,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1344,8 +1566,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1056 - i32.const 1392 + i32.const 3024 + i32.const 3360 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1447,7 +1669,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1462,7 +1684,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1481,7 +1703,7 @@ i32.and if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1586,67 +1808,6 @@ memory.fill local.get $1 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $constructor/CtorFieldInitOrder - block $constructor/CtorFieldInitWithoutConstructor - block $constructor/CtorConditionallyReturnsThis - block $constructor/CtorConditionallyReturns - block $constructor/CtorReturns - block $constructor/JustFieldNoInit - block $constructor/JustFieldInit - block $constructor/None - block $constructor/EmptyCtorWithFieldAccess - block $constructor/EmptyCtorWithFieldNoInit - block $constructor/EmptyCtorWithFieldInit - block $constructor/EmptyCtor - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $constructor/EmptyCtor $constructor/EmptyCtorWithFieldInit $constructor/EmptyCtorWithFieldNoInit $constructor/EmptyCtorWithFieldAccess $constructor/None $constructor/JustFieldInit $constructor/JustFieldNoInit $constructor/CtorReturns $constructor/CtorConditionallyReturns $constructor/CtorConditionallyReturnsThis $constructor/CtorFieldInitWithoutConstructor $constructor/CtorFieldInitOrder $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - unreachable - ) (func $~start (local $0 i32) (local $1 i32) @@ -1656,7 +1817,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1556 + i32.const 3524 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1665,41 +1826,41 @@ memory.size i32.const 16 i32.shl - i32.const 34324 + i32.const 36292 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 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 1556 + i32.const 3524 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1722,7 +1883,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1556 + i32.const 3524 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1751,7 +1912,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1556 + i32.const 3524 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1780,7 +1941,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1556 + i32.const 3524 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1815,7 +1976,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1556 + i32.const 3524 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1846,7 +2007,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1556 + i32.const 3524 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1883,7 +2044,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1556 + i32.const 3524 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1920,7 +2081,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1556 + i32.const 3524 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1940,7 +2101,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1556 + i32.const 3524 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1969,7 +2130,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 94 i32.const 1 call $~lib/builtins/abort @@ -1986,7 +2147,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 95 i32.const 1 call $~lib/builtins/abort @@ -1997,7 +2158,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1556 + i32.const 3524 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2051,7 +2212,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 102 i32.const 5 call $~lib/builtins/abort @@ -2066,7 +2227,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 104 i32.const 5 call $~lib/builtins/abort @@ -2081,7 +2242,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 105 i32.const 5 call $~lib/builtins/abort @@ -2103,7 +2264,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 110 i32.const 1 call $~lib/builtins/abort @@ -2119,7 +2280,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 111 i32.const 1 call $~lib/builtins/abort @@ -2135,7 +2296,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 112 i32.const 1 call $~lib/builtins/abort @@ -2147,13 +2308,213 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34352 - i32.const 34400 + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$171 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$171 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36320 + i32.const 36368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3524 + i32.lt_s + if + i32.const 36320 + i32.const 36368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $constructor/CtorFieldInitWithoutConstructor#constructor (result i32) (local $0 i32) global.get $~lib/memory/__stack_pointer @@ -2161,11 +2522,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1556 + i32.const 3524 i32.lt_s if - i32.const 34352 - i32.const 34400 + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2219,11 +2580,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1556 + i32.const 3524 i32.lt_s if - i32.const 34352 - i32.const 34400 + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2248,4 +2609,65 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $constructor/CtorFieldInitOrder + block $constructor/CtorFieldInitWithoutConstructor + block $constructor/CtorConditionallyReturnsThis + block $constructor/CtorConditionallyReturns + block $constructor/CtorReturns + block $constructor/JustFieldNoInit + block $constructor/JustFieldInit + block $constructor/None + block $constructor/EmptyCtorWithFieldAccess + block $constructor/EmptyCtorWithFieldNoInit + block $constructor/EmptyCtorWithFieldInit + block $constructor/EmptyCtor + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $constructor/EmptyCtor $constructor/EmptyCtorWithFieldInit $constructor/EmptyCtorWithFieldNoInit $constructor/EmptyCtorWithFieldAccess $constructor/None $constructor/JustFieldInit $constructor/JustFieldNoInit $constructor/CtorReturns $constructor/CtorConditionallyReturns $constructor/CtorConditionallyReturnsThis $constructor/CtorFieldInitWithoutConstructor $constructor/CtorFieldInitOrder $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/declare.debug.wat b/tests/compiler/declare.debug.wat index 5bc4580d52..7353427c1f 100644 --- a/tests/compiler/declare.debug.wat +++ b/tests/compiler/declare.debug.wat @@ -1,29 +1,2720 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (import "declare" "externalConstant" (global $declare/externalConstant i32)) (import "declare" "my.externalConstant" (global $declare/my.externalConstant i32)) (import "declare" "externalFunction" (func $declare/externalFunction)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "declare" "my.externalFunction" (func $declare/my.externalFunction)) - (global $~lib/memory/__data_end i32 (i32.const 60)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) - (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2452)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35220)) + (global $~lib/memory/__heap_base i32 (i32.const 35220)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2432) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $start:declare call $declare/externalFunction + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $declare/externalConstant i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -36,7 +2727,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -46,4 +2737,421 @@ (func $~start call $start:declare ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35248 + i32.const 35296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/declare.release.wat b/tests/compiler/declare.release.wat index 93d8dcee02..1b74d7f2a2 100644 --- a/tests/compiler/declare.release.wat +++ b/tests/compiler/declare.release.wat @@ -1,24 +1,1793 @@ (module (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) (import "declare" "externalConstant" (global $declare/externalConstant i32)) (import "declare" "my.externalConstant" (global $declare/my.externalConstant i32)) (import "declare" "externalFunction" (func $declare/externalFunction)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "declare" "my.externalFunction" (func $declare/my.externalFunction)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36244)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s") + (data $20 (i32.const 3456) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$120 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36244 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$120 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3456 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3460 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36256 + i32.const 0 + i32.store + i32.const 37824 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36256 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36256 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36256 + i32.const 37828 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36256 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36244 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36244 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36244 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3476 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~start call $declare/externalFunction + memory.size + i32.const 16 + i32.shl + i32.const 36244 + 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 $declare/externalConstant i32.const 1 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -30,11 +1799,235 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$125 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$125 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/do.debug.wat b/tests/compiler/do.debug.wat index 21952a0df2..4ac38ef758 100644 --- a/tests/compiler/do.debug.wat +++ b/tests/compiler/do.debug.wat @@ -3,13 +3,18 @@ (type $1 (func (param i32 i32))) (type $2 (func)) (type $3 (func (param i32))) - (type $4 (func (result i32))) - (type $5 (func (param i32 i32) (result i32))) - (type $6 (func (param i32 i32 i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $do/ran (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/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)) @@ -18,1253 +23,1741 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 448)) - (global $~lib/memory/__data_end i32 (i32.const 472)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33240)) - (global $~lib/memory/__heap_base i32 (i32.const 33240)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2416)) + (global $~lib/memory/__data_end i32 (i32.const 2440)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35208)) + (global $~lib/memory/__heap_base i32 (i32.const 35208)) (memory $0 1) - (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00d\00o\00.\00t\00s\00\00\00") - (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 448) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00d\00o\00.\00t\00s\00\00\00") + (data $20 (i32.const 2416) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) - (func $do/testSimple - (local $n i32) - (local $m i32) - i32.const 10 - local.set $n - i32.const 0 - local.set $m - loop $do-loop|0 - local.get $n - i32.const 1 - i32.sub - local.set $n - local.get $m - i32.const 1 - i32.add - local.set $m - local.get $n - br_if $do-loop|0 + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end end - local.get $n + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next i32.const 0 i32.eq - i32.eqz if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev i32.const 0 - i32.const 32 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return end - local.get $m - i32.const 10 - i32.eq + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev i32.eqz if i32.const 0 - i32.const 32 - i32.const 11 - i32.const 3 + i32.const 192 + i32.const 132 + i32.const 16 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $do/ran + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next ) - (func $do/testEmpty - (local $n i32) - (local $1 i32) - i32.const 10 - local.set $n - loop $do-loop|0 - local.get $n - local.tee $1 - i32.const 1 - i32.sub - local.set $n - local.get $1 - br_if $do-loop|0 - end - local.get $n - i32.const -1 - i32.eq - i32.eqz + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u if - i32.const 0 - i32.const 32 + i32.const 320 + i32.const 384 i32.const 21 - i32.const 3 + i32.const 28 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $do/ran + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return ) - (func $do/testNested - (local $n i32) - (local $m i32) - (local $o i32) - i32.const 10 - local.set $n - i32.const 0 - local.set $m - i32.const 0 - local.set $o - loop $do-loop|0 - local.get $n - i32.const 1 - i32.sub - local.set $n - local.get $m + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) i32.const 1 - i32.add - local.set $m - loop $do-loop|1 - local.get $n - i32.const 1 - i32.sub - local.set $n - local.get $o - i32.const 1 - i32.add - local.set $o - local.get $n - br_if $do-loop|1 - end - local.get $n + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and i32.const 0 - i32.eq + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 i32.eqz - if + if (result i32) i32.const 0 - i32.const 32 - i32.const 39 - i32.const 5 + i32.const 192 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable + else + local.get $1 end - local.get $o - i32.const 9 - i32.eq + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 40 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $n - br_if $do-loop|0 + else + i32.const 2 end - local.get $n + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and i32.eqz if i32.const 0 - i32.const 32 - i32.const 42 - i32.const 3 + i32.const 464 + i32.const 268 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $m + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size i32.const 1 - i32.eq + drop + local.get $size + i32.const 12 + i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 43 - i32.const 3 + i32.const 464 + i32.const 270 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $o - i32.const 9 - i32.eq - i32.eqz + local.get $size + i32.const 256 + i32.lt_u if i32.const 0 - i32.const 32 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl end i32.const 1 - global.set $do/ran - ) - (func $do/testAlwaysTrue - (local $i i32) - i32.const 0 - local.set $i - block $do-break|0 - loop $do-loop|0 - local.get $i - i32.const 1 - i32.add - local.tee $i - i32.const 10 - i32.eq - if - br $do-break|0 - end - i32.const 1 - br_if $do-loop|0 - end + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 end - local.get $i - i32.const 10 - i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 56 - i32.const 3 + i32.const 464 + i32.const 284 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $do/ran - ) - (func $do/testAlwaysTrueNeverBreaks (result i32) - (local $i i32) - i32.const 0 - local.set $i - loop $do-loop|0 - local.get $i - i32.const 1 + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 i32.add - local.tee $i - i32.const 10 - i32.eq + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz if - local.get $i - return + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end end - i32.const 1 - br_if $do-loop|0 end - unreachable ) - (func $do/testAlwaysFalse - (local $i i32) - i32.const 0 - local.set $i - loop $do-loop|0 - local.get $i - i32.const 1 - i32.add - local.set $i - i32.const 0 - br_if $do-loop|0 - end - local.get $i + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) i32.const 1 - i32.eq + drop + local.get $block i32.eqz if i32.const 0 - i32.const 32 - i32.const 77 - i32.const 3 + i32.const 464 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo i32.const 1 - global.set $do/ran - ) - (func $do/testAlwaysBreaks - (local $i i32) - i32.const 0 - local.set $i - block $do-break|0 - loop $do-loop|0 - local.get $i - i32.const 1 - i32.add - local.set $i - br $do-break|0 - end - unreachable - end - local.get $i - i32.const 1 - i32.eq + drop + local.get $blockInfo + i32.const 1 + i32.and i32.eqz if i32.const 0 - i32.const 32 - i32.const 90 - i32.const 3 + i32.const 464 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo i32.const 1 - global.set $do/ran - ) - (func $do/testAlwaysReturns - (local $i i32) - i32.const 0 - local.set $i - loop $do-loop|0 - local.get $i - i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 i32.add - local.set $i - i32.const 1 - global.set $do/ran - return + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo end - unreachable - ) - (func $do/testContinue - (local $i i32) - i32.const 0 - local.set $i - block $do-break|0 - loop $do-loop|0 - block $do-continue|0 - local.get $i - i32.const 1 - i32.add - local.tee $i - i32.const 10 - i32.eq - if - br $do-break|0 - end - br $do-continue|0 - end - local.get $i - br_if $do-loop|0 + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo end - local.get $i - i32.const 10 - i32.eq + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 116 - i32.const 3 + i32.const 464 + i32.const 233 + i32.const 14 call $~lib/builtins/abort unreachable end i32.const 1 - global.set $do/ran - ) - (func $do/testNestedContinue - (local $i i32) - (local $j i32) - i32.const 0 - local.set $i - i32.const 0 - local.set $j - block $do-break|0 - loop $do-loop|0 - block $do-continue|0 - local.get $i - i32.const 1 - i32.add - local.tee $i - i32.const 10 - i32.eq - if - br $do-break|0 - end - block $do-break|1 - loop $do-loop|1 - block $do-continue|1 - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 10 - i32.rem_s - i32.const 0 - i32.eq - if - br $do-break|1 - end - br $do-continue|1 - end - local.get $j - br_if $do-loop|1 - end - end - br $do-continue|0 - end - local.get $i - br_if $do-loop|0 - end - end - local.get $i - i32.const 10 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 134 - i32.const 3 + i32.const 464 + i32.const 234 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $j - i32.const 90 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - ) - (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) - local.get $this - local.get $nextWithColor - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) - local.get $this - local.get $prev - i32.store offset=8 - ) - (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) - local.get $space - local.get $space - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $space - local.get $space - call $~lib/rt/itcms/Object#set:prev - local.get $space - return - ) - (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.const -1 - i32.xor - i32.and - return - ) - (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.and - return - ) - (func $~lib/rt/itcms/visitRoots (param $cookie i32) - (local $pn i32) - (local $iter i32) - local.get $cookie - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.set $pn - local.get $pn - call $~lib/rt/itcms/Object#get:next - local.set $iter - loop $while-continue|0 - local.get $iter - local.get $pn - i32.ne - if - i32.const 1 - drop - local.get $iter - call $~lib/rt/itcms/Object#get:color - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $iter - i32.const 20 - i32.add - local.get $cookie - call $~lib/rt/__visit_members - local.get $iter - call $~lib/rt/itcms/Object#get:next - local.set $iter - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) - local.get $this - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $color - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) - local.get $this - i32.load offset=8 - ) - (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) - local.get $this - local.get $obj - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.and - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#unlink (param $this i32) - (local $next i32) - (local $prev i32) - local.get $this - call $~lib/rt/itcms/Object#get:next - local.set $next - local.get $next - i32.const 0 - i32.eq + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u if - i32.const 1 - drop - local.get $this - call $~lib/rt/itcms/Object#get:prev i32.const 0 - i32.eq - if (result i32) - local.get $this - global.get $~lib/memory/__heap_base - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl end - local.get $this - call $~lib/rt/itcms/Object#get:prev - local.set $prev i32.const 1 drop - local.get $prev + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end i32.eqz if i32.const 0 - i32.const 128 - i32.const 132 - i32.const 16 + i32.const 464 + i32.const 251 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $next - local.get $prev - call $~lib/rt/itcms/Object#set:prev - local.get $prev - local.get $next - call $~lib/rt/itcms/Object#set:next - ) - (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) - local.get $this - i32.load offset=12 - ) - (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/rt/__typeinfo (param $id i32) (result i32) - (local $ptr i32) - global.get $~lib/rt/__rtti_base - local.set $ptr - local.get $id - local.get $ptr - i32.load - i32.gt_u + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head if - i32.const 256 - i32.const 320 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev end - local.get $ptr + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 i32.const 4 + i32.shl + local.get $sl|22 i32.add - local.get $id - i32.const 4 - i32.mul + i32.const 2 + i32.shl i32.add - call $~lib/shared/typeinfo/Typeinfo#get:flags - return - ) - (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) - (local $rtId i32) - local.get $this - call $~lib/rt/itcms/Object#get:rtId - local.set $rtId - local.get $rtId + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $rtId - call $~lib/rt/__typeinfo - i32.const 32 - i32.and + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if i32.const 0 - i32.ne + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable end - return - ) - (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) - (local $prev i32) - local.get $list - call $~lib/rt/itcms/Object#get:prev - local.set $prev - local.get $this - local.get $list - local.get $withColor - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $this - local.get $prev - call $~lib/rt/itcms/Object#set:prev - local.get $prev - local.get $this - call $~lib/rt/itcms/Object#set:next - local.get $list - local.get $this - call $~lib/rt/itcms/Object#set:prev - ) - (func $~lib/rt/itcms/Object#makeGray (param $this i32) - (local $1 i32) - local.get $this - global.get $~lib/rt/itcms/iter - i32.eq + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail if - local.get $this - call $~lib/rt/itcms/Object#get:prev - local.tee $1 + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u i32.eqz - if (result i32) + if i32.const 0 - i32.const 128 - i32.const 148 - i32.const 30 + i32.const 464 + i32.const 389 + i32.const 16 call $~lib/builtins/abort unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo else - local.get $1 end - global.set $~lib/rt/itcms/iter - end - local.get $this - call $~lib/rt/itcms/Object#unlink - local.get $this - global.get $~lib/rt/itcms/toSpace - local.get $this - call $~lib/rt/itcms/Object#get:isPointerfree - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) - (local $obj i32) - local.get $ptr - i32.eqz - if - return - end - local.get $ptr - i32.const 20 - i32.sub - local.set $obj - i32.const 0 - drop - local.get $obj - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $obj - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/itcms/visitStack (param $cookie i32) - (local $ptr i32) - global.get $~lib/memory/__stack_pointer - local.set $ptr - loop $while-continue|0 - local.get $ptr - global.get $~lib/memory/__heap_base - i32.lt_u + i32.ge_u + i32.eqz if - local.get $ptr - i32.load - local.get $cookie - call $~lib/rt/itcms/__visit - local.get $ptr - i32.const 4 - i32.add - local.set $ptr - br $while-continue|0 + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end end - ) - (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size i32.const 4 - local.get $this - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 i32.add - return - ) - (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) - local.get $this - local.get $flMap - i32.store - ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) - local.get $this - local.get $mmInfo - i32.store - ) - (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) - local.get $this - local.get $prev - i32.store offset=4 - ) - (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) - local.get $this - local.get $next - i32.store offset=8 - ) - (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) - local.get $this - i32.load offset=8 - ) - (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) - local.get $this - i32.load + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return ) - (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) - (local $blockInfo i32) - (local $size i32) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) (local $sl i32) - (local $6 i32) - (local $7 i32) - (local $boundedSize i32) - (local $prev i32) - (local $next i32) (local $root|11 i32) (local $fl|12 i32) (local $sl|13 i32) - (local $root|14 i32) - (local $fl|15 i32) - (local $sl|16 i32) (local $head i32) - (local $root|18 i32) - (local $fl|19 i32) - (local $slMap i32) - (local $root|21 i32) - (local $fl|22 i32) - (local $slMap|23 i32) - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - local.set $blockInfo - i32.const 1 + (local $memStart i32) + i32.const 0 drop - local.get $blockInfo - i32.const 1 + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor i32.and - i32.eqz - if - i32.const 0 - i32.const 400 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $blockInfo - i32.const 3 + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 i32.const -1 i32.xor i32.and - local.set $size - i32.const 1 - drop - local.get $size - i32.const 12 - i32.ge_u - i32.eqz - if + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else i32.const 0 - i32.const 400 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable end - local.get $size - i32.const 256 - i32.lt_u if - i32.const 0 - local.set $fl - local.get $size - i32.const 4 - i32.shr_u - local.set $sl - else - local.get $size - local.tee $6 - i32.const 1073741820 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_u - select - local.set $boundedSize - i32.const 31 - local.get $boundedSize - i32.clz - i32.sub - local.set $fl - local.get $boundedSize - local.get $fl - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $sl + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 local.get $fl - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end end - i32.const 1 + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 drop - local.get $fl - i32.const 23 - i32.lt_u + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne if (result i32) - local.get $sl - i32.const 16 - i32.lt_u + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz else i32.const 0 end i32.eqz if i32.const 0 - i32.const 400 - i32.const 284 - i32.const 14 + i32.const 464 + i32.const 562 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $block - call $~lib/rt/tlsf/Block#get:prev - local.set $prev + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop local.get $block - call $~lib/rt/tlsf/Block#get:next - local.set $next - local.get $prev + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u if - local.get $prev - local.get $next - call $~lib/rt/tlsf/Block#set:next + return end - local.get $next + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - local.get $next - local.get $prev - call $~lib/rt/tlsf/Block#set:prev - end - local.get $block - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) - local.get $root - local.set $root|11 - local.get $fl - local.set $fl|12 - local.get $sl - local.set $sl|13 - local.get $root|11 - local.get $fl|12 - i32.const 4 - i32.shl - local.get $sl|13 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - br $~lib/rt/tlsf/GETHEAD|inlined.0 + call $~lib/rt/tlsf/initialize end - i32.eq + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u if - local.get $root - local.set $root|14 - local.get $fl - local.set $fl|15 - local.get $sl - local.set $sl|16 - local.get $next - local.set $head - local.get $root|14 - local.get $fl|15 + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj i32.const 4 - i32.shl - local.get $sl|16 - i32.add - i32.const 2 - i32.shl i32.add - local.get $head - i32.store offset=96 - local.get $next - i32.eqz - if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $root - local.set $root|18 - local.get $fl - local.set $fl|19 - local.get $root|18 - local.get $fl|19 + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter i32.const 2 - i32.shl - i32.add - i32.load offset=4 - br $~lib/rt/tlsf/GETSL|inlined.0 + global.set $~lib/rt/itcms/state end - local.set $slMap - local.get $root - local.set $root|21 - local.get $fl - local.set $fl|22 - local.get $slMap + global.get $~lib/rt/itcms/visitCount i32.const 1 - local.get $sl - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $slMap - local.set $slMap|23 - local.get $root|21 - local.get $fl|22 - i32.const 2 - i32.shl - i32.add - local.get $slMap|23 - i32.store offset=4 - local.get $slMap + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq i32.eqz if - local.get $root - local.get $root - call $~lib/rt/tlsf/Root#get:flMap - i32.const 1 - local.get $fl - i32.shl - i32.const -1 - i32.xor - i32.and - call $~lib/rt/tlsf/Root#set:flMap + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 end + i32.const 0 + return ) - (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) - (local $blockInfo i32) - (local $block|3 i32) - (local $right i32) - (local $rightInfo i32) - (local $block|6 i32) - (local $block|7 i32) - (local $left i32) - (local $leftInfo i32) - (local $size i32) - (local $fl i32) - (local $sl i32) - (local $13 i32) - (local $14 i32) - (local $boundedSize i32) - (local $root|16 i32) - (local $fl|17 i32) - (local $sl|18 i32) - (local $head i32) - (local $root|20 i32) - (local $fl|21 i32) - (local $sl|22 i32) - (local $head|23 i32) - (local $root|24 i32) - (local $fl|25 i32) - (local $root|26 i32) - (local $fl|27 i32) - (local $slMap i32) - i32.const 1 + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 drop - local.get $block - i32.eqz - if - i32.const 0 - i32.const 400 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - local.set $blockInfo - i32.const 1 + i32.const 0 drop - local.get $blockInfo - i32.const 1 - i32.and - i32.eqz - if + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state i32.const 0 - i32.const 400 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $block - local.set $block|3 - local.get $block|3 - i32.const 4 - i32.add - local.get $block|3 - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - br $~lib/rt/tlsf/GETRIGHT|inlined.0 - end - local.set $right - local.get $right - call $~lib/rt/common/BLOCK#get:mmInfo - local.set $rightInfo - local.get $rightInfo - i32.const 1 - i32.and - if - local.get $root - local.get $right - call $~lib/rt/tlsf/removeBlock - local.get $block - local.get $blockInfo - i32.const 4 - i32.add - local.get $rightInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $blockInfo - call $~lib/rt/common/BLOCK#set:mmInfo - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $block - local.set $block|6 - local.get $block|6 - i32.const 4 - i32.add - local.get $block|6 - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - br $~lib/rt/tlsf/GETRIGHT|inlined.1 - end - local.set $right - local.get $right - call $~lib/rt/common/BLOCK#get:mmInfo - local.set $rightInfo - end - local.get $blockInfo - i32.const 2 - i32.and - if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $block - local.set $block|7 - local.get $block|7 - i32.const 4 - i32.sub - i32.load - br $~lib/rt/tlsf/GETFREELEFT|inlined.0 - end - local.set $left - local.get $left - call $~lib/rt/common/BLOCK#get:mmInfo - local.set $leftInfo - i32.const 1 - drop - local.get $leftInfo - i32.const 1 - i32.and - i32.eqz + i32.eq if i32.const 0 - i32.const 400 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return end - local.get $root - local.get $left - call $~lib/rt/tlsf/removeBlock - local.get $left - local.set $block - local.get $block - local.get $leftInfo + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size i32.const 4 i32.add - local.get $blockInfo - i32.const 3 + i32.const 15 + i32.add + i32.const 15 i32.const -1 i32.xor i32.and - i32.add - local.tee $blockInfo - call $~lib/rt/common/BLOCK#set:mmInfo + i32.const 4 + i32.sub end - local.get $right - local.get $rightInfo - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $blockInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $size - i32.const 1 - drop + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) local.get $size - i32.const 12 - i32.ge_u - i32.eqz + i32.const 1073741820 + i32.gt_u if - i32.const 0 - i32.const 400 - i32.const 233 - i32.const 14 + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - i32.const 1 - drop - local.get $block - i32.const 4 - i32.add local.get $size - i32.add - local.get $right - i32.eq - i32.eqz - if - i32.const 0 - i32.const 400 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size end - local.get $right - i32.const 4 - i32.sub - local.get $block - i32.store + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) local.get $size i32.const 256 i32.lt_u @@ -1277,20 +1770,18 @@ local.set $sl else local.get $size - local.tee $13 - i32.const 1073741820 - local.tee $14 - local.get $13 - local.get $14 - i32.lt_u - select - local.set $boundedSize - i32.const 31 - local.get $boundedSize + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize i32.clz i32.sub local.set $fl - local.get $boundedSize + local.get $requestSize local.get $fl i32.const 4 i32.sub @@ -1307,317 +1798,185 @@ i32.sub local.set $fl end - i32.const 1 - drop - local.get $fl - i32.const 23 - i32.lt_u - if (result i32) - local.get $sl - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 400 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $root - local.set $root|16 - local.get $fl - local.set $fl|17 - local.get $sl - local.set $sl|18 - local.get $root|16 - local.get $fl|17 - i32.const 4 - i32.shl - local.get $sl|18 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - br $~lib/rt/tlsf/GETHEAD|inlined.1 - end - local.set $head - local.get $block - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $block - local.get $head - call $~lib/rt/tlsf/Block#set:next - local.get $head - if - local.get $head - local.get $block - call $~lib/rt/tlsf/Block#set:prev - end - local.get $root - local.set $root|20 - local.get $fl - local.set $fl|21 - local.get $sl - local.set $sl|22 - local.get $block - local.set $head|23 - local.get $root|20 - local.get $fl|21 - i32.const 4 - i32.shl - local.get $sl|22 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $head|23 - i32.store offset=96 - local.get $root - local.get $root - call $~lib/rt/tlsf/Root#get:flMap - i32.const 1 - local.get $fl - i32.shl - i32.or - call $~lib/rt/tlsf/Root#set:flMap - local.get $root - local.set $root|26 - local.get $fl - local.set $fl|27 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $root - local.set $root|24 - local.get $fl - local.set $fl|25 - local.get $root|24 - local.get $fl|25 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - br $~lib/rt/tlsf/GETSL|inlined.1 - end - i32.const 1 - local.get $sl - i32.shl - i32.or - local.set $slMap - local.get $root|26 - local.get $fl|27 - i32.const 2 - i32.shl - i32.add - local.get $slMap - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) - (local $end i32) - (local $root|4 i32) - (local $tail i32) - (local $tailInfo i32) - (local $size i32) - (local $leftSize i32) - (local $left i32) - (local $root|10 i32) - (local $tail|11 i32) - local.get $endU64 - i32.wrap_i64 - local.set $end - i32.const 1 - drop - local.get $start - i64.extend_i32_u - local.get $endU64 - i64.le_u + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end i32.eqz if i32.const 0 - i32.const 400 - i32.const 382 + i32.const 464 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $start - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.sub - local.set $start - local.get $end - i32.const 15 + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 i32.const -1 i32.xor + local.get $sl + i32.shl i32.and - local.set $end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $root - local.set $root|4 - local.get $root|4 - i32.load offset=1568 - br $~lib/rt/tlsf/GETTAIL|inlined.0 - end - local.set $tail + local.set $slMap i32.const 0 - local.set $tailInfo - local.get $tail + local.set $head + local.get $slMap + i32.eqz if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl i32.const 1 - drop - local.get $start - local.get $tail - i32.const 4 i32.add - i32.ge_u + i32.shl + i32.and + local.set $flMap + local.get $flMap i32.eqz if i32.const 0 - i32.const 400 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $start - i32.const 16 - i32.sub - local.get $tail - i32.eq - if - local.get $start - i32.const 16 - i32.sub - local.set $start - local.get $tail - call $~lib/rt/common/BLOCK#get:mmInfo - local.set $tailInfo + local.set $head else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head end else - i32.const 1 - drop - local.get $start - local.get $root - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 400 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 end + local.set $head end - local.get $end - local.get $start - i32.sub - local.set $size - local.get $size - i32.const 4 - i32.const 12 - i32.add - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $size - i32.const 2 - i32.const 4 - i32.mul - i32.sub - local.set $leftSize - local.get $start - local.set $left - local.get $left - local.get $leftSize - i32.const 1 - i32.or - local.get $tailInfo - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $left - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $left - i32.const 0 - call $~lib/rt/tlsf/Block#set:next - local.get $start - i32.const 4 - i32.add - local.get $leftSize - i32.add - local.set $tail - local.get $tail - i32.const 0 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $root - local.set $root|10 - local.get $tail - local.set $tail|11 - local.get $root|10 - local.get $tail|11 - i32.store offset=1568 - local.get $root - local.get $left - call $~lib/rt/tlsf/insertBlock - i32.const 1 - return - ) - (func $~lib/rt/tlsf/initialize - (local $rootOffset i32) - (local $pagesBefore i32) - (local $pagesNeeded i32) - (local $root i32) - (local $root|4 i32) - (local $tail i32) - (local $fl i32) - (local $root|7 i32) - (local $fl|8 i32) - (local $slMap i32) - (local $sl i32) - (local $root|11 i32) - (local $fl|12 i32) - (local $sl|13 i32) - (local $head i32) - (local $memStart i32) + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) i32.const 0 drop - global.get $~lib/memory/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $rootOffset + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end memory.size local.set $pagesBefore - local.get $rootOffset - i32.const 1572 + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl i32.add + local.set $size + local.get $size i32.const 65535 i32.add i32.const 65535 @@ -1627,1027 +1986,1111 @@ i32.const 16 i32.shr_u local.set $pagesNeeded - local.get $pagesNeeded local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 i32.gt_s - if (result i32) + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if local.get $pagesNeeded - local.get $pagesBefore - i32.sub memory.grow i32.const 0 i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $rootOffset - local.set $root - local.get $root - i32.const 0 - call $~lib/rt/tlsf/Root#set:flMap - local.get $root - local.set $root|4 - i32.const 0 - local.set $tail - local.get $root|4 - local.get $tail - i32.store offset=1568 - i32.const 0 - local.set $fl - loop $for-loop|0 - local.get $fl - i32.const 23 - i32.lt_u if - local.get $root - local.set $root|7 - local.get $fl - local.set $fl|8 - i32.const 0 - local.set $slMap - local.get $root|7 - local.get $fl|8 - i32.const 2 - i32.shl - i32.add - local.get $slMap - i32.store offset=4 - i32.const 0 - local.set $sl - loop $for-loop|1 - local.get $sl - i32.const 16 - i32.lt_u - if - local.get $root - local.set $root|11 - local.get $fl - local.set $fl|12 - local.get $sl - local.set $sl|13 - i32.const 0 - local.set $head - local.get $root|11 - local.get $fl|12 - i32.const 4 - i32.shl - local.get $sl|13 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $head - i32.store offset=96 - local.get $sl - i32.const 1 - i32.add - local.set $sl - br $for-loop|1 - end - end - local.get $fl - i32.const 1 - i32.add - local.set $fl - br $for-loop|0 + unreachable end end - local.get $rootOffset - i32.const 1572 - i32.add - local.set $memStart - i32.const 0 - drop - local.get $root - local.get $memStart memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory drop - local.get $root - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) (local $block i32) - local.get $ptr - i32.const 4 - i32.sub + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock local.set $block - local.get $ptr - i32.const 0 - i32.ne - if (result i32) - local.get $ptr - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block i32.const 1 - i32.and + drop + local.get $block i32.eqz - else - i32.const 0 + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u i32.eqz if i32.const 0 - i32.const 400 - i32.const 562 - i32.const 3 + i32.const 464 + i32.const 501 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $root local.get $block - return - ) - (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock i32.const 0 drop local.get $block - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $root - local.get $block - call $~lib/rt/tlsf/insertBlock + return ) - (func $~lib/rt/tlsf/__free (param $ptr i32) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr local.get $ptr - global.get $~lib/memory/__heap_base + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 i32.lt_u if - return + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + local.get $offset + i32.const 1 + i32.and if - call $~lib/rt/tlsf/initialize + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 end - global.get $~lib/rt/tlsf/ROOT - local.get $ptr - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/itcms/free (param $obj i32) - local.get $obj - global.get $~lib/memory/__heap_base - i32.lt_u if - local.get $obj - i32.const 0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $obj - i32.const 0 - call $~lib/rt/itcms/Object#set:prev - else - global.get $~lib/rt/itcms/total - local.get $obj - call $~lib/rt/itcms/Object#get:size + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 i32.sub - global.set $~lib/rt/itcms/total - i32.const 0 - drop - local.get $obj - i32.const 4 + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 i32.add - call $~lib/rt/tlsf/__free + return end - ) - (func $~lib/rt/itcms/step (result i32) - (local $obj i32) - (local $1 i32) - (local $black i32) - (local $from i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - local.set $1 - local.get $1 - i32.const 0 - i32.eq - br_if $case0|0 - local.get $1 - i32.const 1 - i32.eq - br_if $case1|0 - local.get $1 - i32.const 2 - i32.eq - br_if $case2|0 - br $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - i32.const 0 - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.mul - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $black - global.get $~lib/rt/itcms/iter - call $~lib/rt/itcms/Object#get:next - local.set $obj - loop $while-continue|1 - local.get $obj - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $obj - global.set $~lib/rt/itcms/iter - local.get $obj - call $~lib/rt/itcms/Object#get:color - local.get $black - i32.ne - if - local.get $obj - local.get $black - call $~lib/rt/itcms/Object#set:color - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $obj - i32.const 20 - i32.add - i32.const 0 - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.mul - return - end - local.get $obj - call $~lib/rt/itcms/Object#get:next - local.set $obj - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - i32.const 0 - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/iter - call $~lib/rt/itcms/Object#get:next - local.set $obj - local.get $obj - global.get $~lib/rt/itcms/toSpace - i32.eq - if - i32.const 0 - call $~lib/rt/itcms/visitStack - global.get $~lib/rt/itcms/iter - call $~lib/rt/itcms/Object#get:next - local.set $obj - loop $while-continue|2 - local.get $obj - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $obj - call $~lib/rt/itcms/Object#get:color - local.get $black - i32.ne - if - local.get $obj - local.get $black - call $~lib/rt/itcms/Object#set:color - local.get $obj - i32.const 20 - i32.add - i32.const 0 - call $~lib/rt/__visit_members - end - local.get $obj - call $~lib/rt/itcms/Object#get:next - local.set $obj - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $from - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $from - global.set $~lib/rt/itcms/toSpace - local.get $black - global.set $~lib/rt/itcms/white - local.get $from - call $~lib/rt/itcms/Object#get:next - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e i32.const 1 - i32.mul - return + i32.shl + local.set $e + br $while-continue|0 end - global.get $~lib/rt/itcms/iter - local.set $obj - local.get $obj - global.get $~lib/rt/itcms/toSpace - i32.ne + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u if - local.get $obj - call $~lib/rt/itcms/Object#get:next - global.set $~lib/rt/itcms/iter + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e i32.const 1 - drop - local.get $obj - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $obj - call $~lib/rt/itcms/free - i32.const 10 - return + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - call $~lib/rt/itcms/Object#set:nextWithColor - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - call $~lib/rt/itcms/Object#set:prev - i32.const 0 - global.set $~lib/rt/itcms/state - br $break|0 end - i32.const 0 + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 return ) - (func $~lib/rt/itcms/interrupt - (local $budget i32) - i32.const 0 - drop + (func $do/testSimple + (local $n i32) + (local $m i32) + i32.const 10 + local.set $n i32.const 0 - drop - i32.const 1024 - i32.const 200 - i32.mul - i32.const 100 - i32.div_u - local.set $budget + local.set $m loop $do-loop|0 - local.get $budget - call $~lib/rt/itcms/step + local.get $n + i32.const 1 i32.sub - local.set $budget - global.get $~lib/rt/itcms/state - i32.const 0 - i32.eq - if - i32.const 0 - drop - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i32.const 200 - i64.extend_i32_u - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - i32.const 0 - drop - return - end - local.get $budget - i32.const 0 - i32.gt_s + local.set $n + local.get $m + i32.const 1 + i32.add + local.set $m + local.get $n br_if $do-loop|0 end + local.get $n i32.const 0 - drop - global.get $~lib/rt/itcms/total - i32.const 1024 - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.mul - i32.add - global.set $~lib/rt/itcms/threshold - i32.const 0 - drop - ) - (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) - local.get $size - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $size - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable end - return - ) - (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) - local.get $size - i32.const 1073741820 - i32.gt_u + local.get $m + i32.const 10 + i32.eq + i32.eqz if - i32.const 64 - i32.const 400 - i32.const 461 - i32.const 29 + i32.const 0 + i32.const 2400 + i32.const 11 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $size - call $~lib/rt/tlsf/computeSize - return + i32.const 1 + global.set $do/ran ) - (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) - local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add + (func $do/testEmpty + (local $n i32) + (local $1 i32) + i32.const 10 + local.set $n + loop $do-loop|0 + local.get $n + local.tee $1 i32.const 1 i32.sub - else - local.get $size + local.set $n + local.get $1 + br_if $do-loop|0 end - return - ) - (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) - (local $fl i32) - (local $sl i32) - (local $requestSize i32) - (local $root|5 i32) - (local $fl|6 i32) - (local $slMap i32) - (local $head i32) - (local $flMap i32) - (local $root|10 i32) - (local $fl|11 i32) - (local $root|12 i32) - (local $fl|13 i32) - (local $sl|14 i32) - (local $root|15 i32) - (local $fl|16 i32) - (local $sl|17 i32) - local.get $size - i32.const 256 - i32.lt_u + local.get $n + i32.const -1 + i32.eq + i32.eqz if i32.const 0 - local.set $fl - local.get $size - i32.const 4 - i32.shr_u - local.set $sl - else - local.get $size - call $~lib/rt/tlsf/roundSize - local.set $requestSize - i32.const 4 - i32.const 8 - i32.mul + i32.const 2400 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + ) + (func $do/testNested + (local $n i32) + (local $m i32) + (local $o i32) + i32.const 10 + local.set $n + i32.const 0 + local.set $m + i32.const 0 + local.set $o + loop $do-loop|0 + local.get $n i32.const 1 i32.sub - local.get $requestSize - i32.clz - i32.sub - local.set $fl - local.get $requestSize - local.get $fl - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $sl - local.get $fl - i32.const 8 + local.set $n + local.get $m i32.const 1 - i32.sub - i32.sub - local.set $fl - end - i32.const 1 - drop - local.get $fl - i32.const 23 - i32.lt_u - if (result i32) - local.get $sl - i32.const 16 - i32.lt_u - else + i32.add + local.set $m + loop $do-loop|1 + local.get $n + i32.const 1 + i32.sub + local.set $n + local.get $o + i32.const 1 + i32.add + local.set $o + local.get $n + br_if $do-loop|1 + end + local.get $n i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $o + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 40 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $n + br_if $do-loop|0 end + local.get $n + i32.const 0 + i32.eq i32.eqz if i32.const 0 - i32.const 400 - i32.const 334 - i32.const 14 + i32.const 2400 + i32.const 42 + i32.const 3 call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $root - local.set $root|5 - local.get $fl - local.set $fl|6 - local.get $root|5 - local.get $fl|6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - br $~lib/rt/tlsf/GETSL|inlined.2 + local.get $m + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 0 - i32.const -1 - i32.xor - local.get $sl - i32.shl - i32.and - local.set $slMap - i32.const 0 - local.set $head - local.get $slMap + local.get $o + i32.const 9 + i32.eq i32.eqz if - local.get $root - call $~lib/rt/tlsf/Root#get:flMap i32.const 0 - i32.const -1 - i32.xor - local.get $fl - i32.const 1 - i32.add - i32.shl - i32.and - local.set $flMap - local.get $flMap - i32.eqz - if - i32.const 0 - local.set $head - else - local.get $flMap - i32.ctz - local.set $fl - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $root - local.set $root|10 - local.get $fl - local.set $fl|11 - local.get $root|10 - local.get $fl|11 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - br $~lib/rt/tlsf/GETSL|inlined.3 - end - local.set $slMap + i32.const 2400 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + ) + (func $do/testAlwaysTrue + (local $i i32) + i32.const 0 + local.set $i + block $do-break|0 + loop $do-loop|0 + local.get $i i32.const 1 - drop - local.get $slMap - i32.eqz + i32.add + local.tee $i + i32.const 10 + i32.eq if - i32.const 0 - i32.const 400 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $root - local.set $root|12 - local.get $fl - local.set $fl|13 - local.get $slMap - i32.ctz - local.set $sl|14 - local.get $root|12 - local.get $fl|13 - i32.const 4 - i32.shl - local.get $sl|14 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - br $~lib/rt/tlsf/GETHEAD|inlined.2 + br $do-break|0 end - local.set $head - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $root - local.set $root|15 - local.get $fl - local.set $fl|16 - local.get $slMap - i32.ctz - local.set $sl|17 - local.get $root|15 - local.get $fl|16 - i32.const 4 - i32.shl - local.get $sl|17 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - br $~lib/rt/tlsf/GETHEAD|inlined.3 + i32.const 1 + br_if $do-loop|0 end - local.set $head end - local.get $head - return - ) - (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) - (local $pagesBefore i32) - (local $root|3 i32) - (local $pagesNeeded i32) - (local $5 i32) - (local $6 i32) - (local $pagesWanted i32) - (local $pagesAfter i32) - i32.const 0 - drop - local.get $size - i32.const 256 - i32.ge_u + local.get $i + i32.const 10 + i32.eq + i32.eqz if - local.get $size - call $~lib/rt/tlsf/roundSize - local.set $size - end - memory.size - local.set $pagesBefore - local.get $size - i32.const 4 - local.get $pagesBefore - i32.const 16 - i32.shl - i32.const 4 - i32.sub - block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) - local.get $root - local.set $root|3 - local.get $root|3 - i32.load offset=1568 - br $~lib/rt/tlsf/GETTAIL|inlined.1 + i32.const 0 + i32.const 2400 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.ne - i32.shl - i32.add - local.set $size - local.get $size - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $pagesNeeded - local.get $pagesBefore - local.tee $5 - local.get $pagesNeeded - local.tee $6 - local.get $5 - local.get $6 - i32.gt_s - select - local.set $pagesWanted - local.get $pagesWanted - memory.grow + i32.const 1 + global.set $do/ran + ) + (func $do/testAlwaysTrueNeverBreaks (result i32) + (local $i i32) i32.const 0 - i32.lt_s - if - local.get $pagesNeeded - memory.grow - i32.const 0 - i32.lt_s + local.set $i + loop $do-loop|0 + local.get $i + i32.const 1 + i32.add + local.tee $i + i32.const 10 + i32.eq if - unreachable + local.get $i + return end + i32.const 1 + br_if $do-loop|0 end - memory.size - local.set $pagesAfter - local.get $root - local.get $pagesBefore - i32.const 16 - i32.shl - local.get $pagesAfter - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - drop + unreachable ) - (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) - (local $blockInfo i32) - (local $remaining i32) - (local $spare i32) - (local $block|6 i32) - (local $block|7 i32) - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - local.set $blockInfo + (func $do/testAlwaysFalse + (local $i i32) + i32.const 0 + local.set $i + loop $do-loop|0 + local.get $i + i32.const 1 + i32.add + local.set $i + i32.const 0 + br_if $do-loop|0 + end + local.get $i i32.const 1 - drop - local.get $size - i32.const 4 - i32.add - i32.const 15 - i32.and - i32.eqz + i32.eq i32.eqz if i32.const 0 - i32.const 400 - i32.const 361 - i32.const 14 + i32.const 2400 + i32.const 77 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $blockInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $size - i32.sub - local.set $remaining - local.get $remaining - i32.const 4 - i32.const 12 - i32.add - i32.ge_u + i32.const 1 + global.set $do/ran + ) + (func $do/testAlwaysBreaks + (local $i i32) + i32.const 0 + local.set $i + block $do-break|0 + loop $do-loop|0 + local.get $i + i32.const 1 + i32.add + local.set $i + br $do-break|0 + end + unreachable + end + local.get $i + i32.const 1 + i32.eq + i32.eqz if - local.get $block - local.get $size - local.get $blockInfo - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $block - i32.const 4 - i32.add - local.get $size - i32.add - local.set $spare - local.get $spare - local.get $remaining - i32.const 4 - i32.sub + i32.const 0 + i32.const 2400 + i32.const 90 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + ) + (func $do/testAlwaysReturns + (local $i i32) + i32.const 0 + local.set $i + loop $do-loop|0 + local.get $i i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $root - local.get $spare - call $~lib/rt/tlsf/insertBlock - else - local.get $block - local.get $blockInfo + i32.add + local.set $i i32.const 1 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $block - local.set $block|7 - local.get $block|7 - i32.const 4 - i32.add - local.get $block|7 - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - br $~lib/rt/tlsf/GETRIGHT|inlined.3 - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $block - local.set $block|6 - local.get $block|6 - i32.const 4 - i32.add - local.get $block|6 - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - br $~lib/rt/tlsf/GETRIGHT|inlined.2 - end - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 2 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo + global.set $do/ran + return end + unreachable ) - (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) - (local $payloadSize i32) - (local $block i32) - local.get $size - call $~lib/rt/tlsf/prepareSize - local.set $payloadSize - local.get $root - local.get $payloadSize - call $~lib/rt/tlsf/searchBlock - local.set $block - local.get $block + (func $do/testContinue + (local $i i32) + i32.const 0 + local.set $i + block $do-break|0 + loop $do-loop|0 + block $do-continue|0 + local.get $i + i32.const 1 + i32.add + local.tee $i + i32.const 10 + i32.eq + if + br $do-break|0 + end + br $do-continue|0 + end + local.get $i + br_if $do-loop|0 + end + end + local.get $i + i32.const 10 + i32.eq i32.eqz if - local.get $root - local.get $payloadSize - call $~lib/rt/tlsf/growMemory - local.get $root - local.get $payloadSize - call $~lib/rt/tlsf/searchBlock - local.set $block - i32.const 1 - drop - local.get $block - i32.eqz - if - i32.const 0 - i32.const 400 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 0 + i32.const 2400 + i32.const 116 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + ) + (func $do/testNestedContinue + (local $i i32) + (local $j i32) + i32.const 0 + local.set $i + i32.const 0 + local.set $j + block $do-break|0 + loop $do-loop|0 + block $do-continue|0 + local.get $i + i32.const 1 + i32.add + local.tee $i + i32.const 10 + i32.eq + if + br $do-break|0 + end + block $do-break|1 + loop $do-loop|1 + block $do-continue|1 + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 10 + i32.rem_s + i32.const 0 + i32.eq + if + br $do-break|1 + end + br $do-continue|1 + end + local.get $j + br_if $do-loop|1 + end + end + br $do-continue|0 + end + local.get $i + br_if $do-loop|0 end end - i32.const 1 - drop - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $payloadSize - i32.ge_u + local.get $i + i32.const 10 + i32.eq i32.eqz if i32.const 0 - i32.const 400 - i32.const 501 - i32.const 14 + i32.const 2400 + i32.const 134 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $root - local.get $block - call $~lib/rt/tlsf/removeBlock - local.get $root - local.get $block - local.get $payloadSize - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $block - return - ) - (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) - global.get $~lib/rt/tlsf/ROOT + local.get $j + i32.const 90 + i32.eq i32.eqz if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $size - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - return - ) - (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) - local.get $this - local.get $rtId - i32.store offset=12 - ) - (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) - local.get $this - local.get $rtSize - i32.store offset=16 - ) - (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) - (local $obj i32) - (local $ptr i32) - local.get $size - i32.const 1073741804 - i32.ge_u - if - i32.const 64 - i32.const 128 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 2400 + i32.const 135 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - call $~lib/rt/itcms/interrupt - end - i32.const 16 - local.get $size - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $obj - local.get $obj - local.get $id - call $~lib/rt/itcms/Object#set:rtId - local.get $obj - local.get $size - call $~lib/rt/itcms/Object#set:rtSize - local.get $obj - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $obj - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $obj - i32.const 20 - i32.add - local.set $ptr - local.get $ptr - i32.const 0 - local.get $size - memory.fill - local.get $ptr - return + i32.const 1 + global.set $do/ran ) (func $do/testRef (local $i i32) @@ -2693,7 +3136,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 150 i32.const 3 call $~lib/builtins/abort @@ -2704,7 +3147,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 151 i32.const 3 call $~lib/builtins/abort @@ -2763,7 +3206,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 170 i32.const 3 call $~lib/builtins/abort @@ -2774,7 +3217,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 171 i32.const 3 call $~lib/builtins/abort @@ -2836,12 +3279,29 @@ (func $start:do i32.const 0 global.set $do/ran + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $do/testSimple global.get $do/ran i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -2854,7 +3314,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -2867,7 +3327,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 49 i32.const 1 call $~lib/builtins/abort @@ -2880,7 +3340,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 61 i32.const 1 call $~lib/builtins/abort @@ -2892,7 +3352,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 70 i32.const 1 call $~lib/builtins/abort @@ -2905,7 +3365,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 82 i32.const 1 call $~lib/builtins/abort @@ -2918,7 +3378,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 95 i32.const 1 call $~lib/builtins/abort @@ -2931,7 +3391,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 108 i32.const 1 call $~lib/builtins/abort @@ -2944,7 +3404,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 121 i32.const 1 call $~lib/builtins/abort @@ -2952,110 +3412,44 @@ end i32.const 0 global.set $do/ran - call $do/testNestedContinue - global.get $do/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 140 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $do/ran - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 176 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 208 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 352 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - call $do/testRef - global.get $do/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 156 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $do/ran - call $do/testRefAutorelease - global.get $do/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 176 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/itcms/__collect - ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 256 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 64 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $do/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $do/Ref $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return + call $do/testNestedContinue + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 140 + i32.const 1 + call $~lib/builtins/abort + unreachable end - unreachable + i32.const 0 + global.set $do/ran + call $do/testRef + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 156 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testRefAutorelease + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 176 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $~lib/rt/itcms/__collect ) (func $~start call $start:do @@ -3065,14 +3459,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33264 - i32.const 33312 + i32.const 35232 + i32.const 35280 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $do/Ref#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -3111,6 +3710,153 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -3139,4 +3885,59 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $do/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $do/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/do.release.wat b/tests/compiler/do.release.wat index 780e6e3cf4..eb5da32455 100644 --- a/tests/compiler/do.release.wat +++ b/tests/compiler/do.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) - (type $4 (func (param i32) (result i32))) - (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,29 +17,54 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34264)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36232)) (memory $0 1) (data $0 (i32.const 1036) "\1c") - (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00d\00o\00.\00t\00s") - (data $1 (i32.const 1068) "<") - (data $1.1 (i32.const 1080) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $2 (i32.const 1132) "<") - (data $2.1 (i32.const 1144) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $5 (i32.const 1260) "<") - (data $5.1 (i32.const 1272) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $6 (i32.const 1324) ",") - (data $6.1 (i32.const 1336) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $8 (i32.const 1404) "<") - (data $8.1 (i32.const 1416) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $9 (i32.const 1472) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) "\1c") + (data $19.1 (i32.const 3416) "\02\00\00\00\n\00\00\00d\00o\00.\00t\00s") + (data $20 (i32.const 3440) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1280 + i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1088 + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -60,7 +85,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -108,7 +133,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -117,7 +142,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$125 + block $__inlined_func$~lib/rt/itcms/Object#unlink$138 local.get $1 i32.load offset=4 i32.const -4 @@ -129,19 +154,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34264 + i32.const 36232 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$125 + br $__inlined_func$~lib/rt/itcms/Object#unlink$138 end local.get $1 i32.load offset=8 @@ -149,7 +174,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -178,12 +203,12 @@ i32.const 1 else local.get $0 - i32.const 1472 + i32.const 3440 i32.load i32.gt_u if - i32.const 1280 i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -192,7 +217,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1476 + i32.const 3444 i32.add i32.load i32.const 32 @@ -244,7 +269,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -258,7 +283,7 @@ i32.lt_u if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -304,7 +329,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -387,7 +412,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -401,7 +426,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -462,7 +487,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -495,7 +520,7 @@ i32.lt_u if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -510,7 +535,7 @@ i32.ne if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -561,7 +586,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -633,7 +658,7 @@ i64.lt_u if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -658,7 +683,7 @@ i32.gt_u if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -685,7 +710,7 @@ i32.gt_u if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -757,10 +782,10 @@ if unreachable end - i32.const 34272 + i32.const 36240 i32.const 0 i32.store - i32.const 35840 + i32.const 37808 i32.const 0 i32.store loop $for-loop|0 @@ -771,7 +796,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34272 + i32.const 36240 i32.add i32.const 0 i32.store offset=4 @@ -789,7 +814,7 @@ i32.add i32.const 2 i32.shl - i32.const 34272 + i32.const 36240 i32.add i32.const 0 i32.store offset=96 @@ -807,14 +832,14 @@ br $for-loop|0 end end - i32.const 34272 - i32.const 35844 + i32.const 36240 + i32.const 37812 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34272 + i32.const 36240 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -899,7 +924,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34264 + i32.const 36232 i32.lt_u if local.get $0 @@ -988,14 +1013,14 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34264 + i32.const 36232 i32.lt_u if local.get $0 @@ -1018,7 +1043,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34264 + i32.const 36232 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1047,7 +1072,7 @@ end if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1077,18 +1102,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1096,32 +1188,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1134,23 +1230,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 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 @@ -1164,9 +1272,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1189,31 +1297,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if memory.size - local.tee $1 + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end i32.const 4 - local.get $2 + local.get $4 i32.load offset=1568 - local.get $1 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1229,8 +1392,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1238,119 +1401,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1358,47 +1538,277 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 + memory.fill + local.get $1 ) - (func $start:do - (local $0 i32) + (func $~lib/number/U32#toString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - i32.const 10 - local.set $0 - loop $do-loop|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - br_if $do-loop|0 - end + (local $3 i32) local.get $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 3464 + i32.lt_s if - i32.const 0 - i32.const 1056 - i32.const 10 - i32.const 3 + i32.const 36256 + i32.const 36304 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa32$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $start:do + (local $0 i32) + (local $1 i32) + (local $2 i32) + memory.size + i32.const 16 + i32.shl + i32.const 36232 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + i32.const 10 + local.set $0 + loop $do-loop|0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + br_if $do-loop|0 + end + local.get $0 + if + i32.const 0 + i32.const 3424 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 10 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -1420,7 +1830,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -1453,7 +1863,7 @@ local.get $0 if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -1464,7 +1874,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 40 i32.const 5 call $~lib/builtins/abort @@ -1476,7 +1886,7 @@ local.get $0 if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -1487,7 +1897,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -1498,7 +1908,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -1520,7 +1930,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -1542,7 +1952,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 70 i32.const 1 call $~lib/builtins/abort @@ -1567,7 +1977,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 116 i32.const 3 call $~lib/builtins/abort @@ -1606,7 +2016,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 134 i32.const 3 call $~lib/builtins/abort @@ -1617,51 +2027,19 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 135 i32.const 3 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - i32.const 34264 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/pinSpace - i32.const 1236 - i32.const 1232 - i32.store - i32.const 1240 - i32.const 1232 - i32.store - i32.const 1232 - global.set $~lib/rt/itcms/toSpace - i32.const 1380 - i32.const 1376 - i32.store - i32.const 1384 - i32.const 1376 - i32.store - i32.const 1376 - global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1496 + i32.const 3464 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1696,7 +2074,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 150 i32.const 3 call $~lib/builtins/abort @@ -1705,7 +2083,7 @@ local.get $0 if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 151 i32.const 3 call $~lib/builtins/abort @@ -1720,7 +2098,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1496 + i32.const 3464 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1754,7 +2132,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 170 i32.const 3 call $~lib/builtins/abort @@ -1763,7 +2141,7 @@ local.get $1 if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 171 i32.const 3 call $~lib/builtins/abort @@ -1808,43 +2186,215 @@ global.set $~lib/rt/itcms/threshold return end - i32.const 34288 - i32.const 34336 + i32.const 36256 + i32.const 36304 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $do/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $do/Ref $invalid - end - return - end - return - end - return + (func $~start + call $start:do + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3464 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3464 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$143 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$143 end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 return end + i32.const 36256 + i32.const 36304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) - (func $~start - call $start:do + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3464 + i32.lt_s + if + i32.const 36256 + i32.const 36304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $do/Ref#constructor (result i32) (local $0 i32) @@ -1855,13 +2405,14 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1496 + i32.const 3464 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 @@ -1875,7 +2426,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1496 + i32.const 3464 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1886,6 +2437,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1903,11 +2455,39 @@ local.get $0 return end - i32.const 34288 - i32.const 34336 + i32.const 36256 + i32.const 36304 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $do/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $do/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/duplicate-fields.debug.wat b/tests/compiler/duplicate-fields.debug.wat index d8ebed0ef6..b3f2d1ea40 100644 --- a/tests/compiler/duplicate-fields.debug.wat +++ b/tests/compiler/duplicate-fields.debug.wat @@ -5,10 +5,16 @@ (type $3 (func (param i32))) (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,29 +23,37 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $duplicate-fields/foo (mut i32) (i32.const 0)) (global $duplicate-fields/raz (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 480)) - (global $~lib/memory/__data_end i32 (i32.const 528)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33296)) - (global $~lib/memory/__heap_base i32 (i32.const 33296)) + (global $~lib/rt/__rtti_base i32 (i32.const 2448)) + (global $~lib/memory/__data_end i32 (i32.const 2496)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35264)) + (global $~lib/memory/__heap_base i32 (i32.const 35264)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00d\00u\00p\00l\00i\00c\00a\00t\00e\00-\00f\00i\00e\00l\00d\00s\00.\00t\00s\00\00\00\00\00\00\00") - (data $9 (i32.const 480) "\0b\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00d\00u\00p\00l\00i\00c\00a\00t\00e\00-\00f\00i\00e\00l\00d\00s\00.\00t\00s\00\00\00\00\00\00\00") + (data $20 (i32.const 2448) "\0b\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -49,6 +63,435 @@ local.get $bar i32.store ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -113,7 +556,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -183,7 +626,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -200,7 +643,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -230,8 +673,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -299,7 +742,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -451,7 +894,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -471,7 +914,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -534,7 +977,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -687,7 +1130,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -704,7 +1147,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -793,7 +1236,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -836,7 +1279,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -854,7 +1297,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -922,7 +1365,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1039,7 +1482,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1085,7 +1528,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1117,7 +1560,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1361,7 +1804,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1581,7 +2024,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1689,8 +2132,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1792,7 +2235,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1863,7 +2306,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2020,7 +2463,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2135,7 +2578,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2155,7 +2598,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2203,8 +2646,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2273,7 +2716,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2377,128 +2820,226 @@ local.get $pub i32.store offset=4 ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $duplicate-fields/foo - local.tee $1 + (func $~start + call $start:duplicate-fields + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 35296 + i32.const 35344 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $duplicate-fields/raz - local.tee $1 + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $duplicate-fields/A2~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $duplicate-fields/B2~visit (param $0 i32) (param $1 i32) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) (local $2 i32) - local.get $0 - local.get $1 - call $duplicate-fields/A2~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $duplicate-fields/A3 - block $duplicate-fields/B3 - block $duplicate-fields/B2 - block $duplicate-fields/Foo - block $duplicate-fields/A2 - block $duplicate-fields/B - block $duplicate-fields/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $duplicate-fields/A $duplicate-fields/B $duplicate-fields/A2 $duplicate-fields/Foo $duplicate-fields/B2 $duplicate-fields/B3 $duplicate-fields/A3 $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - local.get $0 - local.get $1 - call $duplicate-fields/A2~visit - return - end - return - end - local.get $0 - local.get $1 - call $duplicate-fields/B2~visit - return - end - return - end - return - end - unreachable - ) - (func $~start - call $start:duplicate-fields + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33328 - i32.const 33376 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $duplicate-fields/A#constructor (param $this i32) (param $bar i32) (result i32) (local $2 i32) @@ -2897,13 +3438,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -2922,7 +3463,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -2965,7 +3506,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 43 i32.const 1 call $~lib/builtins/abort @@ -2979,6 +3520,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -3007,4 +3695,117 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $duplicate-fields/foo + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $duplicate-fields/raz + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $duplicate-fields/A2~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $duplicate-fields/B2~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $duplicate-fields/A2~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $duplicate-fields/A3 + block $duplicate-fields/B3 + block $duplicate-fields/B2 + block $duplicate-fields/Foo + block $duplicate-fields/A2 + block $duplicate-fields/B + block $duplicate-fields/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $duplicate-fields/A $duplicate-fields/B $duplicate-fields/A2 $duplicate-fields/Foo $duplicate-fields/B2 $duplicate-fields/B3 $duplicate-fields/A3 $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + local.get $0 + local.get $1 + call $duplicate-fields/A2~visit + return + end + return + end + local.get $0 + local.get $1 + call $duplicate-fields/B2~visit + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/duplicate-fields.release.wat b/tests/compiler/duplicate-fields.release.wat index 5bd2b707b9..75ef92fe7f 100644 --- a/tests/compiler/duplicate-fields.release.wat +++ b/tests/compiler/duplicate-fields.release.wat @@ -3,10 +3,10 @@ (type $1 (func (param i32))) (type $2 (func (param i32 i32))) (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -19,23 +19,242 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $duplicate-fields/foo (mut i32) (i32.const 0)) (global $duplicate-fields/raz (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34320)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36288)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) "<") - (data $8.1 (i32.const 1448) "\02\00\00\00&\00\00\00d\00u\00p\00l\00i\00c\00a\00t\00e\00-\00f\00i\00e\00l\00d\00s\00.\00t\00s") - (data $9 (i32.const 1504) "\0b\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "<") + (data $19.1 (i32.const 3416) "\02\00\00\00&\00\00\00d\00u\00p\00l\00i\00c\00a\00t\00e\00-\00f\00i\00e\00l\00d\00s\00.\00t\00s") + (data $20 (i32.const 3472) "\0b\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3520 + i32.lt_s + if + i32.const 36320 + i32.const 36368 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -51,9 +270,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -74,7 +297,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -107,7 +330,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -116,7 +339,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$139 + block $__inlined_func$~lib/rt/itcms/Object#unlink$152 local.get $0 i32.load offset=4 i32.const -4 @@ -128,19 +351,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34320 + i32.const 36288 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$139 + br $__inlined_func$~lib/rt/itcms/Object#unlink$152 end local.get $0 i32.load offset=8 @@ -148,7 +371,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -177,12 +400,12 @@ i32.const 1 else local.get $1 - i32.const 1504 + i32.const 3472 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -191,7 +414,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1508 + i32.const 3476 i32.add i32.load i32.const 32 @@ -262,7 +485,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -276,7 +499,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -322,7 +545,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -405,7 +628,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -419,7 +642,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -480,7 +703,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -513,7 +736,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -528,7 +751,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -579,7 +802,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -651,7 +874,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -676,7 +899,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -703,7 +926,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -775,10 +998,10 @@ if unreachable end - i32.const 34320 + i32.const 36288 i32.const 0 i32.store - i32.const 35888 + i32.const 37856 i32.const 0 i32.store loop $for-loop|0 @@ -789,7 +1012,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34320 + i32.const 36288 i32.add i32.const 0 i32.store offset=4 @@ -807,7 +1030,7 @@ i32.add i32.const 2 i32.shl - i32.const 34320 + i32.const 36288 i32.add i32.const 0 i32.store offset=96 @@ -825,14 +1048,14 @@ br $for-loop|0 end end - i32.const 34320 - i32.const 35892 + i32.const 36288 + i32.const 37860 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34320 + i32.const 36288 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -917,7 +1140,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34320 + i32.const 36288 i32.lt_u if local.get $0 @@ -1006,14 +1229,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34320 + i32.const 36288 i32.lt_u if local.get $0 @@ -1036,7 +1259,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34320 + i32.const 36288 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1065,7 +1288,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1149,7 +1372,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1201,7 +1424,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1233,8 +1456,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1056 - i32.const 1120 + i32.const 3024 + i32.const 3088 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1244,7 +1467,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1265,7 +1488,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1298,8 +1521,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1056 - i32.const 1392 + i32.const 3024 + i32.const 3360 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1401,7 +1624,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1416,7 +1639,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1435,7 +1658,7 @@ i32.and if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1550,7 +1773,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1595,51 +1818,6 @@ end end ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $duplicate-fields/A3 - block $duplicate-fields/B3 - block $duplicate-fields/B2 - block $duplicate-fields/Foo - block $duplicate-fields/B - block $duplicate-fields/A - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $duplicate-fields/A $duplicate-fields/B $folding-inner0 $duplicate-fields/Foo $duplicate-fields/B2 $duplicate-fields/B3 $duplicate-fields/A3 $invalid - end - return - end - return - end - return - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - br $folding-inner0 - end - return - end - return - end - unreachable - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) (func $~start (local $0 i32) (local $1 i32) @@ -1650,7 +1828,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1552 + i32.const 3520 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1659,41 +1837,41 @@ memory.size i32.const 16 i32.shl - i32.const 34320 + i32.const 36288 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 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 1552 + i32.const 3520 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1720,7 +1898,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1552 + i32.const 3520 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1776,7 +1954,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -1787,7 +1965,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1552 + i32.const 3520 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1823,7 +2001,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1552 + i32.const 3520 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1856,7 +2034,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1552 + i32.const 3520 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1926,7 +2104,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 43 i32.const 1 call $~lib/builtins/abort @@ -1937,7 +2115,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1552 + i32.const 3520 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1958,7 +2136,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1552 + i32.const 3520 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1983,7 +2161,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1552 + i32.const 3520 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2045,11 +2223,256 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34352 - i32.const 34400 + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3520 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3520 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$160 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$160 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36320 + i32.const 36368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3520 + i32.lt_s + if + i32.const 36320 + i32.const 36368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $duplicate-fields/A3 + block $duplicate-fields/B3 + block $duplicate-fields/B2 + block $duplicate-fields/Foo + block $duplicate-fields/B + block $duplicate-fields/A + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $duplicate-fields/A $duplicate-fields/B $folding-inner0 $duplicate-fields/Foo $duplicate-fields/B2 $duplicate-fields/B3 $duplicate-fields/A3 $invalid + end + return + end + return + end + return + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + br $folding-inner0 + end + return + end + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) ) diff --git a/tests/compiler/empty-exportruntime.debug.wat b/tests/compiler/empty-exportruntime.debug.wat index 7dfec531fb..8afc94d207 100644 --- a/tests/compiler/empty-exportruntime.debug.wat +++ b/tests/compiler/empty-exportruntime.debug.wat @@ -2,13 +2,19 @@ (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,28 +23,36 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 544)) - (global $~lib/memory/__data_end i32 (i32.const 564)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33332)) - (global $~lib/memory/__heap_base i32 (i32.const 33332)) + (global $~lib/rt/__rtti_base i32 (i32.const 2512)) + (global $~lib/memory/__data_end i32 (i32.const 2532)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35300)) + (global $~lib/memory/__heap_base i32 (i32.const 35300)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") - (data $9 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") - (data $10 (i32.const 544) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") + (data $20 (i32.const 2444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") + (data $21 (i32.const 2512) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "__new" (func $~lib/rt/itcms/__new)) @@ -48,6 +62,435 @@ (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -112,7 +555,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -182,7 +625,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -199,7 +642,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -229,8 +672,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -298,7 +741,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -450,7 +893,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -470,7 +913,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -533,7 +976,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -686,7 +1129,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -703,7 +1146,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -792,7 +1235,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -835,7 +1278,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -853,7 +1296,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -921,7 +1364,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1038,7 +1481,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1084,7 +1527,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1116,7 +1559,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1360,7 +1803,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1580,7 +2023,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1688,8 +2131,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1791,7 +2234,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1862,7 +2305,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2019,7 +2462,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2134,7 +2577,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2154,7 +2597,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2202,8 +2645,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2261,8 +2704,8 @@ i32.const 3 i32.eq if - i32.const 432 - i32.const 96 + i32.const 2400 + i32.const 2064 i32.const 338 i32.const 7 call $~lib/builtins/abort @@ -2294,8 +2737,8 @@ i32.const 3 i32.ne if - i32.const 496 - i32.const 96 + i32.const 2464 + i32.const 2064 i32.const 352 i32.const 5 call $~lib/builtins/abort @@ -2362,18 +2805,408 @@ i32.const 0 drop ) + (func $~start + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 2112 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 2144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 2288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35328 + i32.const 35376 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) - i32.const 224 + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2400 local.get $0 call $~lib/rt/itcms/__visit - i32.const 32 + i32.const 2464 local.get $0 call $~lib/rt/itcms/__visit - i32.const 432 + i32.const 784 local.get $0 call $~lib/rt/itcms/__visit - i32.const 496 + i32.const 1840 local.get $0 call $~lib/rt/itcms/__visit ) @@ -2414,23 +3247,4 @@ end unreachable ) - (func $~start - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 144 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 176 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 320 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - ) ) diff --git a/tests/compiler/empty-exportruntime.release.wat b/tests/compiler/empty-exportruntime.release.wat index 5d32a49a36..fb78598c5f 100644 --- a/tests/compiler/empty-exportruntime.release.wat +++ b/tests/compiler/empty-exportruntime.release.wat @@ -1,13 +1,12 @@ (module (type $0 (func (param i32))) (type $1 (func)) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (type $7 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,23 +17,45 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1568)) + (global $~lib/rt/__rtti_base i32 (i32.const 3536)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36324)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) "<") - (data $8.1 (i32.const 1448) "\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") - (data $9 (i32.const 1500) "<") - (data $9.1 (i32.const 1512) "\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") - (data $10 (i32.const 1568) "\04\00\00\00 \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "<") + (data $19.1 (i32.const 3416) "\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") + (data $20 (i32.const 3468) "<") + (data $20.1 (i32.const 3480) "\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") + (data $21 (i32.const 3536) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "__new" (func $~lib/rt/itcms/__new)) (export "__pin" (func $~lib/rt/itcms/__pin)) (export "__unpin" (func $~lib/rt/itcms/__unpin)) @@ -42,16 +63,218 @@ (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3556 + i32.lt_s + if + i32.const 36352 + i32.const 36400 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 call $~lib/rt/itcms/__visit - i32.const 1456 + i32.const 3424 call $~lib/rt/itcms/__visit - i32.const 1520 + i32.const 3488 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -72,7 +295,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -104,13 +327,13 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34356 + i32.const 36324 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -124,7 +347,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -156,7 +379,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -178,12 +401,12 @@ i32.const 1 else local.get $2 - i32.const 1568 + i32.const 3536 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -192,7 +415,7 @@ local.get $2 i32.const 2 i32.shl - i32.const 1572 + i32.const 3540 i32.add i32.load i32.const 32 @@ -263,7 +486,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -277,7 +500,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -323,7 +546,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -406,7 +629,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -420,7 +643,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -481,7 +704,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -514,7 +737,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -529,7 +752,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -580,7 +803,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -652,7 +875,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -677,7 +900,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -704,7 +927,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -776,10 +999,10 @@ if unreachable end - i32.const 34368 + i32.const 36336 i32.const 0 i32.store - i32.const 35936 + i32.const 37904 i32.const 0 i32.store loop $for-loop|0 @@ -790,7 +1013,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34368 + i32.const 36336 i32.add i32.const 0 i32.store offset=4 @@ -808,7 +1031,7 @@ i32.add i32.const 2 i32.shl - i32.const 34368 + i32.const 36336 i32.add i32.const 0 i32.store offset=96 @@ -826,14 +1049,14 @@ br $for-loop|0 end end - i32.const 34368 - i32.const 35940 + i32.const 36336 + i32.const 37908 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34368 + i32.const 36336 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -914,11 +1137,11 @@ i32.and i32.eq if - i32.const 34356 + global.get $~lib/memory/__stack_pointer local.set $0 loop $while-continue|0 local.get $0 - i32.const 34356 + i32.const 36324 i32.lt_u if local.get $0 @@ -1007,14 +1230,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34356 + i32.const 36324 i32.lt_u if local.get $0 @@ -1037,7 +1260,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34356 + i32.const 36324 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1066,7 +1289,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1150,7 +1373,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1202,7 +1425,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1234,8 +1457,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1056 - i32.const 1120 + i32.const 3024 + i32.const 3088 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1245,7 +1468,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1266,7 +1489,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1299,8 +1522,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1056 - i32.const 1392 + i32.const 3024 + i32.const 3360 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1402,7 +1625,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1417,7 +1640,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1436,7 +1659,7 @@ i32.and if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1557,8 +1780,8 @@ i32.const 3 i32.eq if - i32.const 1456 - i32.const 1120 + i32.const 3424 + i32.const 3088 i32.const 338 i32.const 7 call $~lib/builtins/abort @@ -1610,8 +1833,8 @@ i32.const 3 i32.ne if - i32.const 1520 - i32.const 1120 + i32.const 3488 + i32.const 3088 i32.const 352 i32.const 5 call $~lib/builtins/abort @@ -1686,6 +1909,240 @@ i32.add global.set $~lib/rt/itcms/threshold ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36324 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 3140 + i32.const 3136 + i32.store + i32.const 3144 + i32.const 3136 + i32.store + i32.const 3136 + global.set $~lib/rt/itcms/pinSpace + i32.const 3172 + i32.const 3168 + i32.store + i32.const 3176 + i32.const 3168 + i32.store + i32.const 3168 + global.set $~lib/rt/itcms/toSpace + i32.const 3316 + i32.const 3312 + i32.store + i32.const 3320 + i32.const 3312 + i32.store + i32.const 3312 + global.set $~lib/rt/itcms/fromSpace + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$126 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$126 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36352 + i32.const 36400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3556 + i32.lt_s + if + i32.const 36352 + i32.const 36400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid block $~lib/arraybuffer/ArrayBufferView @@ -1711,38 +2168,4 @@ end unreachable ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34356 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - ) ) diff --git a/tests/compiler/empty-new.debug.wat b/tests/compiler/empty-new.debug.wat index 7d7b9b7c2f..2de954de67 100644 --- a/tests/compiler/empty-new.debug.wat +++ b/tests/compiler/empty-new.debug.wat @@ -1,14 +1,20 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,30 +23,467 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 416)) - (global $~lib/memory/__data_end i32 (i32.const 436)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33204)) - (global $~lib/memory/__heap_base i32 (i32.const 33204)) + (global $~lib/rt/__rtti_base i32 (i32.const 2384)) + (global $~lib/memory/__data_end i32 (i32.const 2404)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35172)) + (global $~lib/memory/__heap_base i32 (i32.const 35172)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 416) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2384) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -105,7 +548,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -175,7 +618,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -192,7 +635,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -222,8 +665,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -291,7 +734,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -443,7 +886,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -463,7 +906,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -526,7 +969,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -679,7 +1122,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -696,7 +1139,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -785,7 +1228,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -828,7 +1271,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -846,7 +1289,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -914,7 +1357,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1031,7 +1474,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1077,7 +1520,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1109,7 +1552,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1353,7 +1796,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1573,7 +2016,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1681,8 +2124,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1784,7 +2227,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1855,7 +2298,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2012,7 +2455,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2127,7 +2570,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2147,7 +2590,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2195,8 +2638,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2250,13 +2693,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -2264,12 +2707,386 @@ call $~lib/rt/itcms/__new drop ) + (func $~start + call $start:empty-new + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35200 + i32.const 35248 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) - i32.const 224 + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 local.get $0 call $~lib/rt/itcms/__visit - i32.const 32 + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 local.get $0 call $~lib/rt/itcms/__visit ) @@ -2310,7 +3127,4 @@ end unreachable ) - (func $~start - call $start:empty-new - ) ) diff --git a/tests/compiler/empty-new.release.wat b/tests/compiler/empty-new.release.wat index ec0402c94c..3e6e590d83 100644 --- a/tests/compiler/empty-new.release.wat +++ b/tests/compiler/empty-new.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32 i32 i32))) - (type $4 (func (param i32 i32 i64))) - (type $5 (func (result i32))) - (type $6 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,26 +17,250 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36196)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1440) "\04\00\00\00 \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3408) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3428 + i32.lt_s + if + i32.const 36224 + i32.const 36272 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -57,7 +281,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -105,7 +329,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -114,7 +338,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$107 + block $__inlined_func$~lib/rt/itcms/Object#unlink$120 local.get $1 i32.load offset=4 i32.const -4 @@ -126,19 +350,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34228 + i32.const 36196 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$107 + br $__inlined_func$~lib/rt/itcms/Object#unlink$120 end local.get $1 i32.load offset=8 @@ -146,7 +370,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -175,12 +399,12 @@ i32.const 1 else local.get $0 - i32.const 1440 + i32.const 3408 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -189,7 +413,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1444 + i32.const 3412 i32.add i32.load i32.const 32 @@ -241,7 +465,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -255,7 +479,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -301,7 +525,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -384,7 +608,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -398,7 +622,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -459,7 +683,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -492,7 +716,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -507,7 +731,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -558,7 +782,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -630,7 +854,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -655,7 +879,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -682,7 +906,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -754,10 +978,10 @@ if unreachable end - i32.const 34240 + i32.const 36208 i32.const 0 i32.store - i32.const 35808 + i32.const 37776 i32.const 0 i32.store loop $for-loop|0 @@ -768,7 +992,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34240 + i32.const 36208 i32.add i32.const 0 i32.store offset=4 @@ -786,7 +1010,7 @@ i32.add i32.const 2 i32.shl - i32.const 34240 + i32.const 36208 i32.add i32.const 0 i32.store offset=96 @@ -804,14 +1028,14 @@ br $for-loop|0 end end - i32.const 34240 - i32.const 35812 + i32.const 36208 + i32.const 37780 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34240 + i32.const 36208 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -892,11 +1116,11 @@ i32.and i32.eq if - i32.const 34228 + global.get $~lib/memory/__stack_pointer local.set $0 loop $while-continue|0 local.get $0 - i32.const 34228 + i32.const 36196 i32.lt_u if local.get $0 @@ -985,14 +1209,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34228 + i32.const 36196 i32.lt_u if local.get $0 @@ -1015,7 +1239,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34228 + i32.const 36196 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1044,7 +1268,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1074,18 +1298,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1093,32 +1384,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1131,23 +1426,35 @@ end end ) - (func $~lib/rt/itcms/__new - (local $0 i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 - local.set $0 + local.set $2 loop $do-loop|0 - local.get $0 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $0 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1161,9 +1468,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end - local.get $0 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1186,39 +1493,94 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $1 + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 call $~lib/rt/tlsf/searchBlock - local.tee $0 + local.tee $2 i32.eqz if memory.size - local.tee $0 + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end i32.const 4 - local.get $1 + local.get $4 i32.load offset=1568 - local.get $0 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.tee $2 - local.get $0 + local.tee $3 local.get $2 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1226,8 +1588,8 @@ unreachable end end - local.get $1 - local.get $0 + local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1235,119 +1597,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $1 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $0 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $0 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $0 + local.get $4 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $0 + local.get $2 i32.load - local.tee $2 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub local.tee $3 i32.const 16 i32.ge_u if - local.get $0 local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $0 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $2 + local.get $5 + i32.add + local.tee $5 local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $1 - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $0 local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $0 + local.get $2 i32.const 4 i32.add - local.get $0 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $0 - i32.const 0 + local.get $2 + local.get $1 i32.store offset=12 + local.get $2 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 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $0 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $0 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $0 + local.get $2 i32.load i32.const -4 i32.and @@ -1355,12 +1734,252 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $0 + local.get $2 i32.const 20 i32.add + local.tee $1 i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36196 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 3140 + i32.const 3136 + i32.store + i32.const 3144 + i32.const 3136 + i32.store + i32.const 3136 + global.set $~lib/rt/itcms/pinSpace + i32.const 3172 + i32.const 3168 + i32.store + i32.const 3176 + i32.const 3168 + i32.store + i32.const 3168 + global.set $~lib/rt/itcms/toSpace + i32.const 3316 + i32.const 3312 + i32.store + i32.const 3320 + i32.const 3312 + i32.store + i32.const 3312 + global.set $~lib/rt/itcms/fromSpace i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + drop + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3428 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3428 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$125 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$125 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36224 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3428 + i32.lt_s + if + i32.const 36224 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1387,39 +2006,4 @@ end unreachable ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34228 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - call $~lib/rt/itcms/__new - ) ) diff --git a/tests/compiler/enum-to-string.debug.wat b/tests/compiler/enum-to-string.debug.wat index 0f60906aa8..549e2217ea 100644 --- a/tests/compiler/enum-to-string.debug.wat +++ b/tests/compiler/enum-to-string.debug.wat @@ -1,10 +1,17 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func)) - (type $2 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $3 (func (param i32 i32 i32 i32))) - (type $4 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param i32 i32 i32 i32))) (global $enum-to-string/Enum.E0 i32 (i32.const 0)) (global $enum-to-string/Enum.E1 i32 (i32.const 1)) (global $enum-to-string/Enum.E2 i32 (i32.const 2)) @@ -12,6 +19,17 @@ (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/native/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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $enum-to-string/v (mut i32) (i32.const 0)) (global $enum-to-string/EnumWithInit.E0 i32 (i32.const 1)) (global $enum-to-string/EnumWithInit.E1 i32 (i32.const 2)) @@ -19,17 +37,38 @@ (global $enum-to-string/EnumWithDup.E0 i32 (i32.const 1)) (global $enum-to-string/EnumWithDup.E1 i32 (i32.const 2)) (global $enum-to-string/EnumWithDup.E2 i32 (i32.const 1)) - (global $~lib/memory/__data_end i32 (i32.const 268)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33036)) - (global $~lib/memory/__heap_base i32 (i32.const 33036)) + (global $~lib/rt/__rtti_base i32 (i32.const 2640)) + (global $~lib/memory/__data_end i32 (i32.const 2660)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35428)) + (global $~lib/memory/__heap_base i32 (i32.const 35428)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00E\002\00\00\00\00\00\00\00\00\00") (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00E\001\00\00\00\00\00\00\00\00\00") (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00E\000\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00e\00n\00u\00m\00-\00t\00o\00-\00s\00t\00r\00i\00n\00g\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00C\00E\002\00\00\00\00\00\00\00") - (data $5 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00C\00E\001\00\00\00\00\00\00\00") - (data $6 (i32.const 236) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00C\00E\000\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $4 (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $5 (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $7 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 336) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 512) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 540) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 636) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 764) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $17 (i32.const 828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 860) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $19 (i32.const 1260) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2316) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $21 (i32.const 2412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00e\00n\00u\00m\00-\00t\00o\00-\00s\00t\00r\00i\00n\00g\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00C\00E\002\00\00\00\00\00\00\00") + (data $24 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00C\00E\001\00\00\00\00\00\00\00") + (data $25 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00C\00E\000\00\00\00\00\00\00\00") + (data $26 (i32.const 2640) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -175,26 +214,2642 @@ i32.const 0 return ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 288 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 288 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 288 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 416 + i32.const 480 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 288 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 560 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 560 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 560 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 560 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 560 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 560 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 560 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 560 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 560 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 560 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 560 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 560 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 560 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 288 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 224 + i32.const 560 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 560 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 560 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 560 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 560 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 560 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 224 + i32.const 288 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 860 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 860 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 860 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 860 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1280 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1280 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2336 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2336 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $enum-to-string/InlineEnum#__enum_to_string (param $0 i32) (result i32) i32.const 2 local.get $0 i32.eq if - i32.const 192 + i32.const 2560 return end i32.const 1 local.get $0 i32.eq if - i32.const 224 + i32.const 2592 return end i32.const 0 local.get $0 i32.eq if - i32.const 256 + i32.const 2624 return end unreachable @@ -255,8 +2910,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33056 - i32.const 33104 + i32.const 35456 + i32.const 35504 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -359,6 +3014,211 @@ local.get $3 return ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 192 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 128 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 160 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 624 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 624 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2432 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $start:enum-to-string (local $0 i32) global.get $~lib/memory/__stack_pointer @@ -369,6 +3229,23 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 336 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 512 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $enum-to-string/Enum.E0 call $enum-to-string/Enum#__enum_to_string local.set $0 @@ -381,7 +3258,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -399,7 +3276,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -417,7 +3294,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -437,7 +3314,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -450,12 +3327,12 @@ local.get $0 i32.store local.get $0 - i32.const 256 + i32.const 2624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -468,12 +3345,12 @@ local.get $0 i32.store local.get $0 - i32.const 224 + i32.const 2592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -486,12 +3363,12 @@ local.get $0 i32.store local.get $0 - i32.const 192 + i32.const 2560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -509,7 +3386,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -527,7 +3404,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 32 i32.const 1 call $~lib/builtins/abort @@ -545,7 +3422,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -563,7 +3440,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -581,7 +3458,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -599,7 +3476,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 43 i32.const 1 call $~lib/builtins/abort @@ -610,4 +3487,203 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 656 + i32.const 784 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 848 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 416 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1280 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2336 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/enum-to-string.release.wat b/tests/compiler/enum-to-string.release.wat index 91a870b03a..ad96a42c70 100644 --- a/tests/compiler/enum-to-string.release.wat +++ b/tests/compiler/enum-to-string.release.wat @@ -1,9 +1,23 @@ (module (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34060)) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36452)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02\00\00\00\04\00\00\00E\002") @@ -11,16 +25,1737 @@ (data $1.1 (i32.const 1080) "\02\00\00\00\04\00\00\00E\001") (data $2 (i32.const 1100) "\1c") (data $2.1 (i32.const 1112) "\02\00\00\00\04\00\00\00E\000") - (data $3 (i32.const 1132) "<") - (data $3.1 (i32.const 1144) "\02\00\00\00\"\00\00\00e\00n\00u\00m\00-\00t\00o\00-\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data $4 (i32.const 1196) "\1c") - (data $4.1 (i32.const 1208) "\02\00\00\00\06\00\00\00C\00E\002") - (data $5 (i32.const 1228) "\1c") - (data $5.1 (i32.const 1240) "\02\00\00\00\06\00\00\00C\00E\001") - (data $6 (i32.const 1260) "\1c") - (data $6.1 (i32.const 1272) "\02\00\00\00\06\00\00\00C\00E\000") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $4 (i32.const 1164) "\1c") + (data $4.1 (i32.const 1176) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $5 (i32.const 1196) "\1c") + (data $5.1 (i32.const 1208) "\02") + (data $6 (i32.const 1228) "<") + (data $6.1 (i32.const 1240) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $7 (i32.const 1292) "<") + (data $7.1 (i32.const 1304) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $10 (i32.const 1420) "<") + (data $10.1 (i32.const 1432) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $11 (i32.const 1484) ",") + (data $11.1 (i32.const 1496) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $13 (i32.const 1564) "<") + (data $13.1 (i32.const 1576) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $14 (i32.const 1628) "\1c") + (data $14.1 (i32.const 1640) "\02\00\00\00\02\00\00\00:") + (data $15 (i32.const 1660) "|") + (data $15.1 (i32.const 1672) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $16 (i32.const 1788) "<") + (data $16.1 (i32.const 1800) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $17 (i32.const 1852) "\1c") + (data $17.1 (i32.const 1864) "\02\00\00\00\02\00\00\000") + (data $18 (i32.const 1884) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $19 (i32.const 2284) "\1c\04") + (data $19.1 (i32.const 2296) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $20 (i32.const 3340) "\\") + (data $20.1 (i32.const 3352) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $21 (i32.const 3436) "<") + (data $21.1 (i32.const 3448) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $22 (i32.const 3500) "<") + (data $22.1 (i32.const 3512) "\02\00\00\00\"\00\00\00e\00n\00u\00m\00-\00t\00o\00-\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data $23 (i32.const 3564) "\1c") + (data $23.1 (i32.const 3576) "\02\00\00\00\06\00\00\00C\00E\002") + (data $24 (i32.const 3596) "\1c") + (data $24.1 (i32.const 3608) "\02\00\00\00\06\00\00\00C\00E\001") + (data $25 (i32.const 3628) "\1c") + (data $25.1 (i32.const 3640) "\02\00\00\00\06\00\00\00C\00E\000") + (data $26 (i32.const 3664) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1440 + call $~lib/rt/itcms/__visit + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 2304 + call $~lib/rt/itcms/__visit + i32.const 3360 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1312 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$137 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36452 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$137 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3664 + i32.load + i32.gt_u + if + i32.const 1440 + i32.const 1504 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3668 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1584 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1584 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1584 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1584 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1584 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1584 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36464 + i32.const 0 + i32.store + i32.const 38032 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36464 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36464 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36464 + i32.const 38036 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36464 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36452 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1312 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36452 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36452 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1584 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1248 + i32.const 1312 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1248 + i32.const 1584 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1584 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1584 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3684 + i32.lt_s + if + i32.const 36480 + i32.const 36528 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1872 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~start call $start:enum-to-string ) @@ -34,11 +1769,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1292 + i32.const 3684 i32.lt_s if - i32.const 34080 - i32.const 34128 + i32.const 36480 + i32.const 36528 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -137,7 +1872,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$2 + block $__inlined_func$~lib/util/string/compareImpl$76 loop $while-continue|1 local.get $0 local.tee $3 @@ -157,7 +1892,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$2 + br_if $__inlined_func$~lib/util/string/compareImpl$76 local.get $2 i32.const 2 i32.add @@ -186,17 +1921,216 @@ global.set $~lib/memory/__stack_pointer i32.const 0 ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3684 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3684 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$142 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1216 + local.set $0 + br $__inlined_func$~lib/string/String#concat$142 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36480 + i32.const 36528 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3684 + i32.lt_s + if + i32.const 36480 + i32.const 36528 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1152 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1184 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1648 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1648 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3456 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $start:enum-to-string global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1292 + i32.const 3684 i32.lt_s if - i32.const 34080 - i32.const 34128 + i32.const 36480 + i32.const 36528 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -205,6 +2139,38 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + memory.size + i32.const 16 + i32.shl + i32.const 36452 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1364 + i32.const 1360 + i32.store + i32.const 1368 + i32.const 1360 + i32.store + i32.const 1360 + global.set $~lib/rt/itcms/pinSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/toSpace + i32.const 1540 + i32.const 1536 + i32.store + i32.const 1544 + i32.const 1536 + i32.store + i32.const 1536 + global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 1120 i32.store @@ -214,7 +2180,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -229,7 +2195,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -244,7 +2210,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -259,52 +2225,52 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 12 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1280 + i32.const 3648 i32.store - i32.const 1280 - i32.const 1280 + i32.const 3648 + i32.const 3648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1248 + i32.const 3616 i32.store - i32.const 1248 - i32.const 1248 + i32.const 3616 + i32.const 3616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1216 + i32.const 3584 i32.store - i32.const 1216 - i32.const 1216 + i32.const 3584 + i32.const 3584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -319,7 +2285,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -334,7 +2300,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 32 i32.const 1 call $~lib/builtins/abort @@ -349,7 +2315,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -364,7 +2330,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -379,7 +2345,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -394,7 +2360,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 43 i32.const 1 call $~lib/builtins/abort @@ -405,4 +2371,29 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/exceptions.debug.wat b/tests/compiler/exceptions.debug.wat new file mode 100644 index 0000000000..f803e4e78d --- /dev/null +++ b/tests/compiler/exceptions.debug.wat @@ -0,0 +1,7315 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32) (result i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param i32 i32 i64) (result i32))) + (type $13 (func (param i32 i32 i32 i32 i32) (result i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/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/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $exceptions/finallyRan (mut i32) (i32.const 0)) + (global $exceptions/returnInCatchFinallyRan (mut i32) (i32.const 0)) + (global $exceptions/tryCatchFinallyRan (mut i32) (i32.const 0)) + (global $exceptions/tryCatchFinallyResult (mut i32) (i32.const 0)) + (global $exceptions/finallyWithExceptionRan (mut i32) (i32.const 0)) + (global $exceptions/finallyNormalRan (mut i32) (i32.const 0)) + (global $exceptions/Resource.instances (mut i32) (i32.const 0)) + (global $exceptions/Resource.disposed (mut i32) (i32.const 0)) + (global $exceptions/calc (mut i32) (i32.const 0)) + (global $exceptions/outer (mut i32) (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $exceptions/rethrowFinallyRan (mut i32) (i32.const 0)) + (global $exceptions/sm (mut i32) (i32.const 0)) + (global $exceptions/deepNestingOrder (mut i32) (i32.const 192)) + (global $exceptions/counter (mut i32) (i32.const 0)) + (global $exceptions/multiReturnFinallyCount (mut i32) (i32.const 0)) + (global $exceptions/finallyReturnSuppressedExceptionRan (mut i32) (i32.const 0)) + (global $~lib/builtins/usize.MAX_VALUE i32 (i32.const -1)) + (global $~lib/rt/__rtti_base i32 (i32.const 3952)) + (global $~lib/memory/__data_end i32 (i32.const 4012)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36780)) + (global $~lib/memory/__heap_base i32 (i32.const 36780)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 80) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $3 (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $4 (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00R\00a\00n\00g\00e\00E\00r\00r\00o\00r\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 284) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 604) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $13 (i32.const 1004) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2060) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $15 (i32.const 2160) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2188) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00E\00r\00r\00o\00r\00\00\00") + (data $18 (i32.const 2284) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00o\00o\00p\00s\00\00\00\00\00") + (data $19 (i32.const 2316) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00e\00x\00c\00e\00p\00t\00i\00o\00n\00s\00.\00t\00s\00\00\00") + (data $20 (i32.const 2364) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00m\00s\00g\00\00\00\00\00\00\00") + (data $21 (i32.const 2396) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00i\00n\00n\00e\00r\00\00\00") + (data $22 (i32.const 2428) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00o\00u\00t\00e\00r\00\00\00") + (data $23 (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00e\00r\00r\00o\00r\00\00\00") + (data $24 (i32.const 2492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00w\00i\00l\00l\00 \00p\00r\00o\00p\00a\00g\00a\00t\00e\00") + (data $25 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00c\00u\00s\00t\00o\00m\00") + (data $26 (i32.const 2572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00w\00o\00r\00k\00 \00f\00a\00i\00l\00e\00d\00\00\00\00\00\00\00") + (data $27 (i32.const 2620) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00d\00i\00v\00i\00s\00i\00o\00n\00 \00b\00y\00 \00z\00e\00r\00o\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2684) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00i\00n\00n\00e\00r\00 \00e\00r\00r\00o\00r\00\00\00\00\00\00\00") + (data $29 (i32.const 2732) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00w\00r\00a\00p\00p\00e\00d\00 \00e\00r\00r\00o\00r\00\00\00") + (data $30 (i32.const 2780) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $31 (i32.const 2828) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00s\00u\00m\00 \00e\00x\00c\00e\00e\00d\00e\00d\00\00\00\00\00") + (data $32 (i32.const 2876) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00o\00r\00i\00g\00i\00n\00a\00l\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 2924) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00r\00e\00t\00h\00r\00o\00w\00n\00:\00 \00\00\00\00\00\00\00\00\00") + (data $34 (i32.const 2972) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00i\00n\00v\00a\00l\00i\00d\00 \00s\00t\00a\00t\00e\00\00\00") + (data $35 (i32.const 3020) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00t\001\00,\00\00\00\00\00\00\00") + (data $36 (i32.const 3052) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00t\002\00,\00\00\00\00\00\00\00") + (data $37 (i32.const 3084) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00t\003\00,\00\00\00\00\00\00\00") + (data $38 (i32.const 3116) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00d\00e\00e\00p\00\00\00\00\00") + (data $39 (i32.const 3148) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00c\003\00,\00\00\00\00\00\00\00") + (data $40 (i32.const 3180) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00r\00e\00t\00h\00r\00o\00w\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $41 (i32.const 3228) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00f\003\00,\00\00\00\00\00\00\00") + (data $42 (i32.const 3260) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00c\002\00,\00\00\00\00\00\00\00") + (data $43 (i32.const 3292) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00f\002\00,\00\00\00\00\00\00\00") + (data $44 (i32.const 3324) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00c\001\00,\00\00\00\00\00\00\00") + (data $45 (i32.const 3356) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00f\001\00,\00\00\00\00\00\00\00") + (data $46 (i32.const 3388) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\00t\001\00,\00t\002\00,\00t\003\00,\00c\003\00,\00f\003\00,\00c\002\00,\00f\002\00,\00f\001\00,\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $47 (i32.const 3468) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00m\00a\00x\00 \00r\00e\00a\00c\00h\00e\00d\00\00\00\00\00\00\00") + (data $48 (i32.const 3516) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00z\00e\00r\00o\00\00\00\00\00") + (data $49 (i32.const 3548) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00e\00s\00t\00\00\00\00\00") + (data $50 (i32.const 3580) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00s\00u\00p\00p\00r\00e\00s\00s\00e\00d\00\00\00\00\00") + (data $51 (i32.const 3644) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\00t\00h\00i\00s\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00c\00a\00t\00c\00h\00a\00b\00l\00e\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $52 (i32.const 3724) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00a\00b\00o\00r\00t\00 \00f\00r\00o\00m\00 \00f\00u\00n\00c\00t\00i\00o\00n\00\00\00\00\00\00\00") + (data $53 (i32.const 3788) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00t\00y\00p\00e\00 \00t\00e\00s\00t\00\00\00\00\00\00\00\00\00\00\00") + (data $54 (i32.const 3836) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00c\00u\00s\00t\00o\00m\00 \00e\00r\00r\00o\00r\00 \002\00") + (data $55 (i32.const 3884) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00i\00n\00v\00a\00l\00i\00d\00 \00d\00o\00w\00n\00c\00a\00s\00t\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $56 (i32.const 3952) "\0e\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\02\t\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (tag $error (type $4) (param i32)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 0 + i32.const 400 + call $~lib/error/Error#constructor + throw $error + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 304 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/error/Error#set:name (param $this i32) (param $name i32) + local.get $this + local.get $name + i32.store + local.get $this + local.get $name + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 604 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 604 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 604 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 604 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1024 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1024 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2080 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2080 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 2208 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2208 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2208 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 2208 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 2208 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 2208 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2208 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2208 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2208 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 2208 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2208 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2208 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2208 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 0 + i32.const 32 + call $~lib/error/Error#constructor + throw $error + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2208 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 2208 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 2208 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 2208 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 2208 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 0 + i32.const 32 + call $~lib/error/Error#constructor + throw $error + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/error/Error#set:message (param $this i32) (param $message i32) + local.get $this + local.get $message + i32.store offset=8 + local.get $this + local.get $message + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/error/Error#set:stack (param $this i32) (param $stack i32) + local.get $this + local.get $stack + i32.store offset=4 + local.get $this + local.get $stack + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $exceptions/testTryCatch (result i32) + (local $e i32) + try $try|0 + i32.const 0 + i32.const 2304 + call $~lib/error/Error#constructor + throw $error + catch $error + + local.set $e + i32.const 1 + return + end + unreachable + ) + (func $~lib/error/Error#get:message (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $exceptions/testNoThrow (result i32) + (local $e i32) + try $try|0 + i32.const 1 + return + catch $error + + local.set $e + i32.const 2 + return + end + unreachable + ) + (func $exceptions/testFinally + (local $0 i32) + try $try_finally|0 + catch_all + i32.const 1 + global.set $exceptions/finallyRan + rethrow $try_finally|0 + end + i32.const 1 + global.set $exceptions/finallyRan + local.get $0 + i32.const 1 + i32.eq + if + return + end + ) + (func $exceptions/testNested (result i32) + (local $e i32) + (local $e|1 i32) + try $try|0 + try $try|1 + i32.const 0 + i32.const 2416 + call $~lib/error/Error#constructor + throw $error + catch $error + + local.set $e + i32.const 0 + i32.const 2448 + call $~lib/error/Error#constructor + throw $error + end + unreachable + catch $error + + local.set $e|1 + i32.const 42 + return + end + unreachable + ) + (func $exceptions/testReturnInCatchFinally (result i32) + (local $e i32) + (local $1 i32) + (local $2 i32) + (local $e|3 i32) + block $finally_dispatch|0 + try $try_finally|0 + try $try|1 + i32.const 0 + i32.const 2480 + call $~lib/error/Error#constructor + throw $error + catch $error + + local.set $e|3 + i32.const 10 + local.set $2 + i32.const 1 + local.set $1 + br $finally_dispatch|0 + end + unreachable + catch_all + i32.const 1 + global.set $exceptions/returnInCatchFinallyRan + rethrow $try_finally|0 + end + unreachable + end + i32.const 1 + global.set $exceptions/returnInCatchFinallyRan + local.get $1 + i32.const 1 + i32.eq + if + local.get $2 + return + end + unreachable + ) + (func $exceptions/testTryCatchFinally + (local $e i32) + (local $1 i32) + (local $e|2 i32) + try $try_finally|0 + try $try|1 + i32.const 0 + i32.const 2480 + call $~lib/error/Error#constructor + throw $error + catch $error + + local.set $e|2 + i32.const 10 + global.set $exceptions/tryCatchFinallyResult + end + catch_all + i32.const 1 + global.set $exceptions/tryCatchFinallyRan + rethrow $try_finally|0 + end + i32.const 1 + global.set $exceptions/tryCatchFinallyRan + local.get $1 + i32.const 1 + i32.eq + if + return + end + ) + (func $exceptions/innerThrow + (local $0 i32) + try $try_finally|0 + i32.const 0 + i32.const 2512 + call $~lib/error/Error#constructor + throw $error + catch_all + i32.const 1 + global.set $exceptions/finallyWithExceptionRan + rethrow $try_finally|0 + end + unreachable + ) + (func $exceptions/testFinallyWithException (result i32) + (local $e i32) + try $try|0 + call $exceptions/innerThrow + catch $error + + local.set $e + global.get $exceptions/finallyWithExceptionRan + if (result i32) + i32.const 1 + else + i32.const 0 + end + return + end + i32.const 0 + return + ) + (func $exceptions/testFinallyNormalCompletion (result i32) + (local $0 i32) + (local $1 i32) + try $try_finally|0 + catch_all + i32.const 1 + global.set $exceptions/finallyNormalRan + rethrow $try_finally|0 + end + i32.const 1 + global.set $exceptions/finallyNormalRan + local.get $0 + i32.const 1 + i32.eq + if + local.get $1 + return + end + global.get $exceptions/finallyNormalRan + if (result i32) + i32.const 1 + else + i32.const 0 + end + return + ) + (func $exceptions/CustomError#set:code (param $this i32) (param $code i32) + local.get $this + local.get $code + i32.store offset=12 + ) + (func $exceptions/testCustomError (result i32) + (local $e i32) + try $try|0 + i32.const 0 + i32.const 2560 + i32.const 42 + call $exceptions/CustomError#constructor + throw $error + catch $error + + local.set $e + i32.const 1 + return + end + unreachable + ) + (func $exceptions/Resource#set:id (param $this i32) (param $id i32) + local.get $this + local.get $id + i32.store + ) + (func $exceptions/Resource#doWork (param $this i32) + ) + (func $exceptions/Resource#dispose (param $this i32) + global.get $exceptions/Resource.disposed + i32.const 1 + i32.add + global.set $exceptions/Resource.disposed + ) + (func $exceptions/Resource#doWorkThatThrows (param $this i32) + i32.const 0 + i32.const 2592 + call $~lib/error/Error#constructor + throw $error + ) + (func $exceptions/Calculator#set:value (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store + ) + (func $exceptions/Calculator#get:value (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $exceptions/Outer#set:inner (param $this i32) (param $inner i32) + local.get $this + local.get $inner + i32.store + local.get $this + local.get $inner + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $exceptions/Outer#get:inner (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $exceptions/Inner#riskyOperation (param $this i32) (result i32) + (local $e i32) + try $try|0 + i32.const 0 + i32.const 2704 + call $~lib/error/Error#constructor + throw $error + catch $error + + local.set $e + i32.const 0 + i32.const 2752 + call $~lib/error/Error#constructor + throw $error + end + unreachable + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $exceptions/testRethrowWithFinally (result i32) + (local $e i32) + i32.const 0 + global.set $exceptions/rethrowFinallyRan + try $try|0 + call $exceptions/innerRethrow + catch $error + + local.set $e + global.get $exceptions/rethrowFinallyRan + if (result i32) + i32.const 1 + else + i32.const 0 + end + return + end + i32.const 0 + return + ) + (func $exceptions/StateMachine#set:state (param $this i32) (param $state i32) + local.get $this + local.get $state + i32.store + ) + (func $exceptions/StateMachine#set:errorState (param $this i32) (param $errorState i32) + local.get $this + local.get $errorState + i32.store8 offset=4 + ) + (func $exceptions/StateMachine#get:state (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $exceptions/StateMachine#get:errorState (param $this i32) (result i32) + local.get $this + i32.load8_u offset=4 + ) + (func $exceptions/Counter#set:count (param $this i32) (param $count i32) + local.get $this + local.get $count + i32.store + ) + (func $exceptions/Counter#get:count (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $exceptions/testReturnFromTry (result i32) + (local $e i32) + (local $1 i32) + (local $2 i32) + (local $e|3 i32) + block $finally_dispatch|0 + try $try_finally|0 + try $try|1 + i32.const 42 + local.set $2 + i32.const 1 + local.set $1 + br $finally_dispatch|0 + catch $error + + local.set $e|3 + i32.const -1 + local.set $2 + i32.const 1 + local.set $1 + br $finally_dispatch|0 + end + unreachable + catch_all + rethrow $try_finally|0 + end + unreachable + end + local.get $1 + i32.const 1 + i32.eq + if + local.get $2 + return + end + unreachable + ) + (func $exceptions/testMultipleReturnsWithFinally (param $x i32) (result i32) + (local $e i32) + (local $2 i32) + (local $3 i32) + (local $e|4 i32) + block $finally_dispatch|0 + try $try_finally|0 + try $try|1 + local.get $x + i32.const 0 + i32.lt_s + if + i32.const -1 + local.set $3 + i32.const 1 + local.set $2 + br $finally_dispatch|0 + end + local.get $x + i32.const 0 + i32.eq + if + i32.const 0 + i32.const 3536 + call $~lib/error/Error#constructor + throw $error + end + local.get $x + i32.const 100 + i32.gt_s + if + i32.const 100 + local.set $3 + i32.const 1 + local.set $2 + br $finally_dispatch|0 + end + local.get $x + local.set $3 + i32.const 1 + local.set $2 + br $finally_dispatch|0 + catch $error + + local.set $e|4 + i32.const 0 + local.set $3 + i32.const 1 + local.set $2 + br $finally_dispatch|0 + end + unreachable + catch_all + global.get $exceptions/multiReturnFinallyCount + i32.const 1 + i32.add + global.set $exceptions/multiReturnFinallyCount + rethrow $try_finally|0 + end + unreachable + end + global.get $exceptions/multiReturnFinallyCount + i32.const 1 + i32.add + global.set $exceptions/multiReturnFinallyCount + local.get $2 + i32.const 1 + i32.eq + if + local.get $3 + return + end + unreachable + ) + (func $exceptions/testReturnInFinally (result i32) + (local $0 i32) + (local $1 i32) + block $finally_dispatch|0 + try $try_finally|0 + i32.const 1 + local.set $1 + i32.const 1 + local.set $0 + br $finally_dispatch|0 + catch_all + i32.const 2 + return + end + unreachable + end + i32.const 2 + return + ) + (func $exceptions/testReturnInFinallyOverridesCatch (result i32) + (local $e i32) + (local $1 i32) + (local $2 i32) + (local $e|3 i32) + block $finally_dispatch|0 + try $try_finally|0 + try $try|1 + i32.const 0 + i32.const 3568 + call $~lib/error/Error#constructor + throw $error + catch $error + + local.set $e|3 + i32.const 1 + local.set $2 + i32.const 1 + local.set $1 + br $finally_dispatch|0 + end + unreachable + catch_all + i32.const 2 + return + end + unreachable + end + i32.const 2 + return + ) + (func $exceptions/testReturnInFinallySuppressesException (result i32) + (local $0 i32) + (local $1 i32) + try $try_finally|0 + i32.const 0 + i32.const 3600 + call $~lib/error/Error#constructor + throw $error + catch_all + i32.const 1 + global.set $exceptions/finallyReturnSuppressedExceptionRan + i32.const 42 + return + end + unreachable + ) + (func $exceptions/functionThatAborts + i32.const 3744 + i32.const 0 + i32.const 0 + i32.const 0 + call $~lib/builtins/abort + ) + (func $exceptions/CustomError#get:code (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~instanceof|exceptions/CustomError (param $0 i32) (result i32) + (local $1 i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 6 + i32.eq + br_if $is_instance + i32.const 0 + return + end + i32.const 1 + ) + (func $~start + call $start:exceptions + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 36800 + i32.const 36848 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 192 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/error/RangeError#constructor (param $this i32) (param $message i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $message + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/error/Error#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 256 + call $~lib/error/Error#set:name + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 128 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 160 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 224 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 224 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + i32.const 0 + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/error/Error#constructor + throw $error + ) + (func $~lib/error/Error#constructor (param $this i32) (param $message i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $message + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/error/Error#set:message + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2272 + call $~lib/error/Error#set:name + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 192 + call $~lib/error/Error#set:stack + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $exceptions/testCatchVar (result i32) + (local $e i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + try $try|0 + i32.const 0 + i32.const 2384 + call $~lib/error/Error#constructor + throw $error + catch $error + + local.set $e + local.get $e + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/error/Error#get:message + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + unreachable + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $exceptions/CustomError#constructor (param $this i32) (param $message i32) (param $code i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $code + call $exceptions/CustomError#set:code + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $message + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/error/Error#constructor + local.tee $this + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $exceptions/Resource#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $exceptions/Resource#set:id + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + global.get $exceptions/Resource.instances + i32.const 1 + i32.add + global.set $exceptions/Resource.instances + global.get $exceptions/Resource.instances + call $exceptions/Resource#set:id + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $exceptions/testResourceCleanup (result i32) + (local $r i32) + (local $result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $exceptions/Resource#constructor + local.tee $r + i32.store + i32.const 0 + local.set $result + try $try_finally|0 + local.get $r + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $exceptions/Resource#doWork + i32.const 1 + local.set $result + catch_all + local.get $r + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $exceptions/Resource#dispose + rethrow $try_finally|0 + end + local.get $r + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $exceptions/Resource#dispose + local.get $2 + i32.const 1 + i32.eq + if + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $result + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $exceptions/testResourceCleanupWithException (result i32) + (local $r i32) + (local $1 i32) + (local $2 i32) + (local $e i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + global.set $exceptions/Resource.disposed + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $exceptions/Resource#constructor + local.tee $r + i32.store + try $try|0 + try $try_finally|1 + local.get $r + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $exceptions/Resource#doWorkThatThrows + catch_all + local.get $r + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $exceptions/Resource#dispose + rethrow $try_finally|1 + end + local.get $r + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $exceptions/Resource#dispose + local.get $1 + i32.const 1 + i32.eq + if + local.get $2 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + catch $error + + local.set $e + global.get $exceptions/Resource.disposed + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $exceptions/Calculator#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $exceptions/Calculator#set:value + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $exceptions/Calculator#divide (param $this i32) (param $a i32) (param $b i32) (result i32) + (local $e i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + try $try|0 + local.get $b + i32.const 0 + i32.eq + if + i32.const 0 + i32.const 2640 + call $~lib/error/Error#constructor + throw $error + end + local.get $a + local.get $b + i32.div_s + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + catch $error + + local.set $e + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const -1 + call $exceptions/Calculator#set:value + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + unreachable + ) + (func $exceptions/Calculator#safeDivide (param $this i32) (param $a i32) (param $b i32) (result i32) + (local $e i32) + (local $4 i32) + (local $5 i32) + (local $e|6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $finally_dispatch|0 + try $try_finally|0 + try $try|1 + local.get $b + i32.const 0 + i32.eq + if + i32.const 0 + i32.const 2640 + call $~lib/error/Error#constructor + throw $error + end + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $a + local.get $b + i32.div_s + call $exceptions/Calculator#set:value + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $exceptions/Calculator#get:value + local.set $5 + i32.const 1 + local.set $4 + br $finally_dispatch|0 + catch $error + + local.set $e|6 + i32.const -1 + local.set $5 + i32.const 1 + local.set $4 + br $finally_dispatch|0 + end + unreachable + catch_all + rethrow $try_finally|0 + end + unreachable + end + local.get $4 + i32.const 1 + i32.eq + if + local.get $5 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + unreachable + ) + (func $exceptions/Inner#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $exceptions/Outer#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $exceptions/Outer#set:inner + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $exceptions/Inner#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $exceptions/Outer#set:inner + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $exceptions/Outer#process (param $this i32) (result i32) + (local $e i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + try $try|0 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $exceptions/Outer#get:inner + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $exceptions/Inner#riskyOperation + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + catch $error + + local.set $e + i32.const -1 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + unreachable + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 0 + i32.const 2800 + call $~lib/error/RangeError#constructor + throw $error + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 0 + i32.const 2800 + call $~lib/error/RangeError#constructor + throw $error + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 0 + i32.const 400 + call $~lib/error/RangeError#constructor + throw $error + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 0 + i32.const 400 + call $~lib/error/RangeError#constructor + throw $error + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $exceptions/testArrayWithExceptions (result i32) + (local $arr i32) + (local $sum i32) + (local $i i32) + (local $e i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/array/Array#constructor + local.tee $arr + i32.store + local.get $arr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + local.get $arr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + local.get $arr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + i32.const 0 + local.set $sum + try $try|0 + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $arr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $sum + local.get $arr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $i + call $~lib/array/Array#__get + i32.add + local.set $sum + local.get $sum + i32.const 5 + i32.gt_s + if + i32.const 0 + i32.const 2848 + call $~lib/error/Error#constructor + throw $error + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + catch $error + + local.set $e + local.get $sum + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $exceptions/innerRethrow + (local $e i32) + (local $1 i32) + (local $e|2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + try $try_finally|0 + try $try|1 + i32.const 0 + i32.const 2896 + call $~lib/error/Error#constructor + throw $error + catch $error + + local.set $e|2 + i32.const 0 + global.set $exceptions/rethrowFinallyRan + i32.const 0 + i32.const 2944 + local.get $e|2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/error/Error#get:message + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/string/String.__concat + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/error/Error#constructor + throw $error + end + unreachable + catch_all + i32.const 1 + global.set $exceptions/rethrowFinallyRan + rethrow $try_finally|0 + end + unreachable + ) + (func $exceptions/StateMachine#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $exceptions/StateMachine#set:state + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $exceptions/StateMachine#set:errorState + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $exceptions/StateMachine#transition (param $this i32) (param $newState i32) + (local $e i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + try $try|0 + local.get $newState + i32.const 0 + i32.lt_s + if + i32.const 0 + i32.const 2992 + call $~lib/error/Error#constructor + throw $error + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $newState + call $exceptions/StateMachine#set:state + catch $error + + local.set $e + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 1 + call $exceptions/StateMachine#set:errorState + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const -1 + call $exceptions/StateMachine#set:state + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $exceptions/StateMachine#reset (param $this i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + try $try_finally|0 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + call $exceptions/StateMachine#set:state + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + call $exceptions/StateMachine#set:errorState + catch_all + rethrow $try_finally|0 + end + local.get $1 + i32.const 1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $exceptions/testDeepNesting (result i32) + (local $e i32) + (local $1 i32) + (local $2 i32) + (local $e|3 i32) + (local $e|4 i32) + (local $5 i32) + (local $6 i32) + (local $e|7 i32) + (local $8 i32) + (local $9 i32) + (local $e|10 i32) + (local $e|11 i32) + (local $e|12 i32) + (local $13 i32) + (local $14 i32) + (local $e|15 i32) + (local $16 i32) + (local $17 i32) + (local $e|18 i32) + (local $e|19 i32) + (local $20 i32) + (local $21 i32) + (local $e|22 i32) + (local $23 i32) + (local $24 i32) + (local $e|25 i32) + (local $e|26 i32) + (local $e|27 i32) + (local $28 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 192 + global.set $exceptions/deepNestingOrder + try $try_finally|0 + try $try|7 + global.get $exceptions/deepNestingOrder + local.set $28 + global.get $~lib/memory/__stack_pointer + local.get $28 + i32.store + local.get $28 + i32.const 3040 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + try $try_finally|8 + try $try|11 + global.get $exceptions/deepNestingOrder + local.set $28 + global.get $~lib/memory/__stack_pointer + local.get $28 + i32.store + local.get $28 + i32.const 3072 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + try $try_finally|12 + try $try|13 + global.get $exceptions/deepNestingOrder + local.set $28 + global.get $~lib/memory/__stack_pointer + local.get $28 + i32.store + local.get $28 + i32.const 3104 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + i32.const 0 + i32.const 3136 + call $~lib/error/Error#constructor + throw $error + catch $error + + local.set $e|25 + global.get $exceptions/deepNestingOrder + local.set $28 + global.get $~lib/memory/__stack_pointer + local.get $28 + i32.store + local.get $28 + i32.const 3168 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + i32.const 0 + i32.const 3200 + call $~lib/error/Error#constructor + throw $error + end + unreachable + catch_all + global.get $exceptions/deepNestingOrder + local.set $28 + global.get $~lib/memory/__stack_pointer + local.get $28 + i32.store + local.get $28 + i32.const 3248 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + rethrow $try_finally|12 + end + unreachable + catch $error + + local.set $e|26 + global.get $exceptions/deepNestingOrder + local.set $28 + global.get $~lib/memory/__stack_pointer + local.get $28 + i32.store + local.get $28 + i32.const 3280 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + end + catch_all + global.get $exceptions/deepNestingOrder + local.set $28 + global.get $~lib/memory/__stack_pointer + local.get $28 + i32.store + local.get $28 + i32.const 3312 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + rethrow $try_finally|8 + end + global.get $exceptions/deepNestingOrder + local.set $28 + global.get $~lib/memory/__stack_pointer + local.get $28 + i32.store + local.get $28 + i32.const 3312 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + local.get $20 + i32.const 1 + i32.eq + if + local.get $21 + local.set $28 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $28 + return + end + catch $error + + local.set $e|27 + global.get $exceptions/deepNestingOrder + local.set $28 + global.get $~lib/memory/__stack_pointer + local.get $28 + i32.store + local.get $28 + i32.const 3344 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + end + catch_all + global.get $exceptions/deepNestingOrder + local.set $28 + global.get $~lib/memory/__stack_pointer + local.get $28 + i32.store + local.get $28 + i32.const 3376 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + rethrow $try_finally|0 + end + global.get $exceptions/deepNestingOrder + local.set $28 + global.get $~lib/memory/__stack_pointer + local.get $28 + i32.store + local.get $28 + i32.const 3376 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + local.get $13 + i32.const 1 + i32.eq + if + local.get $14 + local.set $28 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $28 + return + end + i32.const 1 + local.set $28 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $28 + return + ) + (func $exceptions/Counter#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $exceptions/Counter#set:count + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $exceptions/Counter#increment (param $this i32) (result i32) + (local $e i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + try $try|0 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $exceptions/Counter#get:count + i32.const 1 + i32.add + call $exceptions/Counter#set:count + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $exceptions/Counter#get:count + i32.const 3 + i32.gt_s + if + i32.const 0 + i32.const 3488 + call $~lib/error/Error#constructor + throw $error + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $exceptions/Counter#get:count + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + catch $error + + local.set $e + i32.const -1 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + unreachable + ) + (func $~lib/string/String#indexOf (param $this i32) (param $search i32) (param $start i32) (result i32) + (local $searchLen i32) + (local $len i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $searchStart i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $search + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $searchLen + local.get $searchLen + i32.eqz + if + i32.const 0 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $this + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $len + local.get $len + i32.eqz + if + i32.const -1 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $start + local.tee $5 + i32.const 0 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.tee $7 + local.get $len + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $searchStart + local.get $len + local.get $searchLen + i32.sub + local.set $len + loop $for-loop|0 + local.get $searchStart + local.get $len + i32.le_s + if + local.get $this + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + local.get $searchStart + local.get $search + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + i32.const 0 + local.get $searchLen + call $~lib/util/string/compareImpl + i32.eqz + if + local.get $searchStart + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $searchStart + i32.const 1 + i32.add + local.set $searchStart + br $for-loop|0 + end + end + i32.const -1 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/string/String#includes (param $this i32) (param $search i32) (param $start i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $search + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $start + call $~lib/string/String#indexOf + i32.const -1 + i32.ne + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $exceptions/testCatchAbort (result i32) + (local $caught i32) + (local $e i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + local.set $caught + try $try|0 + i32.const 3664 + i32.const 0 + i32.const 0 + i32.const 0 + call $~lib/builtins/abort + catch $error + + local.set $e + i32.const 1 + local.set $caught + local.get $e + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/error/Error#get:message + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 3664 + i32.const 0 + call $~lib/string/String#includes + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 515 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $caught + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $exceptions/testCatchRuntimeError (result i32) + (local $caught i32) + (local $e i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + local.set $caught + try $try|0 + global.get $~lib/builtins/usize.MAX_VALUE + i32.const 1 + call $~lib/rt/itcms/__new + drop + catch $error + + local.set $e + i32.const 1 + local.set $caught + local.get $e + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/error/Error#get:message + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/string/String#get:length + i32.const 0 + i32.gt_s + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 531 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $caught + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $exceptions/testCatchAbortFromFunction (result i32) + (local $caught i32) + (local $e i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + local.set $caught + try $try|0 + call $exceptions/functionThatAborts + catch $error + + local.set $e + i32.const 1 + local.set $caught + local.get $e + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/error/Error#get:message + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 3744 + i32.const 0 + call $~lib/string/String#includes + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 548 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $caught + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $exceptions/testCatchVariableType (result i32) + (local $e i32) + (local $msg i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + try $try|0 + i32.const 0 + i32.const 3808 + call $~lib/error/Error#constructor + throw $error + catch $error + + local.set $e + global.get $~lib/memory/__stack_pointer + local.get $e + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/error/Error#get:message + local.tee $msg + i32.store offset=4 + local.get $msg + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 3808 + call $~lib/string/String.__eq + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + unreachable + ) + (func $exceptions/testCatchCustomError2 (result i32) + (local $e i32) + (local $1 i32) + (local $custom i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + try $try|0 + i32.const 0 + i32.const 3856 + i32.const 99 + call $exceptions/CustomError#constructor + throw $error + catch $error + + local.set $e + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $e + local.tee $1 + i32.store + local.get $1 + call $~instanceof|exceptions/CustomError + if (result i32) + local.get $1 + else + i32.const 3904 + i32.const 2336 + i32.const 573 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.tee $custom + i32.store offset=4 + local.get $custom + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $~lib/error/Error#get:message + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.const 3856 + call $~lib/string/String.__eq + if (result i32) + local.get $custom + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $exceptions/CustomError#get:code + i32.const 99 + i32.eq + else + i32.const 0 + end + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + unreachable + ) + (func $start:exceptions + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 80 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 2160 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $exceptions/testTryCatch + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testCatchVar + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2384 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testNoThrow + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testFinally + global.get $exceptions/finallyRan + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 48 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testNested + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 63 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testReturnInCatchFinally + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 76 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/returnInCatchFinallyRan + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testTryCatchFinally + global.get $exceptions/tryCatchFinallyResult + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/tryCatchFinallyRan + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testFinallyWithException + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testFinallyNormalCompletion + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 124 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testCustomError + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 147 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testResourceCleanup + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 185 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/Resource.disposed + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 186 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testResourceCleanupWithException + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 203 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $exceptions/Calculator#constructor + global.set $exceptions/calc + global.get $exceptions/calc + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 10 + i32.const 2 + call $exceptions/Calculator#divide + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 237 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/calc + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 10 + i32.const 0 + call $exceptions/Calculator#divide + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 238 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/calc + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exceptions/Calculator#get:value + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 239 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/calc + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + call $exceptions/Calculator#set:value + global.get $exceptions/calc + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.const 4 + call $exceptions/Calculator#safeDivide + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 242 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/calc + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.const 0 + call $exceptions/Calculator#safeDivide + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 243 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $exceptions/Outer#constructor + global.set $exceptions/outer + global.get $exceptions/outer + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exceptions/Outer#process + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 274 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testArrayWithExceptions + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 296 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testRethrowWithFinally + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 321 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $exceptions/StateMachine#constructor + global.set $exceptions/sm + global.get $exceptions/sm + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $exceptions/StateMachine#transition + global.get $exceptions/sm + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exceptions/StateMachine#get:state + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 352 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/sm + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exceptions/StateMachine#get:errorState + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 353 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/sm + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const -5 + call $exceptions/StateMachine#transition + global.get $exceptions/sm + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exceptions/StateMachine#get:state + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 356 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/sm + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exceptions/StateMachine#get:errorState + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 357 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/sm + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exceptions/StateMachine#reset + global.get $exceptions/sm + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exceptions/StateMachine#get:state + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 360 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/sm + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exceptions/StateMachine#get:errorState + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 361 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testDeepNesting + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 393 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/deepNestingOrder + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3408 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 394 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $exceptions/Counter#constructor + global.set $exceptions/counter + global.get $exceptions/counter + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exceptions/Counter#increment + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 414 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/counter + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exceptions/Counter#increment + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 415 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/counter + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exceptions/Counter#increment + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 416 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/counter + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exceptions/Counter#increment + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 417 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testReturnFromTry + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 429 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $exceptions/multiReturnFinallyCount + i32.const -5 + call $exceptions/testMultipleReturnsWithFinally + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 453 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/multiReturnFinallyCount + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 454 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $exceptions/testMultipleReturnsWithFinally + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 456 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/multiReturnFinallyCount + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 457 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + call $exceptions/testMultipleReturnsWithFinally + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 459 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/multiReturnFinallyCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 460 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 200 + call $exceptions/testMultipleReturnsWithFinally + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 462 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/multiReturnFinallyCount + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 463 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testReturnInFinally + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 474 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testReturnInFinallyOverridesCatch + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 487 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testReturnInFinallySuppressesException + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 500 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/finallyReturnSuppressedExceptionRan + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 501 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testCatchAbort + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 519 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testCatchRuntimeError + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 535 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testCatchAbortFromFunction + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 552 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testCatchVariableType + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 565 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exceptions/testCatchCustomError2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 2336 + i32.const 578 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 0 + i32.const 464 + call $~lib/error/RangeError#constructor + throw $error + end + local.get $value + i32.eqz + if + i32.const 592 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $exceptions/calc + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $exceptions/outer + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $exceptions/sm + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $exceptions/deepNestingOrder + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $exceptions/counter + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 400 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2800 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1024 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2080 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/error/Error~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/error/RangeError~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/error/Error~visit + ) + (func $exceptions/CustomError~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/error/Error~visit + ) + (func $exceptions/Outer~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $exceptions/Counter + block $exceptions/StateMachine + block $~lib/array/Array + block $exceptions/Inner + block $exceptions/Outer + block $exceptions/Calculator + block $exceptions/Resource + block $exceptions/CustomError + block $~lib/error/RangeError + block $~lib/error/Error + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/error/Error $~lib/error/RangeError $exceptions/CustomError $exceptions/Resource $exceptions/Calculator $exceptions/Outer $exceptions/Inner $~lib/array/Array $exceptions/StateMachine $exceptions/Counter $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/error/Error~visit + return + end + local.get $0 + local.get $1 + call $~lib/error/RangeError~visit + return + end + local.get $0 + local.get $1 + call $exceptions/CustomError~visit + return + end + return + end + return + end + local.get $0 + local.get $1 + call $exceptions/Outer~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + return + end + unreachable + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/exceptions.json b/tests/compiler/exceptions.json new file mode 100644 index 0000000000..bf3583d70c --- /dev/null +++ b/tests/compiler/exceptions.json @@ -0,0 +1,3 @@ +{ + "features": ["exception-handling"] +} diff --git a/tests/compiler/exceptions.release.wat b/tests/compiler/exceptions.release.wat new file mode 100644 index 0000000000..943ec1f32c --- /dev/null +++ b/tests/compiler/exceptions.release.wat @@ -0,0 +1,5214 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func)) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (param i32 i32 i32 i32) (result i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (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/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $exceptions/tryCatchFinallyRan (mut i32) (i32.const 0)) + (global $exceptions/tryCatchFinallyResult (mut i32) (i32.const 0)) + (global $exceptions/finallyWithExceptionRan (mut i32) (i32.const 0)) + (global $exceptions/Resource.instances (mut i32) (i32.const 0)) + (global $exceptions/Resource.disposed (mut i32) (i32.const 0)) + (global $exceptions/calc (mut i32) (i32.const 0)) + (global $exceptions/outer (mut i32) (i32.const 0)) + (global $exceptions/rethrowFinallyRan (mut i32) (i32.const 0)) + (global $exceptions/sm (mut i32) (i32.const 0)) + (global $exceptions/deepNestingOrder (mut i32) (i32.const 1216)) + (global $exceptions/counter (mut i32) (i32.const 0)) + (global $exceptions/multiReturnFinallyCount (mut i32) (i32.const 0)) + (global $exceptions/finallyReturnSuppressedExceptionRan (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37804)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $2 (i32.const 1132) "\1c") + (data $2.1 (i32.const 1144) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $3 (i32.const 1164) "\1c") + (data $3.1 (i32.const 1176) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $4 (i32.const 1196) "\1c") + (data $4.1 (i32.const 1208) "\02") + (data $5 (i32.const 1228) "\1c") + (data $5.1 (i32.const 1240) "\02\00\00\00\02\00\00\00:") + (data $6 (i32.const 1260) ",") + (data $6.1 (i32.const 1272) "\02\00\00\00\14\00\00\00R\00a\00n\00g\00e\00E\00r\00r\00o\00r") + (data $7 (i32.const 1308) "<") + (data $7.1 (i32.const 1320) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $9 (i32.const 1404) "<") + (data $9.1 (i32.const 1416) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $10 (i32.const 1468) "|") + (data $10.1 (i32.const 1480) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $11 (i32.const 1596) "\1c") + (data $11.1 (i32.const 1608) "\02\00\00\00\02\00\00\000") + (data $12 (i32.const 1628) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $13 (i32.const 2028) "\1c\04") + (data $13.1 (i32.const 2040) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $14 (i32.const 3084) "\\") + (data $14.1 (i32.const 3096) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $16 (i32.const 3212) "<") + (data $16.1 (i32.const 3224) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $17 (i32.const 3276) "\1c") + (data $17.1 (i32.const 3288) "\02\00\00\00\n\00\00\00E\00r\00r\00o\00r") + (data $18 (i32.const 3308) "\1c") + (data $18.1 (i32.const 3320) "\02\00\00\00\08\00\00\00o\00o\00p\00s") + (data $19 (i32.const 3340) ",") + (data $19.1 (i32.const 3352) "\02\00\00\00\1a\00\00\00e\00x\00c\00e\00p\00t\00i\00o\00n\00s\00.\00t\00s") + (data $20 (i32.const 3388) "\1c") + (data $20.1 (i32.const 3400) "\02\00\00\00\06\00\00\00m\00s\00g") + (data $21 (i32.const 3420) "\1c") + (data $21.1 (i32.const 3432) "\02\00\00\00\n\00\00\00i\00n\00n\00e\00r") + (data $22 (i32.const 3452) "\1c") + (data $22.1 (i32.const 3464) "\02\00\00\00\n\00\00\00o\00u\00t\00e\00r") + (data $23 (i32.const 3484) "\1c") + (data $23.1 (i32.const 3496) "\02\00\00\00\n\00\00\00e\00r\00r\00o\00r") + (data $24 (i32.const 3516) ",") + (data $24.1 (i32.const 3528) "\02\00\00\00\1c\00\00\00w\00i\00l\00l\00 \00p\00r\00o\00p\00a\00g\00a\00t\00e") + (data $25 (i32.const 3564) "\1c") + (data $25.1 (i32.const 3576) "\02\00\00\00\0c\00\00\00c\00u\00s\00t\00o\00m") + (data $26 (i32.const 3596) ",") + (data $26.1 (i32.const 3608) "\02\00\00\00\16\00\00\00w\00o\00r\00k\00 \00f\00a\00i\00l\00e\00d") + (data $27 (i32.const 3644) "<") + (data $27.1 (i32.const 3656) "\02\00\00\00 \00\00\00d\00i\00v\00i\00s\00i\00o\00n\00 \00b\00y\00 \00z\00e\00r\00o") + (data $28 (i32.const 3708) ",") + (data $28.1 (i32.const 3720) "\02\00\00\00\16\00\00\00i\00n\00n\00e\00r\00 \00e\00r\00r\00o\00r") + (data $29 (i32.const 3756) ",") + (data $29.1 (i32.const 3768) "\02\00\00\00\1a\00\00\00w\00r\00a\00p\00p\00e\00d\00 \00e\00r\00r\00o\00r") + (data $30 (i32.const 3804) ",") + (data $30.1 (i32.const 3816) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $31 (i32.const 3852) ",") + (data $31.1 (i32.const 3864) "\02\00\00\00\18\00\00\00s\00u\00m\00 \00e\00x\00c\00e\00e\00d\00e\00d") + (data $32 (i32.const 3900) ",") + (data $32.1 (i32.const 3912) "\02\00\00\00\10\00\00\00o\00r\00i\00g\00i\00n\00a\00l") + (data $33 (i32.const 3948) ",") + (data $33.1 (i32.const 3960) "\02\00\00\00\14\00\00\00r\00e\00t\00h\00r\00o\00w\00n\00:\00 ") + (data $34 (i32.const 3996) ",") + (data $34.1 (i32.const 4008) "\02\00\00\00\1a\00\00\00i\00n\00v\00a\00l\00i\00d\00 \00s\00t\00a\00t\00e") + (data $35 (i32.const 4044) "\1c") + (data $35.1 (i32.const 4056) "\02\00\00\00\06\00\00\00t\001\00,") + (data $36 (i32.const 4076) "\1c") + (data $36.1 (i32.const 4088) "\02\00\00\00\06\00\00\00t\002\00,") + (data $37 (i32.const 4108) "\1c") + (data $37.1 (i32.const 4120) "\02\00\00\00\06\00\00\00t\003\00,") + (data $38 (i32.const 4140) "\1c") + (data $38.1 (i32.const 4152) "\02\00\00\00\08\00\00\00d\00e\00e\00p") + (data $39 (i32.const 4172) "\1c") + (data $39.1 (i32.const 4184) "\02\00\00\00\06\00\00\00c\003\00,") + (data $40 (i32.const 4204) ",") + (data $40.1 (i32.const 4216) "\02\00\00\00\0e\00\00\00r\00e\00t\00h\00r\00o\00w") + (data $41 (i32.const 4252) "\1c") + (data $41.1 (i32.const 4264) "\02\00\00\00\06\00\00\00f\003\00,") + (data $42 (i32.const 4284) "\1c") + (data $42.1 (i32.const 4296) "\02\00\00\00\06\00\00\00c\002\00,") + (data $43 (i32.const 4316) "\1c") + (data $43.1 (i32.const 4328) "\02\00\00\00\06\00\00\00f\002\00,") + (data $44 (i32.const 4348) "\1c") + (data $44.1 (i32.const 4360) "\02\00\00\00\06\00\00\00c\001\00,") + (data $45 (i32.const 4380) "\1c") + (data $45.1 (i32.const 4392) "\02\00\00\00\06\00\00\00f\001\00,") + (data $46 (i32.const 4412) "L") + (data $46.1 (i32.const 4424) "\02\00\00\000\00\00\00t\001\00,\00t\002\00,\00t\003\00,\00c\003\00,\00f\003\00,\00c\002\00,\00f\002\00,\00f\001\00,") + (data $47 (i32.const 4492) ",") + (data $47.1 (i32.const 4504) "\02\00\00\00\16\00\00\00m\00a\00x\00 \00r\00e\00a\00c\00h\00e\00d") + (data $48 (i32.const 4540) "\1c") + (data $48.1 (i32.const 4552) "\02\00\00\00\08\00\00\00z\00e\00r\00o") + (data $49 (i32.const 4572) "\1c") + (data $49.1 (i32.const 4584) "\02\00\00\00\08\00\00\00t\00e\00s\00t") + (data $50 (i32.const 4604) "<") + (data $50.1 (i32.const 4616) "\02\00\00\00(\00\00\00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00s\00u\00p\00p\00r\00e\00s\00s\00e\00d") + (data $51 (i32.const 4668) "L") + (data $51.1 (i32.const 4680) "\02\00\00\000\00\00\00t\00h\00i\00s\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00c\00a\00t\00c\00h\00a\00b\00l\00e") + (data $52 (i32.const 4748) "<") + (data $52.1 (i32.const 4760) "\02\00\00\00&\00\00\00a\00b\00o\00r\00t\00 \00f\00r\00o\00m\00 \00f\00u\00n\00c\00t\00i\00o\00n") + (data $53 (i32.const 4812) ",") + (data $53.1 (i32.const 4824) "\02\00\00\00\12\00\00\00t\00y\00p\00e\00 \00t\00e\00s\00t") + (data $54 (i32.const 4860) ",") + (data $54.1 (i32.const 4872) "\02\00\00\00\1c\00\00\00c\00u\00s\00t\00o\00m\00 \00e\00r\00r\00o\00r\00 \002") + (data $55 (i32.const 4908) "<") + (data $55.1 (i32.const 4920) "\02\00\00\00 \00\00\00i\00n\00v\00a\00l\00i\00d\00 \00d\00o\00w\00n\00c\00a\00s\00t") + (data $56 (i32.const 4976) "\0e\00\00\00 \00\00\00 \00\00\00 ") + (data $56.1 (i32.const 5008) " \00\00\00 \00\00\00\00\00\00\00 \00\00\00\02\t\00\00 \00\00\00 ") + (tag $error (type $2) (param i32)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1328 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$271 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 37804 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1328 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$271 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1328 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 4976 + i32.load + i32.gt_u + if + i32.const 0 + i32.const 1424 + call $~lib/error/Error#constructor + throw $error + end + local.get $1 + i32.const 2 + i32.shl + i32.const 4980 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__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 1328 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + 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$17 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1616 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$17 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1628 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1628 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1628 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1628 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $exceptions/calc + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $exceptions/outer + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $exceptions/sm + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $exceptions/deepNestingOrder + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $exceptions/counter + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1424 + call $~lib/rt/itcms/__visit + i32.const 3824 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 2048 + call $~lib/rt/itcms/__visit + i32.const 3104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1328 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 3232 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 3232 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3232 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 3232 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 3232 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 3232 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 3232 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 3232 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3232 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 3232 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 3232 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 3232 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 37808 + i32.const 0 + i32.store + i32.const 39376 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 37808 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 37808 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 37808 + i32.const 39380 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 37808 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 37804 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1328 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 37804 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 37804 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 3232 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3232 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 3232 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 0 + i32.const 1056 + call $~lib/error/Error#constructor + throw $error + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$71 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$71 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 0 + i32.const 1056 + call $~lib/error/Error#constructor + throw $error + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 3232 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 3232 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3232 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $1 + local.get $3 + i32.const 4 + i32.ge_u + if (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $1 + i64.load + local.get $2 + i64.load + i64.eq + if + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $3 + i32.const 4 + i32.sub + local.tee $3 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $3 + local.tee $0 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + if + local.get $1 + i32.load16_u + local.tee $0 + local.get $2 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $0 + local.get $4 + i32.sub + return + end + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|1 + end + end + i32.const 0 + ) + (func $exceptions/testMultipleReturnsWithFinally (param $0 i32) (result i32) + (local $1 i32) + block $finally_dispatch|0 + try $try_finally|0 + try + local.get $0 + i32.const 0 + i32.lt_s + if + i32.const -1 + local.set $1 + br $finally_dispatch|0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 4560 + call $~lib/error/Error#constructor + throw $error + end + local.get $0 + i32.const 100 + i32.gt_s + if + i32.const 100 + local.set $1 + br $finally_dispatch|0 + end + local.get $0 + local.set $1 + br $finally_dispatch|0 + catch $error + + drop + br $finally_dispatch|0 + end + unreachable + catch_all + global.get $exceptions/multiReturnFinallyCount + i32.const 1 + i32.add + global.set $exceptions/multiReturnFinallyCount + rethrow $try_finally|0 + end + unreachable + end + global.get $exceptions/multiReturnFinallyCount + i32.const 1 + i32.add + global.set $exceptions/multiReturnFinallyCount + local.get $1 + ) + (func $~start + call $start:exceptions + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$276 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1216 + local.set $0 + br $__inlined_func$~lib/string/String#concat$276 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/error/RangeError#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + call $~lib/error/Error#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1280 + i32.store + local.get $0 + i32.const 1280 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1152 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1184 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1248 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1248 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 0 + local.get $0 + call $~lib/error/Error#constructor + throw $error + ) + (func $~lib/error/Error#constructor (param $0 i32) (param $1 i32) (result 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 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3296 + i32.store + local.get $0 + i32.const 3296 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1216 + i32.store offset=4 + local.get $0 + i32.const 1216 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (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 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $exceptions/CustomError#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + call $~lib/error/Error#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $exceptions/Resource#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $exceptions/Resource.instances + i32.const 1 + i32.add + global.set $exceptions/Resource.instances + local.get $0 + global.get $exceptions/Resource.instances + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $exceptions/Calculator#divide (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + try + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 3664 + call $~lib/error/Error#constructor + throw $error + end + i32.const 10 + local.get $1 + i32.div_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + catch $error + + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const -1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + unreachable + ) + (func $exceptions/Calculator#safeDivide (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $finally_dispatch|0 + try $try_finally|0 + try + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 3664 + call $~lib/error/Error#constructor + throw $error + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + local.get $1 + i32.div_s + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $0 + br $finally_dispatch|0 + catch $error + + drop + i32.const -1 + local.set $0 + br $finally_dispatch|0 + end + unreachable + catch_all + rethrow $try_finally|0 + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1424 + call $~lib/error/RangeError#constructor + throw $error + 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 5036 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + local.tee $5 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 3824 + call $~lib/error/RangeError#constructor + throw $error + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$245 + i32.const 1073741820 + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $4 + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $3 + local.get $3 + local.get $4 + i32.lt_u + select + local.tee $6 + local.get $0 + i32.load + local.tee $3 + i32.const 20 + i32.sub + local.tee $5 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $5 + local.get $6 + i32.store offset=16 + local.get $3 + local.set $4 + br $__inlined_func$~lib/rt/itcms/__renew$245 + end + local.get $6 + local.get $5 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $4 + local.get $3 + local.get $6 + local.get $5 + i32.load offset=16 + local.tee $5 + local.get $5 + local.get $6 + i32.gt_u + select + memory.copy + end + local.get $3 + local.get $4 + i32.ne + if + local.get $0 + local.get $4 + i32.store + local.get $0 + local.get $4 + i32.store offset=4 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $6 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $exceptions/testArrayWithExceptions (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 32 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + try + loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1424 + call $~lib/error/RangeError#constructor + throw $error + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 5 + i32.gt_s + if + i32.const 0 + i32.const 3872 + call $~lib/error/Error#constructor + throw $error + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + catch $error + + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $exceptions/StateMachine#transition (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + try + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 0 + i32.const 4016 + call $~lib/error/Error#constructor + throw $error + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store + catch $error + + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + i32.store8 offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const -1 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $exceptions/Counter#increment (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + try + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 3 + i32.gt_s + if + i32.const 0 + i32.const 4512 + call $~lib/error/Error#constructor + throw $error + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + catch $error + + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + unreachable + ) + (func $~lib/string/String#includes (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + br_if $folding-inner0 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#indexOf$278 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + br $__inlined_func$~lib/string/String#indexOf$278 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $0 + br $__inlined_func$~lib/string/String#indexOf$278 + end + i32.const 0 + local.set $0 + local.get $4 + local.get $3 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $1 + local.get $3 + call $~lib/util/string/compareImpl + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/string/String#indexOf$278 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const -1 + i32.ne + return + end + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $start:exceptions + (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 + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 37804 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1108 + i32.const 1104 + i32.store + i32.const 1112 + i32.const 1104 + i32.store + i32.const 1104 + global.set $~lib/rt/itcms/pinSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/toSpace + i32.const 3188 + i32.const 3184 + i32.store + i32.const 3192 + i32.const 3184 + i32.store + i32.const 3184 + global.set $~lib/rt/itcms/fromSpace + block $__inlined_func$exceptions/testTryCatch$176 + try + i32.const 0 + i32.const 3328 + call $~lib/error/Error#constructor + throw $error + catch $error + + drop + br $__inlined_func$exceptions/testTryCatch$176 + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + 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$exceptions/testCatchVar$254 + try + i32.const 0 + i32.const 3408 + call $~lib/error/Error#constructor + throw $error + catch $error + + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$exceptions/testCatchVar$254 + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 3408 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$exceptions/testNested$179 + try + try + i32.const 0 + i32.const 3440 + call $~lib/error/Error#constructor + throw $error + catch $error + + drop + i32.const 0 + i32.const 3472 + call $~lib/error/Error#constructor + throw $error + end + unreachable + catch $error + + drop + br $__inlined_func$exceptions/testNested$179 + end + unreachable + end + block $finally_dispatch|02 + try $try_finally|03 + try + i32.const 0 + i32.const 3504 + call $~lib/error/Error#constructor + throw $error + catch $error + + drop + br $finally_dispatch|02 + end + unreachable + catch_all + rethrow $try_finally|03 + end + unreachable + end + try $try_finally|06 + try + i32.const 0 + i32.const 3504 + call $~lib/error/Error#constructor + throw $error + catch $error + + drop + i32.const 10 + global.set $exceptions/tryCatchFinallyResult + end + catch_all + i32.const 1 + global.set $exceptions/tryCatchFinallyRan + rethrow $try_finally|06 + end + i32.const 1 + global.set $exceptions/tryCatchFinallyRan + global.get $exceptions/tryCatchFinallyResult + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/tryCatchFinallyRan + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$exceptions/testFinallyWithException$255 + try + try $try_finally|07 + i32.const 0 + i32.const 3536 + call $~lib/error/Error#constructor + throw $error + catch_all + i32.const 1 + global.set $exceptions/finallyWithExceptionRan + rethrow $try_finally|07 + end + unreachable + catch $error + + drop + global.get $exceptions/finallyWithExceptionRan + i32.const 0 + i32.ne + local.set $1 + br $__inlined_func$exceptions/testFinallyWithException$255 + end + unreachable + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$exceptions/testCustomError$183 + try + i32.const 3584 + i32.const 42 + call $exceptions/CustomError#constructor + throw $error + catch $error + + drop + br $__inlined_func$exceptions/testCustomError$183 + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + call $exceptions/Resource#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $exceptions/Resource.disposed + i32.const 1 + i32.add + global.set $exceptions/Resource.disposed + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $exceptions/Resource.disposed + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 186 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + global.set $exceptions/Resource.disposed + global.get $~lib/memory/__stack_pointer + call $exceptions/Resource#constructor + local.tee $1 + i32.store + block $__inlined_func$exceptions/testResourceCleanupWithException$257 + try + try $try_finally|1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 0 + i32.const 3616 + call $~lib/error/Error#constructor + throw $error + catch_all + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $exceptions/Resource.disposed + i32.const 1 + i32.add + global.set $exceptions/Resource.disposed + rethrow $try_finally|1 + end + unreachable + catch $error + + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $exceptions/Resource.disposed + local.set $1 + br $__inlined_func$exceptions/testResourceCleanupWithException$257 + end + unreachable + end + local.get $1 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 203 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + global.set $exceptions/calc + global.get $~lib/memory/__stack_pointer + global.get $exceptions/calc + local.tee $1 + i32.store + local.get $1 + i32.const 2 + call $exceptions/Calculator#divide + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 237 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $exceptions/calc + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $exceptions/Calculator#divide + if + i32.const 0 + i32.const 3360 + i32.const 238 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $exceptions/calc + local.tee $1 + i32.store + local.get $1 + i32.load + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 239 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $exceptions/calc + local.tee $1 + i32.store + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $exceptions/calc + local.tee $1 + i32.store + local.get $1 + i32.const 4 + call $exceptions/Calculator#safeDivide + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 242 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $exceptions/calc + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $exceptions/Calculator#safeDivide + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 243 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/object/Object#constructor + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + global.set $exceptions/outer + global.get $~lib/memory/__stack_pointer + global.get $exceptions/outer + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$exceptions/Outer#process$259 + try + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + i32.store + try + i32.const 0 + i32.const 3728 + call $~lib/error/Error#constructor + throw $error + catch $error + + drop + i32.const 0 + i32.const 3776 + call $~lib/error/Error#constructor + throw $error + end + unreachable + catch $error + + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$exceptions/Outer#process$259 + end + unreachable + end + call $exceptions/testArrayWithExceptions + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 296 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $exceptions/rethrowFinallyRan + block $__inlined_func$exceptions/testRethrowWithFinally$280 + try + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + try $try_finally|04 + try + i32.const 0 + i32.const 3920 + call $~lib/error/Error#constructor + throw $error + catch $error + + local.set $1 + i32.const 0 + global.set $exceptions/rethrowFinallyRan + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=8 + local.tee $1 + i32.store offset=4 + i32.const 3968 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 0 + local.get $1 + call $~lib/error/Error#constructor + throw $error + end + unreachable + catch_all + i32.const 1 + global.set $exceptions/rethrowFinallyRan + rethrow $try_finally|04 + end + unreachable + catch $error + + drop + global.get $exceptions/rethrowFinallyRan + i32.const 0 + i32.ne + local.set $1 + br $__inlined_func$exceptions/testRethrowWithFinally$280 + end + unreachable + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 321 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store8 offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + global.set $exceptions/sm + global.get $~lib/memory/__stack_pointer + global.get $exceptions/sm + local.tee $1 + i32.store + local.get $1 + i32.const 1 + call $exceptions/StateMachine#transition + global.get $~lib/memory/__stack_pointer + global.get $exceptions/sm + local.tee $1 + i32.store + local.get $1 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 352 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $exceptions/sm + local.tee $1 + i32.store + local.get $1 + i32.load8_u offset=4 + if + i32.const 0 + i32.const 3360 + i32.const 353 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $exceptions/sm + local.tee $1 + i32.store + local.get $1 + i32.const -5 + call $exceptions/StateMachine#transition + global.get $~lib/memory/__stack_pointer + global.get $exceptions/sm + local.tee $1 + i32.store + local.get $1 + i32.load + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 356 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $exceptions/sm + local.tee $1 + i32.store + local.get $1 + i32.load8_u offset=4 + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 357 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $exceptions/sm + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.store8 offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $exceptions/sm + local.tee $1 + i32.store + local.get $1 + i32.load + if + i32.const 0 + i32.const 3360 + i32.const 360 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $exceptions/sm + local.tee $1 + i32.store + local.get $1 + i32.load8_u offset=4 + if + i32.const 0 + i32.const 3360 + i32.const 361 + 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 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1216 + global.set $exceptions/deepNestingOrder + try $try_finally|0 + try + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store + i32.const 1216 + i32.const 4064 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + try $try_finally|8 + try + global.get $~lib/memory/__stack_pointer + global.get $exceptions/deepNestingOrder + local.tee $1 + i32.store + local.get $1 + i32.const 4096 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + try $try_finally|12 + try + global.get $~lib/memory/__stack_pointer + global.get $exceptions/deepNestingOrder + local.tee $1 + i32.store + local.get $1 + i32.const 4128 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + i32.const 0 + i32.const 4160 + call $~lib/error/Error#constructor + throw $error + catch $error + + drop + global.get $~lib/memory/__stack_pointer + global.get $exceptions/deepNestingOrder + local.tee $1 + i32.store + local.get $1 + i32.const 4192 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + i32.const 0 + i32.const 4224 + call $~lib/error/Error#constructor + throw $error + end + unreachable + catch_all + global.get $~lib/memory/__stack_pointer + global.get $exceptions/deepNestingOrder + local.tee $1 + i32.store + local.get $1 + i32.const 4272 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + rethrow $try_finally|12 + end + unreachable + catch $error + + drop + global.get $~lib/memory/__stack_pointer + global.get $exceptions/deepNestingOrder + local.tee $1 + i32.store + local.get $1 + i32.const 4304 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + end + catch_all + global.get $~lib/memory/__stack_pointer + global.get $exceptions/deepNestingOrder + local.tee $1 + i32.store + local.get $1 + i32.const 4336 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + rethrow $try_finally|8 + end + global.get $~lib/memory/__stack_pointer + global.get $exceptions/deepNestingOrder + local.tee $1 + i32.store + local.get $1 + i32.const 4336 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + catch $error + + drop + global.get $~lib/memory/__stack_pointer + global.get $exceptions/deepNestingOrder + local.tee $1 + i32.store + local.get $1 + i32.const 4368 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + end + catch_all + global.get $~lib/memory/__stack_pointer + global.get $exceptions/deepNestingOrder + local.tee $0 + i32.store + local.get $0 + i32.const 4400 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + rethrow $try_finally|0 + end + global.get $~lib/memory/__stack_pointer + global.get $exceptions/deepNestingOrder + local.tee $1 + i32.store + local.get $1 + i32.const 4400 + call $~lib/string/String.__concat + global.set $exceptions/deepNestingOrder + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $exceptions/deepNestingOrder + local.tee $1 + i32.store + local.get $1 + i32.const 4432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 394 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + global.set $exceptions/counter + global.get $~lib/memory/__stack_pointer + global.get $exceptions/counter + local.tee $1 + i32.store + local.get $1 + call $exceptions/Counter#increment + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 414 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $exceptions/counter + local.tee $1 + i32.store + local.get $1 + call $exceptions/Counter#increment + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 415 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $exceptions/counter + local.tee $1 + i32.store + local.get $1 + call $exceptions/Counter#increment + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 416 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $exceptions/counter + local.tee $1 + i32.store + local.get $1 + call $exceptions/Counter#increment + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 417 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $exceptions/multiReturnFinallyCount + i32.const -5 + call $exceptions/testMultipleReturnsWithFinally + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 453 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/multiReturnFinallyCount + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 454 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $exceptions/testMultipleReturnsWithFinally + if + i32.const 0 + i32.const 3360 + i32.const 456 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/multiReturnFinallyCount + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 457 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + call $exceptions/testMultipleReturnsWithFinally + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 459 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/multiReturnFinallyCount + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 460 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 200 + call $exceptions/testMultipleReturnsWithFinally + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 462 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $exceptions/multiReturnFinallyCount + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 3360 + i32.const 463 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$exceptions/testReturnInFinallyOverridesCatch$194 + try + try + i32.const 0 + i32.const 4592 + call $~lib/error/Error#constructor + throw $error + catch $error + + drop + br $__inlined_func$exceptions/testReturnInFinallyOverridesCatch$194 + end + unreachable + catch_all + br $__inlined_func$exceptions/testReturnInFinallyOverridesCatch$194 + end + unreachable + end + block $__inlined_func$exceptions/testReturnInFinallySuppressesException$195 + try + i32.const 0 + i32.const 4624 + call $~lib/error/Error#constructor + throw $error + catch_all + i32.const 1 + global.set $exceptions/finallyReturnSuppressedExceptionRan + br $__inlined_func$exceptions/testReturnInFinallySuppressesException$195 + end + unreachable + end + global.get $exceptions/finallyReturnSuppressedExceptionRan + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 501 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + try + i32.const 4688 + i32.const 0 + i32.const 0 + i32.const 0 + call $~lib/builtins/abort + catch $error + + local.set $1 + i32.const 1 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=8 + local.tee $1 + i32.store + local.get $1 + i32.const 4688 + call $~lib/string/String#includes + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 515 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 519 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + local.set $0 + try + i32.const -1 + i32.const 1 + call $~lib/rt/itcms/__new + drop + catch $error + + local.set $1 + i32.const 1 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=8 + local.tee $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 531 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 535 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + local.set $0 + try + i32.const 4768 + i32.const 0 + i32.const 0 + i32.const 0 + call $~lib/builtins/abort + catch $error + + local.set $1 + i32.const 1 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=8 + local.tee $1 + i32.store + local.get $1 + i32.const 4768 + call $~lib/string/String#includes + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 548 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 552 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$exceptions/testCatchVariableType$265 + try + i32.const 0 + i32.const 4832 + call $~lib/error/Error#constructor + throw $error + catch $error + + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4832 + call $~lib/string/String.__eq + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$exceptions/testCatchVariableType$265 + end + unreachable + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 565 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + block $__inlined_func$exceptions/testCatchCustomError2$266 + try + i32.const 4880 + i32.const 99 + call $exceptions/CustomError#constructor + throw $error + catch $error + + local.set $0 + global.get $~lib/memory/__stack_pointer + block $__inlined_func$~instanceof|exceptions/CustomError$172 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.ne + br_if $__inlined_func$~instanceof|exceptions/CustomError$172 + drop + i32.const 1 + end + i32.eqz + if + i32.const 4928 + i32.const 3360 + i32.const 573 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $1 + i32.store offset=8 + local.get $1 + i32.const 4880 + call $~lib/string/String.__eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=12 + i32.const 99 + i32.eq + else + i32.const 0 + end + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$exceptions/testCatchCustomError2$266 + end + unreachable + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 578 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $exceptions/Counter + block $exceptions/StateMachine + block $~lib/array/Array + block $exceptions/Inner + block $exceptions/Outer + block $exceptions/Calculator + block $exceptions/Resource + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $exceptions/Resource $exceptions/Calculator $exceptions/Outer $exceptions/Inner $~lib/array/Array $exceptions/StateMachine $exceptions/Counter $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5036 + i32.lt_s + if + i32.const 37824 + i32.const 37872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + return + end + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + ) +) diff --git a/tests/compiler/exceptions.ts b/tests/compiler/exceptions.ts new file mode 100644 index 0000000000..2c4edb2b6a --- /dev/null +++ b/tests/compiler/exceptions.ts @@ -0,0 +1,578 @@ +// Basic throw +function testThrow(): void { + throw new Error("test"); +} + +// Try-catch basic +function testTryCatch(): i32 { + try { + throw new Error("oops"); + } catch (e) { + return 1; + } + return 0; +} +assert(testTryCatch() == 1); + +// Catch variable access +function testCatchVar(): string { + try { + throw new Error("msg"); + } catch (e) { + return (e as Error).message; + } + return ""; +} +assert(testCatchVar() == "msg"); + +// No exception thrown +function testNoThrow(): i32 { + try { + return 1; + } catch (e) { + return 2; + } +} +assert(testNoThrow() == 1); + +// Finally basic +let finallyRan = false; +function testFinally(): void { + try { + // normal completion + } finally { + finallyRan = true; + } +} +testFinally(); +assert(finallyRan); + +// Nested try-catch +function testNested(): i32 { + try { + try { + throw new Error("inner"); + } catch (e) { + throw new Error("outer"); + } + } catch (e) { + return 42; + } + return 0; +} +assert(testNested() == 42); + +// Try-catch-finally with return in catch - finally must run before return +let returnInCatchFinallyRan = false; +function testReturnInCatchFinally(): i32 { + try { + throw new Error("error"); + } catch (e) { + return 10; // Return in catch - finally must run first! + } finally { + returnInCatchFinallyRan = true; + } +} +assert(testReturnInCatchFinally() == 10); +assert(returnInCatchFinallyRan); + +// Try-catch-finally (without return in catch) +let tryCatchFinallyRan = false; +let tryCatchFinallyResult = 0; +function testTryCatchFinally(): void { + try { + throw new Error("error"); + } catch (e) { + tryCatchFinallyResult = 10; + } finally { + tryCatchFinallyRan = true; + } +} +testTryCatchFinally(); +assert(tryCatchFinallyResult == 10); +assert(tryCatchFinallyRan); + +// Finally with exception propagation +let finallyWithExceptionRan = false; +function innerThrow(): void { + try { + throw new Error("will propagate"); + } finally { + finallyWithExceptionRan = true; + } +} +function testFinallyWithException(): i32 { + try { + innerThrow(); + } catch (e) { + return finallyWithExceptionRan ? 1 : 0; + } + return 0; +} +assert(testFinallyWithException() == 1); + +// Try-finally with normal completion (no exception) +let finallyNormalRan = false; +function testFinallyNormalCompletion(): i32 { + try { + // no exception + } finally { + finallyNormalRan = true; + } + return finallyNormalRan ? 1 : 0; +} +assert(testFinallyNormalCompletion() == 1); + +// ============================================================================ +// Complex tests with classes +// ============================================================================ + +// Custom error class extending Error +class CustomError extends Error { + constructor(message: string, public code: i32) { + super(message); + } +} + +// Test throwing custom error +function testCustomError(): i32 { + try { + throw new CustomError("custom", 42); + } catch (e) { + // e is Error type, but carries CustomError data + return 1; + } + return 0; +} +assert(testCustomError() == 1); + +// Resource management class +class Resource { + static instances: i32 = 0; + static disposed: i32 = 0; + + id: i32; + + constructor() { + this.id = ++Resource.instances; + } + + dispose(): void { + Resource.disposed++; + } + + doWork(): void { + // Might throw + } + + doWorkThatThrows(): void { + throw new Error("work failed"); + } +} + +// Test resource cleanup in finally +function testResourceCleanup(): i32 { + let r = new Resource(); + let result: i32 = 0; + try { + r.doWork(); + result = 1; + } finally { + r.dispose(); + } + return result; +} +assert(testResourceCleanup() == 1); +assert(Resource.disposed == 1); + +// Test resource cleanup when exception thrown +function testResourceCleanupWithException(): i32 { + Resource.disposed = 0; // Reset + let r = new Resource(); + try { + try { + r.doWorkThatThrows(); + } finally { + r.dispose(); + } + } catch (e) { + return Resource.disposed; // Should be 1 - disposed even though exception + } + return 0; +} +assert(testResourceCleanupWithException() == 1); + +// Class with method that uses try-catch +class Calculator { + value: i32 = 0; + + divide(a: i32, b: i32): i32 { + try { + if (b == 0) { + throw new Error("division by zero"); + } + return a / b; + } catch (e) { + this.value = -1; // Mark error state + return 0; + } + } + + safeDivide(a: i32, b: i32): i32 { + try { + if (b == 0) { + throw new Error("division by zero"); + } + this.value = a / b; + return this.value; + } catch (e) { + return -1; + } finally { + // Always runs - could log or cleanup + } + } +} + +let calc = new Calculator(); +assert(calc.divide(10, 2) == 5); +assert(calc.divide(10, 0) == 0); +assert(calc.value == -1); + +calc.value = 0; +assert(calc.safeDivide(20, 4) == 5); +assert(calc.safeDivide(20, 0) == -1); + +// Nested class exception handling +class Outer { + inner: Inner; + + constructor() { + this.inner = new Inner(); + } + + process(): i32 { + try { + return this.inner.riskyOperation(); + } catch (e) { + return -1; + } + } +} + +class Inner { + riskyOperation(): i32 { + try { + throw new Error("inner error"); + } catch (e) { + throw new Error("wrapped error"); + } + return 0; + } +} + +let outer = new Outer(); +assert(outer.process() == -1); + +// Array operations with exceptions +function testArrayWithExceptions(): i32 { + let arr = new Array(3); + arr[0] = 1; + arr[1] = 2; + arr[2] = 3; + + let sum: i32 = 0; + try { + for (let i = 0; i < arr.length; i++) { + sum += arr[i]; + if (sum > 5) { + throw new Error("sum exceeded"); + } + } + } catch (e) { + return sum; // Should be 6 (1+2+3) + } + return 0; +} +assert(testArrayWithExceptions() == 6); + +// Multiple catch scenarios with rethrow +let rethrowFinallyRan = false; +function innerRethrow(): void { + try { + throw new Error("original"); + } catch (e) { + rethrowFinallyRan = false; + throw new Error("rethrown: " + (e as Error).message); + } finally { + rethrowFinallyRan = true; + } +} + +function testRethrowWithFinally(): i32 { + rethrowFinallyRan = false; + try { + innerRethrow(); + } catch (e) { + // Check that finally ran even during rethrow + return rethrowFinallyRan ? 1 : 0; + } + return 0; +} +assert(testRethrowWithFinally() == 1); + +// State machine with exceptions +class StateMachine { + state: i32 = 0; + errorState: bool = false; + + transition(newState: i32): void { + try { + if (newState < 0) { + throw new Error("invalid state"); + } + this.state = newState; + } catch (e) { + this.errorState = true; + this.state = -1; + } + } + + reset(): void { + try { + this.state = 0; + this.errorState = false; + } finally { + // Cleanup any resources + } + } +} + +let sm = new StateMachine(); +sm.transition(1); +assert(sm.state == 1); +assert(sm.errorState == false); + +sm.transition(-5); +assert(sm.state == -1); +assert(sm.errorState == true); + +sm.reset(); +assert(sm.state == 0); +assert(sm.errorState == false); + +// Deeply nested try-catch-finally +let deepNestingOrder: string = ""; + +function testDeepNesting(): i32 { + deepNestingOrder = ""; + try { + deepNestingOrder += "t1,"; + try { + deepNestingOrder += "t2,"; + try { + deepNestingOrder += "t3,"; + throw new Error("deep"); + } catch (e) { + deepNestingOrder += "c3,"; + throw new Error("rethrow"); + } finally { + deepNestingOrder += "f3,"; + } + } catch (e) { + deepNestingOrder += "c2,"; + } finally { + deepNestingOrder += "f2,"; + } + } catch (e) { + deepNestingOrder += "c1,"; + } finally { + deepNestingOrder += "f1,"; + } + return 1; +} +assert(testDeepNesting() == 1); +assert(deepNestingOrder == "t1,t2,t3,c3,f3,c2,f2,f1,"); + +// Counter class (alternative to closure) +class Counter { + count: i32 = 0; + + increment(): i32 { + try { + this.count++; + if (this.count > 3) { + throw new Error("max reached"); + } + return this.count; + } catch (e) { + return -1; + } + } +} + +let counter = new Counter(); +assert(counter.increment() == 1); +assert(counter.increment() == 2); +assert(counter.increment() == 3); +assert(counter.increment() == -1); // 4th call throws and catches + +// Return value from try block (not catch) +function testReturnFromTry(): i32 { + try { + return 42; + } catch (e) { + return -1; + } finally { + // This runs before the return from try + } +} +assert(testReturnFromTry() == 42); + +// Multiple returns with finally +let multiReturnFinallyCount = 0; +function testMultipleReturnsWithFinally(x: i32): i32 { + try { + if (x < 0) { + return -1; + } + if (x == 0) { + throw new Error("zero"); + } + if (x > 100) { + return 100; + } + return x; + } catch (e) { + return 0; + } finally { + multiReturnFinallyCount++; + } +} + +multiReturnFinallyCount = 0; +assert(testMultipleReturnsWithFinally(-5) == -1); +assert(multiReturnFinallyCount == 1); + +assert(testMultipleReturnsWithFinally(0) == 0); +assert(multiReturnFinallyCount == 2); + +assert(testMultipleReturnsWithFinally(50) == 50); +assert(multiReturnFinallyCount == 3); + +assert(testMultipleReturnsWithFinally(200) == 100); +assert(multiReturnFinallyCount == 4); + +// Return in finally overrides return in try +function testReturnInFinally(): i32 { + try { + return 1; // This return is overridden + } finally { + // eslint-disable-next-line no-unsafe-finally + return 2; // This return wins + } +} +assert(testReturnInFinally() == 2); + +// Return in finally overrides return in catch +function testReturnInFinallyOverridesCatch(): i32 { + try { + throw new Error("test"); + } catch (e) { + return 1; // This return is overridden + } finally { + // eslint-disable-next-line no-unsafe-finally + return 2; // This return wins + } +} +assert(testReturnInFinallyOverridesCatch() == 2); + +// Return in finally suppresses exception +let finallyReturnSuppressedExceptionRan = false; +function testReturnInFinallySuppressesException(): i32 { + try { + throw new Error("should be suppressed"); + } finally { + finallyReturnSuppressedExceptionRan = true; + // eslint-disable-next-line no-unsafe-finally + return 42; // This suppresses the exception + } +} +assert(testReturnInFinallySuppressesException() == 42); +assert(finallyReturnSuppressedExceptionRan); + +// ============================================================ +// Tests for catching abort() and runtime errors +// ============================================================ + +// Test catching abort() +function testCatchAbort(): bool { + let caught = false; + try { + abort("this should be catchable"); + } catch (e) { + caught = true; + // Verify we got an Error with the abort message + assert(e.message.includes("this should be catchable")); + } + return caught; +} +assert(testCatchAbort()); + +// Test catching runtime errors from __new (allocation too large) +function testCatchRuntimeError(): bool { + let caught = false; + try { + // Try to allocate an impossibly large object + // This should trigger an allocation error in the runtime + __new(usize.MAX_VALUE, idof()); + } catch (e) { + caught = true; + // Should have caught an allocation error + assert(e.message.length > 0); + } + return caught; +} +assert(testCatchRuntimeError()); + +// Test that abort in a function can be caught by the caller +function functionThatAborts(): void { + abort("abort from function"); +} + +function testCatchAbortFromFunction(): bool { + let caught = false; + try { + functionThatAborts(); + } catch (e) { + caught = true; + assert(e.message.includes("abort from function")); + } + return caught; +} +assert(testCatchAbortFromFunction()); + +// Test catch variable is properly typed as Error +function testCatchVariableType(): bool { + try { + throw new Error("type test"); + } catch (e) { + // e should be typed as Error, so we can access message directly + let msg: string = e.message; + return msg == "type test"; + } + return false; +} +assert(testCatchVariableType()); + +// Test catching custom Error subclass (use existing CustomError class) +function testCatchCustomError2(): bool { + try { + throw new CustomError("custom error 2", 99); + } catch (e) { + // e is typed as Error, need to cast to access code + let custom = e as CustomError; + return custom.message == "custom error 2" && custom.code == 99; + } + return false; +} +assert(testCatchCustomError2()); diff --git a/tests/compiler/exportstar-rereexport.debug.wat b/tests/compiler/exportstar-rereexport.debug.wat index 47375975e0..0c8d801861 100644 --- a/tests/compiler/exportstar-rereexport.debug.wat +++ b/tests/compiler/exportstar-rereexport.debug.wat @@ -1,20 +1,25 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func)) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func)) (type $4 (func (param i32))) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) (global $exports/Car.TIRES i32 (i32.const 4)) (global $exports/vehicles.Car.TIRES i32 (i32.const 4)) (global $exports/outer.inner.a i32 (i32.const 42)) + (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)) @@ -23,31 +28,40 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $reexport/car (mut i32) (i32.const 0)) (global $rereexport/car (mut i32) (i32.const 0)) (global $rereexport/exportsNamespaceCar (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 512)) - (global $~lib/memory/__data_end i32 (i32.const 536)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33304)) - (global $~lib/memory/__heap_base i32 (i32.const 33304)) + (global $~lib/rt/__rtti_base i32 (i32.const 2480)) + (global $~lib/memory/__data_end i32 (i32.const 2504)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35272)) + (global $~lib/memory/__heap_base i32 (i32.const 35272)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00\00\00\00\00") - (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00") - (data $10 (i32.const 512) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00\00\00\00\00") + (data $20 (i32.const 2428) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00") + (data $21 (i32.const 2480) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "a" (global $export/a)) @@ -76,10 +90,18 @@ i32.add return ) - (func $exports/Car#set:doors (param $this i32) (param $doors i32) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) local.get $this - local.get $doors - i32.store + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this @@ -145,7 +167,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -215,7 +237,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -232,7 +254,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -262,8 +284,8 @@ i32.load i32.gt_u if - i32.const 272 - i32.const 336 + i32.const 320 + i32.const 384 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -331,7 +353,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 144 + i32.const 192 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -483,7 +505,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -503,7 +525,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -566,7 +588,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -719,7 +741,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -736,7 +758,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -825,7 +847,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -868,7 +890,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -886,7 +908,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -954,7 +976,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1071,7 +1093,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1117,7 +1139,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1149,7 +1171,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1393,7 +1415,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1613,7 +1635,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1721,8 +1743,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 80 - i32.const 416 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1824,7 +1846,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1895,7 +1917,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2052,7 +2074,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2167,7 +2189,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2187,7 +2209,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2235,8 +2257,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 80 - i32.const 144 + i32.const 128 + i32.const 192 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2281,84 +2303,435 @@ local.get $ptr return ) - (func $exports/Car#get:doors (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $start:exportstar-rereexport - call $start:rereexport + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable ) - (func $export-default/theDefault + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 272 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 80 - local.get $0 - call $~lib/rt/itcms/__visit - global.get $rereexport/car - local.tee $1 + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 end - global.get $rereexport/exportsNamespaceCar - local.tee $1 if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return end - global.get $reexport/car - local.tee $1 + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end end ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $exports/Car#set:doors (param $this i32) (param $doors i32) + local.get $this + local.get $doors + i32.store + ) + (func $exports/Car#get:doors (param $this i32) (result i32) + local.get $this i32.load - local.get $1 - call $~lib/rt/itcms/__visit ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + (func $start:exportstar-rereexport + call $start:rereexport ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $exports/Car - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - unreachable + (func $export-default/theDefault ) (func $~start call $start:exportstar-rereexport @@ -2368,16 +2741,221 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33328 - i32.const 33376 + i32.const 35296 + i32.const 35344 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) - (func $exports/Car#constructor (param $this i32) (param $doors i32) (result i32) - (local $2 i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $exports/Car#constructor (param $this i32) (param $doors i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -2463,6 +3041,23 @@ call $export/mul i32.add drop + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 2 i32.const 2 call $exports/add @@ -2471,7 +3066,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 37 i32.const 1 call $~lib/builtins/abort @@ -2485,29 +3080,12 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 38 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 192 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 224 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 368 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace i32.const 0 i32.const 2 call $exports/Car#constructor @@ -2524,7 +3102,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -2554,7 +3132,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -2568,7 +3146,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -2590,7 +3168,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -2604,7 +3182,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -2618,7 +3196,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -2640,7 +3218,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -2651,4 +3229,227 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + global.get $rereexport/car + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rereexport/exportsNamespaceCar + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $reexport/car + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/exportstar-rereexport.release.wat b/tests/compiler/exportstar-rereexport.release.wat index 4a5b09f453..c4579eecc4 100644 --- a/tests/compiler/exportstar-rereexport.release.wat +++ b/tests/compiler/exportstar-rereexport.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) - (type $1 (func (result i32))) + (type $1 (func (param i32 i32) (result i32))) (type $2 (func (param i32))) (type $3 (func (param i32 i32))) - (type $4 (func (param i32) (result i32))) - (type $5 (func (param i32 i32 i32 i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32) (result i32))) (type $6 (func (param i32 i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -22,23 +22,44 @@ (global $reexport/car (mut i32) (i32.const 0)) (global $rereexport/car (mut i32) (i32.const 0)) (global $rereexport/exportsNamespaceCar (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34328)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36296)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") - (data $1 (i32.const 1084) "<") - (data $1.1 (i32.const 1096) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $2 (i32.const 1148) "<") - (data $2.1 (i32.const 1160) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $5 (i32.const 1276) "<") - (data $5.1 (i32.const 1288) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $6 (i32.const 1340) ",") - (data $6.1 (i32.const 1352) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $8 (i32.const 1420) "<") - (data $8.1 (i32.const 1432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $9 (i32.const 1484) ",") - (data $9.1 (i32.const 1496) "\02\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") - (data $10 (i32.const 1536) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (data $20 (i32.const 3452) ",") + (data $20.1 (i32.const 3464) "\02\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (data $21 (i32.const 3504) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "a" (global $export/a)) (export "renamed_a" (global $export/a)) (export "renamed_b" (global $export/b)) @@ -50,9 +71,13 @@ (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1296 + i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1104 + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 call $~lib/rt/itcms/__visit global.get $rereexport/car local.tee $0 @@ -91,7 +116,7 @@ i32.ne if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -139,7 +164,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -148,7 +173,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$120 + block $__inlined_func$~lib/rt/itcms/Object#unlink$133 local.get $1 i32.load offset=4 i32.const -4 @@ -160,19 +185,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34328 + i32.const 36296 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$120 + br $__inlined_func$~lib/rt/itcms/Object#unlink$133 end local.get $1 i32.load offset=8 @@ -180,7 +205,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -209,12 +234,12 @@ i32.const 1 else local.get $0 - i32.const 1536 + i32.const 3504 i32.load i32.gt_u if - i32.const 1296 - i32.const 1360 + i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -223,7 +248,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1540 + i32.const 3508 i32.add i32.load i32.const 32 @@ -275,7 +300,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -289,7 +314,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -335,7 +360,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -418,7 +443,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -432,7 +457,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -493,7 +518,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -526,7 +551,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -541,7 +566,7 @@ i32.ne if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -592,7 +617,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -664,7 +689,7 @@ i64.lt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -689,7 +714,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -716,7 +741,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -788,10 +813,10 @@ if unreachable end - i32.const 34336 + i32.const 36304 i32.const 0 i32.store - i32.const 35904 + i32.const 37872 i32.const 0 i32.store loop $for-loop|0 @@ -802,7 +827,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34336 + i32.const 36304 i32.add i32.const 0 i32.store offset=4 @@ -820,7 +845,7 @@ i32.add i32.const 2 i32.shl - i32.const 34336 + i32.const 36304 i32.add i32.const 0 i32.store offset=96 @@ -838,14 +863,14 @@ br $for-loop|0 end end - i32.const 34336 - i32.const 35908 + i32.const 36304 + i32.const 37876 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34336 + i32.const 36304 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -930,7 +955,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34328 + i32.const 36296 i32.lt_u if local.get $0 @@ -1019,14 +1044,14 @@ i32.ne if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34328 + i32.const 36296 i32.lt_u if local.get $0 @@ -1049,7 +1074,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34328 + i32.const 36296 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1078,7 +1103,7 @@ end if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1108,18 +1133,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1127,32 +1219,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1165,23 +1261,35 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 - local.set $0 + local.set $2 loop $do-loop|0 - local.get $0 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $0 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1195,9 +1303,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end - local.get $0 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1220,39 +1328,94 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $1 + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 call $~lib/rt/tlsf/searchBlock - local.tee $0 + local.tee $2 i32.eqz if memory.size - local.tee $0 + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end i32.const 4 - local.get $1 + local.get $4 i32.load offset=1568 - local.get $0 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.tee $2 - local.get $0 + local.tee $3 local.get $2 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1260,8 +1423,8 @@ unreachable end end - local.get $1 - local.get $0 + local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1269,119 +1432,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $1 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $0 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $0 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $0 + local.get $4 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $0 + local.get $2 i32.load - local.tee $2 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub local.tee $3 i32.const 16 i32.ge_u if - local.get $0 local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $0 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $2 + local.get $5 + i32.add + local.tee $5 local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $1 - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $0 local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $0 + local.get $2 i32.const 4 i32.add - local.get $0 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $0 - i32.const 4 + local.get $2 + local.get $1 i32.store offset=12 + local.get $2 local.get $0 - i32.const 4 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $0 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $0 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $0 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $0 + local.get $2 i32.load i32.const -4 i32.and @@ -1389,54 +1569,225 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $0 + local.get $2 i32.const 20 i32.add - local.tee $0 + local.tee $1 i32.const 0 - i32.store align=1 local.get $0 + memory.fill + local.get $1 ) - (func $export-default/theDefault - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $exports/Car - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3528 + i32.lt_s + if + i32.const 36320 + i32.const 36368 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $export-default/theDefault ) (func $~start (local $0 i32) - block $__inlined_func$start:exportstar-rereexport$1 + block $__inlined_func$start:exportstar-rereexport global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1560 + i32.const 3528 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1447,7 +1798,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1560 + i32.const 3528 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1456,34 +1807,34 @@ memory.size i32.const 16 i32.shl - i32.const 34328 + i32.const 36296 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 + i32.const 1268 + i32.const 1264 i32.store - i32.const 1224 - i32.const 1216 + i32.const 1272 + i32.const 1264 i32.store - i32.const 1216 + i32.const 1264 global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 + i32.const 1300 + i32.const 1296 i32.store - i32.const 1256 - i32.const 1248 + i32.const 1304 + i32.const 1296 i32.store - i32.const 1248 + i32.const 1296 global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 + i32.const 1444 + i32.const 1440 i32.store - i32.const 1400 - i32.const 1392 + i32.const 1448 + i32.const 1440 i32.store - i32.const 1392 + i32.const 1440 global.set $~lib/rt/itcms/fromSpace call $exports/Car#constructor global.set $reexport/car @@ -1497,7 +1848,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -1519,7 +1870,7 @@ i32.ne if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -1537,7 +1888,7 @@ i32.ne if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -1547,15 +1898,215 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$start:exportstar-rereexport$1 + br $__inlined_func$start:exportstar-rereexport + end + i32.const 36320 + i32.const 36368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3528 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3528 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$141 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$141 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - i32.const 34352 - i32.const 34400 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36320 + i32.const 36368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3528 + i32.lt_s + if + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $exports/Car#constructor (result i32) (local $0 i32) @@ -1564,11 +2115,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1560 + i32.const 3528 i32.lt_s if - i32.const 34352 - i32.const 34400 + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1578,6 +2129,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1605,11 +2158,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1560 + i32.const 3528 i32.lt_s if - i32.const 34352 - i32.const 34400 + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1628,4 +2181,32 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/extends-baseaggregate.debug.wat b/tests/compiler/extends-baseaggregate.debug.wat index ae6d22ffe4..feae3bb371 100644 --- a/tests/compiler/extends-baseaggregate.debug.wat +++ b/tests/compiler/extends-baseaggregate.debug.wat @@ -1,17 +1,23 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 f64))) - (type $8 (func (param i32 i32 i64) (result i32))) - (type $9 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 f64))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i64) (result i32))) + (type $12 (func (result i32))) (global $extends-baseaggregate/poolB i32 (i32.const 64)) (global $extends-baseaggregate/poolA i32 (i32.const 144)) + (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -20,37 +26,474 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/rt/__rtti_base i32 (i32.const 672)) - (global $~lib/memory/__data_end i32 (i32.const 716)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33484)) - (global $~lib/memory/__heap_base i32 (i32.const 33484)) + (global $~lib/rt/__rtti_base i32 (i32.const 2640)) + (global $~lib/memory/__data_end i32 (i32.const 2684)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35452)) + (global $~lib/memory/__heap_base i32 (i32.const 35452)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\10\00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data $2 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data $3 (i32.const 124) ",\00\00\00\00\00\00\00\00\00\00\00\t\00\00\00\10\00\00\00p\00\00\00p\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $5 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 336) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 428) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 480) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $13 (i32.const 620) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $14 (i32.const 672) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\02A\00\00") + (data $4 (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $5 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $6 (i32.const 236) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 268) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 300) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $10 (i32.const 492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 524) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $12 (i32.const 924) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 1980) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $14 (i32.const 2076) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $16 (i32.const 2204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2540) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $24 (i32.const 2588) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $25 (i32.const 2640) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\02A\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 524 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 524 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 524 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 524 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 944 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 944 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2000 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2000 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -115,7 +558,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 2224 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -185,7 +628,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 2224 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -202,7 +645,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 2224 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -232,8 +675,8 @@ i32.load i32.gt_u if - i32.const 384 - i32.const 448 + i32.const 2352 + i32.const 2416 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -301,7 +744,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 256 + i32.const 2224 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -453,7 +896,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -473,7 +916,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -536,7 +979,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -689,7 +1132,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -706,7 +1149,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -795,7 +1238,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -838,7 +1281,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -856,7 +1299,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -924,7 +1367,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1041,7 +1484,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1087,7 +1530,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1119,7 +1562,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1363,7 +1806,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1583,7 +2026,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 2224 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1691,8 +2134,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 192 - i32.const 528 + i32.const 2160 + i32.const 2496 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1794,7 +2237,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1865,7 +2308,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2022,7 +2465,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2137,7 +2580,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2157,7 +2600,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2205,8 +2648,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 192 - i32.const 256 + i32.const 2160 + i32.const 2224 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2276,7 +2719,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 2224 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2409,187 +2852,226 @@ local.get $length_ i32.store offset=12 ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $extends-baseaggregate/poolB - local.tee $1 + (func $~start + call $start:extends-baseaggregate + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 35472 + i32.const 35520 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $extends-baseaggregate/poolA - local.tee $1 + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 256 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - i32.const 384 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 592 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 192 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $extends-baseaggregate/B1~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $extends-baseaggregate/A1~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load offset=16 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $extends-baseaggregate/C1~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $extends-baseaggregate/A2~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $extends-baseaggregate/A1~visit - ) - (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/array/Array#get:length_ (param $this i32) (result i32) - local.get $this - i32.load offset=12 - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/array/Array - block $~lib/array/Array - block $extends-baseaggregate/A2 - block $extends-baseaggregate/C1 - block $extends-baseaggregate/A1 - block $extends-baseaggregate/B1 - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $extends-baseaggregate/B1 $extends-baseaggregate/A1 $extends-baseaggregate/C1 $extends-baseaggregate/A2 $~lib/array/Array $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $extends-baseaggregate/B1~visit - return - end - local.get $0 - local.get $1 - call $extends-baseaggregate/A1~visit - return - end - local.get $0 - local.get $1 - call $extends-baseaggregate/C1~visit - return - end - local.get $0 - local.get $1 - call $extends-baseaggregate/A2~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - unreachable + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~start - call $start:extends-baseaggregate + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 192 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33504 - i32.const 33552 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 224 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 288 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 288 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 2096 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $extends-baseaggregate/A1#constructor (param $this i32) (result i32) (local $1 i32) @@ -2731,8 +3213,8 @@ i32.shr_u i32.gt_u if - i32.const 592 - i32.const 640 + i32.const 2560 + i32.const 2608 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -2895,13 +3377,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 304 + i32.const 2272 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 336 + i32.const 2304 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 480 + i32.const 2448 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace global.get $extends-baseaggregate/poolA @@ -2924,11 +3406,18 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $cur i32) - (local $end i32) - (local $val i32) - (local $5 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2937,39 +3426,379 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 - drop - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array#get:dataStart - local.set $cur - local.get $cur - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array#get:length_ + local.get $radix i32.const 2 - i32.shl - i32.add - local.set $end - loop $while-continue|0 - local.get $cur - local.get $end - i32.lt_u - if - local.get $cur - i32.load - local.set $val - local.get $val - if - local.get $val + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 320 + i32.const 448 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 512 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $extends-baseaggregate/poolB + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $extends-baseaggregate/poolA + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 2352 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2560 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2160 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 944 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $extends-baseaggregate/B1~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $extends-baseaggregate/A1~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load offset=16 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $extends-baseaggregate/C1~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $extends-baseaggregate/A2~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $extends-baseaggregate/A1~visit + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $extends-baseaggregate/A2 + block $extends-baseaggregate/C1 + block $extends-baseaggregate/A1 + block $extends-baseaggregate/B1 + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $extends-baseaggregate/B1 $extends-baseaggregate/A1 $extends-baseaggregate/C1 $extends-baseaggregate/A2 $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $extends-baseaggregate/B1~visit + return + end + local.get $0 + local.get $1 + call $extends-baseaggregate/A1~visit + return + end + local.get $0 + local.get $1 + call $extends-baseaggregate/C1~visit + return + end + local.get $0 + local.get $1 + call $extends-baseaggregate/A2~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val local.get $cookie call $~lib/rt/itcms/__visit end @@ -3064,32 +3893,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/object/Object#constructor (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) ) diff --git a/tests/compiler/extends-baseaggregate.release.wat b/tests/compiler/extends-baseaggregate.release.wat index 997ed95a65..f5ad3eaf18 100644 --- a/tests/compiler/extends-baseaggregate.release.wat +++ b/tests/compiler/extends-baseaggregate.release.wat @@ -1,13 +1,13 @@ (module (type $0 (func (param i32))) (type $1 (func)) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) (type $7 (func (param i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $8 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,7 +18,7 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34508)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36476)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\01") @@ -28,24 +28,243 @@ (data $2.1 (i32.const 1128) "\01") (data $3 (i32.const 1148) ",") (data $3.1 (i32.const 1160) "\t\00\00\00\10\00\00\00p\04\00\00p\04") - (data $4 (i32.const 1196) "<") - (data $4.1 (i32.const 1208) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $5 (i32.const 1260) "<") - (data $5.1 (i32.const 1272) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $8 (i32.const 1388) "<") - (data $8.1 (i32.const 1400) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $9 (i32.const 1452) ",") - (data $9.1 (i32.const 1464) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $11 (i32.const 1532) "<") - (data $11.1 (i32.const 1544) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $12 (i32.const 1596) ",") - (data $12.1 (i32.const 1608) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $13 (i32.const 1644) ",") - (data $13.1 (i32.const 1656) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $14 (i32.const 1696) "\n\00\00\00 \00\00\00 \00\00\00 ") - (data $14.1 (i32.const 1732) "\02A\00\00\02A") + (data $4 (i32.const 1196) "\1c") + (data $4.1 (i32.const 1208) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $5 (i32.const 1228) "\1c") + (data $5.1 (i32.const 1240) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $6 (i32.const 1260) "\1c") + (data $6.1 (i32.const 1272) "\02") + (data $7 (i32.const 1292) "\1c") + (data $7.1 (i32.const 1304) "\02\00\00\00\02\00\00\00:") + (data $8 (i32.const 1324) "|") + (data $8.1 (i32.const 1336) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $9 (i32.const 1452) "<") + (data $9.1 (i32.const 1464) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $10 (i32.const 1516) "\1c") + (data $10.1 (i32.const 1528) "\02\00\00\00\02\00\00\000") + (data $11 (i32.const 1548) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $12 (i32.const 1948) "\1c\04") + (data $12.1 (i32.const 1960) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $13 (i32.const 3004) "\\") + (data $13.1 (i32.const 3016) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $14 (i32.const 3100) "<") + (data $14.1 (i32.const 3112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $15 (i32.const 3164) "<") + (data $15.1 (i32.const 3176) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $16 (i32.const 3228) "<") + (data $16.1 (i32.const 3240) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $19 (i32.const 3356) "<") + (data $19.1 (i32.const 3368) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $20 (i32.const 3420) ",") + (data $20.1 (i32.const 3432) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $22 (i32.const 3500) "<") + (data $22.1 (i32.const 3512) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $23 (i32.const 3564) ",") + (data $23.1 (i32.const 3576) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $24 (i32.const 3612) ",") + (data $24.1 (i32.const 3624) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $25 (i32.const 3664) "\n\00\00\00 \00\00\00 \00\00\00 ") + (data $25.1 (i32.const 3700) "\02A\00\00\02A") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3708 + i32.lt_s + if + i32.const 36496 + i32.const 36544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa32$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1536 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1548 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1548 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1548 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1548 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -53,11 +272,15 @@ call $~lib/rt/itcms/__visit i32.const 1168 call $~lib/rt/itcms/__visit - i32.const 1408 + i32.const 3376 call $~lib/rt/itcms/__visit - i32.const 1616 + i32.const 3584 call $~lib/rt/itcms/__visit - i32.const 1216 + i32.const 3184 + call $~lib/rt/itcms/__visit + i32.const 1968 + call $~lib/rt/itcms/__visit + i32.const 3024 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -78,7 +301,7 @@ i32.ne if i32.const 0 - i32.const 1280 + i32.const 3248 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -111,7 +334,7 @@ i32.eqz if i32.const 0 - i32.const 1280 + i32.const 3248 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -120,7 +343,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$142 + block $__inlined_func$~lib/rt/itcms/Object#unlink$155 local.get $0 i32.load offset=4 i32.const -4 @@ -132,19 +355,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34508 + i32.const 36476 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1280 + i32.const 3248 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$142 + br $__inlined_func$~lib/rt/itcms/Object#unlink$155 end local.get $0 i32.load offset=8 @@ -152,7 +375,7 @@ i32.eqz if i32.const 0 - i32.const 1280 + i32.const 3248 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -181,12 +404,12 @@ i32.const 1 else local.get $1 - i32.const 1696 + i32.const 3664 i32.load i32.gt_u if - i32.const 1408 - i32.const 1472 + i32.const 3376 + i32.const 3440 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -195,7 +418,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1700 + i32.const 3668 i32.add i32.load i32.const 32 @@ -266,7 +489,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -280,7 +503,7 @@ i32.lt_u if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -326,7 +549,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -409,7 +632,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -423,7 +646,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -484,7 +707,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -517,7 +740,7 @@ i32.lt_u if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -532,7 +755,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -583,7 +806,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -655,7 +878,7 @@ i64.lt_u if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -680,7 +903,7 @@ i32.gt_u if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -707,7 +930,7 @@ i32.gt_u if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -779,10 +1002,10 @@ if unreachable end - i32.const 34512 + i32.const 36480 i32.const 0 i32.store - i32.const 36080 + i32.const 38048 i32.const 0 i32.store loop $for-loop|0 @@ -793,7 +1016,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34512 + i32.const 36480 i32.add i32.const 0 i32.store offset=4 @@ -811,7 +1034,7 @@ i32.add i32.const 2 i32.shl - i32.const 34512 + i32.const 36480 i32.add i32.const 0 i32.store offset=96 @@ -829,14 +1052,14 @@ br $for-loop|0 end end - i32.const 34512 - i32.const 36084 + i32.const 36480 + i32.const 38052 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34512 + i32.const 36480 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -921,7 +1144,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34508 + i32.const 36476 i32.lt_u if local.get $0 @@ -1010,14 +1233,14 @@ i32.ne if i32.const 0 - i32.const 1280 + i32.const 3248 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34508 + i32.const 36476 i32.lt_u if local.get $0 @@ -1040,7 +1263,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34508 + i32.const 36476 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1069,7 +1292,7 @@ end if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1153,7 +1376,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1205,7 +1428,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1237,8 +1460,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1216 - i32.const 1280 + i32.const 3184 + i32.const 3248 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1248,7 +1471,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1269,7 +1492,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1302,8 +1525,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1216 - i32.const 1552 + i32.const 3184 + i32.const 3520 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1405,7 +1628,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1420,7 +1643,7 @@ i32.gt_u if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1439,7 +1662,7 @@ i32.and if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1555,7 +1778,7 @@ i32.eqz if i32.const 0 - i32.const 1280 + i32.const 3248 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1603,209 +1826,95 @@ end end ) - (func $~lib/array/Array~visit (param $0 i32) + (func $~start + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1740 - i32.lt_s - if - i32.const 34528 - i32.const 34576 - i32.const 1 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 3708 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 36476 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $~lib/array/Array - block $~lib/array/Array - block $extends-baseaggregate/A2 - block $extends-baseaggregate/A1 - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $extends-baseaggregate/A1 $folding-inner0 $extends-baseaggregate/A2 $~lib/array/Array $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load offset=16 - call $~lib/rt/itcms/__visit - return - end - local.get $0 - i32.load offset=16 - call $~lib/rt/itcms/__visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - unreachable - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1740 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - memory.size - i32.const 16 - i32.shl - i32.const 34508 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1332 - i32.const 1328 - i32.store - i32.const 1336 - i32.const 1328 - i32.store - i32.const 1328 - global.set $~lib/rt/itcms/pinSpace - i32.const 1364 - i32.const 1360 - i32.store - i32.const 1368 - i32.const 1360 - i32.store - i32.const 1360 - global.set $~lib/rt/itcms/toSpace - i32.const 1508 - i32.const 1504 - i32.store - i32.const 1512 - i32.const 1504 - i32.store - i32.const 1504 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 1168 - 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 1740 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1740 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $6 - i32.eqz + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 3300 + i32.const 3296 + i32.store + i32.const 3304 + i32.const 3296 + i32.store + i32.const 3296 + global.set $~lib/rt/itcms/pinSpace + i32.const 3332 + i32.const 3328 + i32.store + i32.const 3336 + i32.const 3328 + i32.store + i32.const 3328 + global.set $~lib/rt/itcms/toSpace + i32.const 3476 + i32.const 3472 + i32.store + i32.const 3480 + i32.const 3472 + i32.store + i32.const 3472 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3708 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3708 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $6 + i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 20 @@ -1823,7 +1932,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1740 + i32.const 3708 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -1885,7 +1994,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1740 + i32.const 3708 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -1906,7 +2015,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1740 + i32.const 3708 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -1927,8 +2036,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1616 - i32.const 1664 + i32.const 3584 + i32.const 3632 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -1937,7 +2046,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1168 i32.store - block $__inlined_func$~lib/rt/itcms/__renew$141 + block $__inlined_func$~lib/rt/itcms/__renew$145 i32.const 1073741820 local.get $0 i32.const 1 @@ -1980,7 +2089,7 @@ i32.store offset=16 local.get $0 local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew$141 + br $__inlined_func$~lib/rt/itcms/__renew$145 end local.get $3 local.get $2 @@ -2052,11 +2161,325 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34528 - i32.const 34576 + i32.const 36496 + i32.const 36544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3708 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3708 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$161 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1280 + local.set $0 + br $__inlined_func$~lib/string/String#concat$161 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36496 + i32.const 36544 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3708 + i32.lt_s + if + i32.const 36496 + i32.const 36544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1216 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1248 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1312 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1312 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3120 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array~visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3708 + i32.lt_s + if + i32.const 36496 + i32.const 36544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $extends-baseaggregate/A2 + block $extends-baseaggregate/A1 + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $extends-baseaggregate/A1 $folding-inner0 $extends-baseaggregate/A2 $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load offset=16 + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load offset=16 + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) ) diff --git a/tests/compiler/extends-recursive.debug.wat b/tests/compiler/extends-recursive.debug.wat index e0d1b59343..f8fd9d3493 100644 --- a/tests/compiler/extends-recursive.debug.wat +++ b/tests/compiler/extends-recursive.debug.wat @@ -1,14 +1,20 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32 i32))) - (type $5 (func (param i32 i32) (result i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,30 +23,467 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 416)) - (global $~lib/memory/__data_end i32 (i32.const 444)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33212)) - (global $~lib/memory/__heap_base i32 (i32.const 33212)) + (global $~lib/rt/__rtti_base i32 (i32.const 2384)) + (global $~lib/memory/__data_end i32 (i32.const 2412)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35180)) + (global $~lib/memory/__heap_base i32 (i32.const 35180)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 416) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2384) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -105,7 +548,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -175,7 +618,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -192,7 +635,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -222,8 +665,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -291,7 +734,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -443,7 +886,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -463,7 +906,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -526,7 +969,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -679,7 +1122,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -696,7 +1139,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -785,7 +1228,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -828,7 +1271,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -846,7 +1289,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -914,7 +1357,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1031,7 +1474,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1077,7 +1520,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1109,7 +1552,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1353,7 +1796,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1573,7 +2016,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1681,8 +2124,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1784,7 +2227,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1855,7 +2298,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2012,7 +2455,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2127,7 +2570,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2147,7 +2590,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2195,8 +2638,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2256,7 +2699,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2327,92 +2770,19 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 call $extends-recursive/Child#constructor drop ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $extends-recursive/Child~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $extends-recursive/Parent~visit - ) - (func $extends-recursive/Parent~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $extends-recursive/Parent - block $extends-recursive/Child - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $extends-recursive/Child $extends-recursive/Parent $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $extends-recursive/Child~visit - return - end - local.get $0 - local.get $1 - call $extends-recursive/Parent~visit - return - end - unreachable - ) (func $~start call $start:extends-recursive ) @@ -2421,14 +2791,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33232 - i32.const 33280 + i32.const 35200 + i32.const 35248 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $extends-recursive/Parent#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2513,6 +3088,153 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2541,4 +3263,83 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $extends-recursive/Child~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $extends-recursive/Parent~visit + ) + (func $extends-recursive/Parent~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $extends-recursive/Parent + block $extends-recursive/Child + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $extends-recursive/Child $extends-recursive/Parent $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $extends-recursive/Child~visit + return + end + local.get $0 + local.get $1 + call $extends-recursive/Parent~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/extends-recursive.release.wat b/tests/compiler/extends-recursive.release.wat index 5ccacc74bf..0c2e5afadb 100644 --- a/tests/compiler/extends-recursive.release.wat +++ b/tests/compiler/extends-recursive.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,27 +17,250 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34236)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36204)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1440) "\06\00\00\00 \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3408) "\06\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3436 + i32.lt_s + if + i32.const 36224 + i32.const 36272 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -58,7 +281,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -106,7 +329,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -115,7 +338,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$116 + block $__inlined_func$~lib/rt/itcms/Object#unlink$129 local.get $0 i32.load offset=4 i32.const -4 @@ -127,19 +350,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34236 + i32.const 36204 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$116 + br $__inlined_func$~lib/rt/itcms/Object#unlink$129 end local.get $0 i32.load offset=8 @@ -147,7 +370,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -176,12 +399,12 @@ i32.const 1 else local.get $1 - i32.const 1440 + i32.const 3408 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -190,7 +413,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1444 + i32.const 3412 i32.add i32.load i32.const 32 @@ -242,7 +465,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -256,7 +479,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -302,7 +525,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -385,7 +608,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -399,7 +622,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -460,7 +683,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -493,7 +716,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -508,7 +731,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -559,7 +782,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -631,7 +854,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -656,7 +879,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -683,7 +906,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -755,10 +978,10 @@ if unreachable end - i32.const 34240 + i32.const 36208 i32.const 0 i32.store - i32.const 35808 + i32.const 37776 i32.const 0 i32.store loop $for-loop|0 @@ -769,7 +992,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34240 + i32.const 36208 i32.add i32.const 0 i32.store offset=4 @@ -787,7 +1010,7 @@ i32.add i32.const 2 i32.shl - i32.const 34240 + i32.const 36208 i32.add i32.const 0 i32.store offset=96 @@ -805,14 +1028,14 @@ br $for-loop|0 end end - i32.const 34240 - i32.const 35812 + i32.const 36208 + i32.const 37780 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34240 + i32.const 36208 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -897,7 +1120,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34236 + i32.const 36204 i32.lt_u if local.get $0 @@ -986,14 +1209,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34236 + i32.const 36204 i32.lt_u if local.get $0 @@ -1016,7 +1239,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34236 + i32.const 36204 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1045,7 +1268,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1129,7 +1352,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1181,7 +1404,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1213,8 +1436,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1056 - i32.const 1120 + i32.const 3024 + i32.const 3088 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1224,7 +1447,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1245,7 +1468,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1278,8 +1501,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1056 - i32.const 1392 + i32.const 3024 + i32.const 3360 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1381,7 +1604,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1396,7 +1619,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1415,7 +1638,7 @@ i32.and if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1520,30 +1743,6 @@ memory.fill local.get $1 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - return - end - unreachable - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) (func $~start (local $0 i32) (local $1 i32) @@ -1552,34 +1751,34 @@ memory.size i32.const 16 i32.shl - i32.const 34236 + i32.const 36204 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 8 @@ -1587,7 +1786,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3436 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1608,7 +1807,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3436 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1633,7 +1832,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3436 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1673,12 +1872,236 @@ global.set $~lib/memory/__stack_pointer br $__inlined_func$start:extends-recursive$1 end - i32.const 34256 - i32.const 34304 + i32.const 36224 + i32.const 36272 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3436 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3436 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$136 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$136 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36224 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3436 + i32.lt_s + if + i32.const 36224 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) ) diff --git a/tests/compiler/features/gc.debug.wat b/tests/compiler/features/gc.debug.wat index 8f24f21139..e7e134f808 100644 --- a/tests/compiler/features/gc.debug.wat +++ b/tests/compiler/features/gc.debug.wat @@ -1,7 +1,31 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (type $1) (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $features/gc/globalFunc funcref (ref.null nofunc)) (global $features/gc/globalExtern externref (ref.null noextern)) (global $features/gc/globalAny anyref (ref.null none)) @@ -9,12 +33,33 @@ (global $features/gc/globalI31 i31ref (ref.null none)) (global $features/gc/globalStruct structref (ref.null none)) (global $features/gc/globalArray arrayref (ref.null none)) - (global $~lib/memory/__data_end i32 (i32.const 60)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) - (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2452)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35220)) + (global $~lib/memory/__heap_base i32 (i32.const 35220)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00g\00c\00.\00t\00s\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00g\00c\00.\00t\00s\00") + (data $20 (i32.const 2432) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "globalFunc" (global $features/gc/globalFunc)) @@ -26,7 +71,2636 @@ (export "globalArray" (global $features/gc/globalArray)) (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $features/gc/test_i31 (type $0) + (func $~lib/rt/common/OBJECT#get:rtSize (type $0) (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (type $0) (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (type $1) (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (type $1) (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (type $0) (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (type $0) (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (type $0) (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (type $0) (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (type $2) (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (type $1) (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (type $0) (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (type $1) (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (type $2) (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (type $0) (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (type $0) (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (type $0) (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (type $0) (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (type $5) (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (type $2) (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (type $1) (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (type $2) (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (type $0) (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (type $0) (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (type $1) (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (type $1) (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (type $1) (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (type $1) (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (type $0) (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (type $0) (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (type $0) (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (type $1) (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (type $1) (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (type $6) (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize (type $4) + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (type $0) (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (type $1) (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (type $2) (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (type $2) (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (type $7) (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt (type $4) + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (type $0) (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (type $0) (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (type $0) (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (type $3) (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (type $1) (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (type $5) (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (type $3) (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (type $0) (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (type $1) (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (type $1) (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (type $3) (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (type $0) (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (type $5) (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (type $8) (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (type $9) (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (type $10) (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (type $3) (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $features/gc/test_i31 (type $4) (local $ref (ref i31)) (local $val i32) (local $uval i32) @@ -37,7 +2711,7 @@ ref.is_null if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3 i32.const 3 call $~lib/builtins/abort @@ -50,10 +2724,27 @@ i31.get_u local.set $uval ) - (func $start:features/gc (type $0) + (func $start:features/gc (type $4) + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $features/gc/test_i31 ) - (func $~start (type $0) + (func $~start (type $4) global.get $~started if return @@ -62,4 +2753,421 @@ global.set $~started call $start:features/gc ) + (func $~stack_check (type $4) + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35248 + i32.const 35296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (type $3) (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (type $3) (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (type $11) (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (type $3) (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (type $2) (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (type $1) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (type $1) (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (type $1) (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/features/gc.release.wat b/tests/compiler/features/gc.release.wat index e5baaab127..bb6b07645f 100644 --- a/tests/compiler/features/gc.release.wat +++ b/tests/compiler/features/gc.release.wat @@ -1,5 +1,9 @@ (module (type $0 (func)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $features/gc/globalFunc funcref (ref.null nofunc)) (global $features/gc/globalExtern externref (ref.null noextern)) (global $features/gc/globalAny anyref (ref.null none)) @@ -7,9 +11,42 @@ (global $features/gc/globalI31 i31ref (ref.null none)) (global $features/gc/globalStruct structref (ref.null none)) (global $features/gc/globalArray arrayref (ref.null none)) + (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00g\00c\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1c\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00g\00c\00.\00t\00s") + (data $20 (i32.const 3456) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "globalFunc" (global $features/gc/globalFunc)) (export "globalExtern" (global $features/gc/globalExtern)) (export "globalAny" (global $features/gc/globalAny)) @@ -20,5 +57,43 @@ (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~start (type $0) + global.get $~started + if + return + end + i32.const 1 + global.set $~started + memory.size + i32.const 16 + i32.shl + i32.const 36244 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace ) ) diff --git a/tests/compiler/features/reference-types.debug.wat b/tests/compiler/features/reference-types.debug.wat index 77709d2bd9..be7d7312e8 100644 --- a/tests/compiler/features/reference-types.debug.wat +++ b/tests/compiler/features/reference-types.debug.wat @@ -1,12 +1,36 @@ (module - (type $0 (func)) - (type $1 (func (result externref))) - (type $2 (func (param externref) (result externref))) - (type $3 (func (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (result externref))) + (type $7 (func (param externref) (result externref))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (result i32))) + (type $10 (func (param i32 i64 i32))) + (type $11 (func (param i64 i32) (result i32))) + (type $12 (func (param i32 i64 i32 i32))) + (type $13 (func (param i32 i32 i32 i32))) (import "reference-types" "somethingReal" (func $features/reference-types/somethingReal (result externref))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "reference-types" "somethingNull" (func $features/reference-types/somethingNull (result externref))) (import "reference-types" "external" (func $features/reference-types/external (param externref) (result externref))) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $features/reference-types/funcGlobal (mut funcref) (ref.null nofunc)) (global $features/reference-types/funcGlobalInit (mut funcref) (ref.null nofunc)) (global $features/reference-types/anyGlobal (mut externref) (ref.null noextern)) @@ -16,12 +40,33 @@ (global $features/reference-types/b funcref (ref.null nofunc)) (global $features/reference-types/nonNullFunc (mut funcref) (ref.null nofunc)) (global $features/reference-types/nonNullReal (mut externref) (ref.null noextern)) - (global $~lib/memory/__data_end i32 (i32.const 220)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32988)) - (global $~lib/memory/__heap_base i32 (i32.const 32988)) + (global $~lib/rt/__rtti_base i32 (i32.const 2592)) + (global $~lib/memory/__data_end i32 (i32.const 2612)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35380)) + (global $~lib/memory/__heap_base i32 (i32.const 35380)) (memory $0 1) - (data $0 (i32.const 12) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s\00\00\00\00\00\00\00") - (data $1 (i32.const 92) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s\00\00\00\00\00\00\00") + (data $20 (i32.const 2460) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2592) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (elem declare func $features/reference-types/someFunc) @@ -35,6 +80,2635 @@ (export "nonNullReal" (global $features/reference-types/nonNullReal)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $features/reference-types/testLocal (local $local funcref) ref.null nofunc @@ -46,7 +2720,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 70 i32.const 3 call $~lib/builtins/abort @@ -61,7 +2735,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 72 i32.const 3 call $~lib/builtins/abort @@ -79,7 +2753,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 70 i32.const 3 call $~lib/builtins/abort @@ -94,7 +2768,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 72 i32.const 3 call $~lib/builtins/abort @@ -107,6 +2781,23 @@ (local $funcLocal funcref) (local $1 funcref) (local $2 externref) + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $features/reference-types/somethingReal ref.is_null i32.eqz @@ -116,7 +2807,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 16 i32.const 3 call $~lib/builtins/abort @@ -133,7 +2824,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -149,7 +2840,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 26 i32.const 3 call $~lib/builtins/abort @@ -164,7 +2855,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 29 i32.const 3 call $~lib/builtins/abort @@ -178,7 +2869,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 55 i32.const 1 call $~lib/builtins/abort @@ -193,7 +2884,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 57 i32.const 1 call $~lib/builtins/abort @@ -206,7 +2897,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 59 i32.const 1 call $~lib/builtins/abort @@ -219,7 +2910,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 62 i32.const 1 call $~lib/builtins/abort @@ -234,7 +2925,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 64 i32.const 1 call $~lib/builtins/abort @@ -247,7 +2938,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 66 i32.const 1 call $~lib/builtins/abort @@ -261,7 +2952,7 @@ ref.is_null if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 81 i32.const 1 call $~lib/builtins/abort @@ -271,7 +2962,7 @@ ref.is_null if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 83 i32.const 1 call $~lib/builtins/abort @@ -283,7 +2974,7 @@ ref.is_null if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 86 i32.const 3 call $~lib/builtins/abort @@ -293,8 +2984,8 @@ local.tee $1 ref.is_null if (result funcref) - i32.const 112 - i32.const 32 + i32.const 2480 + i32.const 2400 i32.const 95 i32.const 28 call $~lib/builtins/abort @@ -307,8 +2998,8 @@ local.tee $2 ref.is_null if (result externref) - i32.const 112 - i32.const 32 + i32.const 2480 + i32.const 2400 i32.const 96 i32.const 28 call $~lib/builtins/abort @@ -337,4 +3028,421 @@ (func $~start call $start:features/reference-types ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35408 + i32.const 35456 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/features/reference-types.release.wat b/tests/compiler/features/reference-types.release.wat index 1c580b033e..6b3fc4d0c8 100644 --- a/tests/compiler/features/reference-types.release.wat +++ b/tests/compiler/features/reference-types.release.wat @@ -1,22 +1,70 @@ (module - (type $0 (func (result externref))) - (type $1 (func)) - (type $2 (func (param externref) (result externref))) - (type $3 (func (param i32 i32 i32 i32))) + (type $0 (func)) + (type $1 (func (result externref))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param externref) (result externref))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i32 i32 i32))) (import "reference-types" "somethingReal" (func $features/reference-types/somethingReal (result externref))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "reference-types" "somethingNull" (func $features/reference-types/somethingNull (result externref))) (import "reference-types" "external" (func $features/reference-types/external (param externref) (result externref))) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $features/reference-types/funcGlobal (mut funcref) (ref.null nofunc)) (global $features/reference-types/a externref (ref.null noextern)) (global $features/reference-types/b funcref (ref.null nofunc)) (global $features/reference-types/nonNullFunc (mut funcref) (ref.null nofunc)) (global $features/reference-types/nonNullReal (mut externref) (ref.null noextern)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36404)) (memory $0 1) - (data $0 (i32.const 1036) "L") - (data $0.1 (i32.const 1048) "\02\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s") - (data $1 (i32.const 1116) "|") - (data $1.1 (i32.const 1128) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) "L") + (data $19.1 (i32.const 3416) "\02\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s") + (data $20 (i32.const 3484) "|") + (data $20.1 (i32.const 3496) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") + (data $21 (i32.const 3616) "\04\00\00\00 \00\00\00 \00\00\00 ") (elem declare func $features/reference-types/someFunc) (export "external" (func $features/reference-types/external)) (export "somethingReal" (func $features/reference-types/somethingReal)) @@ -28,6 +76,1695 @@ (export "nonNullReal" (global $features/reference-types/nonNullReal)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$121 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36404 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$121 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3616 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3620 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36416 + i32.const 0 + i32.store + i32.const 37984 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36416 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36416 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36416 + i32.const 37988 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36416 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36404 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36404 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36404 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3636 + i32.lt_s + if + i32.const 36432 + i32.const 36480 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $features/reference-types/someFunc ) (func $features/reference-types/internal (param $0 externref) (result externref) @@ -38,11 +1775,43 @@ ) (func $~start (local $0 externref) + memory.size + i32.const 16 + i32.shl + i32.const 36404 + 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 call $features/reference-types/somethingReal ref.is_null if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 16 i32.const 3 call $~lib/builtins/abort @@ -53,7 +1822,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -63,7 +1832,7 @@ ref.is_null if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 26 i32.const 3 call $~lib/builtins/abort @@ -74,7 +1843,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 29 i32.const 3 call $~lib/builtins/abort @@ -85,7 +1854,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 55 i32.const 1 call $~lib/builtins/abort @@ -101,8 +1870,8 @@ local.tee $0 ref.is_null if - i32.const 1136 - i32.const 1056 + i32.const 3504 + i32.const 3424 i32.const 96 i32.const 28 call $~lib/builtins/abort @@ -111,4 +1880,228 @@ local.get $0 global.set $features/reference-types/nonNullReal ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$126 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$126 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36432 + i32.const 36480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3636 + i32.lt_s + if + i32.const 36432 + i32.const 36480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/field-initialization.debug.wat b/tests/compiler/field-initialization.debug.wat index acb835fa02..82898b9121 100644 --- a/tests/compiler/field-initialization.debug.wat +++ b/tests/compiler/field-initialization.debug.wat @@ -1,15 +1,21 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (type $9 (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $12 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,40 +24,476 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 768)) - (global $~lib/memory/__data_end i32 (i32.const 876)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33644)) - (global $~lib/memory/__heap_base i32 (i32.const 33644)) + (global $~lib/rt/__rtti_base i32 (i32.const 2736)) + (global $~lib/memory/__data_end i32 (i32.const 2844)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35612)) + (global $~lib/memory/__heap_base i32 (i32.const 35612)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00f\00i\00e\00l\00d\00-\00i\00n\00i\00t\00i\00a\00l\00i\00z\00a\00t\00i\00o\00n\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $10 (i32.const 540) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $11 (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00b\00b\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00c\00\00\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00b\00b\00b\00\00\00\00\00\00\00") - (data $15 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00c\00c\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 768) "\1a\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00f\00i\00e\00l\00d\00-\00i\00n\00i\00t\00i\00a\00l\00i\00z\00a\00t\00i\00o\00n\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $21 (i32.const 2508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $22 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00b\00b\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00c\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00b\00b\00b\00\00\00\00\00\00\00") + (data $26 (i32.const 2700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00c\00c\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2736) "\1a\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -116,7 +558,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -186,7 +628,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -203,7 +645,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -233,8 +675,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -302,7 +744,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -454,7 +896,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -474,7 +916,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -537,7 +979,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -690,7 +1132,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -707,7 +1149,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -796,7 +1238,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -839,7 +1281,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -857,7 +1299,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -925,7 +1367,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1042,7 +1484,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1088,7 +1530,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1120,7 +1562,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1364,7 +1806,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1584,7 +2026,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1692,8 +2134,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1795,7 +2237,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1866,7 +2308,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2023,7 +2465,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2138,7 +2580,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2158,7 +2600,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2206,8 +2648,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2285,7 +2727,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2517,19 +2959,6 @@ local.get $this i32.load offset=4 ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u - return - ) (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) (local $ptr1 i32) (local $ptr2 i32) @@ -2686,364 +3115,338 @@ local.get $this i32.load ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 512 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + (func $~start + call $start:field-initialization ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35632 + i32.const 35680 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) - (func $field-initialization/Ref_Init~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $field-initialization/Nullable_Init~visit (param $0 i32) (param $1 i32) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $field-initialization/Nullable~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) - (func $field-initialization/Ref_Init_Ctor~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load + (func $field-initialization/Value_Init#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $field-initialization/Ref_Ctor_Init~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 + i32.store offset=4 local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $field-initialization/Ref_Ctor_Param~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 + i32.store offset=4 local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load + i32.const 1 + call $field-initialization/Value_Init#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/itcms/__visit ) - (func $field-initialization/Nullable_Ctor~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 + (func $field-initialization/Value#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load + i32.store offset=4 local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $field-initialization/Nullable_Init_Ctor~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load + i32.store offset=4 local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $field-initialization/Nullable_Ctor_Init~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 + i32.const 0 + call $field-initialization/Value#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $field-initialization/Inherit~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $field-initialization/Inherit_Base~visit - ) - (func $field-initialization/Inherit_Base~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $field-initialization/Inherit_Ctor~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $field-initialization/Inherit_Base~visit - ) - (func $field-initialization/SomeObject~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $field-initialization/SomeOtherObject~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $field-initialization/SomeObject~visit - local.get $0 - i32.load offset=8 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $field-initialization/Flow_Balanced~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $field-initialization/Ref_Init_InlineCtor~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $field-initialization/Ref_InlineCtor_Init~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $field-initialization/Ref_InlineCtor_Init - block $field-initialization/Ref_Init_InlineCtor - block $field-initialization/Flow_Balanced - block $field-initialization/SomeOtherObject - block $field-initialization/SomeObject - block $field-initialization/Inherit_Ctor - block $field-initialization/Inherit_Base - block $field-initialization/Inherit - block $field-initialization/Nullable_Ctor_Init - block $field-initialization/Nullable_Init_Ctor - block $field-initialization/Nullable_Ctor - block $field-initialization/Ref_Ctor_Param - block $field-initialization/Ref_Ctor_Init - block $field-initialization/Ref_Init_Ctor - block $field-initialization/Value_Ctor_Init - block $field-initialization/Value_Init_Ctor - block $field-initialization/Value_Ctor - block $field-initialization/Nullable - block $field-initialization/Nullable_Init - block $field-initialization/Ref_Init - block $field-initialization/Value - block $field-initialization/Value_Init - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $field-initialization/Value_Init $field-initialization/Value $field-initialization/Ref_Init $field-initialization/Nullable_Init $field-initialization/Nullable $field-initialization/Value_Ctor $field-initialization/Value_Init_Ctor $field-initialization/Value_Ctor_Init $field-initialization/Ref_Init_Ctor $field-initialization/Ref_Ctor_Init $field-initialization/Ref_Ctor_Param $field-initialization/Nullable_Ctor $field-initialization/Nullable_Init_Ctor $field-initialization/Nullable_Ctor_Init $field-initialization/Inherit $field-initialization/Inherit_Base $field-initialization/Inherit_Ctor $field-initialization/SomeObject $field-initialization/SomeOtherObject $field-initialization/Flow_Balanced $field-initialization/Ref_Init_InlineCtor $field-initialization/Ref_InlineCtor_Init $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - local.get $0 - local.get $1 - call $field-initialization/Ref_Init~visit - return - end - local.get $0 - local.get $1 - call $field-initialization/Nullable_Init~visit - return - end - local.get $0 - local.get $1 - call $field-initialization/Nullable~visit - return - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $field-initialization/Ref_Init_Ctor~visit - return - end - local.get $0 - local.get $1 - call $field-initialization/Ref_Ctor_Init~visit - return - end - local.get $0 - local.get $1 - call $field-initialization/Ref_Ctor_Param~visit - return - end - local.get $0 - local.get $1 - call $field-initialization/Nullable_Ctor~visit - return - end - local.get $0 - local.get $1 - call $field-initialization/Nullable_Init_Ctor~visit - return - end - local.get $0 - local.get $1 - call $field-initialization/Nullable_Ctor_Init~visit - return - end - local.get $0 - local.get $1 - call $field-initialization/Inherit~visit - return - end - local.get $0 - local.get $1 - call $field-initialization/Inherit_Base~visit - return - end - local.get $0 - local.get $1 - call $field-initialization/Inherit_Ctor~visit - return - end - local.get $0 - local.get $1 - call $field-initialization/SomeObject~visit - return - end - local.get $0 - local.get $1 - call $field-initialization/SomeOtherObject~visit - return - end - local.get $0 - local.get $1 - call $field-initialization/Flow_Balanced~visit - return - end - local.get $0 - local.get $1 - call $field-initialization/Ref_Init_InlineCtor~visit - return - end - local.get $0 - local.get $1 - call $field-initialization/Ref_InlineCtor_Init~visit - return - end - unreachable - ) - (func $~start - call $start:field-initialization - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 33664 - i32.const 33712 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end ) - (func $field-initialization/Value_Init#constructor (param $this i32) (result i32) + (func $field-initialization/Ref_Init#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $this i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 4 + i32.const 6 call $~lib/rt/itcms/__new local.tee $this i32.store @@ -3064,122 +3467,27 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 1 - call $field-initialization/Value_Init#set:a + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $field-initialization/Ref_Init#set:a local.get $this local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $field-initialization/Value#constructor (param $this i32) (result i32) + (func $field-initialization/Nullable_Init#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/object/Object#constructor - local.tee $this - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $field-initialization/Value#set:a - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $field-initialization/Ref_Init#constructor (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/object/Object#constructor - local.tee $this - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $field-initialization/Ref_Init#set:a - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $field-initialization/Nullable_Init#constructor (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -4128,13 +4436,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer @@ -4154,7 +4462,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 8 i32.const 3 call $~lib/builtins/abort @@ -4177,7 +4485,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 16 i32.const 3 call $~lib/builtins/abort @@ -4200,7 +4508,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 24 i32.const 3 call $~lib/builtins/abort @@ -4223,7 +4531,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 32 i32.const 3 call $~lib/builtins/abort @@ -4246,7 +4554,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 40 i32.const 3 call $~lib/builtins/abort @@ -4269,7 +4577,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 52 i32.const 3 call $~lib/builtins/abort @@ -4292,7 +4600,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 62 i32.const 3 call $~lib/builtins/abort @@ -4315,7 +4623,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 73 i32.const 3 call $~lib/builtins/abort @@ -4338,7 +4646,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -4361,7 +4669,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 94 i32.const 3 call $~lib/builtins/abort @@ -4396,7 +4704,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -4419,7 +4727,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -4442,7 +4750,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 124 i32.const 3 call $~lib/builtins/abort @@ -4465,7 +4773,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 135 i32.const 3 call $~lib/builtins/abort @@ -4488,7 +4796,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 147 i32.const 3 call $~lib/builtins/abort @@ -4511,7 +4819,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 153 i32.const 3 call $~lib/builtins/abort @@ -4544,7 +4852,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 164 i32.const 3 call $~lib/builtins/abort @@ -4567,7 +4875,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 165 i32.const 3 call $~lib/builtins/abort @@ -4605,7 +4913,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 167 i32.const 3 call $~lib/builtins/abort @@ -4628,7 +4936,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 168 i32.const 3 call $~lib/builtins/abort @@ -4646,7 +4954,7 @@ local.get $34 i32.store offset=4 local.get $34 - i32.const 624 + i32.const 2592 call $field-initialization/SomeObject#set:b local.get $21 i32.const 0 @@ -4666,7 +4974,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 170 i32.const 3 call $~lib/builtins/abort @@ -4684,12 +4992,12 @@ local.get $34 i32.store offset=4 local.get $34 - i32.const 624 + i32.const 2592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 171 i32.const 3 call $~lib/builtins/abort @@ -4715,7 +5023,7 @@ local.get $34 i32.store offset=4 local.get $34 - i32.const 656 + i32.const 2624 call $field-initialization/SomeObject#set:b local.get $23 local.tee $24 @@ -4732,7 +5040,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 173 i32.const 3 call $~lib/builtins/abort @@ -4750,12 +5058,12 @@ local.get $34 i32.store offset=4 local.get $34 - i32.const 656 + i32.const 2624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 174 i32.const 3 call $~lib/builtins/abort @@ -4773,7 +5081,7 @@ local.get $34 i32.store offset=4 local.get $34 - i32.const 688 + i32.const 2656 call $field-initialization/SomeOtherObject#set:c local.get $25 i32.const 0 @@ -4796,7 +5104,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 182 i32.const 3 call $~lib/builtins/abort @@ -4819,7 +5127,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 183 i32.const 3 call $~lib/builtins/abort @@ -4837,12 +5145,12 @@ local.get $34 i32.store offset=4 local.get $34 - i32.const 688 + i32.const 2656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 184 i32.const 3 call $~lib/builtins/abort @@ -4868,7 +5176,7 @@ local.get $34 i32.store offset=4 local.get $34 - i32.const 720 + i32.const 2688 call $field-initialization/SomeObject#set:b local.get $27 local.set $34 @@ -4876,7 +5184,7 @@ local.get $34 i32.store offset=4 local.get $34 - i32.const 752 + i32.const 2720 call $field-initialization/SomeOtherObject#set:c local.get $27 local.tee $28 @@ -4893,7 +5201,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 186 i32.const 3 call $~lib/builtins/abort @@ -4911,12 +5219,12 @@ local.get $34 i32.store offset=4 local.get $34 - i32.const 720 + i32.const 2688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 187 i32.const 3 call $~lib/builtins/abort @@ -4934,12 +5242,12 @@ local.get $34 i32.store offset=4 local.get $34 - i32.const 752 + i32.const 2720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 188 i32.const 3 call $~lib/builtins/abort @@ -4963,7 +5271,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 205 i32.const 3 call $~lib/builtins/abort @@ -5012,7 +5320,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 218 i32.const 3 call $~lib/builtins/abort @@ -5069,7 +5377,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 230 i32.const 3 call $~lib/builtins/abort @@ -5080,6 +5388,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -5123,8 +5578,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 512 - i32.const 560 + i32.const 2480 + i32.const 2528 i32.const 52 i32.const 43 call $~lib/builtins/abort @@ -5149,4 +5604,336 @@ local.get $3 return ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2480 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $field-initialization/Ref_Init~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Nullable_Init~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Nullable~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Ref_Init_Ctor~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Ref_Ctor_Init~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Ref_Ctor_Param~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Nullable_Ctor~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Nullable_Init_Ctor~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Nullable_Ctor_Init~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Inherit~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $field-initialization/Inherit_Base~visit + ) + (func $field-initialization/Inherit_Base~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Inherit_Ctor~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $field-initialization/Inherit_Base~visit + ) + (func $field-initialization/SomeObject~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/SomeOtherObject~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $field-initialization/SomeObject~visit + local.get $0 + i32.load offset=8 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Flow_Balanced~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Ref_Init_InlineCtor~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Ref_InlineCtor_Init~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $field-initialization/Ref_InlineCtor_Init + block $field-initialization/Ref_Init_InlineCtor + block $field-initialization/Flow_Balanced + block $field-initialization/SomeOtherObject + block $field-initialization/SomeObject + block $field-initialization/Inherit_Ctor + block $field-initialization/Inherit_Base + block $field-initialization/Inherit + block $field-initialization/Nullable_Ctor_Init + block $field-initialization/Nullable_Init_Ctor + block $field-initialization/Nullable_Ctor + block $field-initialization/Ref_Ctor_Param + block $field-initialization/Ref_Ctor_Init + block $field-initialization/Ref_Init_Ctor + block $field-initialization/Value_Ctor_Init + block $field-initialization/Value_Init_Ctor + block $field-initialization/Value_Ctor + block $field-initialization/Nullable + block $field-initialization/Nullable_Init + block $field-initialization/Ref_Init + block $field-initialization/Value + block $field-initialization/Value_Init + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $field-initialization/Value_Init $field-initialization/Value $field-initialization/Ref_Init $field-initialization/Nullable_Init $field-initialization/Nullable $field-initialization/Value_Ctor $field-initialization/Value_Init_Ctor $field-initialization/Value_Ctor_Init $field-initialization/Ref_Init_Ctor $field-initialization/Ref_Ctor_Init $field-initialization/Ref_Ctor_Param $field-initialization/Nullable_Ctor $field-initialization/Nullable_Init_Ctor $field-initialization/Nullable_Ctor_Init $field-initialization/Inherit $field-initialization/Inherit_Base $field-initialization/Inherit_Ctor $field-initialization/SomeObject $field-initialization/SomeOtherObject $field-initialization/Flow_Balanced $field-initialization/Ref_Init_InlineCtor $field-initialization/Ref_InlineCtor_Init $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + local.get $0 + local.get $1 + call $field-initialization/Ref_Init~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Nullable_Init~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Nullable~visit + return + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $field-initialization/Ref_Init_Ctor~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Ref_Ctor_Init~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Ref_Ctor_Param~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Nullable_Ctor~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Nullable_Init_Ctor~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Nullable_Ctor_Init~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Inherit~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Inherit_Base~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Inherit_Ctor~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/SomeObject~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/SomeOtherObject~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Flow_Balanced~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Ref_Init_InlineCtor~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Ref_InlineCtor_Init~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/field-initialization.release.wat b/tests/compiler/field-initialization.release.wat index c5911e7208..8564e40126 100644 --- a/tests/compiler/field-initialization.release.wat +++ b/tests/compiler/field-initialization.release.wat @@ -1,13 +1,12 @@ (module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) - (type $4 (func (param i32 i32) (result i32))) - (type $5 (func (param i32) (result i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,46 +17,269 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34668)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36636)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) "L") - (data $8.1 (i32.const 1448) "\02\00\00\00.\00\00\00f\00i\00e\00l\00d\00-\00i\00n\00i\00t\00i\00a\00l\00i\00z\00a\00t\00i\00o\00n\00.\00t\00s") - (data $9 (i32.const 1516) ",") - (data $9.1 (i32.const 1528) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $10 (i32.const 1564) "<") - (data $10.1 (i32.const 1576) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data $11 (i32.const 1628) "\1c") - (data $11.1 (i32.const 1640) "\02\00\00\00\02\00\00\00b") - (data $12 (i32.const 1660) "\1c") - (data $12.1 (i32.const 1672) "\02\00\00\00\04\00\00\00b\00b") - (data $13 (i32.const 1692) "\1c") - (data $13.1 (i32.const 1704) "\02\00\00\00\02\00\00\00c") - (data $14 (i32.const 1724) "\1c") - (data $14.1 (i32.const 1736) "\02\00\00\00\06\00\00\00b\00b\00b") - (data $15 (i32.const 1756) "\1c") - (data $15.1 (i32.const 1768) "\02\00\00\00\04\00\00\00c\00c") - (data $16 (i32.const 1792) "\1a\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") - (data $16.1 (i32.const 1832) " \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "L") + (data $19.1 (i32.const 3416) "\02\00\00\00.\00\00\00f\00i\00e\00l\00d\00-\00i\00n\00i\00t\00i\00a\00l\00i\00z\00a\00t\00i\00o\00n\00.\00t\00s") + (data $20 (i32.const 3484) ",") + (data $20.1 (i32.const 3496) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $21 (i32.const 3532) "<") + (data $21.1 (i32.const 3544) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $22 (i32.const 3596) "\1c") + (data $22.1 (i32.const 3608) "\02\00\00\00\02\00\00\00b") + (data $23 (i32.const 3628) "\1c") + (data $23.1 (i32.const 3640) "\02\00\00\00\04\00\00\00b\00b") + (data $24 (i32.const 3660) "\1c") + (data $24.1 (i32.const 3672) "\02\00\00\00\02\00\00\00c") + (data $25 (i32.const 3692) "\1c") + (data $25.1 (i32.const 3704) "\02\00\00\00\06\00\00\00b\00b\00b") + (data $26 (i32.const 3724) "\1c") + (data $26.1 (i32.const 3736) "\02\00\00\00\04\00\00\00c\00c") + (data $27 (i32.const 3760) "\1a\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") + (data $27.1 (i32.const 3800) " \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3868 + i32.lt_s + if + i32.const 36656 + i32.const 36704 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1536 + i32.const 3504 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -78,7 +300,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -111,7 +333,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -120,7 +342,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$241 + block $__inlined_func$~lib/rt/itcms/Object#unlink$253 local.get $0 i32.load offset=4 i32.const -4 @@ -132,19 +354,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34668 + i32.const 36636 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$241 + br $__inlined_func$~lib/rt/itcms/Object#unlink$253 end local.get $0 i32.load offset=8 @@ -152,7 +374,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -181,12 +403,12 @@ i32.const 1 else local.get $1 - i32.const 1792 + i32.const 3760 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -195,7 +417,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1796 + i32.const 3764 i32.add i32.load i32.const 32 @@ -266,7 +488,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -280,7 +502,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -326,7 +548,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -409,7 +631,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -423,7 +645,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -484,7 +706,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -517,7 +739,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -532,7 +754,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -583,7 +805,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -655,7 +877,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -680,7 +902,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -707,7 +929,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -779,10 +1001,10 @@ if unreachable end - i32.const 34672 + i32.const 36640 i32.const 0 i32.store - i32.const 36240 + i32.const 38208 i32.const 0 i32.store loop $for-loop|0 @@ -793,7 +1015,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34672 + i32.const 36640 i32.add i32.const 0 i32.store offset=4 @@ -811,7 +1033,7 @@ i32.add i32.const 2 i32.shl - i32.const 34672 + i32.const 36640 i32.add i32.const 0 i32.store offset=96 @@ -829,14 +1051,14 @@ br $for-loop|0 end end - i32.const 34672 - i32.const 36244 + i32.const 36640 + i32.const 38212 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34672 + i32.const 36640 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -921,7 +1143,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34668 + i32.const 36636 i32.lt_u if local.get $0 @@ -1010,14 +1232,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34668 + i32.const 36636 i32.lt_u if local.get $0 @@ -1040,7 +1262,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34668 + i32.const 36636 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1069,7 +1291,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1153,7 +1375,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1205,7 +1427,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1237,8 +1459,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1056 - i32.const 1120 + i32.const 3024 + i32.const 3088 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1248,7 +1470,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1269,7 +1491,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1302,8 +1524,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1056 - i32.const 1392 + i32.const 3024 + i32.const 3360 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1405,7 +1627,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1420,7 +1642,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1439,7 +1661,7 @@ i32.and if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1554,7 +1776,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1598,62 +1820,208 @@ end end ) - (func $~lib/rt/__visit_members (param $0 i32) + (func $~start + call $start:field-initialization + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - block $invalid - block $field-initialization/SomeOtherObject - block $field-initialization/SomeObject - block $field-initialization/Value_Ctor_Init - block $field-initialization/Value_Init_Ctor - block $field-initialization/Value_Ctor - block $field-initialization/Value - block $field-initialization/Value_Init - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $field-initialization/Value_Init $field-initialization/Value $folding-inner0 $folding-inner0 $folding-inner0 $field-initialization/Value_Ctor $field-initialization/Value_Init_Ctor $field-initialization/Value_Ctor_Init $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $field-initialization/SomeObject $field-initialization/SomeOtherObject $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - return + global.get $~lib/memory/__stack_pointer + i32.const 3868 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3868 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$258 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$258 end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 local.get $0 - i32.load offset=8 - call $~lib/rt/itcms/__visit - return + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36656 + i32.const 36704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3868 + i32.lt_s + if + i32.const 36656 + i32.const 36704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - call $start:field-initialization + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $field-initialization/Inherit_Base#constructor (param $0 i32) (result i32) (local $1 i32) @@ -1662,11 +2030,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1722,11 +2090,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1784,11 +2152,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1887,7 +2255,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$118 + block $__inlined_func$~lib/util/string/compareImpl$117 loop $while-continue|1 local.get $0 local.tee $3 @@ -1907,7 +2275,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$118 + br_if $__inlined_func$~lib/util/string/compareImpl$117 local.get $2 i32.const 2 i32.add @@ -1943,11 +2311,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1995,7 +2363,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2005,34 +2373,34 @@ memory.size i32.const 16 i32.shl - i32.const 34668 + i32.const 36636 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2040,7 +2408,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2081,7 +2449,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 8 i32.const 3 call $~lib/builtins/abort @@ -2093,7 +2461,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2132,7 +2500,7 @@ i32.load if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 16 i32.const 3 call $~lib/builtins/abort @@ -2144,7 +2512,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2195,7 +2563,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 24 i32.const 3 call $~lib/builtins/abort @@ -2207,7 +2575,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2258,7 +2626,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 32 i32.const 3 call $~lib/builtins/abort @@ -2270,7 +2638,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2312,7 +2680,7 @@ i32.load if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 40 i32.const 3 call $~lib/builtins/abort @@ -2324,7 +2692,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2355,7 +2723,7 @@ i32.load if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 52 i32.const 3 call $~lib/builtins/abort @@ -2367,7 +2735,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2400,7 +2768,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 62 i32.const 3 call $~lib/builtins/abort @@ -2412,7 +2780,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2451,7 +2819,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 73 i32.const 3 call $~lib/builtins/abort @@ -2463,7 +2831,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2506,7 +2874,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -2518,7 +2886,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2570,7 +2938,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 94 i32.const 3 call $~lib/builtins/abort @@ -2589,7 +2957,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2631,7 +2999,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -2643,7 +3011,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2677,7 +3045,7 @@ i32.load if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -2689,7 +3057,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2732,7 +3100,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 124 i32.const 3 call $~lib/builtins/abort @@ -2744,7 +3112,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2796,7 +3164,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 135 i32.const 3 call $~lib/builtins/abort @@ -2808,7 +3176,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2842,7 +3210,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 147 i32.const 3 call $~lib/builtins/abort @@ -2854,7 +3222,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2888,7 +3256,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 153 i32.const 3 call $~lib/builtins/abort @@ -2915,7 +3283,7 @@ i32.load if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 164 i32.const 3 call $~lib/builtins/abort @@ -2935,7 +3303,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 165 i32.const 3 call $~lib/builtins/abort @@ -2967,7 +3335,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 167 i32.const 3 call $~lib/builtins/abort @@ -2987,7 +3355,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 168 i32.const 3 call $~lib/builtins/abort @@ -3003,10 +3371,10 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 1648 + i32.const 3616 i32.store offset=4 local.get $1 - i32.const 1648 + i32.const 3616 call $~lib/rt/itcms/__link local.get $1 i32.const 0 @@ -3020,7 +3388,7 @@ i32.load if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 170 i32.const 3 call $~lib/builtins/abort @@ -3035,12 +3403,12 @@ local.tee $0 i32.store offset=4 local.get $0 - i32.const 1648 + i32.const 3616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 171 i32.const 3 call $~lib/builtins/abort @@ -3062,10 +3430,10 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 1680 + i32.const 3648 i32.store offset=4 local.get $1 - i32.const 1680 + i32.const 3648 call $~lib/rt/itcms/__link local.get $1 i32.store offset=104 @@ -3078,7 +3446,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 173 i32.const 3 call $~lib/builtins/abort @@ -3093,12 +3461,12 @@ local.tee $0 i32.store offset=4 local.get $0 - i32.const 1680 + i32.const 3648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 174 i32.const 3 call $~lib/builtins/abort @@ -3113,10 +3481,10 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 1712 + i32.const 3680 i32.store offset=8 local.get $1 - i32.const 1712 + i32.const 3680 call $~lib/rt/itcms/__link local.get $1 i32.const 0 @@ -3133,7 +3501,7 @@ i32.load if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 182 i32.const 3 call $~lib/builtins/abort @@ -3153,7 +3521,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 183 i32.const 3 call $~lib/builtins/abort @@ -3168,12 +3536,12 @@ local.tee $0 i32.store offset=4 local.get $0 - i32.const 1712 + i32.const 3680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 184 i32.const 3 call $~lib/builtins/abort @@ -3194,19 +3562,19 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 1744 + i32.const 3712 i32.store offset=4 local.get $1 - i32.const 1744 + i32.const 3712 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - i32.const 1776 + i32.const 3744 i32.store offset=8 local.get $1 - i32.const 1776 + i32.const 3744 call $~lib/rt/itcms/__link local.get $1 i32.store offset=120 @@ -3219,7 +3587,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 186 i32.const 3 call $~lib/builtins/abort @@ -3234,12 +3602,12 @@ local.tee $0 i32.store offset=4 local.get $0 - i32.const 1744 + i32.const 3712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 187 i32.const 3 call $~lib/builtins/abort @@ -3254,12 +3622,12 @@ local.tee $0 i32.store offset=4 local.get $0 - i32.const 1776 + i32.const 3744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 188 i32.const 3 call $~lib/builtins/abort @@ -3271,7 +3639,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3323,7 +3691,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 205 i32.const 3 call $~lib/builtins/abort @@ -3360,7 +3728,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 218 i32.const 3 call $~lib/builtins/abort @@ -3406,7 +3774,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 230 i32.const 3 call $~lib/builtins/abort @@ -3418,8 +3786,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3431,11 +3799,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3467,11 +3835,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1900 + i32.const 3868 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3492,4 +3860,58 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $field-initialization/SomeOtherObject + block $field-initialization/SomeObject + block $field-initialization/Value_Ctor_Init + block $field-initialization/Value_Init_Ctor + block $field-initialization/Value_Ctor + block $field-initialization/Value + block $field-initialization/Value_Init + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $field-initialization/Value_Init $field-initialization/Value $folding-inner0 $folding-inner0 $folding-inner0 $field-initialization/Value_Ctor $field-initialization/Value_Init_Ctor $field-initialization/Value_Ctor_Init $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $field-initialization/SomeObject $field-initialization/SomeOtherObject $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) ) diff --git a/tests/compiler/field.debug.wat b/tests/compiler/field.debug.wat index 6623182b6f..0e98a31012 100644 --- a/tests/compiler/field.debug.wat +++ b/tests/compiler/field.debug.wat @@ -2,15 +2,21 @@ (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32 i32))) - (type $5 (func (param i32 i32) (result i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (type $9 (func (param i32 i32 i32) (result i32))) - (type $10 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (param i32 i32 i32) (result i32))) + (type $12 (func (param i32 i32 i32 i32))) + (type $13 (func (param i32 i32 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 $~lib/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -19,31 +25,468 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 448)) - (global $~lib/memory/__data_end i32 (i32.const 480)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33248)) - (global $~lib/memory/__heap_base i32 (i32.const 33248)) + (global $~lib/rt/__rtti_base i32 (i32.const 2416)) + (global $~lib/memory/__data_end i32 (i32.const 2448)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35216)) + (global $~lib/memory/__heap_base i32 (i32.const 35216)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 448) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\02A\00\00\02\t\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2416) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\02A\00\00\02\t\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -108,7 +551,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -178,7 +621,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -195,7 +638,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -225,8 +668,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -294,7 +737,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -446,7 +889,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -466,7 +909,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -529,7 +972,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -682,7 +1125,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -699,7 +1142,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -788,7 +1231,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -831,7 +1274,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -849,7 +1292,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -917,7 +1360,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1034,7 +1477,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1080,7 +1523,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1112,7 +1555,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1356,7 +1799,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1576,7 +2019,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1684,8 +2127,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1787,7 +2230,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1858,7 +2301,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2015,7 +2458,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2130,7 +2573,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2150,7 +2593,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2198,8 +2641,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2275,7 +2718,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2394,139 +2837,238 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace call $field/testNoStaticConflict call $~lib/rt/itcms/__collect ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $field/NoStaticConflict~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) - local.get $this - i32.load offset=4 + (func $~start + call $start:field ) - (func $~lib/array/Array<~lib/string/String>#get:length_ (param $this i32) (result i32) - local.get $this - i32.load offset=12 + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35248 + i32.const 35296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) - (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load - ) - (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/array/Array - block $~lib/array/Array<~lib/string/String> - block $field/NoStaticConflict - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $field/NoStaticConflict $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $field/NoStaticConflict~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - unreachable + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~start - call $start:field + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33280 - i32.const 33328 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $field/NoStaticConflict#constructor (param $this i32) (result i32) (local $1 i32) @@ -2571,7 +3113,7 @@ i32.const 0 i32.const 2 i32.const 5 - i32.const 432 + i32.const 2400 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -2615,11 +3157,18 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) - (local $cur i32) - (local $end i32) - (local $val i32) - (local $5 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2628,88 +3177,132 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 - drop - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/string/String>#get:dataStart - local.set $cur - local.get $cur - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/string/String>#get:length_ + local.get $radix i32.const 2 - i32.shl - i32.add - local.set $end - loop $while-continue|0 - local.get $cur - local.get $end - i32.lt_u + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq if - local.get $cur - i32.load - local.set $val - local.get $val - if - local.get $val - local.get $cookie - call $~lib/rt/itcms/__visit - end - local.get $cur - i32.const 4 + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 i32.add - local.set $cur - br $while-continue|0 + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core end end - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/string/String>#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $out + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $12 + return ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) @@ -2792,4 +3385,212 @@ local.get $7 return ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $field/NoStaticConflict~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<~lib/string/String>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array<~lib/string/String> + block $field/NoStaticConflict + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $field/NoStaticConflict $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $field/NoStaticConflict~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/field.release.wat b/tests/compiler/field.release.wat index c267b61219..4aa9f5027a 100644 --- a/tests/compiler/field.release.wat +++ b/tests/compiler/field.release.wat @@ -3,10 +3,10 @@ (type $1 (func (param i32))) (type $2 (func (param i32 i32))) (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,30 +17,253 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34272)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36240)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) "\1c") - (data $8.1 (i32.const 1448) "\01") - (data $9 (i32.const 1472) "\07\00\00\00 \00\00\00 \00\00\00 ") - (data $9.1 (i32.const 1496) "\02A\00\00\02\t") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "\1c") + (data $19.1 (i32.const 3416) "\01") + (data $20 (i32.const 3440) "\07\00\00\00 \00\00\00 \00\00\00 ") + (data $20.1 (i32.const 3464) "\02A\00\00\02\t") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3472 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -61,7 +284,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -94,7 +317,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -103,7 +326,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$127 + block $__inlined_func$~lib/rt/itcms/Object#unlink$140 local.get $0 i32.load offset=4 i32.const -4 @@ -115,19 +338,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34272 + i32.const 36240 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$127 + br $__inlined_func$~lib/rt/itcms/Object#unlink$140 end local.get $0 i32.load offset=8 @@ -135,7 +358,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -164,12 +387,12 @@ i32.const 1 else local.get $1 - i32.const 1472 + i32.const 3440 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -178,7 +401,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1476 + i32.const 3444 i32.add i32.load i32.const 32 @@ -249,7 +472,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -263,7 +486,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -309,7 +532,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -392,7 +615,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -406,7 +629,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -467,7 +690,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -500,7 +723,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -515,7 +738,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -566,7 +789,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -638,7 +861,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -663,7 +886,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -690,7 +913,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -762,10 +985,10 @@ if unreachable end - i32.const 34272 + i32.const 36240 i32.const 0 i32.store - i32.const 35840 + i32.const 37808 i32.const 0 i32.store loop $for-loop|0 @@ -776,7 +999,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34272 + i32.const 36240 i32.add i32.const 0 i32.store offset=4 @@ -794,7 +1017,7 @@ i32.add i32.const 2 i32.shl - i32.const 34272 + i32.const 36240 i32.add i32.const 0 i32.store offset=96 @@ -812,14 +1035,14 @@ br $for-loop|0 end end - i32.const 34272 - i32.const 35844 + i32.const 36240 + i32.const 37812 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34272 + i32.const 36240 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -904,7 +1127,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34272 + i32.const 36240 i32.lt_u if local.get $0 @@ -993,14 +1216,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34272 + i32.const 36240 i32.lt_u if local.get $0 @@ -1023,7 +1246,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34272 + i32.const 36240 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1052,7 +1275,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1136,7 +1359,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1188,7 +1411,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1220,8 +1443,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1056 - i32.const 1120 + i32.const 3024 + i32.const 3088 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1231,7 +1454,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1252,7 +1475,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1285,8 +1508,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1056 - i32.const 1392 + i32.const 3024 + i32.const 3360 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1388,7 +1611,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1403,7 +1626,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1422,7 +1645,7 @@ i32.and if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1537,7 +1760,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1589,34 +1812,34 @@ memory.size i32.const 16 i32.shl - i32.const 34272 + i32.const 36240 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 8 @@ -1624,7 +1847,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1504 + i32.const 3472 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1636,7 +1859,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1504 + i32.const 3472 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1660,7 +1883,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1504 + i32.const 3472 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1690,7 +1913,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1504 + i32.const 3472 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1701,7 +1924,7 @@ i32.const 1 call $~lib/rt/itcms/__new local.tee $3 - i32.const 1456 + i32.const 3424 i32.const 0 memory.copy local.get $3 @@ -1785,13 +2008,216 @@ global.set $~lib/rt/itcms/threshold return end - i32.const 34304 - i32.const 34352 + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + call $start:field + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3472 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$148 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$148 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36272 + i32.const 36320 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3472 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) (local $2 i32) @@ -1833,7 +2259,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1504 + i32.const 3472 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1881,7 +2307,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1504 + i32.const 3472 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1891,8 +2317,8 @@ end unreachable end - i32.const 34304 - i32.const 34352 + i32.const 36272 + i32.const 36320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1909,7 +2335,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~start - call $start:field - ) ) diff --git a/tests/compiler/for.debug.wat b/tests/compiler/for.debug.wat index 6e699486f2..9068177a2b 100644 --- a/tests/compiler/for.debug.wat +++ b/tests/compiler/for.debug.wat @@ -6,10 +6,15 @@ (type $4 (func (param i32 i32) (result i32))) (type $5 (func (param i32 i32 i32))) (type $6 (func (result i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $for/ran (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/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)) @@ -18,794 +23,429 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 448)) - (global $~lib/memory/__data_end i32 (i32.const 472)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33240)) - (global $~lib/memory/__heap_base i32 (i32.const 33240)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2416)) + (global $~lib/memory/__data_end i32 (i32.const 2440)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35208)) + (global $~lib/memory/__heap_base i32 (i32.const 35208)) (memory $0 1) - (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s\00") - (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 448) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s\00") + (data $20 (i32.const 2416) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) - (func $for/testInitExpression - (local $i i32) - i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i - i32.const 10 - i32.lt_s + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne if - local.get $i i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 i32.add - local.set $i - br $for-loop|0 + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 end end - local.get $i - i32.const 10 + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 i32.eq - i32.eqz if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev i32.const 0 - i32.const 32 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - ) - (func $for/testInitStatement - (local $j i32) - i32.const 0 - local.set $j - loop $for-loop|0 - local.get $j - i32.const 10 - i32.lt_s + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz if - local.get $j - i32.const 1 - i32.add - local.set $j - br $for-loop|0 + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end - local.get $j - i32.const 10 - i32.eq + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev i32.eqz if i32.const 0 - i32.const 32 - i32.const 19 - i32.const 3 + i32.const 192 + i32.const 132 + i32.const 16 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $for/ran + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next ) - (func $for/testEmpty - (local $i i32) - i32.const 10 - local.set $i - loop $for-loop|0 - local.get $i - i32.const 0 - i32.gt_s - if - local.get $i - i32.const 1 - i32.sub - local.set $i - br $for-loop|0 - end - end - local.get $i - i32.const 0 - i32.eq - i32.eqz + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u if - i32.const 0 - i32.const 32 - i32.const 29 - i32.const 3 + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $for/ran + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return ) - (func $for/testConditionOmitted - (local $i i32) - i32.const 0 - local.set $i - block $for-break0 - loop $for-loop|0 - i32.const 1 - if - local.get $i - i32.const 10 - i32.eq - if - br $for-break0 - end - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 - end - end - end - local.get $i - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo i32.const 32 - i32.const 39 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.and + i32.const 0 + i32.ne end - i32.const 1 - global.set $for/ran + return ) - (func $for/testAllOmitted - (local $i i32) - i32.const 10 - local.set $i - block $for-break0 - loop $for-loop|0 - i32.const 1 - if - local.get $i - i32.const 1 - i32.sub - local.tee $i - i32.const 0 - i32.eq - if - br $for-break0 - end - br $for-loop|0 - end - end - end - local.get $i - i32.const 0 + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter i32.eq - i32.eqz if - i32.const 0 - i32.const 32 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - ) - (func $for/testAlwaysTrue - (local $i i32) - i32.const 0 - local.set $i - block $for-break0 - loop $for-loop|0 - i32.const 1 - if - local.get $i - i32.const 1 - i32.add - local.tee $i - i32.const 10 - i32.eq - if - br $for-break0 - end - br $for-loop|0 - end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 end + global.set $~lib/rt/itcms/iter end - local.get $i - i32.const 10 - i32.eq + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr i32.eqz if - i32.const 0 - i32.const 32 - i32.const 61 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end - i32.const 1 - global.set $for/ran - ) - (func $for/testAlwaysFalse + local.get $ptr + i32.const 20 + i32.sub + local.set $obj i32.const 0 drop - i32.const 1 - global.set $for/ran - ) - (func $for/testAlwaysContinues - (local $k i32) - i32.const 0 - local.set $k - loop $for-loop|0 - local.get $k - i32.const 10 - i32.lt_s - if - block $for-continue|0 - br $for-continue|0 - end - local.get $k - i32.const 1 - i32.add - local.set $k - br $for-loop|0 - end - end - local.get $k - i32.const 10 + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white i32.eq - i32.eqz if - i32.const 0 - i32.const 32 - i32.const 80 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - i32.const 1 - global.set $for/ran ) - (func $for/testAlwaysBreaks - (local $k i32) - i32.const 0 - local.set $k - block $for-break0 - local.get $k - i32.const 10 - i32.lt_s + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u if - br $for-break0 + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 end end - local.get $k - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 89 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - ) - (func $for/testAlwaysReturns - (local $k i32) - i32.const 0 - local.set $k - local.get $k - i32.const 10 - i32.lt_s - if - i32.const 1 - global.set $for/ran - return - end - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 101 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $for/testNestedContinue - (local $i i32) - (local $j i32) - (local $k i32) - i32.const 0 - local.set $i - i32.const 0 - local.set $j - i32.const 0 - local.set $k - loop $for-loop|0 - local.get $i - i32.const 10 - i32.lt_s - if - block $for-continue|0 - local.get $i - i32.const 2 - i32.lt_s - if - br $for-continue|0 - end - i32.const 0 - local.set $j - loop $for-loop|1 - local.get $j - i32.const 10 - i32.lt_s - if - block $for-continue|1 - local.get $i - local.get $j - i32.lt_s - if - local.get $k - i32.const 1 - i32.add - local.set $k - br $for-continue|1 - end - end - local.get $j - i32.const 1 - i32.add - local.set $j - br $for-loop|1 - end - end - end - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 - end - end - local.get $i - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 120 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $j - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 121 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $k - i32.const 28 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 122 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - ) - (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) - local.get $this - local.get $nextWithColor - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) - local.get $this - local.get $prev - i32.store offset=8 - ) - (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) - local.get $space - local.get $space - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $space - local.get $space - call $~lib/rt/itcms/Object#set:prev - local.get $space - return ) - (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) local.get $this - i32.load offset=4 + i32.load ) - (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor + call $~lib/rt/common/BLOCK#get:mmInfo i32.const 3 i32.const -1 i32.xor i32.and + i32.add return ) - (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.and - return + local.get $flMap + i32.store ) - (func $~lib/rt/itcms/visitRoots (param $cookie i32) - (local $pn i32) - (local $iter i32) - local.get $cookie - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.set $pn - local.get $pn - call $~lib/rt/itcms/Object#get:next - local.set $iter - loop $while-continue|0 - local.get $iter - local.get $pn - i32.ne - if - i32.const 1 - drop - local.get $iter - call $~lib/rt/itcms/Object#get:color - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $iter - i32.const 20 - i32.add - local.get $cookie - call $~lib/rt/__visit_members - local.get $iter - call $~lib/rt/itcms/Object#get:next - local.set $iter - br $while-continue|0 - end - end + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store ) - (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $color - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor + local.get $next + i32.store offset=8 ) - (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) local.get $this - i32.load offset=8 + i32.load offset=4 ) - (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) local.get $this - local.get $obj + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.and - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor + i32.load ) - (func $~lib/rt/itcms/Object#unlink (param $this i32) - (local $next i32) - (local $prev i32) - local.get $this - call $~lib/rt/itcms/Object#get:next - local.set $next - local.get $next - i32.const 0 - i32.eq - if - i32.const 1 - drop - local.get $this - call $~lib/rt/itcms/Object#get:prev - i32.const 0 - i32.eq - if (result i32) - local.get $this - global.get $~lib/memory/__heap_base - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $this - call $~lib/rt/itcms/Object#get:prev - local.set $prev - i32.const 1 - drop - local.get $prev - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $next - local.get $prev - call $~lib/rt/itcms/Object#set:prev - local.get $prev - local.get $next - call $~lib/rt/itcms/Object#set:next - ) - (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) - local.get $this - i32.load offset=12 - ) - (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/rt/__typeinfo (param $id i32) (result i32) - (local $ptr i32) - global.get $~lib/rt/__rtti_base - local.set $ptr - local.get $id - local.get $ptr - i32.load - i32.gt_u - if - i32.const 256 - i32.const 320 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $ptr - i32.const 4 - i32.add - local.get $id - i32.const 4 - i32.mul - i32.add - call $~lib/shared/typeinfo/Typeinfo#get:flags - return - ) - (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) - (local $rtId i32) - local.get $this - call $~lib/rt/itcms/Object#get:rtId - local.set $rtId - local.get $rtId - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $rtId - call $~lib/rt/__typeinfo - i32.const 32 - i32.and - i32.const 0 - i32.ne - end - return - ) - (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) - (local $prev i32) - local.get $list - call $~lib/rt/itcms/Object#get:prev - local.set $prev - local.get $this - local.get $list - local.get $withColor - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $this - local.get $prev - call $~lib/rt/itcms/Object#set:prev - local.get $prev - local.get $this - call $~lib/rt/itcms/Object#set:next - local.get $list - local.get $this - call $~lib/rt/itcms/Object#set:prev - ) - (func $~lib/rt/itcms/Object#makeGray (param $this i32) - (local $1 i32) - local.get $this - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $this - call $~lib/rt/itcms/Object#get:prev - local.tee $1 - i32.eqz - if (result i32) - i32.const 0 - i32.const 128 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - else - local.get $1 - end - global.set $~lib/rt/itcms/iter - end - local.get $this - call $~lib/rt/itcms/Object#unlink - local.get $this - global.get $~lib/rt/itcms/toSpace - local.get $this - call $~lib/rt/itcms/Object#get:isPointerfree - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) - (local $obj i32) - local.get $ptr - i32.eqz - if - return - end - local.get $ptr - i32.const 20 - i32.sub - local.set $obj - i32.const 0 - drop - local.get $obj - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $obj - 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/visitStack (param $cookie i32) - (local $ptr i32) - global.get $~lib/memory/__stack_pointer - local.set $ptr - loop $while-continue|0 - local.get $ptr - global.get $~lib/memory/__heap_base - i32.lt_u - if - local.get $ptr - i32.load - local.get $cookie - call $~lib/rt/itcms/__visit - local.get $ptr - i32.const 4 - i32.add - local.set $ptr - br $while-continue|0 - end - end - ) - (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) - i32.const 4 - local.get $this - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - return - ) - (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) - local.get $this - local.get $flMap - i32.store - ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) - local.get $this - local.get $mmInfo - i32.store - ) - (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) - local.get $this - local.get $prev - i32.store offset=4 - ) - (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) - local.get $this - local.get $next - i32.store offset=8 - ) - (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) - local.get $this - i32.load offset=8 - ) - (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) - (local $blockInfo i32) - (local $size i32) - (local $fl i32) - (local $sl i32) - (local $6 i32) - (local $7 i32) - (local $boundedSize i32) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) (local $prev i32) (local $next i32) (local $root|11 i32) @@ -832,7 +472,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -852,7 +492,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -915,7 +555,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -1068,7 +708,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -1085,7 +725,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -1174,7 +814,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -1217,7 +857,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -1235,7 +875,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -1303,7 +943,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1420,7 +1060,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1466,7 +1106,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1498,7 +1138,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1742,7 +1382,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 464 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1962,7 +1602,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 192 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -2007,628 +1647,1431 @@ i32.const 0 i32.eq if - i32.const 0 - drop - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i32.const 200 - i64.extend_i32_u + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b i64.mul - i64.const 100 + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 i64.div_u - i32.wrap_i64 - i32.const 1024 + local.set $num + local.get $e + i32.const 1 i32.add - global.set $~lib/rt/itcms/threshold - i32.const 0 - drop - return + local.set $e + br $while-continue|1 end - local.get $budget - i32.const 0 - i32.gt_s - br_if $do-loop|0 end - i32.const 0 - drop - global.get $~lib/rt/itcms/total - i32.const 1024 - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold + local.get $e + i32.const 1 i32.sub - i32.const 1024 - i32.lt_u - i32.mul - i32.add - global.set $~lib/rt/itcms/threshold - i32.const 0 - drop + return ) - (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) - local.get $size - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $size - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 i32.and - i32.const 4 - i32.sub + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 return ) - (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) - local.get $size - i32.const 1073741820 - i32.gt_u + (func $for/testInitExpression + (local $i i32) + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + i32.const 10 + i32.lt_s + if + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $i + i32.const 10 + i32.eq + i32.eqz if - i32.const 64 - i32.const 400 - i32.const 461 - i32.const 29 + i32.const 0 + i32.const 2400 + i32.const 8 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $size - call $~lib/rt/tlsf/computeSize - return + i32.const 1 + global.set $for/ran ) - (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) - local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size + (func $for/testInitStatement + (local $j i32) + i32.const 0 + local.set $j + loop $for-loop|0 + local.get $j + i32.const 10 + i32.lt_s + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|0 + end end - return - ) - (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) - (local $fl i32) - (local $sl i32) - (local $requestSize i32) - (local $root|5 i32) - (local $fl|6 i32) - (local $slMap i32) - (local $head i32) - (local $flMap i32) - (local $root|10 i32) - (local $fl|11 i32) - (local $root|12 i32) - (local $fl|13 i32) - (local $sl|14 i32) - (local $root|15 i32) - (local $fl|16 i32) - (local $sl|17 i32) - local.get $size - i32.const 256 - i32.lt_u + local.get $j + i32.const 10 + i32.eq + i32.eqz if i32.const 0 - local.set $fl - local.get $size - i32.const 4 - i32.shr_u - local.set $sl - else - local.get $size - call $~lib/rt/tlsf/roundSize - local.set $requestSize - i32.const 4 - i32.const 8 - i32.mul - i32.const 1 - i32.sub - local.get $requestSize - i32.clz - i32.sub - local.set $fl - local.get $requestSize - local.get $fl - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $sl - local.get $fl - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $fl + i32.const 2400 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable end i32.const 1 - drop - local.get $fl - i32.const 23 - i32.lt_u - if (result i32) - local.get $sl - i32.const 16 - i32.lt_u - else + global.set $for/ran + ) + (func $for/testEmpty + (local $i i32) + i32.const 10 + local.set $i + loop $for-loop|0 + local.get $i i32.const 0 + i32.gt_s + if + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 29 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testConditionOmitted + (local $i i32) + i32.const 0 + local.set $i + block $for-break0 + loop $for-loop|0 + i32.const 1 + if + local.get $i + i32.const 10 + i32.eq + if + br $for-break0 + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end end + local.get $i + i32.const 10 + i32.eq i32.eqz if i32.const 0 - i32.const 400 - i32.const 334 - i32.const 14 + i32.const 2400 + i32.const 39 + i32.const 3 call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $root - local.set $root|5 - local.get $fl - local.set $fl|6 - local.get $root|5 - local.get $fl|6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - br $~lib/rt/tlsf/GETSL|inlined.2 + i32.const 1 + global.set $for/ran + ) + (func $for/testAllOmitted + (local $i i32) + i32.const 10 + local.set $i + block $for-break0 + loop $for-loop|0 + i32.const 1 + if + local.get $i + i32.const 1 + i32.sub + local.tee $i + i32.const 0 + i32.eq + if + br $for-break0 + end + br $for-loop|0 + end + end end + local.get $i i32.const 0 - i32.const -1 - i32.xor - local.get $sl - i32.shl - i32.and - local.set $slMap - i32.const 0 - local.set $head - local.get $slMap + i32.eq i32.eqz if - local.get $root - call $~lib/rt/tlsf/Root#get:flMap i32.const 0 - i32.const -1 - i32.xor - local.get $fl - i32.const 1 - i32.add - i32.shl - i32.and - local.set $flMap - local.get $flMap - i32.eqz - if - i32.const 0 - local.set $head - else - local.get $flMap - i32.ctz - local.set $fl - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $root - local.set $root|10 - local.get $fl - local.set $fl|11 - local.get $root|10 - local.get $fl|11 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - br $~lib/rt/tlsf/GETSL|inlined.3 - end - local.set $slMap + i32.const 2400 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testAlwaysTrue + (local $i i32) + i32.const 0 + local.set $i + block $for-break0 + loop $for-loop|0 i32.const 1 - drop - local.get $slMap - i32.eqz if - i32.const 0 - i32.const 400 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $root - local.set $root|12 - local.get $fl - local.set $fl|13 - local.get $slMap - i32.ctz - local.set $sl|14 - local.get $root|12 - local.get $fl|13 - i32.const 4 - i32.shl - local.get $sl|14 - i32.add - i32.const 2 - i32.shl + local.get $i + i32.const 1 i32.add - i32.load offset=96 - br $~lib/rt/tlsf/GETHEAD|inlined.2 + local.tee $i + i32.const 10 + i32.eq + if + br $for-break0 + end + br $for-loop|0 end - local.set $head - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $root - local.set $root|15 - local.get $fl - local.set $fl|16 - local.get $slMap - i32.ctz - local.set $sl|17 - local.get $root|15 - local.get $fl|16 - i32.const 4 - i32.shl - local.get $sl|17 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - br $~lib/rt/tlsf/GETHEAD|inlined.3 end - local.set $head end - local.get $head - return - ) - (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) - (local $pagesBefore i32) - (local $root|3 i32) - (local $pagesNeeded i32) - (local $5 i32) - (local $6 i32) - (local $pagesWanted i32) - (local $pagesAfter i32) - i32.const 0 - drop - local.get $size - i32.const 256 - i32.ge_u + local.get $i + i32.const 10 + i32.eq + i32.eqz if - local.get $size - call $~lib/rt/tlsf/roundSize - local.set $size - end - memory.size - local.set $pagesBefore - local.get $size - i32.const 4 - local.get $pagesBefore - i32.const 16 - i32.shl - i32.const 4 - i32.sub - block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) - local.get $root - local.set $root|3 - local.get $root|3 - i32.load offset=1568 - br $~lib/rt/tlsf/GETTAIL|inlined.1 + i32.const 0 + i32.const 2400 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.ne - i32.shl - i32.add - local.set $size - local.get $size - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $pagesNeeded - local.get $pagesBefore - local.tee $5 - local.get $pagesNeeded - local.tee $6 - local.get $5 - local.get $6 - i32.gt_s - select - local.set $pagesWanted - local.get $pagesWanted - memory.grow + i32.const 1 + global.set $for/ran + ) + (func $for/testAlwaysFalse i32.const 0 - i32.lt_s + drop + i32.const 1 + global.set $for/ran + ) + (func $for/testAlwaysContinues + (local $k i32) + i32.const 0 + local.set $k + loop $for-loop|0 + local.get $k + i32.const 10 + i32.lt_s + if + block $for-continue|0 + br $for-continue|0 + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|0 + end + end + local.get $k + i32.const 10 + i32.eq + i32.eqz if - local.get $pagesNeeded - memory.grow i32.const 0 + i32.const 2400 + i32.const 80 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testAlwaysBreaks + (local $k i32) + i32.const 0 + local.set $k + block $for-break0 + local.get $k + i32.const 10 i32.lt_s if - unreachable + br $for-break0 end end - memory.size - local.set $pagesAfter - local.get $root - local.get $pagesBefore - i32.const 16 - i32.shl - local.get $pagesAfter - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) - (local $blockInfo i32) - (local $remaining i32) - (local $spare i32) - (local $block|6 i32) - (local $block|7 i32) - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - local.set $blockInfo - i32.const 1 - drop - local.get $size - i32.const 4 - i32.add - i32.const 15 - i32.and - i32.eqz + local.get $k + i32.const 0 + i32.eq i32.eqz if i32.const 0 - i32.const 400 - i32.const 361 - i32.const 14 + i32.const 2400 + i32.const 89 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $blockInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $size - i32.sub - local.set $remaining - local.get $remaining - i32.const 4 - i32.const 12 - i32.add - i32.ge_u + i32.const 1 + global.set $for/ran + ) + (func $for/testAlwaysReturns + (local $k i32) + i32.const 0 + local.set $k + local.get $k + i32.const 10 + i32.lt_s if - local.get $block - local.get $size - local.get $blockInfo - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $block - i32.const 4 - i32.add - local.get $size - i32.add - local.set $spare - local.get $spare - local.get $remaining - i32.const 4 - i32.sub i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $root - local.get $spare - call $~lib/rt/tlsf/insertBlock - else - local.get $block - local.get $blockInfo - i32.const 1 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $block - local.set $block|7 - local.get $block|7 - i32.const 4 - i32.add - local.get $block|7 - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - br $~lib/rt/tlsf/GETRIGHT|inlined.3 - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $block - local.set $block|6 - local.get $block|6 - i32.const 4 - i32.add - local.get $block|6 - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - br $~lib/rt/tlsf/GETRIGHT|inlined.2 - end - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 2 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo + global.set $for/ran + return end - ) - (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) - (local $payloadSize i32) - (local $block i32) - local.get $size - call $~lib/rt/tlsf/prepareSize - local.set $payloadSize - local.get $root - local.get $payloadSize - call $~lib/rt/tlsf/searchBlock - local.set $block - local.get $block + i32.const 0 i32.eqz if - local.get $root - local.get $payloadSize - call $~lib/rt/tlsf/growMemory - local.get $root - local.get $payloadSize - call $~lib/rt/tlsf/searchBlock - local.set $block - i32.const 1 - drop - local.get $block - i32.eqz + i32.const 0 + i32.const 2400 + i32.const 101 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $for/testNestedContinue + (local $i i32) + (local $j i32) + (local $k i32) + i32.const 0 + local.set $i + i32.const 0 + local.set $j + i32.const 0 + local.set $k + loop $for-loop|0 + local.get $i + i32.const 10 + i32.lt_s if - i32.const 0 - i32.const 400 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + block $for-continue|0 + local.get $i + i32.const 2 + i32.lt_s + if + br $for-continue|0 + end + i32.const 0 + local.set $j + loop $for-loop|1 + local.get $j + i32.const 10 + i32.lt_s + if + block $for-continue|1 + local.get $i + local.get $j + i32.lt_s + if + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-continue|1 + end + end + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 end end - i32.const 1 - drop - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $payloadSize - i32.ge_u + local.get $i + i32.const 10 + i32.eq i32.eqz if i32.const 0 - i32.const 400 - i32.const 501 - i32.const 14 + i32.const 2400 + i32.const 120 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $root - local.get $block - call $~lib/rt/tlsf/removeBlock - local.get $root - local.get $block - local.get $payloadSize - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $block - return - ) - (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) - global.get $~lib/rt/tlsf/ROOT + local.get $j + i32.const 10 + i32.eq i32.eqz if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $size - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - return - ) - (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) - local.get $this - local.get $rtId - i32.store offset=12 - ) - (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) - local.get $this - local.get $rtSize - i32.store offset=16 - ) - (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) - (local $obj i32) - (local $ptr i32) - local.get $size - i32.const 1073741804 - i32.ge_u - if - i32.const 64 - i32.const 128 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 2400 + i32.const 121 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u + local.get $k + i32.const 28 + i32.eq + i32.eqz if - call $~lib/rt/itcms/interrupt + i32.const 0 + i32.const 2400 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 16 - local.get $size - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $obj - local.get $obj - local.get $id - call $~lib/rt/itcms/Object#set:rtId - local.get $obj - local.get $size - call $~lib/rt/itcms/Object#set:rtSize - local.get $obj - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $obj - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $obj - i32.const 20 - i32.add - local.set $ptr - local.get $ptr - i32.const 0 - local.get $size - memory.fill - local.get $ptr - return + i32.const 1 + global.set $for/ran ) (func $for/testRef (local $i i32) @@ -2676,7 +3119,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 137 i32.const 3 call $~lib/builtins/abort @@ -2687,7 +3130,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 138 i32.const 3 call $~lib/builtins/abort @@ -2756,7 +3199,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 157 i32.const 3 call $~lib/builtins/abort @@ -2767,7 +3210,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 158 i32.const 3 call $~lib/builtins/abort @@ -2829,12 +3272,29 @@ (func $start:for i32.const 0 global.set $for/ran + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $for/testInitExpression global.get $for/ran i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -2847,7 +3307,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -2860,7 +3320,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -2873,7 +3333,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -2886,7 +3346,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 54 i32.const 1 call $~lib/builtins/abort @@ -2899,7 +3359,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 66 i32.const 1 call $~lib/builtins/abort @@ -2912,7 +3372,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 76 i32.const 1 call $~lib/builtins/abort @@ -2925,7 +3385,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 85 i32.const 1 call $~lib/builtins/abort @@ -2938,7 +3398,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 94 i32.const 1 call $~lib/builtins/abort @@ -2951,118 +3411,52 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 105 i32.const 1 call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $for/ran - call $for/testNestedContinue - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 127 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $for/ran - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 176 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 208 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 352 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - call $for/testRef - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 143 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $for/ran - call $for/testRefAutorelease - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 163 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/itcms/__collect - ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 256 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 64 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $for/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $for/Ref $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return + unreachable end - unreachable + i32.const 0 + global.set $for/ran + call $for/testNestedContinue + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 127 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testRef + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 143 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testRefAutorelease + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 163 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $~lib/rt/itcms/__collect ) (func $~start call $start:for @@ -3072,14 +3466,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33264 - i32.const 33312 + i32.const 35232 + i32.const 35280 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $for/Ref#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -3118,6 +3717,153 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -3146,4 +3892,59 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $for/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $for/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/for.release.wat b/tests/compiler/for.release.wat index 6c772a187c..d64af8ee10 100644 --- a/tests/compiler/for.release.wat +++ b/tests/compiler/for.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) - (type $4 (func (param i32) (result i32))) - (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,29 +17,54 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34264)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36232)) (memory $0 1) (data $0 (i32.const 1036) "\1c") - (data $0.1 (i32.const 1048) "\02\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s") - (data $1 (i32.const 1068) "<") - (data $1.1 (i32.const 1080) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $2 (i32.const 1132) "<") - (data $2.1 (i32.const 1144) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $5 (i32.const 1260) "<") - (data $5.1 (i32.const 1272) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $6 (i32.const 1324) ",") - (data $6.1 (i32.const 1336) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $8 (i32.const 1404) "<") - (data $8.1 (i32.const 1416) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $9 (i32.const 1472) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) "\1c") + (data $19.1 (i32.const 3416) "\02\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s") + (data $20 (i32.const 3440) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1280 + i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1088 + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -60,7 +85,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -108,7 +133,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -117,7 +142,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$128 + block $__inlined_func$~lib/rt/itcms/Object#unlink$141 local.get $1 i32.load offset=4 i32.const -4 @@ -129,19 +154,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34264 + i32.const 36232 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$128 + br $__inlined_func$~lib/rt/itcms/Object#unlink$141 end local.get $1 i32.load offset=8 @@ -149,7 +174,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -178,12 +203,12 @@ i32.const 1 else local.get $0 - i32.const 1472 + i32.const 3440 i32.load i32.gt_u if - i32.const 1280 i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -192,7 +217,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1476 + i32.const 3444 i32.add i32.load i32.const 32 @@ -244,7 +269,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -258,7 +283,7 @@ i32.lt_u if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -304,7 +329,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -387,7 +412,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -401,7 +426,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -462,7 +487,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -495,7 +520,7 @@ i32.lt_u if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -510,7 +535,7 @@ i32.ne if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -561,7 +586,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -633,7 +658,7 @@ i64.lt_u if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -658,7 +683,7 @@ i32.gt_u if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -685,7 +710,7 @@ i32.gt_u if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -757,10 +782,10 @@ if unreachable end - i32.const 34272 + i32.const 36240 i32.const 0 i32.store - i32.const 35840 + i32.const 37808 i32.const 0 i32.store loop $for-loop|0 @@ -771,7 +796,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34272 + i32.const 36240 i32.add i32.const 0 i32.store offset=4 @@ -789,7 +814,7 @@ i32.add i32.const 2 i32.shl - i32.const 34272 + i32.const 36240 i32.add i32.const 0 i32.store offset=96 @@ -807,14 +832,14 @@ br $for-loop|0 end end - i32.const 34272 - i32.const 35844 + i32.const 36240 + i32.const 37812 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34272 + i32.const 36240 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -899,7 +924,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34264 + i32.const 36232 i32.lt_u if local.get $0 @@ -988,14 +1013,14 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34264 + i32.const 36232 i32.lt_u if local.get $0 @@ -1018,7 +1043,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34264 + i32.const 36232 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1047,7 +1072,7 @@ end if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1077,18 +1102,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1096,32 +1188,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1134,23 +1230,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 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 @@ -1164,9 +1272,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1189,31 +1297,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if memory.size - local.tee $1 + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end i32.const 4 - local.get $2 + local.get $4 i32.load offset=1568 - local.get $1 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1229,8 +1392,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1238,119 +1401,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1424 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1358,38 +1538,268 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 + memory.fill + local.get $1 ) - (func $start:for - (local $0 i32) + (func $~lib/number/U32#toString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - loop $for-loop|0 - local.get $0 - i32.const 10 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end + (local $3 i32) local.get $0 - i32.const 10 - i32.ne + 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 3464 + i32.lt_s if - i32.const 0 - i32.const 1056 - i32.const 8 + i32.const 36256 + i32.const 36304 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $start:for + (local $0 i32) + (local $1 i32) + (local $2 i32) + memory.size + i32.const 16 + i32.shl + i32.const 36232 + 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 + loop $for-loop|0 + local.get $0 + i32.const 10 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 3424 + i32.const 8 i32.const 3 call $~lib/builtins/abort unreachable @@ -1413,7 +1823,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 19 i32.const 3 call $~lib/builtins/abort @@ -1436,7 +1846,7 @@ local.get $0 if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 29 i32.const 3 call $~lib/builtins/abort @@ -1461,7 +1871,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 39 i32.const 3 call $~lib/builtins/abort @@ -1479,7 +1889,7 @@ local.get $0 if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -1501,7 +1911,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -1526,7 +1936,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 80 i32.const 3 call $~lib/builtins/abort @@ -1579,7 +1989,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 120 i32.const 3 call $~lib/builtins/abort @@ -1590,7 +2000,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 121 i32.const 3 call $~lib/builtins/abort @@ -1601,51 +2011,19 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 122 i32.const 3 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - i32.const 34264 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/pinSpace - i32.const 1236 - i32.const 1232 - i32.store - i32.const 1240 - i32.const 1232 - i32.store - i32.const 1232 - global.set $~lib/rt/itcms/toSpace - i32.const 1380 - i32.const 1376 - i32.store - i32.const 1384 - i32.const 1376 - i32.store - i32.const 1376 - global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1496 + i32.const 3464 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1683,7 +2061,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 137 i32.const 3 call $~lib/builtins/abort @@ -1692,7 +2070,7 @@ local.get $0 if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 138 i32.const 3 call $~lib/builtins/abort @@ -1707,7 +2085,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1496 + i32.const 3464 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1750,7 +2128,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 157 i32.const 3 call $~lib/builtins/abort @@ -1759,7 +2137,7 @@ local.get $0 if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 158 i32.const 3 call $~lib/builtins/abort @@ -1804,43 +2182,215 @@ global.set $~lib/rt/itcms/threshold return end - i32.const 34288 - i32.const 34336 + i32.const 36256 + i32.const 36304 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $for/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $for/Ref $invalid - end - return - end - return - end - return + (func $~start + call $start:for + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3464 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3464 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$146 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$146 end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 return end + i32.const 36256 + i32.const 36304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) - (func $~start - call $start:for + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3464 + i32.lt_s + if + i32.const 36256 + i32.const 36304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $for/Ref#constructor (result i32) (local $0 i32) @@ -1851,13 +2401,14 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1496 + i32.const 3464 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 @@ -1871,7 +2422,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1496 + i32.const 3464 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1882,6 +2433,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1899,11 +2451,39 @@ local.get $0 return end - i32.const 34288 - i32.const 34336 + i32.const 36256 + i32.const 36304 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $for/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $for/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/function-call.debug.wat b/tests/compiler/function-call.debug.wat index 85c7ac0268..3af96d55f8 100644 --- a/tests/compiler/function-call.debug.wat +++ b/tests/compiler/function-call.debug.wat @@ -1,21 +1,24 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func)) - (type $3 (func (param i32))) - (type $4 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func)) + (type $4 (func (param i32))) (type $5 (func (param i32 i32 i32))) (type $6 (func (param i32 i32 i32) (result i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (type $9 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param i32 i32 i32 i32))) (global $function-call/fnVoid (mut i32) (i32.const 32)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $function-call/faVoid (mut i32) (i32.const 64)) (global $function-call/fnRet (mut i32) (i32.const 96)) - (global $function-call/faRet (mut i32) (i32.const 192)) - (global $function-call/fnThis (mut i32) (i32.const 224)) + (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)) @@ -24,36 +27,47 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $function-call/faRet (mut i32) (i32.const 2560)) + (global $function-call/fnThis (mut i32) (i32.const 2592)) (global $function-call/foo (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 736)) - (global $~lib/memory/__data_end i32 (i32.const 780)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33548)) - (global $~lib/memory/__heap_base i32 (i32.const 33548)) + (global $~lib/rt/__rtti_base i32 (i32.const 2704)) + (global $~lib/memory/__data_end i32 (i32.const 2748)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35516)) + (global $~lib/memory/__heap_base i32 (i32.const 35516)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00c\00a\00l\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 544) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 572) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 700) "\1c\00\00\00\00\00\00\00\00\00\00\00\t\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") - (data $17 (i32.const 736) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $4 (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $5 (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $7 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 336) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 512) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 540) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 636) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 764) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $17 (i32.const 828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 860) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $19 (i32.const 1260) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2316) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $21 (i32.const 2412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00c\00a\00l\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\t\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2704) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") (table $0 9 9 funcref) (elem $0 (i32.const 1) $start:function-call~anonymous|0 $start:function-call~anonymous|1 $start:function-call~anonymous|2 $start:function-call~anonymous|3 $start:function-call~fn2|4 $function-call/Foo#fnVoid $function-call/Foo#fnThis $function-call/Foo#fnRet) (export "memory" (memory $0)) @@ -68,14 +82,17 @@ i32.add return ) - (func $start:function-call~anonymous|3 (param $a i32) (param $b i32) (result i32) - local.get $a - local.get $b - i32.add - return + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 ) - (func $start:function-call~fn2|4 (param $this i32) (result i32) + (func $~lib/string/String#get:length (param $this i32) (result i32) local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u return ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) @@ -142,7 +159,7 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 288 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -212,7 +229,7 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 288 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -229,7 +246,7 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 288 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -259,8 +276,8 @@ i32.load i32.gt_u if - i32.const 448 - i32.const 512 + i32.const 416 + i32.const 480 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -328,7 +345,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 320 + i32.const 288 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -480,7 +497,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 560 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -500,7 +517,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 560 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -563,7 +580,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 560 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -716,7 +733,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 560 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -733,7 +750,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 560 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -822,7 +839,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 560 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -865,7 +882,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 560 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -883,7 +900,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 560 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -951,7 +968,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 560 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1068,7 +1085,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 560 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1114,7 +1131,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 560 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1146,7 +1163,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 560 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1390,7 +1407,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 560 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1610,7 +1627,7 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 288 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1718,8 +1735,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 256 - i32.const 592 + i32.const 224 + i32.const 560 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1821,7 +1838,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 560 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1892,7 +1909,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 560 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2049,7 +2066,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 560 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2164,7 +2181,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 560 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2184,7 +2201,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 560 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2232,8 +2249,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 256 - i32.const 320 + i32.const 224 + i32.const 288 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2278,163 +2295,443 @@ local.get $ptr return ) - (func $function-call/Foo#fnVoid (param $this i32) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable ) - (func $function-call/Foo#fnThis (param $this i32) (result i32) - local.get $this - return + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 860 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 860 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 860 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 860 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end ) - (func $function-call/Foo#fnRet (param $this i32) (param $a i32) (param $b i32) (result i32) - local.get $a - local.get $b - i32.add + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1280 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1280 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub return ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $function-call/foo - local.tee $1 + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2336 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2336 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end end - i32.const 448 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 256 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) ) - (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) local.get $this - i32.load offset=4 + local.get $radix + call $~lib/util/number/utoa32 + return ) - (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>void>#__visit + (func $start:function-call~anonymous|3 (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + (func $start:function-call~fn2|4 (param $this i32) (result i32) local.get $this - i32.load offset=4 + return ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + (func $function-call/Foo#fnVoid (param $this i32) ) - (func $~lib/function/Function<%28this:i32%29=>i32>#get:_env (param $this i32) (result i32) + (func $function-call/Foo#fnThis (param $this i32) (result i32) local.get $this - i32.load offset=4 + return ) - (func $~lib/function/Function<%28this:i32%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28this:i32%29=>i32>#__visit - ) - (func $~lib/function/Function<%28this:function-call/Foo%29=>void>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28this:function-call/Foo%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28this:function-call/Foo%29=>void>#__visit - ) - (func $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32>#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32> - block $~lib/function/Function<%28this:function-call/Foo%29=>void> - block $function-call/Foo - block $~lib/function/Function<%28this:i32%29=>i32> - block $~lib/function/Function<%28i32%2Ci32%29=>i32> - block $~lib/function/Function<%28%29=>void> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $~lib/function/Function<%28i32%2Ci32%29=>i32> $~lib/function/Function<%28this:i32%29=>i32> $function-call/Foo $~lib/function/Function<%28this:function-call/Foo%29=>void> $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32> $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28this:i32%29=>i32>~visit - return - end - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28this:function-call/Foo%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32>~visit - return - end - unreachable + (func $function-call/Foo#fnRet (param $this i32) (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return ) (func $~start call $start:function-call @@ -2444,14 +2741,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33568 - i32.const 33616 + i32.const 35536 + i32.const 35584 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 192 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 128 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 160 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 624 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 624 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2432 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $function-call/Foo#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2504,25 +3006,42 @@ global.set $~argumentsLength global.get $function-call/fnVoid i32.load - call_indirect (type $2) + call_indirect (type $3) i32.const 0 global.set $~argumentsLength global.get $function-call/faVoid i32.load - call_indirect (type $2) + call_indirect (type $3) + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 336 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 512 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 1 i32.const 2 i32.const 2 global.set $~argumentsLength global.get $function-call/fnRet i32.load - call_indirect (type $4) + call_indirect (type $2) i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -2534,13 +3053,13 @@ global.set $~argumentsLength global.get $function-call/faRet i32.load - call_indirect (type $4) + call_indirect (type $2) i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -2557,29 +3076,12 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 20 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 368 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 400 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 544 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace i32.const 0 call $function-call/Foo#constructor global.set $function-call/foo @@ -2591,13 +3093,13 @@ local.get $0 i32.const 0 global.set $~argumentsLength - i32.const 656 + i32.const 2624 i32.load - call_indirect (type $3) + call_indirect (type $4) i32.const 1 i32.const 0 global.set $~argumentsLength - i32.const 688 + i32.const 2656 i32.load call_indirect (type $0) i32.const 1 @@ -2605,7 +3107,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -2621,7 +3123,7 @@ i32.const 2 i32.const 2 global.set $~argumentsLength - i32.const 720 + i32.const 2688 i32.load call_indirect (type $6) i32.const 3 @@ -2629,7 +3131,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -2640,6 +3142,333 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 656 + i32.const 784 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 848 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $function-call/foo + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 416 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1280 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2336 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28this:i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28this:i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28this:i32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28this:function-call/Foo%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28this:function-call/Foo%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28this:function-call/Foo%29=>void>#__visit + ) + (func $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32> + block $~lib/function/Function<%28this:function-call/Foo%29=>void> + block $function-call/Foo + block $~lib/function/Function<%28this:i32%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $~lib/function/Function<%28i32%2Ci32%29=>i32> $~lib/function/Function<%28this:i32%29=>i32> $function-call/Foo $~lib/function/Function<%28this:function-call/Foo%29=>void> $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28this:i32%29=>i32>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28this:function-call/Foo%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32>~visit + return + end + unreachable + ) (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) (local $2 i32) global.get $~lib/memory/__stack_pointer @@ -2760,32 +3589,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/object/Object#constructor (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) ) diff --git a/tests/compiler/function-call.release.wat b/tests/compiler/function-call.release.wat index ab9646583b..84a02aacb7 100644 --- a/tests/compiler/function-call.release.wat +++ b/tests/compiler/function-call.release.wat @@ -1,14 +1,13 @@ (module (type $0 (func)) - (type $1 (func (param i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) (type $2 (func (param i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $3 (func (param i32) (result i32))) (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32) (result i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (type $8 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -20,7 +19,7 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $function-call/foo (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34572)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36540)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") @@ -28,30 +27,51 @@ (data $1.1 (i32.const 1080) "\04\00\00\00\08\00\00\00\02") (data $2 (i32.const 1100) "\1c") (data $2.1 (i32.const 1112) "\05\00\00\00\08\00\00\00\03") - (data $3 (i32.const 1132) "<") - (data $3.1 (i32.const 1144) "\02\00\00\00 \00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00c\00a\00l\00l\00.\00t\00s") - (data $4 (i32.const 1196) "\1c") - (data $4.1 (i32.const 1208) "\05\00\00\00\08\00\00\00\04") - (data $5 (i32.const 1228) "\1c") - (data $5.1 (i32.const 1240) "\06\00\00\00\08\00\00\00\05") - (data $6 (i32.const 1260) "<") - (data $6.1 (i32.const 1272) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $7 (i32.const 1324) "<") - (data $7.1 (i32.const 1336) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $10 (i32.const 1452) "<") - (data $10.1 (i32.const 1464) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $11 (i32.const 1516) ",") - (data $11.1 (i32.const 1528) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $13 (i32.const 1596) "<") - (data $13.1 (i32.const 1608) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $14 (i32.const 1660) "\1c") - (data $14.1 (i32.const 1672) "\08\00\00\00\08\00\00\00\06") - (data $15 (i32.const 1692) "\1c") - (data $15.1 (i32.const 1704) "\06\00\00\00\08\00\00\00\07") - (data $16 (i32.const 1724) "\1c") - (data $16.1 (i32.const 1736) "\t\00\00\00\08\00\00\00\08") - (data $17 (i32.const 1760) "\n\00\00\00 \00\00\00 \00\00\00 ") - (data $17.1 (i32.const 1792) " ") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $4 (i32.const 1164) "\1c") + (data $4.1 (i32.const 1176) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $5 (i32.const 1196) "\1c") + (data $5.1 (i32.const 1208) "\02") + (data $6 (i32.const 1228) "<") + (data $6.1 (i32.const 1240) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $7 (i32.const 1292) "<") + (data $7.1 (i32.const 1304) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $10 (i32.const 1420) "<") + (data $10.1 (i32.const 1432) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $11 (i32.const 1484) ",") + (data $11.1 (i32.const 1496) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $13 (i32.const 1564) "<") + (data $13.1 (i32.const 1576) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $14 (i32.const 1628) "\1c") + (data $14.1 (i32.const 1640) "\02\00\00\00\02\00\00\00:") + (data $15 (i32.const 1660) "|") + (data $15.1 (i32.const 1672) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $16 (i32.const 1788) "<") + (data $16.1 (i32.const 1800) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $17 (i32.const 1852) "\1c") + (data $17.1 (i32.const 1864) "\02\00\00\00\02\00\00\000") + (data $18 (i32.const 1884) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $19 (i32.const 2284) "\1c\04") + (data $19.1 (i32.const 2296) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $20 (i32.const 3340) "\\") + (data $20.1 (i32.const 3352) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $21 (i32.const 3436) "<") + (data $21.1 (i32.const 3448) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $22 (i32.const 3500) "<") + (data $22.1 (i32.const 3512) "\02\00\00\00 \00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00c\00a\00l\00l\00.\00t\00s") + (data $23 (i32.const 3564) "\1c") + (data $23.1 (i32.const 3576) "\05\00\00\00\08\00\00\00\04") + (data $24 (i32.const 3596) "\1c") + (data $24.1 (i32.const 3608) "\06\00\00\00\08\00\00\00\05") + (data $25 (i32.const 3628) "\1c") + (data $25.1 (i32.const 3640) "\08\00\00\00\08\00\00\00\06") + (data $26 (i32.const 3660) "\1c") + (data $26.1 (i32.const 3672) "\06\00\00\00\08\00\00\00\07") + (data $27 (i32.const 3692) "\1c") + (data $27.1 (i32.const 3704) "\t\00\00\00\08\00\00\00\08") + (data $28 (i32.const 3728) "\n\00\00\00 \00\00\00 \00\00\00 ") + (data $28.1 (i32.const 3760) " ") (table $0 9 9 funcref) (elem $0 (i32.const 1) $start:function-call~anonymous|0 $start:function-call~anonymous|0 $start:function-call~anonymous|2 $start:function-call~anonymous|2 $start:function-call~fn2|4 $function-call/Foo#fnVoid $start:function-call~fn2|4 $function-call/Foo#fnRet) (export "memory" (memory $0)) @@ -63,9 +83,6 @@ local.get $1 i32.add ) - (func $start:function-call~fn2|4 (param $0 i32) (result i32) - i32.const 1 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -75,9 +92,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1472 + i32.const 1440 + call $~lib/rt/itcms/__visit + i32.const 1248 call $~lib/rt/itcms/__visit - i32.const 1280 + i32.const 2304 + call $~lib/rt/itcms/__visit + i32.const 3360 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -98,7 +119,7 @@ i32.ne if i32.const 0 - i32.const 1344 + i32.const 1312 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -146,7 +167,7 @@ i32.eqz if i32.const 0 - i32.const 1344 + i32.const 1312 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -155,7 +176,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$115 + block $__inlined_func$~lib/rt/itcms/Object#unlink$128 local.get $1 i32.load offset=4 i32.const -4 @@ -167,19 +188,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34572 + i32.const 36540 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1344 + i32.const 1312 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$115 + br $__inlined_func$~lib/rt/itcms/Object#unlink$128 end local.get $1 i32.load offset=8 @@ -187,7 +208,7 @@ i32.eqz if i32.const 0 - i32.const 1344 + i32.const 1312 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -216,12 +237,12 @@ i32.const 1 else local.get $0 - i32.const 1760 + i32.const 3728 i32.load i32.gt_u if - i32.const 1472 - i32.const 1536 + i32.const 1440 + i32.const 1504 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -230,7 +251,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1764 + i32.const 3732 i32.add i32.load i32.const 32 @@ -282,7 +303,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1584 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -296,7 +317,7 @@ i32.lt_u if i32.const 0 - i32.const 1616 + i32.const 1584 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -342,7 +363,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1584 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -425,7 +446,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1584 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -439,7 +460,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1584 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -500,7 +521,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1584 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -533,7 +554,7 @@ i32.lt_u if i32.const 0 - i32.const 1616 + i32.const 1584 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -548,7 +569,7 @@ i32.ne if i32.const 0 - i32.const 1616 + i32.const 1584 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -599,7 +620,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1584 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -671,7 +692,7 @@ i64.lt_u if i32.const 0 - i32.const 1616 + i32.const 1584 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -696,7 +717,7 @@ i32.gt_u if i32.const 0 - i32.const 1616 + i32.const 1584 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -723,7 +744,7 @@ i32.gt_u if i32.const 0 - i32.const 1616 + i32.const 1584 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -795,10 +816,10 @@ if unreachable end - i32.const 34576 + i32.const 36544 i32.const 0 i32.store - i32.const 36144 + i32.const 38112 i32.const 0 i32.store loop $for-loop|0 @@ -809,7 +830,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34576 + i32.const 36544 i32.add i32.const 0 i32.store offset=4 @@ -827,7 +848,7 @@ i32.add i32.const 2 i32.shl - i32.const 34576 + i32.const 36544 i32.add i32.const 0 i32.store offset=96 @@ -845,14 +866,14 @@ br $for-loop|0 end end - i32.const 34576 - i32.const 36148 + i32.const 36544 + i32.const 38116 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34576 + i32.const 36544 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -937,7 +958,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34572 + i32.const 36540 i32.lt_u if local.get $0 @@ -1026,14 +1047,14 @@ i32.ne if i32.const 0 - i32.const 1344 + i32.const 1312 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34572 + i32.const 36540 i32.lt_u if local.get $0 @@ -1056,7 +1077,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34572 + i32.const 36540 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1085,7 +1106,7 @@ end if i32.const 0 - i32.const 1616 + i32.const 1584 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1115,18 +1136,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1134,32 +1222,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1584 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1172,23 +1264,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1248 + i32.const 1312 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 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 @@ -1202,9 +1306,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1227,31 +1331,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1248 + i32.const 1584 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if memory.size - local.tee $1 + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end i32.const 4 - local.get $2 + local.get $4 i32.load offset=1568 - local.get $1 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1267,8 +1426,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1276,119 +1435,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1584 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1616 + i32.const 1584 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1584 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1396,59 +1572,31 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 + memory.fill + local.get $1 ) - (func $function-call/Foo#fnVoid (param $0 i32) - ) - (func $function-call/Foo#fnRet (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - i32.const 3 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $function-call/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $function-call/Foo $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - end + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 1804 + i32.const 3772 i32.lt_s if - i32.const 34592 - i32.const 34640 + i32.const 36560 + i32.const 36608 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1457,16 +1605,187 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + block $__inlined_func$~lib/util/number/utoa32$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1872 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + ) + (func $start:function-call~fn2|4 (param $0 i32) (result i32) + i32.const 1 + ) + (func $function-call/Foo#fnVoid (param $0 i32) + ) + (func $function-call/Foo#fnRet (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.const 3 ) (func $~start (local $0 i32) @@ -1477,7 +1796,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1804 + i32.const 3772 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1489,16 +1808,48 @@ i32.const 1088 i32.load call_indirect (type $0) + memory.size + i32.const 16 + i32.shl + i32.const 36540 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1364 + i32.const 1360 + i32.store + i32.const 1368 + i32.const 1360 + i32.store + i32.const 1360 + global.set $~lib/rt/itcms/pinSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/toSpace + i32.const 1540 + i32.const 1536 + i32.store + i32.const 1544 + i32.const 1536 + i32.store + i32.const 1536 + global.set $~lib/rt/itcms/fromSpace i32.const 1 i32.const 2 i32.const 1120 i32.load - call_indirect (type $3) + call_indirect (type $1) i32.const 3 i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -1506,68 +1857,37 @@ end i32.const 2 i32.const 3 - i32.const 1216 + i32.const 3584 i32.load - call_indirect (type $3) + call_indirect (type $1) i32.const 5 i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 1248 + i32.const 3616 i32.load - call_indirect (type $1) + call_indirect (type $3) drop - memory.size - i32.const 16 - i32.shl - i32.const 34572 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/pinSpace - i32.const 1428 - i32.const 1424 - i32.store - i32.const 1432 - i32.const 1424 - i32.store - i32.const 1424 - global.set $~lib/rt/itcms/toSpace - i32.const 1572 - i32.const 1568 - i32.store - i32.const 1576 - i32.const 1568 - i32.store - i32.const 1568 - global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1804 + i32.const 3772 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 7 call $~lib/rt/itcms/__new local.tee $0 @@ -1581,7 +1901,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1804 + i32.const 3772 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1592,6 +1912,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1613,13 +1934,13 @@ local.tee $0 i32.store local.get $0 - i32.const 1680 + i32.const 3648 i32.load call_indirect (type $2) i32.const 1 - i32.const 1712 + i32.const 3680 i32.load - call_indirect (type $1) + call_indirect (type $3) drop global.get $~lib/memory/__stack_pointer global.get $function-call/foo @@ -1628,14 +1949,14 @@ local.get $0 i32.const 1 i32.const 2 - i32.const 1744 + i32.const 3712 i32.load call_indirect (type $5) i32.const 3 i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -1647,11 +1968,269 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34592 - i32.const 34640 + i32.const 36560 + i32.const 36608 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$134 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1216 + local.set $0 + br $__inlined_func$~lib/string/String#concat$134 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36560 + i32.const 36608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3772 + i32.lt_s + if + i32.const 36560 + i32.const 36608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1152 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1184 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1648 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1648 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3456 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $function-call/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $function-call/Foo $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3772 + i32.lt_s + if + i32.const 36560 + i32.const 36608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/function-expression.debug.wat b/tests/compiler/function-expression.debug.wat index 4564289ea6..300ea53b1f 100644 --- a/tests/compiler/function-expression.debug.wat +++ b/tests/compiler/function-expression.debug.wat @@ -6,15 +6,16 @@ (type $4 (func)) (type $5 (func (param i32))) (type $6 (func (param i32 i32 i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $function-expression/f1 (mut i32) (i32.const 32)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $function-expression/f2 (mut i32) (i32.const 128)) - (global $function-expression/f3 (mut i32) (i32.const 160)) - (global $function-expression/f4 (mut i32) (i32.const 192)) - (global $function-expression/globalFunc (mut i32) (i32.const 480)) + (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)) @@ -23,46 +24,59 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1088)) - (global $~lib/memory/__data_end i32 (i32.const 1132)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33900)) - (global $~lib/memory/__heap_base i32 (i32.const 33900)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $function-expression/f2 (mut i32) (i32.const 2496)) + (global $function-expression/f3 (mut i32) (i32.const 2528)) + (global $function-expression/f4 (mut i32) (i32.const 2560)) + (global $function-expression/globalFunc (mut i32) (i32.const 2848)) + (global $~lib/rt/__rtti_base i32 (i32.const 3056)) + (global $~lib/memory/__data_end i32 (i32.const 3100)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35868)) + (global $~lib/memory/__heap_base i32 (i32.const 35868)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s\00") - (data $2 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 236) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 268) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 300) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 364) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 396) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 428) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 460) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\r\00\00\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 492) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 524) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 556) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $17 (i32.const 620) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $18 (i32.const 688) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $19 (i32.const 720) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $20 (i32.const 748) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $21 (i32.const 812) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $22 (i32.const 864) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $23 (i32.const 892) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $24 (i32.const 956) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") - (data $25 (i32.const 988) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") - (data $26 (i32.const 1020) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00") - (data $27 (i32.const 1052) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00\00\00\00\00") - (data $28 (i32.const 1088) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $5 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 572) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 796) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $17 (i32.const 1196) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2252) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $19 (i32.const 2348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s\00") + (data $21 (i32.const 2476) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2700) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 2764) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 2796) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 2828) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\r\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 2860) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") + (data $34 (i32.const 2892) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") + (data $35 (i32.const 2924) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 2956) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") + (data $37 (i32.const 2988) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00") + (data $38 (i32.const 3020) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00\00\00\00\00") + (data $39 (i32.const 3056) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 20 20 funcref) (elem $0 (i32.const 1) $start:function-expression~anonymous|0 $start:function-expression~anonymous|1 $start:function-expression~someName|2 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $start:function-expression~anonymous|6 $function-expression/testOmittedReturn1~anonymous|0 $function-expression/testOmittedReturn2~anonymous|0 $function-expression/testOmittedReturn3~anonymous|0 $function-expression/testNullable~anonymous|0 $start:function-expression~anonymous|7~anonymous|0 $start:function-expression~anonymous|7 $function-expression/testLocal~anonymous|0~anonymous|0 $function-expression/testLocal~anonymous|0 $function-expression/testField~anonymous|0~anonymous|0 $function-expression/testField~anonymous|0 $function-expression/semanticallyAnonymous~fnDecl $function-expression/semanticallyAnonymous~fnDecl|0) (export "semanticallyAnonymous" (func $function-expression/semanticallyAnonymous)) @@ -72,170 +86,19 @@ local.get $a return ) - (func $start:function-expression~anonymous|1 (param $a i32) (result i32) - local.get $a - return - ) - (func $start:function-expression~someName|2 - ) - (func $start:function-expression~anonymous|3 (result i32) - i32.const 1 - ) - (func $start:function-expression~anonymous|4 (param $a i32) (param $b i32) (result i32) - local.get $a - local.get $b - i32.add - ) - (func $function-expression/testOmitted (param $fn i32) (result i32) - i32.const 1 - i32.const 2 - i32.const 2 - global.set $~argumentsLength - local.get $fn - i32.load - call_indirect (type $2) - return - ) - (func $start:function-expression~anonymous|5 (param $a i32) (param $$1 i32) (result i32) - local.get $a - ) - (func $start:function-expression~anonymous|6 (param $$0 i32) (param $$1 i32) (result i32) - i32.const 42 - ) - (func $function-expression/testOmittedReturn1~anonymous|0 (param $a i32) (param $b i32) (result i32) - local.get $a - local.get $b - i32.add - ) - (func $function-expression/testOmittedReturn1 (result i32) - i32.const 320 - return - ) - (func $function-expression/testOmittedReturn2~anonymous|0 (param $a i32) (param $$1 i32) (result i32) - local.get $a - ) - (func $function-expression/testOmittedReturn2 (result i32) - i32.const 352 - return - ) - (func $function-expression/testOmittedReturn3~anonymous|0 (param $$0 i32) (param $$1 i32) (result i32) - i32.const 42 - ) - (func $function-expression/testOmittedReturn3 (result i32) - i32.const 384 - return - ) - (func $function-expression/testNullable~anonymous|0 (result i32) - i32.const 1 - ) - (func $function-expression/testNullable (param $b i32) (result i32) - local.get $b - if - i32.const 416 - return - else - i32.const 0 - return - end - unreachable - ) - (func $start:function-expression~anonymous|7~anonymous|0 (param $x i32) (result i32) - i32.const 24 - local.get $x - i32.add - return + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 ) - (func $function-expression/testGlobal - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - global.set $~argumentsLength - global.get $function-expression/globalFunc - i32.load - call_indirect (type $3) - local.tee $0 - i32.store + call $~lib/rt/common/OBJECT#get:rtSize i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.load - call_indirect (type $0) - i32.const 25 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - 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 - ) - (func $function-expression/testLocal~anonymous|0~anonymous|0 (param $x i32) (result i32) - i32.const 24 - local.get $x - i32.add + i32.shr_u return ) - (func $function-expression/testLocal - (local $localFunc i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 544 - local.tee $localFunc - i32.store - i32.const 1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - global.set $~argumentsLength - local.get $localFunc - i32.load - call_indirect (type $3) - local.tee $1 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $0) - i32.const 25 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -300,7 +163,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 224 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -370,7 +233,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 224 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -387,7 +250,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 224 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -417,8 +280,8 @@ i32.load i32.gt_u if - i32.const 768 - i32.const 832 + i32.const 352 + i32.const 416 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -486,7 +349,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 640 + i32.const 224 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -638,7 +501,7 @@ i32.eqz if i32.const 0 - i32.const 912 + i32.const 496 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -658,7 +521,7 @@ i32.eqz if i32.const 0 - i32.const 912 + i32.const 496 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -721,7 +584,7 @@ i32.eqz if i32.const 0 - i32.const 912 + i32.const 496 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -874,7 +737,7 @@ i32.eqz if i32.const 0 - i32.const 912 + i32.const 496 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -891,7 +754,7 @@ i32.eqz if i32.const 0 - i32.const 912 + i32.const 496 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -980,7 +843,7 @@ i32.eqz if i32.const 0 - i32.const 912 + i32.const 496 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -1023,7 +886,7 @@ i32.eqz if i32.const 0 - i32.const 912 + i32.const 496 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -1041,7 +904,7 @@ i32.eqz if i32.const 0 - i32.const 912 + i32.const 496 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -1109,7 +972,7 @@ i32.eqz if i32.const 0 - i32.const 912 + i32.const 496 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1226,7 +1089,7 @@ i32.eqz if i32.const 0 - i32.const 912 + i32.const 496 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1272,7 +1135,7 @@ i32.eqz if i32.const 0 - i32.const 912 + i32.const 496 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1304,7 +1167,7 @@ i32.eqz if i32.const 0 - i32.const 912 + i32.const 496 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1548,7 +1411,7 @@ i32.eqz if i32.const 0 - i32.const 912 + i32.const 496 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1768,7 +1631,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 224 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1876,8 +1739,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 576 - i32.const 912 + i32.const 160 + i32.const 496 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1979,7 +1842,7 @@ i32.eqz if i32.const 0 - i32.const 912 + i32.const 496 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -2050,7 +1913,7 @@ i32.eqz if i32.const 0 - i32.const 912 + i32.const 496 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2207,7 +2070,7 @@ i32.eqz if i32.const 0 - i32.const 912 + i32.const 496 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2322,7 +2185,7 @@ i32.eqz if i32.const 0 - i32.const 912 + i32.const 496 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2342,7 +2205,7 @@ i32.eqz if i32.const 0 - i32.const 912 + i32.const 496 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2390,8 +2253,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 576 - i32.const 640 + i32.const 160 + i32.const 224 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2436,103 +2299,497 @@ local.get $ptr return ) - (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) - (local $child i32) - (local $parent i32) - (local $parentColor i32) - local.get $childPtr - i32.eqz - if - return - end - i32.const 1 - drop - local.get $parentPtr - i32.eqz - if - i32.const 0 - i32.const 640 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $childPtr - i32.const 20 - i32.sub - local.set $child - local.get $child - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u if - local.get $parentPtr - i32.const 20 - i32.sub - local.set $parent - local.get $parent - call $~lib/rt/itcms/Object#get:color - local.set $parentColor - local.get $parentColor - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq + local.get $value + i32.const 100 + i32.lt_u if - local.get $expectMultiple - if - local.get $parent - call $~lib/rt/itcms/Object#makeGray - else - local.get $child - call $~lib/rt/itcms/Object#makeGray - end + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return else - local.get $parentColor i32.const 3 - i32.eq - if (result i32) - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - else - i32.const 0 - end - if - local.get $child - call $~lib/rt/itcms/Object#makeGray - end + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return end + unreachable end + unreachable ) - (func $function-expression/FieldClass#set:fieldFunc (param $this i32) (param $fieldFunc i32) - local.get $this - local.get $fieldFunc - i32.store - local.get $this - local.get $fieldFunc - i32.const 0 - call $~lib/rt/itcms/__link + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 796 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 796 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end ) - (func $function-expression/testField~anonymous|0~anonymous|0 (param $x i32) (result i32) - i32.const 24 - local.get $x - i32.add + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub return ) - (func $function-expression/FieldClass#get:fieldFunc (param $this i32) (result i32) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $start:function-expression~anonymous|1 (param $a i32) (result i32) + local.get $a + return + ) + (func $start:function-expression~someName|2 + ) + (func $start:function-expression~anonymous|3 (result i32) + i32.const 1 + ) + (func $start:function-expression~anonymous|4 (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + ) + (func $function-expression/testOmitted (param $fn i32) (result i32) + i32.const 1 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + local.get $fn i32.load + call_indirect (type $2) + return ) - (func $function-expression/semanticallyAnonymous~fnDecl (param $val i32) (result i32) - local.get $val + (func $start:function-expression~anonymous|5 (param $a i32) (param $$1 i32) (result i32) + local.get $a + ) + (func $start:function-expression~anonymous|6 (param $$0 i32) (param $$1 i32) (result i32) + i32.const 42 + ) + (func $function-expression/testOmittedReturn1~anonymous|0 (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + ) + (func $function-expression/testOmittedReturn1 (result i32) + i32.const 2688 return ) - (func $function-expression/semanticallyAnonymous~fnDecl|0 (param $val i32) (result i32) - local.get $val + (func $function-expression/testOmittedReturn2~anonymous|0 (param $a i32) (param $$1 i32) (result i32) + local.get $a + ) + (func $function-expression/testOmittedReturn2 (result i32) + i32.const 2720 return ) - (func $function-expression/semanticallyAnonymous - (local $fnDecl i32) + (func $function-expression/testOmittedReturn3~anonymous|0 (param $$0 i32) (param $$1 i32) (result i32) + i32.const 42 + ) + (func $function-expression/testOmittedReturn3 (result i32) + i32.const 2752 + return + ) + (func $function-expression/testNullable~anonymous|0 (result i32) + i32.const 1 + ) + (func $function-expression/testNullable (param $b i32) (result i32) + local.get $b + if + i32.const 2784 + return + else + i32.const 0 + return + end + unreachable + ) + (func $start:function-expression~anonymous|7~anonymous|0 (param $x i32) (result i32) + i32.const 24 + local.get $x + i32.add + return + ) + (func $function-expression/testGlobal + (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2541,20 +2798,27 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + i32.const 1 global.get $~lib/memory/__stack_pointer - i32.const 1040 - local.tee $fnDecl + i32.const 0 + global.set $~argumentsLength + global.get $function-expression/globalFunc + i32.load + call_indirect (type $3) + local.tee $0 i32.store - local.get $fnDecl - drop - local.get $fnDecl - i32.const 1072 - i32.ne + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.load + call_indirect (type $0) + i32.const 25 + i32.eq i32.eqz if i32.const 0 - i32.const 64 - i32.const 92 + i32.const 2432 + i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable @@ -2564,157 +2828,184 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 768 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 576 - local.get $0 - call $~lib/rt/itcms/__visit + (func $function-expression/testLocal~anonymous|0~anonymous|0 (param $x i32) (result i32) + i32.const 24 + local.get $x + i32.add + return ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 + (func $function-expression/testLocal + (local $localFunc i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 2912 + local.tee $localFunc + i32.store + i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $localFunc i32.load + call_indirect (type $3) + local.tee $1 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/function/Function<%28i32%29=>i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%29=>i32>#__visit - ) - (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 + i32.load + call_indirect (type $0) + i32.const 25 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>void>#__visit + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end ) - (func $~lib/function/Function<%28%29=>i32>#get:_env (param $this i32) (result i32) + (func $function-expression/FieldClass#set:fieldFunc (param $this i32) (param $fieldFunc i32) local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>i32>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $fieldFunc + i32.store local.get $this - i32.load offset=4 + local.get $fieldFunc + i32.const 0 + call $~lib/rt/itcms/__link ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + (func $function-expression/testField~anonymous|0~anonymous|0 (param $x i32) (result i32) + i32.const 24 + local.get $x + i32.add + return ) - (func $~lib/function/Function<%28%29=>%28i32%29=>i32>#get:_env (param $this i32) (result i32) + (func $function-expression/FieldClass#get:fieldFunc (param $this i32) (result i32) local.get $this - i32.load offset=4 + i32.load ) - (func $~lib/function/Function<%28%29=>%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>%28i32%29=>i32>#__visit + (func $function-expression/semanticallyAnonymous~fnDecl (param $val i32) (result i32) + local.get $val + return ) - (func $function-expression/FieldClass~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + (func $function-expression/semanticallyAnonymous~fnDecl|0 (param $val i32) (result i32) + local.get $val + return ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $function-expression/FieldClass - block $~lib/function/Function<%28%29=>%28i32%29=>i32> - block $~lib/function/Function<%28i32%2Ci32%29=>i32> - block $~lib/function/Function<%28%29=>i32> - block $~lib/function/Function<%28%29=>void> - block $~lib/function/Function<%28i32%29=>i32> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $~lib/function/Function<%28%29=>void> $~lib/function/Function<%28%29=>i32> $~lib/function/Function<%28i32%2Ci32%29=>i32> $~lib/function/Function<%28%29=>%28i32%29=>i32> $function-expression/FieldClass $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>%28i32%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $function-expression/FieldClass~visit - return + (func $function-expression/semanticallyAnonymous + (local $fnDecl i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3008 + local.tee $fnDecl + i32.store + local.get $fnDecl + drop + local.get $fnDecl + i32.const 3040 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 92 + i32.const 3 + call $~lib/builtins/abort + unreachable end - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~start call $start:function-expression @@ -2724,14 +3015,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33920 - i32.const 33968 + i32.const 35888 + i32.const 35936 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 128 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2368 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $function-expression/FieldClass#constructor (param $this i32) (param $fieldFunc i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer @@ -2793,7 +3289,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1008 + i32.const 2976 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -2827,7 +3323,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 81 i32.const 3 call $~lib/builtins/abort @@ -2848,207 +3344,584 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 304 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 448 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 1 i32.const 1 global.set $~argumentsLength global.get $function-expression/f1 i32.load - call_indirect (type $0) + call_indirect (type $0) + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 1 + global.set $~argumentsLength + global.get $function-expression/f2 + i32.load + call_indirect (type $0) + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $~argumentsLength + global.get $function-expression/f3 + i32.load + call_indirect (type $4) + i32.const 0 + global.set $~argumentsLength + global.get $function-expression/f4 + i32.load + call_indirect (type $3) + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2592 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $function-expression/testOmitted + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2624 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $function-expression/testOmitted + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2656 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $function-expression/testOmitted + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + call $function-expression/testOmittedReturn1 + i32.load + call_indirect (type $2) + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + call $function-expression/testOmittedReturn2 + i32.load + call_indirect (type $2) i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 64 - i32.const 4 + i32.const 2432 + i32.const 35 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2 i32.const 1 + i32.const 2 + i32.const 2 global.set $~argumentsLength - global.get $function-expression/f2 + call $function-expression/testOmittedReturn3 i32.load - call_indirect (type $0) - i32.const 2 + call_indirect (type $2) + i32.const 42 i32.eq i32.eqz if i32.const 0 - i32.const 64 - i32.const 9 + i32.const 2432 + i32.const 36 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - global.set $~argumentsLength - global.get $function-expression/f3 - i32.load - call_indirect (type $4) + call $function-expression/testNullable i32.const 0 - global.set $~argumentsLength - global.get $function-expression/f4 - i32.load - call_indirect (type $3) - i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 64 - i32.const 16 + i32.const 2432 + i32.const 45 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 224 - local.set $0 + call $function-expression/testGlobal + call $function-expression/testLocal + call $function-expression/testField + call $function-expression/semanticallyAnonymous global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $0 - call $function-expression/testOmitted - i32.const 3 - i32.eq + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 592 + i32.const 720 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value i32.eqz if + i32.const 784 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset i32.const 0 - i32.const 64 - i32.const 21 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end end - i32.const 256 - local.set $0 + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $start:function-expression~anonymous|7 (result i32) + (local $myFunc i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2816 + local.tee $myFunc + i32.store + local.get $myFunc + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $function-expression/testLocal~anonymous|0 (result i32) + (local $myFunc i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2880 + local.tee $myFunc + i32.store + local.get $myFunc + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $function-expression/testField~anonymous|0 (result i32) + (local $myFunc i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2944 + local.tee $myFunc + i32.store + local.get $myFunc + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 352 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 160 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1216 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2272 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/function/Function<%28%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28%29=>%28i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) local.get $0 - i32.store + local.get $1 + call $~lib/object/Object~visit local.get $0 - call $function-expression/testOmitted - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 288 - local.set $0 - global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/function/Function<%28%29=>%28i32%29=>i32>#__visit + ) + (func $function-expression/FieldClass~visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 - i32.store + local.get $1 + call $~lib/object/Object~visit local.get $0 - call $function-expression/testOmitted - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 2 - global.set $~argumentsLength - call $function-expression/testOmittedReturn1 - i32.load - call_indirect (type $2) - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 2 - global.set $~argumentsLength - call $function-expression/testOmittedReturn2 - i32.load - call_indirect (type $2) - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 2 - global.set $~argumentsLength - call $function-expression/testOmittedReturn3 i32.load - call_indirect (type $2) - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $function-expression/testNullable - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 45 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $function-expression/FieldClass + block $~lib/function/Function<%28%29=>%28i32%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $~lib/function/Function<%28%29=>i32> + block $~lib/function/Function<%28%29=>void> + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $~lib/function/Function<%28%29=>void> $~lib/function/Function<%28%29=>i32> $~lib/function/Function<%28i32%2Ci32%29=>i32> $~lib/function/Function<%28%29=>%28i32%29=>i32> $function-expression/FieldClass $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>%28i32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $function-expression/FieldClass~visit + return end - call $function-expression/testGlobal - call $function-expression/testLocal - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 688 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 720 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 864 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - call $function-expression/testField - call $function-expression/semanticallyAnonymous - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + unreachable ) (func $~lib/function/Function<%28i32%29=>i32>#__visit (param $this i32) (param $cookie i32) (local $2 i32) @@ -3170,76 +4043,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $start:function-expression~anonymous|7 (result i32) - (local $myFunc i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 448 - local.tee $myFunc - i32.store - local.get $myFunc - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $function-expression/testLocal~anonymous|0 (result i32) - (local $myFunc i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 512 - local.tee $myFunc - i32.store - local.get $myFunc - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $function-expression/testField~anonymous|0 (result i32) - (local $myFunc i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 976 - local.tee $myFunc - i32.store - local.get $myFunc - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) ) diff --git a/tests/compiler/function-expression.release.wat b/tests/compiler/function-expression.release.wat index b3f4027a8c..23421544e9 100644 --- a/tests/compiler/function-expression.release.wat +++ b/tests/compiler/function-expression.release.wat @@ -1,13 +1,12 @@ (module - (type $0 (func (result i32))) - (type $1 (func (param i32 i32) (result i32))) + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (result i32))) (type $2 (func (param i32) (result i32))) (type $3 (func)) (type $4 (func (param i32))) (type $5 (func (param i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,59 +17,80 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34924)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36892)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") - (data $1 (i32.const 1068) "<") - (data $1.1 (i32.const 1080) "\02\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") - (data $2 (i32.const 1132) "\1c") - (data $2.1 (i32.const 1144) "\04\00\00\00\08\00\00\00\02") - (data $3 (i32.const 1164) "\1c") - (data $3.1 (i32.const 1176) "\05\00\00\00\08\00\00\00\03") - (data $4 (i32.const 1196) "\1c") - (data $4.1 (i32.const 1208) "\06\00\00\00\08\00\00\00\04") - (data $5 (i32.const 1228) "\1c") - (data $5.1 (i32.const 1240) "\07\00\00\00\08\00\00\00\05") - (data $6 (i32.const 1260) "\1c") - (data $6.1 (i32.const 1272) "\07\00\00\00\08\00\00\00\06") - (data $7 (i32.const 1292) "\1c") - (data $7.1 (i32.const 1304) "\07\00\00\00\08\00\00\00\07") - (data $8 (i32.const 1324) "\1c") - (data $8.1 (i32.const 1336) "\07\00\00\00\08\00\00\00\08") - (data $9 (i32.const 1356) "\1c") - (data $9.1 (i32.const 1368) "\07\00\00\00\08\00\00\00\t") - (data $10 (i32.const 1388) "\1c") - (data $10.1 (i32.const 1400) "\07\00\00\00\08\00\00\00\n") - (data $11 (i32.const 1420) "\1c") - (data $11.1 (i32.const 1432) "\06\00\00\00\08\00\00\00\0b") - (data $12 (i32.const 1452) "\1c") - (data $12.1 (i32.const 1464) "\04\00\00\00\08\00\00\00\0c") - (data $13 (i32.const 1484) "\1c") - (data $13.1 (i32.const 1496) "\08\00\00\00\08\00\00\00\r") - (data $14 (i32.const 1516) "\1c") - (data $14.1 (i32.const 1528) "\04\00\00\00\08\00\00\00\0e") - (data $15 (i32.const 1548) "\1c") - (data $15.1 (i32.const 1560) "\08\00\00\00\08\00\00\00\0f") - (data $16 (i32.const 1580) "<") - (data $16.1 (i32.const 1592) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $17 (i32.const 1644) "<") - (data $17.1 (i32.const 1656) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $20 (i32.const 1772) "<") - (data $20.1 (i32.const 1784) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $21 (i32.const 1836) ",") - (data $21.1 (i32.const 1848) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $23 (i32.const 1916) "<") - (data $23.1 (i32.const 1928) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $24 (i32.const 1980) "\1c") - (data $24.1 (i32.const 1992) "\04\00\00\00\08\00\00\00\10") - (data $25 (i32.const 2012) "\1c") - (data $25.1 (i32.const 2024) "\08\00\00\00\08\00\00\00\11") - (data $26 (i32.const 2044) "\1c") - (data $26.1 (i32.const 2056) "\04\00\00\00\08\00\00\00\12") - (data $27 (i32.const 2076) "\1c") - (data $27.1 (i32.const 2088) "\04\00\00\00\08\00\00\00\13") - (data $28 (i32.const 2112) "\n\00\00\00 \00\00\00 \00\00\00 ") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02") + (data $4 (i32.const 1164) "<") + (data $4.1 (i32.const 1176) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1228) "<") + (data $5.1 (i32.const 1240) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1356) "<") + (data $8.1 (i32.const 1368) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1420) ",") + (data $9.1 (i32.const 1432) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1500) "<") + (data $11.1 (i32.const 1512) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1564) "\1c") + (data $12.1 (i32.const 1576) "\02\00\00\00\02\00\00\00:") + (data $13 (i32.const 1596) "|") + (data $13.1 (i32.const 1608) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $14 (i32.const 1724) "<") + (data $14.1 (i32.const 1736) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $15 (i32.const 1788) "\1c") + (data $15.1 (i32.const 1800) "\02\00\00\00\02\00\00\000") + (data $16 (i32.const 1820) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $17 (i32.const 2220) "\1c\04") + (data $17.1 (i32.const 2232) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $18 (i32.const 3276) "\\") + (data $18.1 (i32.const 3288) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $19 (i32.const 3372) "<") + (data $19.1 (i32.const 3384) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $20 (i32.const 3436) "<") + (data $20.1 (i32.const 3448) "\02\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") + (data $21 (i32.const 3500) "\1c") + (data $21.1 (i32.const 3512) "\04\00\00\00\08\00\00\00\02") + (data $22 (i32.const 3532) "\1c") + (data $22.1 (i32.const 3544) "\05\00\00\00\08\00\00\00\03") + (data $23 (i32.const 3564) "\1c") + (data $23.1 (i32.const 3576) "\06\00\00\00\08\00\00\00\04") + (data $24 (i32.const 3596) "\1c") + (data $24.1 (i32.const 3608) "\07\00\00\00\08\00\00\00\05") + (data $25 (i32.const 3628) "\1c") + (data $25.1 (i32.const 3640) "\07\00\00\00\08\00\00\00\06") + (data $26 (i32.const 3660) "\1c") + (data $26.1 (i32.const 3672) "\07\00\00\00\08\00\00\00\07") + (data $27 (i32.const 3692) "\1c") + (data $27.1 (i32.const 3704) "\07\00\00\00\08\00\00\00\08") + (data $28 (i32.const 3724) "\1c") + (data $28.1 (i32.const 3736) "\07\00\00\00\08\00\00\00\t") + (data $29 (i32.const 3756) "\1c") + (data $29.1 (i32.const 3768) "\07\00\00\00\08\00\00\00\n") + (data $30 (i32.const 3788) "\1c") + (data $30.1 (i32.const 3800) "\06\00\00\00\08\00\00\00\0b") + (data $31 (i32.const 3820) "\1c") + (data $31.1 (i32.const 3832) "\04\00\00\00\08\00\00\00\0c") + (data $32 (i32.const 3852) "\1c") + (data $32.1 (i32.const 3864) "\08\00\00\00\08\00\00\00\r") + (data $33 (i32.const 3884) "\1c") + (data $33.1 (i32.const 3896) "\04\00\00\00\08\00\00\00\0e") + (data $34 (i32.const 3916) "\1c") + (data $34.1 (i32.const 3928) "\08\00\00\00\08\00\00\00\0f") + (data $35 (i32.const 3948) "\1c") + (data $35.1 (i32.const 3960) "\04\00\00\00\08\00\00\00\10") + (data $36 (i32.const 3980) "\1c") + (data $36.1 (i32.const 3992) "\08\00\00\00\08\00\00\00\11") + (data $37 (i32.const 4012) "\1c") + (data $37.1 (i32.const 4024) "\04\00\00\00\08\00\00\00\12") + (data $38 (i32.const 4044) "\1c") + (data $38.1 (i32.const 4056) "\04\00\00\00\08\00\00\00\13") + (data $39 (i32.const 4080) "\n\00\00\00 \00\00\00 \00\00\00 ") (table $0 20 20 funcref) (elem $0 (i32.const 1) $start:function-expression~anonymous|0 $start:function-expression~anonymous|0 $start:function-expression~someName|2 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $start:function-expression~anonymous|6 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $start:function-expression~anonymous|6 $start:function-expression~anonymous|3 $start:function-expression~anonymous|7~anonymous|0 $start:function-expression~anonymous|7 $start:function-expression~anonymous|7~anonymous|0 $function-expression/testLocal~anonymous|0 $start:function-expression~anonymous|7~anonymous|0 $function-expression/testField~anonymous|0 $start:function-expression~anonymous|0 $start:function-expression~anonymous|0) (export "semanticallyAnonymous" (func $function-expression/semanticallyAnonymous)) @@ -79,31 +99,16 @@ (func $start:function-expression~anonymous|0 (param $0 i32) (result i32) local.get $0 ) - (func $start:function-expression~someName|2 - ) - (func $start:function-expression~anonymous|3 (result i32) - i32.const 1 - ) - (func $start:function-expression~anonymous|4 (param $0 i32) (param $1 i32) (result i32) - i32.const 3 - ) - (func $start:function-expression~anonymous|5 (param $0 i32) (param $1 i32) (result i32) - i32.const 1 - ) - (func $start:function-expression~anonymous|6 (param $0 i32) (param $1 i32) (result i32) - i32.const 42 - ) - (func $start:function-expression~anonymous|7~anonymous|0 (param $0 i32) (result i32) - local.get $0 - i32.const 24 - i32.add - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1792 + i32.const 1376 + call $~lib/rt/itcms/__visit + i32.const 1184 call $~lib/rt/itcms/__visit - i32.const 1600 + i32.const 2240 + call $~lib/rt/itcms/__visit + i32.const 3296 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -124,7 +129,7 @@ i32.ne if i32.const 0 - i32.const 1664 + i32.const 1248 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -157,7 +162,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1248 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -166,7 +171,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$133 + block $__inlined_func$~lib/rt/itcms/Object#unlink$146 local.get $0 i32.load offset=4 i32.const -4 @@ -178,19 +183,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34924 + i32.const 36892 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1248 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$133 + br $__inlined_func$~lib/rt/itcms/Object#unlink$146 end local.get $0 i32.load offset=8 @@ -198,7 +203,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1248 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -227,12 +232,12 @@ i32.const 1 else local.get $1 - i32.const 2112 + i32.const 4080 i32.load i32.gt_u if - i32.const 1792 - i32.const 1856 + i32.const 1376 + i32.const 1440 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -241,7 +246,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 2116 + i32.const 4084 i32.add i32.load i32.const 32 @@ -312,7 +317,7 @@ i32.eqz if i32.const 0 - i32.const 1936 + i32.const 1520 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -326,7 +331,7 @@ i32.lt_u if i32.const 0 - i32.const 1936 + i32.const 1520 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -372,7 +377,7 @@ i32.eqz if i32.const 0 - i32.const 1936 + i32.const 1520 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -455,7 +460,7 @@ i32.eqz if i32.const 0 - i32.const 1936 + i32.const 1520 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -469,7 +474,7 @@ i32.eqz if i32.const 0 - i32.const 1936 + i32.const 1520 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -530,7 +535,7 @@ i32.eqz if i32.const 0 - i32.const 1936 + i32.const 1520 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -563,7 +568,7 @@ i32.lt_u if i32.const 0 - i32.const 1936 + i32.const 1520 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -578,7 +583,7 @@ i32.ne if i32.const 0 - i32.const 1936 + i32.const 1520 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -629,7 +634,7 @@ i32.eqz if i32.const 0 - i32.const 1936 + i32.const 1520 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -701,7 +706,7 @@ i64.lt_u if i32.const 0 - i32.const 1936 + i32.const 1520 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -726,7 +731,7 @@ i32.gt_u if i32.const 0 - i32.const 1936 + i32.const 1520 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -753,7 +758,7 @@ i32.gt_u if i32.const 0 - i32.const 1936 + i32.const 1520 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -825,10 +830,10 @@ if unreachable end - i32.const 34928 + i32.const 36896 i32.const 0 i32.store - i32.const 36496 + i32.const 38464 i32.const 0 i32.store loop $for-loop|0 @@ -839,7 +844,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34928 + i32.const 36896 i32.add i32.const 0 i32.store offset=4 @@ -857,7 +862,7 @@ i32.add i32.const 2 i32.shl - i32.const 34928 + i32.const 36896 i32.add i32.const 0 i32.store offset=96 @@ -875,14 +880,14 @@ br $for-loop|0 end end - i32.const 34928 - i32.const 36500 + i32.const 36896 + i32.const 38468 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34928 + i32.const 36896 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -967,7 +972,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34924 + i32.const 36892 i32.lt_u if local.get $0 @@ -1056,14 +1061,14 @@ i32.ne if i32.const 0 - i32.const 1664 + i32.const 1248 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34924 + i32.const 36892 i32.lt_u if local.get $0 @@ -1086,7 +1091,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34924 + i32.const 36892 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1115,7 +1120,7 @@ end if i32.const 0 - i32.const 1936 + i32.const 1520 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1145,18 +1150,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1164,32 +1236,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1936 + i32.const 1520 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1202,23 +1278,35 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1184 + i32.const 1248 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$71 + block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 - local.set $0 + local.set $2 loop $do-loop|0 - local.get $0 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $0 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1232,9 +1320,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$71 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end - local.get $0 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1257,39 +1345,94 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $1 + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1184 + i32.const 1520 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 call $~lib/rt/tlsf/searchBlock - local.tee $0 + local.tee $2 i32.eqz if memory.size - local.tee $0 + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end i32.const 4 - local.get $1 + local.get $4 i32.load offset=1568 - local.get $0 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.tee $2 - local.get $0 + local.tee $3 local.get $2 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1297,8 +1440,8 @@ unreachable end end - local.get $1 - local.get $0 + local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1306,119 +1449,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $1 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $0 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1936 + i32.const 1520 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $0 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1936 + i32.const 1520 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $0 + local.get $4 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $0 + local.get $2 i32.load - local.tee $2 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1520 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub local.tee $3 i32.const 16 i32.ge_u if - local.get $0 local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $0 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $2 + local.get $5 + i32.add + local.tee $5 local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $1 - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $0 local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $0 + local.get $2 i32.const 4 i32.add - local.get $0 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $0 - i32.const 9 + local.get $2 + local.get $1 i32.store offset=12 + local.get $2 local.get $0 - i32.const 4 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $0 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $0 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $0 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $0 + local.get $2 i32.load i32.const -4 i32.and @@ -1426,25 +1586,31 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $0 + local.get $2 i32.const 20 i32.add - local.tee $0 + local.tee $1 i32.const 0 - i32.store align=1 local.get $0 + memory.fill + local.get $1 ) - (func $function-expression/semanticallyAnonymous + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 2156 + i32.const 4124 i32.lt_s if - i32.const 34944 - i32.const 34992 + i32.const 36912 + i32.const 36960 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1453,56 +1619,210 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2064 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $function-expression/FieldClass - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $function-expression/FieldClass $invalid - end - return - end - return - end - return - end + block $__inlined_func$~lib/util/number/utoa32$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1808 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end + end + local.get $1 + i32.const 100 + i32.ge_u + if local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add i32.load - call $~lib/rt/itcms/__visit - return + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 end - unreachable + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end + local.get $0 + ) + (func $start:function-expression~someName|2 + ) + (func $start:function-expression~anonymous|3 (result i32) + i32.const 1 + ) + (func $start:function-expression~anonymous|4 (param $0 i32) (param $1 i32) (result i32) + i32.const 3 + ) + (func $start:function-expression~anonymous|5 (param $0 i32) (param $1 i32) (result i32) + i32.const 1 + ) + (func $start:function-expression~anonymous|6 (param $0 i32) (param $1 i32) (result i32) + i32.const 42 + ) + (func $start:function-expression~anonymous|7~anonymous|0 (param $0 i32) (result i32) + local.get $0 + i32.const 24 + i32.add + ) + (func $function-expression/semanticallyAnonymous global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2156 + i32.const 4124 i32.lt_s if - i32.const 34944 - i32.const 34992 + i32.const 36912 + i32.const 36960 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1512,11 +1832,8 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 4032 i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -1525,6 +1842,206 @@ (func $~start call $start:function-expression ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4124 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4124 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$151 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1152 + local.set $0 + br $__inlined_func$~lib/string/String#concat$151 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36912 + i32.const 36960 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4124 + i32.lt_s + if + i32.const 36912 + i32.const 36960 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1088 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1120 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3392 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $start:function-expression (local $0 i32) (local $1 i32) @@ -1535,12 +2052,44 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 2156 + i32.const 4124 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + memory.size + i32.const 16 + i32.shl + i32.const 36892 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/pinSpace + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/toSpace + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + global.set $~lib/rt/itcms/fromSpace i32.const 1 i32.const 1056 i32.load @@ -1549,91 +2098,91 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 4 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 2 - i32.const 1152 + i32.const 3520 i32.load call_indirect (type $2) i32.const 2 i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 9 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1184 + i32.const 3552 i32.load call_indirect (type $3) - i32.const 1216 + i32.const 3584 i32.load - call_indirect (type $0) + call_indirect (type $1) i32.const 1 i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1248 + i32.const 3616 i32.store i32.const 1 i32.const 2 - i32.const 1248 + i32.const 3616 i32.load - call_indirect (type $1) + call_indirect (type $0) i32.const 3 i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1280 + i32.const 3648 i32.store i32.const 1 i32.const 2 - i32.const 1280 + i32.const 3648 i32.load - call_indirect (type $1) + call_indirect (type $0) i32.const 1 i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1312 + i32.const 3680 i32.store i32.const 1 i32.const 2 - i32.const 1312 + i32.const 3680 i32.load - call_indirect (type $1) + call_indirect (type $0) i32.const 42 i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -1641,14 +2190,14 @@ end i32.const 1 i32.const 2 - i32.const 1344 + i32.const 3712 i32.load - call_indirect (type $1) + call_indirect (type $0) i32.const 3 i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -1656,14 +2205,14 @@ end i32.const 1 i32.const 2 - i32.const 1376 + i32.const 3744 i32.load - call_indirect (type $1) + call_indirect (type $0) i32.const 1 i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -1671,14 +2220,14 @@ end i32.const 1 i32.const 2 - i32.const 1408 + i32.const 3776 i32.load - call_indirect (type $1) + call_indirect (type $0) i32.const 42 i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 36 i32.const 1 call $~lib/builtins/abort @@ -1689,16 +2238,16 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2156 + i32.const 4124 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 1504 + i32.const 3872 i32.load - call_indirect (type $0) + call_indirect (type $1) local.tee $0 i32.store i32.const 1 @@ -1709,7 +2258,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -1724,19 +2273,19 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2156 + i32.const 4124 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 1568 + i32.const 3936 i32.store global.get $~lib/memory/__stack_pointer - i32.const 1568 + i32.const 3936 i32.load - call_indirect (type $0) + call_indirect (type $1) local.tee $0 i32.store offset=4 i32.const 1 @@ -1747,7 +2296,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -1757,44 +2306,12 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - memory.size - i32.const 16 - i32.shl - i32.const 34924 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1716 - i32.const 1712 - i32.store - i32.const 1720 - i32.const 1712 - i32.store - i32.const 1712 - global.set $~lib/rt/itcms/pinSpace - i32.const 1748 - i32.const 1744 - i32.store - i32.const 1752 - i32.const 1744 - i32.store - i32.const 1744 - global.set $~lib/rt/itcms/toSpace - i32.const 1892 - i32.const 1888 - i32.store - i32.const 1896 - i32.const 1888 - i32.store - i32.const 1888 - global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2156 + i32.const 4124 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -1805,14 +2322,14 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2032 + i32.const 4000 i32.store global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2156 + i32.const 4124 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -1822,6 +2339,8 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 9 call $~lib/rt/itcms/__new local.tee $1 i32.store @@ -1829,23 +2348,23 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 2032 + i32.const 4000 i32.store offset=8 local.get $1 - i32.const 2032 + i32.const 4000 i32.store local.get $1 i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1248 i32.const 295 i32.const 14 call $~lib/builtins/abort unreachable end global.get $~lib/rt/itcms/white - i32.const 2016 + i32.const 3984 i32.load i32.const 3 i32.and @@ -1862,7 +2381,7 @@ i32.eqz i32.eq if - i32.const 2012 + i32.const 3980 call $~lib/rt/itcms/Object#makeGray else global.get $~lib/rt/itcms/state @@ -1873,7 +2392,7 @@ i32.eq i32.and if - i32.const 2012 + i32.const 3980 call $~lib/rt/itcms/Object#makeGray end end @@ -1891,7 +2410,7 @@ local.get $1 i32.load i32.load - call_indirect (type $0) + call_indirect (type $1) local.tee $0 i32.store offset=8 i32.const 1 @@ -1902,7 +2421,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 81 i32.const 3 call $~lib/builtins/abort @@ -1919,8 +2438,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34944 - i32.const 34992 + i32.const 36912 + i32.const 36960 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1932,11 +2451,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2156 + i32.const 4124 i32.lt_s if - i32.const 34944 - i32.const 34992 + i32.const 36912 + i32.const 36960 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1946,13 +2465,13 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 1472 + i32.const 3840 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1472 + i32.const 3840 ) (func $function-expression/testLocal~anonymous|0 (result i32) global.get $~lib/memory/__stack_pointer @@ -1960,11 +2479,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2156 + i32.const 4124 i32.lt_s if - i32.const 34944 - i32.const 34992 + i32.const 36912 + i32.const 36960 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1974,13 +2493,13 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 1536 + i32.const 3904 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1536 + i32.const 3904 ) (func $function-expression/testField~anonymous|0 (result i32) global.get $~lib/memory/__stack_pointer @@ -1988,11 +2507,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2156 + i32.const 4124 i32.lt_s if - i32.const 34944 - i32.const 34992 + i32.const 36912 + i32.const 36960 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2002,12 +2521,73 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 2000 + i32.const 3968 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 2000 + i32.const 3968 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $function-expression/FieldClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $function-expression/FieldClass $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4124 + i32.lt_s + if + i32.const 36912 + i32.const 36960 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/function-types.debug.wat b/tests/compiler/function-types.debug.wat index 06b04a6227..acee9df05d 100644 --- a/tests/compiler/function-types.debug.wat +++ b/tests/compiler/function-types.debug.wat @@ -1,24 +1,67 @@ (module - (type $0 (func (param i32 i32) (result i32))) - (type $1 (func (result i32))) - (type $2 (func (param i32 i32 i32) (result i32))) - (type $3 (func)) - (type $4 (func (param i64 i64) (result i64))) - (type $5 (func (param f64 f64) (result f64))) - (type $6 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32) (result i32))) + (type $8 (func (param i64 i64) (result i64))) + (type $9 (func (param f64 f64) (result f64))) + (type $10 (func (param i32 i32 i64) (result i32))) + (type $11 (func (param i32 i64 i32))) + (type $12 (func (param i64 i32) (result i32))) + (type $13 (func (param i32 i64 i32 i32))) + (type $14 (func (param i32 i32 i32 i32))) (global $function-types/i32Adder (mut i32) (i32.const 0)) (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/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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $function-types/i64Adder (mut i32) (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 204)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32972)) - (global $~lib/memory/__heap_base i32 (i32.const 32972)) + (global $~lib/rt/__rtti_base i32 (i32.const 2576)) + (global $~lib/memory/__data_end i32 (i32.const 2608)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35376)) + (global $~lib/memory/__heap_base i32 (i32.const 35376)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $5 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 572) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 796) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $17 (i32.const 1196) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2252) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $19 (i32.const 2348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2476) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2576) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 5 5 funcref) (elem $0 (i32.const 1) $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/addI32) (export "memory" (memory $0)) @@ -33,6 +76,2635 @@ i32.const 32 return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 352 + i32.const 416 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 224 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 160 + i32.const 496 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 160 + i32.const 224 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 796 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 796 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $function-types/makeAdder~anonymous|0 (param $a i64) (param $b i64) (result i64) local.get $a local.get $b @@ -40,7 +2712,7 @@ return ) (func $function-types/makeAdder (result i32) - i32.const 128 + i32.const 2496 return ) (func $function-types/makeAdder~anonymous|0 (param $a f64) (param $b f64) (result f64) @@ -50,7 +2722,7 @@ return ) (func $function-types/makeAdder (result i32) - i32.const 160 + i32.const 2528 return ) (func $function-types/doAddWithFn (param $a i32) (param $b i32) (param $fn i32) (result i32) @@ -60,7 +2732,7 @@ global.set $~argumentsLength local.get $fn i32.load - call_indirect (type $0) + call_indirect (type $2) return ) (func $function-types/doAdd (param $a i32) (param $b i32) (result i32) @@ -70,7 +2742,7 @@ global.set $~argumentsLength call $function-types/makeAdder i32.load - call_indirect (type $0) + call_indirect (type $2) return ) (func $function-types/addI32 (param $a i32) (param $b i32) (result i32) @@ -86,7 +2758,7 @@ global.set $~argumentsLength local.get $adder i32.load - call_indirect (type $0) + call_indirect (type $2) return ) (func $~start @@ -97,14 +2769,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 32992 - i32.const 33040 + i32.const 35408 + i32.const 35456 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 128 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2368 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $function-types/makeAndAdd@varargs (param $a i32) (param $b i32) (param $adder i32) (result i32) (local $3 i32) global.get $~lib/memory/__stack_pointer @@ -158,19 +3035,36 @@ i32.store call $function-types/makeAdder global.set $function-types/i32Adder + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 304 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 448 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 1 i32.const 2 i32.const 2 global.set $~argumentsLength global.get $function-types/i32Adder i32.load - call_indirect (type $0) + call_indirect (type $2) i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -184,13 +3078,13 @@ global.set $~argumentsLength global.get $function-types/i64Adder i32.load - call_indirect (type $4) + call_indirect (type $8) i64.const 30 i64.eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -202,13 +3096,13 @@ global.set $~argumentsLength call $function-types/makeAdder i32.load - call_indirect (type $5) + call_indirect (type $9) f64.const 4 f64.eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 17 i32.const 1 call $~lib/builtins/abort @@ -228,7 +3122,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -242,7 +3136,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -250,7 +3144,7 @@ end i32.const 4 i32.const 5 - i32.const 192 + i32.const 2560 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -262,7 +3156,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -279,7 +3173,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -299,7 +3193,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -310,4 +3204,329 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 592 + i32.const 720 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 784 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 352 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 160 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1216 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2272 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i64%2Ci64%29=>i64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i64%2Ci64%29=>i64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci64%29=>i64>#__visit + ) + (func $~lib/function/Function<%28f64%2Cf64%29=>f64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f64%2Cf64%29=>f64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Cf64%29=>f64>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28f64%2Cf64%29=>f64> + block $~lib/function/Function<%28i64%2Ci64%29=>i64> + block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%2Ci32%29=>i32> $~lib/function/Function<%28i64%2Ci64%29=>i64> $~lib/function/Function<%28f64%2Cf64%29=>f64> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci64%29=>i64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Cf64%29=>f64>~visit + return + end + unreachable + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i64%2Ci64%29=>i64>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i64%2Ci64%29=>i64>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28f64%2Cf64%29=>f64>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28f64%2Cf64%29=>f64>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/function-types.release.wat b/tests/compiler/function-types.release.wat index 726e8230ce..1643c171e5 100644 --- a/tests/compiler/function-types.release.wat +++ b/tests/compiler/function-types.release.wat @@ -1,23 +1,69 @@ (module (type $0 (func (param i32 i32) (result i32))) - (type $1 (func (param i64 i64) (result i64))) - (type $2 (func (param f64 f64) (result f64))) - (type $3 (func (param i32 i32 i32 i32))) - (type $4 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $1 (func)) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i64 i64) (result i64))) + (type $6 (func (param f64 f64) (result f64))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i32 i32 i32))) (global $function-types/i32Adder (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33996)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36400)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") - (data $1 (i32.const 1068) "<") - (data $1.1 (i32.const 1080) "\02\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s") - (data $2 (i32.const 1132) "\1c") - (data $2.1 (i32.const 1144) "\05\00\00\00\08\00\00\00\02") - (data $3 (i32.const 1164) "\1c") - (data $3.1 (i32.const 1176) "\06\00\00\00\08\00\00\00\03") - (data $4 (i32.const 1196) "\1c") - (data $4.1 (i32.const 1208) "\04\00\00\00\08\00\00\00\04") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02") + (data $4 (i32.const 1164) "<") + (data $4.1 (i32.const 1176) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1228) "<") + (data $5.1 (i32.const 1240) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1356) "<") + (data $8.1 (i32.const 1368) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1420) ",") + (data $9.1 (i32.const 1432) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1500) "<") + (data $11.1 (i32.const 1512) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1564) "\1c") + (data $12.1 (i32.const 1576) "\02\00\00\00\02\00\00\00:") + (data $13 (i32.const 1596) "|") + (data $13.1 (i32.const 1608) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $14 (i32.const 1724) "<") + (data $14.1 (i32.const 1736) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $15 (i32.const 1788) "\1c") + (data $15.1 (i32.const 1800) "\02\00\00\00\02\00\00\000") + (data $16 (i32.const 1820) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $17 (i32.const 2220) "\1c\04") + (data $17.1 (i32.const 2232) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $18 (i32.const 3276) "\\") + (data $18.1 (i32.const 3288) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $19 (i32.const 3372) "<") + (data $19.1 (i32.const 3384) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $20 (i32.const 3436) "<") + (data $20.1 (i32.const 3448) "\02\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s") + (data $21 (i32.const 3500) "\1c") + (data $21.1 (i32.const 3512) "\05\00\00\00\08\00\00\00\02") + (data $22 (i32.const 3532) "\1c") + (data $22.1 (i32.const 3544) "\06\00\00\00\08\00\00\00\03") + (data $23 (i32.const 3564) "\1c") + (data $23.1 (i32.const 3576) "\04\00\00\00\08\00\00\00\04") + (data $24 (i32.const 3600) "\07\00\00\00 \00\00\00 \00\00\00 ") (table $0 5 5 funcref) (elem $0 (i32.const 1) $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0) (export "memory" (memory $0)) @@ -27,6 +73,1695 @@ local.get $1 i32.add ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1376 + call $~lib/rt/itcms/__visit + i32.const 1184 + call $~lib/rt/itcms/__visit + i32.const 2240 + call $~lib/rt/itcms/__visit + i32.const 3296 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1248 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$138 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36400 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$138 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3600 + i32.load + i32.gt_u + if + i32.const 1376 + i32.const 1440 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3604 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36400 + i32.const 0 + i32.store + i32.const 37968 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36400 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36400 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36400 + i32.const 37972 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36400 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36400 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1248 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36400 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36400 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1520 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1184 + i32.const 1248 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1184 + i32.const 1520 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1520 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3632 + i32.lt_s + if + i32.const 36432 + i32.const 36480 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1808 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $function-types/makeAdder~anonymous|0 (param $0 i64) (param $1 i64) (result i64) i64.const 30 ) @@ -41,7 +1776,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1228 + i32.const 3632 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -49,6 +1784,38 @@ i32.store i32.const 1056 global.set $function-types/i32Adder + memory.size + i32.const 16 + i32.shl + i32.const 36400 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/pinSpace + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/toSpace + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + global.set $~lib/rt/itcms/fromSpace i32.const 1 i32.const 2 i32.const 1056 @@ -58,7 +1825,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -66,14 +1833,14 @@ end i64.const 10 i64.const 20 - i32.const 1152 + i32.const 3520 i32.load - call_indirect (type $1) + call_indirect (type $5) i64.const 30 i64.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -81,14 +1848,14 @@ end f64.const 1.5 f64.const 2.5 - i32.const 1184 + i32.const 3552 i32.load - call_indirect (type $2) + call_indirect (type $6) f64.const 4 f64.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 17 i32.const 1 call $~lib/builtins/abort @@ -107,7 +1874,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -122,25 +1889,25 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 29 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1216 + i32.const 3584 i32.store i32.const 4 i32.const 5 - i32.const 1216 + i32.const 3584 i32.load call_indirect (type $0) i32.const 9 i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -151,7 +1918,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1228 + i32.const 3632 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -176,7 +1943,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -194,7 +1961,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -206,11 +1973,265 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34016 - i32.const 34064 + i32.const 36432 + i32.const 36480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3632 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3632 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$143 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1152 + local.set $0 + br $__inlined_func$~lib/string/String#concat$143 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36432 + i32.const 36480 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3632 + i32.lt_s + if + i32.const 36432 + i32.const 36480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1088 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1120 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3392 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3632 + i32.lt_s + if + i32.const 36432 + i32.const 36480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/getter-call.debug.wat b/tests/compiler/getter-call.debug.wat index 7ac0d77688..3ac4e08686 100644 --- a/tests/compiler/getter-call.debug.wat +++ b/tests/compiler/getter-call.debug.wat @@ -1,14 +1,20 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (result i32))) - (type $5 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (result i32))) (type $6 (func (param i32 i32 i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i64 i32))) + (type $8 (func (param i64 i32) (result i32))) + (type $9 (func (param i32 i64 i32 i32))) + (type $10 (func (param i32 i32 i64) (result i32))) + (type $11 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,33 +23,470 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 448)) - (global $~lib/memory/__data_end i32 (i32.const 476)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33244)) - (global $~lib/memory/__heap_base i32 (i32.const 33244)) + (global $~lib/rt/__rtti_base i32 (i32.const 2416)) + (global $~lib/memory/__data_end i32 (i32.const 2444)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35212)) + (global $~lib/memory/__heap_base i32 (i32.const 35212)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 448) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2416) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 2 2 funcref) (elem $0 (i32.const 1) $getter-call/C#get:x~anonymous|0) (export "test" (func $getter-call/test)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -108,7 +551,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -178,7 +621,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -195,7 +638,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -225,8 +668,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -294,7 +737,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -446,7 +889,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -466,7 +909,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -529,7 +972,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -682,7 +1125,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -699,7 +1142,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -788,7 +1231,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -831,7 +1274,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -849,7 +1292,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -917,7 +1360,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1034,7 +1477,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1080,7 +1523,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1112,7 +1555,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1356,7 +1799,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1576,7 +2019,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1684,8 +2127,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1787,7 +2230,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1858,7 +2301,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2015,7 +2458,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2130,7 +2573,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2150,7 +2593,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2198,8 +2641,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2248,107 +2691,245 @@ i32.const 42 ) (func $getter-call/C#get:x (param $this i32) (result i32) - i32.const 432 + i32.const 2400 return ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + (func $~start + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 2112 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 2144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 2288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35232 + i32.const 35280 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) - (func $~lib/function/Function<%28%29=>i32>#get:_env (param $this i32) (result i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>i32>#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/function/Function<%28%29=>i32> - block $getter-call/C - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $getter-call/C $~lib/function/Function<%28%29=>i32> $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>i32>~visit + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - unreachable + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~start - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 144 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 176 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 320 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33264 - i32.const 33312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $getter-call/C#constructor (param $this i32) (result i32) (local $1 i32) @@ -2414,7 +2995,7 @@ local.get $1 call $getter-call/C#get:x i32.load - call_indirect (type $4) + call_indirect (type $5) local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -2423,8 +3004,18 @@ local.get $1 return ) - (func $~lib/function/Function<%28%29=>i32>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2433,19 +3024,132 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28%29=>i32>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $12 + return ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) @@ -2475,4 +3179,101 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28%29=>i32> + block $getter-call/C + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $getter-call/C $~lib/function/Function<%28%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>~visit + return + end + unreachable + ) + (func $~lib/function/Function<%28%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/getter-call.release.wat b/tests/compiler/getter-call.release.wat index 907d6feeec..6035170a60 100644 --- a/tests/compiler/getter-call.release.wat +++ b/tests/compiler/getter-call.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func (result i32))) (type $1 (func)) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32) (result i32))) - (type $5 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32) (result i32))) (type $6 (func (param i32 i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,32 +17,255 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34268)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36236)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) "\1c") - (data $8.1 (i32.const 1448) "\05\00\00\00\08\00\00\00\01") - (data $9 (i32.const 1472) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "\1c") + (data $19.1 (i32.const 3416) "\05\00\00\00\08\00\00\00\01") + (data $20 (i32.const 3440) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (table $0 2 2 funcref) (elem $0 (i32.const 1) $getter-call/C#get:x~anonymous|0) (export "test" (func $getter-call/test)) (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3468 + i32.lt_s + if + i32.const 36256 + i32.const 36304 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -63,7 +286,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -111,7 +334,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -120,7 +343,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$115 + block $__inlined_func$~lib/rt/itcms/Object#unlink$128 local.get $1 i32.load offset=4 i32.const -4 @@ -132,19 +355,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34268 + i32.const 36236 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$115 + br $__inlined_func$~lib/rt/itcms/Object#unlink$128 end local.get $1 i32.load offset=8 @@ -152,7 +375,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -181,12 +404,12 @@ i32.const 1 else local.get $0 - i32.const 1472 + i32.const 3440 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -195,7 +418,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1476 + i32.const 3444 i32.add i32.load i32.const 32 @@ -247,7 +470,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -261,7 +484,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -307,7 +530,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -390,7 +613,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -404,7 +627,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -465,7 +688,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -498,7 +721,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -513,7 +736,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -564,7 +787,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -636,7 +859,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -661,7 +884,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -688,7 +911,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -760,10 +983,10 @@ if unreachable end - i32.const 34272 + i32.const 36240 i32.const 0 i32.store - i32.const 35840 + i32.const 37808 i32.const 0 i32.store loop $for-loop|0 @@ -774,7 +997,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34272 + i32.const 36240 i32.add i32.const 0 i32.store offset=4 @@ -792,7 +1015,7 @@ i32.add i32.const 2 i32.shl - i32.const 34272 + i32.const 36240 i32.add i32.const 0 i32.store offset=96 @@ -810,14 +1033,14 @@ br $for-loop|0 end end - i32.const 34272 - i32.const 35844 + i32.const 36240 + i32.const 37812 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34272 + i32.const 36240 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -902,7 +1125,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34268 + i32.const 36236 i32.lt_u if local.get $0 @@ -991,14 +1214,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34268 + i32.const 36236 i32.lt_u if local.get $0 @@ -1021,7 +1244,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34268 + i32.const 36236 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1050,7 +1273,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1080,18 +1303,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1099,32 +1389,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1137,23 +1431,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 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 @@ -1167,9 +1473,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1192,31 +1498,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if memory.size - local.tee $1 + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end i32.const 4 - local.get $2 + local.get $4 i32.load offset=1568 - local.get $1 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1232,8 +1593,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1241,119 +1602,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1361,110 +1739,251 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 + memory.fill + local.get $1 ) (func $getter-call/C#get:x~anonymous|0 (result i32) i32.const 42 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/function/Function<%28%29=>i32> - block $getter-call/C - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $getter-call/C $~lib/function/Function<%28%29=>i32> $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36236 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 3140 + i32.const 3136 + i32.store + i32.const 3144 + i32.const 3136 + i32.store + i32.const 3136 + global.set $~lib/rt/itcms/pinSpace + i32.const 3172 + i32.const 3168 + i32.store + i32.const 3176 + i32.const 3168 + i32.store + i32.const 3168 + global.set $~lib/rt/itcms/toSpace + i32.const 3316 + i32.const 3312 + i32.store + i32.const 3320 + i32.const 3312 + i32.store + i32.const 3312 + global.set $~lib/rt/itcms/fromSpace + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 3468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1500 + i32.const 3468 i32.lt_s - if - i32.const 34288 - i32.const 34336 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $2 i32.store local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$133 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$133 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 return end + i32.const 36256 + i32.const 36304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34268 + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 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 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3468 + i32.lt_s + if + i32.const 36256 + i32.const 36304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $getter-call/test (result i32) (local $0 i32) @@ -1476,7 +1995,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1500 + i32.const 3468 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1488,13 +2007,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1500 + i32.const 3468 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 @@ -1508,7 +2028,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1500 + i32.const 3468 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1519,6 +2039,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1538,7 +2059,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - i32.const 1456 + i32.const 3424 i32.load call_indirect (type $0) drop @@ -1549,11 +2070,70 @@ i32.const 42 return end - i32.const 34288 - i32.const 34336 + i32.const 36256 + i32.const 36304 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28%29=>i32> + block $getter-call/C + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $getter-call/C $~lib/function/Function<%28%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3468 + i32.lt_s + if + i32.const 36256 + i32.const 36304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) ) diff --git a/tests/compiler/getter-setter.debug.wat b/tests/compiler/getter-setter.debug.wat index 82ad196874..90e3a5c15c 100644 --- a/tests/compiler/getter-setter.debug.wat +++ b/tests/compiler/getter-setter.debug.wat @@ -1,15 +1,58 @@ (module - (type $0 (func)) - (type $1 (func (result i32))) - (type $2 (func (param i32 i32 i32 i32))) - (type $3 (func (param i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $getter-setter/Foo._bar (mut i32) (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 76)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32844)) - (global $~lib/memory/__heap_base i32 (i32.const 32844)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2448)) + (global $~lib/memory/__data_end i32 (i32.const 2468)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35236)) + (global $~lib/memory/__heap_base i32 (i32.const 35236)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2448) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -18,19 +61,2665 @@ global.get $getter-setter/Foo._bar return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $getter-setter/Foo.set:bar (param $bar i32) local.get $bar global.set $getter-setter/Foo._bar ) (func $start:getter-setter (local $0 i32) + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $getter-setter/Foo.get:bar i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -44,7 +2733,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -59,7 +2748,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -69,4 +2758,421 @@ (func $~start call $start:getter-setter ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35264 + i32.const 35312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/getter-setter.release.wat b/tests/compiler/getter-setter.release.wat index dc779d8714..51ac5c1cd2 100644 --- a/tests/compiler/getter-setter.release.wat +++ b/tests/compiler/getter-setter.release.wat @@ -1,18 +1,1787 @@ (module - (type $0 (func (param i32 i32 i32 i32))) - (type $1 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) (global $getter-setter/Foo._bar (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36260)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) "<") + (data $19.1 (i32.const 3416) "\02\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s") + (data $20 (i32.const 3472) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$123 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36260 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$123 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3472 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3476 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36272 + i32.const 0 + i32.store + i32.const 37840 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36272 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36272 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36272 + i32.const 37844 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36272 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36260 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36260 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36260 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3492 + i32.lt_s + if + i32.const 36288 + i32.const 36336 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36260 + 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 $getter-setter/Foo._bar if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -23,4 +1792,228 @@ i32.const 2 global.set $getter-setter/Foo._bar ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$129 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$129 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36288 + i32.const 36336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3492 + i32.lt_s + if + i32.const 36288 + i32.const 36336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/heap.debug.wat b/tests/compiler/heap.debug.wat index 3b82eebc93..719117b233 100644 --- a/tests/compiler/heap.debug.wat +++ b/tests/compiler/heap.debug.wat @@ -2,22 +2,57 @@ (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) (type $2 (func (param i32 i32) (result i32))) - (type $3 (func)) - (type $4 (func (param i32 i32 i32) (result i32))) - (type $5 (func (param i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (param i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i64) (result i32))) + (type $12 (func (param i32 i32 i32 i32))) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT 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/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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $heap/ptr (mut i32) (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 140)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32908)) - (global $~lib/memory/__heap_base i32 (i32.const 32908)) + (global $~lib/rt/__rtti_base i32 (i32.const 2384)) + (global $~lib/memory/__data_end i32 (i32.const 2404)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35172)) + (global $~lib/memory/__heap_base i32 (i32.const 35172)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2384) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -27,25 +62,398 @@ local.get $flMap i32.store ) - (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) local.get $this - i32.load + i32.load offset=16 ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + (func $~lib/string/String#get:length (param $this i32) (result i32) local.get $this - local.get $mmInfo - i32.store + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return ) - (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this - local.get $prev + local.get $nextWithColor i32.store offset=4 ) - (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) local.get $this - local.get $next + local.get $prev i32.store offset=8 ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) local.get $this i32.load offset=4 @@ -54,6 +462,16 @@ local.get $this i32.load offset=8 ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) local.get $this i32.load @@ -92,7 +510,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -112,7 +530,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -175,7 +593,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -328,7 +746,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -345,7 +763,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -434,7 +852,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -477,7 +895,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -495,7 +913,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -563,7 +981,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -646,17 +1064,789 @@ br $~lib/rt/tlsf/GETSL|inlined.1 end i32.const 1 - local.get $sl - i32.shl - i32.or - local.set $slMap - local.get $root|26 - local.get $fl|27 - i32.const 2 - i32.shl - i32.add - local.get $slMap - i32.store offset=4 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return ) (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) (local $end i32) @@ -680,7 +1870,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -726,7 +1916,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -758,7 +1948,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -999,8 +2189,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 96 - i32.const 32 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1102,7 +2292,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1173,7 +2363,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1330,7 +2520,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1445,7 +2635,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1465,7 +2655,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1501,57 +2691,6 @@ call $~lib/rt/tlsf/__alloc return ) - (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) - (local $block i32) - local.get $ptr - i32.const 4 - i32.sub - local.set $block - local.get $ptr - i32.const 0 - i32.ne - if (result i32) - local.get $ptr - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $block - return - ) - (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) - i32.const 0 - drop - local.get $block - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $root - local.get $block - call $~lib/rt/tlsf/insertBlock - ) (func $~lib/rt/tlsf/moveBlock (param $root i32) (param $block i32) (param $newSize i32) (result i32) (local $newBlock i32) local.get $root @@ -1712,28 +2851,28 @@ call $~lib/rt/tlsf/__realloc return ) - (func $~lib/rt/tlsf/__free (param $ptr i32) - local.get $ptr - global.get $~lib/memory/__heap_base - i32.lt_u - if - return - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $ptr - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) (func $~lib/memory/heap.free (param $ptr i32) local.get $ptr call $~lib/rt/tlsf/__free ) (func $start:heap + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 16 call $~lib/memory/heap.alloc global.set $heap/ptr @@ -1747,4 +2886,421 @@ (func $~start call $start:heap ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35200 + i32.const 35248 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/heap.release.wat b/tests/compiler/heap.release.wat index 14a0518c9b..bad354e773 100644 --- a/tests/compiler/heap.release.wat +++ b/tests/compiler/heap.release.wat @@ -1,21 +1,291 @@ (module - (type $0 (func (param i32 i32) (result i32))) - (type $1 (func (param i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) (type $2 (func)) - (type $3 (func (param i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (param i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (param i32 i32 i32))) + (type $8 (func (param i32 i32 i32 i32))) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $heap/ptr (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36196)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3408) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$124 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36196 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$124 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3408 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3412 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $1 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -29,7 +299,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -43,7 +313,7 @@ i32.lt_u if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -89,7 +359,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -172,7 +442,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -186,7 +456,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -247,7 +517,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -280,7 +550,7 @@ i32.lt_u if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -295,7 +565,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -346,7 +616,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -373,40 +643,594 @@ if local.get $3 local.get $1 - i32.store offset=4 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) + local.get $0 + i32.const 36196 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.tee $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36196 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36196 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/itcms/__new (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 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$50 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$50 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 2 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3428 + i32.lt_s + if + i32.const 36224 + i32.const 36272 + 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$54 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$54 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) @@ -418,7 +1242,7 @@ i64.lt_u if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -443,7 +1267,7 @@ i32.gt_u if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -470,7 +1294,7 @@ i32.gt_u if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -542,10 +1366,10 @@ if unreachable end - i32.const 33936 + i32.const 36208 i32.const 0 i32.store - i32.const 35504 + i32.const 37776 i32.const 0 i32.store loop $for-loop|0 @@ -556,7 +1380,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 33936 + i32.const 36208 i32.add i32.const 0 i32.store offset=4 @@ -574,7 +1398,7 @@ i32.add i32.const 2 i32.shl - i32.const 33936 + i32.const 36208 i32.add i32.const 0 i32.store offset=96 @@ -592,14 +1416,14 @@ br $for-loop|0 end end - i32.const 33936 - i32.const 35508 + i32.const 36208 + i32.const 37780 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 33936 + i32.const 36208 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) @@ -607,8 +1431,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1120 - i32.const 1056 + i32.const 1152 + i32.const 1488 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -683,7 +1507,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -735,7 +1559,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -770,7 +1594,7 @@ i32.and if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -916,7 +1740,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -931,7 +1755,7 @@ i32.gt_u if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -946,36 +1770,6 @@ call $~lib/rt/tlsf/prepareBlock local.get $1 ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $1 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1056 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 @@ -993,7 +1787,7 @@ i32.and memory.copy local.get $1 - i32.const 33932 + i32.const 36196 i32.ge_u if local.get $1 @@ -1016,6 +1810,38 @@ (local $4 i32) (local $5 i32) (local $6 i32) + memory.size + i32.const 16 + i32.shl + i32.const 36196 + 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/rt/tlsf/ROOT i32.eqz if @@ -1035,7 +1861,7 @@ call $~lib/rt/tlsf/initialize end local.get $0 - i32.const 33932 + i32.const 36196 i32.lt_u if global.get $~lib/rt/tlsf/ROOT @@ -1044,28 +1870,28 @@ call $~lib/rt/tlsf/moveBlock local.set $0 else - block $__inlined_func$~lib/rt/tlsf/reallocateBlock$53 + block $__inlined_func$~lib/rt/tlsf/reallocateBlock$116 global.get $~lib/rt/tlsf/ROOT - local.set $3 + local.set $1 local.get $0 call $~lib/rt/tlsf/checkUsedBlock local.set $0 i32.const 32 call $~lib/rt/tlsf/prepareSize - local.tee $5 + local.tee $2 local.get $0 i32.load - local.tee $1 + local.tee $3 i32.const -4 i32.and - local.tee $4 + local.tee $5 i32.le_u if - local.get $3 + local.get $1 local.get $0 - local.get $5 + local.get $2 call $~lib/rt/tlsf/prepareBlock - br $__inlined_func$~lib/rt/tlsf/reallocateBlock$53 + br $__inlined_func$~lib/rt/tlsf/reallocateBlock$116 end local.get $0 i32.const 4 @@ -1075,41 +1901,41 @@ i32.const -4 i32.and i32.add - local.tee $2 + local.tee $4 i32.load local.tee $6 i32.const 1 i32.and if - local.get $4 + local.get $5 i32.const 4 i32.add local.get $6 i32.const -4 i32.and i32.add - local.tee $4 - local.get $5 + local.tee $5 + local.get $2 i32.ge_u if - local.get $3 - local.get $2 + local.get $1 + local.get $4 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $1 + local.get $3 i32.const 3 i32.and - local.get $4 + local.get $5 i32.or i32.store - local.get $3 + local.get $1 local.get $0 - local.get $5 + local.get $2 call $~lib/rt/tlsf/prepareBlock - br $__inlined_func$~lib/rt/tlsf/reallocateBlock$53 + br $__inlined_func$~lib/rt/tlsf/reallocateBlock$116 end end - local.get $3 + local.get $1 local.get $0 call $~lib/rt/tlsf/moveBlock local.set $0 @@ -1120,26 +1946,230 @@ i32.add global.set $heap/ptr global.get $heap/ptr + call $~lib/rt/tlsf/__free + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3428 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3428 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$130 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$130 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36224 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3428 + i32.lt_s + if + i32.const 36224 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select local.tee $0 - i32.const 33932 - i32.ge_u + i32.store + local.get $1 if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 local.get $0 - i32.load - i32.const 1 - i32.or + local.get $1 + call $~lib/string/String.__concat + local.tee $0 i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end local.get $0 - call $~lib/rt/tlsf/insertBlock + i32.load + call $~lib/rt/itcms/__visit + return end + unreachable ) ) diff --git a/tests/compiler/if.debug.wat b/tests/compiler/if.debug.wat index 482f743bca..45faab4c85 100644 --- a/tests/compiler/if.debug.wat +++ b/tests/compiler/if.debug.wat @@ -1,14 +1,58 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func)) - (type $2 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/memory/__data_end i32 (i32.const 76)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32844)) - (global $~lib/memory/__heap_base i32 (i32.const 32844)) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2448)) + (global $~lib/memory/__data_end i32 (i32.const 2468)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35236)) + (global $~lib/memory/__heap_base i32 (i32.const 35236)) (memory $0 1) - (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00i\00f\00.\00t\00s\00\00\00") - (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00e\00r\00r\00o\00r\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00i\00f\00.\00t\00s\00\00\00") + (data $20 (i32.const 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00e\00r\00r\00o\00r\00\00\00") + (data $21 (i32.const 2448) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "ifThenElse" (func $if/ifThenElse)) @@ -28,6 +72,2635 @@ end unreachable ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $if/ifThen (param $n i32) (result i32) local.get $n if @@ -49,6 +2722,23 @@ unreachable ) (func $start:if + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 0 call $if/ifThenElse i32.const 0 @@ -56,7 +2746,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -69,7 +2759,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -82,7 +2772,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 17 i32.const 1 call $~lib/builtins/abort @@ -95,7 +2785,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -108,7 +2798,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -121,7 +2811,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -134,8 +2824,8 @@ i32.const 1 return else - i32.const 64 - i32.const 32 + i32.const 2432 + i32.const 2400 i32.const 37 i32.const 5 call $~lib/builtins/abort @@ -146,4 +2836,421 @@ (func $~start call $start:if ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35264 + i32.const 35312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/if.release.wat b/tests/compiler/if.release.wat index 549bb1ff21..a248d8b426 100644 --- a/tests/compiler/if.release.wat +++ b/tests/compiler/if.release.wat @@ -1,22 +1,1760 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $1 (func)) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36260)) (memory $0 1) (data $0 (i32.const 1036) "\1c") - (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00i\00f\00.\00t\00s") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") (data $1 (i32.const 1068) "\1c") - (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00e\00r\00r\00o\00r") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) "\1c") + (data $19.1 (i32.const 3416) "\02\00\00\00\n\00\00\00i\00f\00.\00t\00s") + (data $20 (i32.const 3436) "\1c") + (data $20.1 (i32.const 3448) "\02\00\00\00\n\00\00\00e\00r\00r\00o\00r") + (data $21 (i32.const 3472) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "ifThenElse" (func $if/ifThenElse)) (export "ifThen" (func $if/ifThen)) (export "ifThenElseBlock" (func $if/ifThenElse)) (export "ifAlwaysReturns" (func $if/ifAlwaysReturns)) (export "memory" (memory $0)) + (start $~start) (func $if/ifThenElse (param $0 i32) (result i32) local.get $0 i32.const 0 i32.ne ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$125 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36260 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$125 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3472 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3476 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36272 + i32.const 0 + i32.store + i32.const 37840 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36272 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36272 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36272 + i32.const 37844 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36272 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36260 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36260 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36260 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3492 + i32.lt_s + if + i32.const 36288 + i32.const 36336 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $if/ifThen (param $0 i32) (result i32) local.get $0 if @@ -29,8 +1767,8 @@ local.get $0 i32.eqz if - i32.const 1088 - i32.const 1056 + i32.const 3456 + i32.const 3424 i32.const 37 i32.const 5 call $~lib/builtins/abort @@ -38,4 +1776,262 @@ end i32.const 1 ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36260 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$130 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$130 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36288 + i32.const 36336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3492 + i32.lt_s + if + i32.const 36288 + i32.const 36336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/import-memory.debug.wat b/tests/compiler/import-memory.debug.wat index 9478e9002e..ffa195d035 100644 --- a/tests/compiler/import-memory.debug.wat +++ b/tests/compiler/import-memory.debug.wat @@ -1,24 +1,2715 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (import "env" "memory" (memory $0 1)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/memory/__data_end i32 (i32.const 76)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32844)) - (global $~lib/memory/__heap_base i32 (i32.const 32844)) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00i\00m\00p\00o\00r\00t\00-\00m\00e\00m\00o\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2448)) + (global $~lib/memory/__data_end i32 (i32.const 2468)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35236)) + (global $~lib/memory/__heap_base i32 (i32.const 35236)) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00i\00m\00p\00o\00r\00t\00-\00m\00e\00m\00o\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2448) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $start:import-memory + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace memory.size i32.const 0 i32.ne i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28,4 +2719,421 @@ (func $~start call $start:import-memory ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35264 + i32.const 35312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/import-memory.release.wat b/tests/compiler/import-memory.release.wat index be4cb9b4ae..d3ee8dd98e 100644 --- a/tests/compiler/import-memory.release.wat +++ b/tests/compiler/import-memory.release.wat @@ -1,21 +1,2002 @@ (module - (type $0 (func (param i32 i32 i32 i32))) - (type $1 (func)) + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) (import "env" "memory" (memory $0 1)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (data $0 (i32.const 1036) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00i\00m\00p\00o\00r\00t\00-\00m\00e\00m\00o\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36260)) + (data $0 (i32.const 1036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 1068) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 1100) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 1132) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 1196) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 1264) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 1296) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 1324) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 1388) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1440) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 1468) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1532) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 1564) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 1692) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 1756) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 2188) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 3244) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 3340) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 3404) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00i\00m\00p\00o\00r\00t\00-\00m\00e\00m\00o\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 3472) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$120 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36260 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$120 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3472 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3476 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36272 + i32.const 0 + i32.store + i32.const 37840 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36272 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36272 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36272 + i32.const 37844 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36272 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36260 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36260 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36260 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3492 + i32.lt_s + if + i32.const 36288 + i32.const 36336 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36260 + 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 memory.size i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$125 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$125 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36288 + i32.const 36336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3492 + i32.lt_s + if + i32.const 36288 + i32.const 36336 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable ) ) diff --git a/tests/compiler/incremental-gc/call-indirect.debug.wat b/tests/compiler/incremental-gc/call-indirect.debug.wat index 15fb51f132..b0d818797a 100644 --- a/tests/compiler/incremental-gc/call-indirect.debug.wat +++ b/tests/compiler/incremental-gc/call-indirect.debug.wat @@ -1,44 +1,58 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) (type $6 (func (result i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) (global $~lib/rt/itcms/pinSpace (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/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/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 544)) - (global $~lib/memory/__data_end i32 (i32.const 576)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33344)) - (global $~lib/memory/__heap_base i32 (i32.const 33344)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL 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/rt/__rtti_base i32 (i32.const 2512)) + (global $~lib/memory/__data_end i32 (i32.const 2544)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35312)) + (global $~lib/memory/__heap_base i32 (i32.const 35312)) (memory $0 1) (data $0 (i32.const 16) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 284) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $8 (i32.const 412) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 444) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00>\00\00\00i\00n\00c\00r\00e\00m\00e\00n\00t\00a\00l\00-\00g\00c\00/\00c\00a\00l\00l\00-\00i\00n\00d\00i\00r\00e\00c\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 544) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $5 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 336) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 396) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 524) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $11 (i32.const 588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 620) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $13 (i32.const 1020) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2076) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2332) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00>\00\00\00i\00n\00c\00r\00e\00m\00e\00n\00t\00a\00l\00-\00g\00c\00/\00c\00a\00l\00l\00-\00i\00n\00d\00i\00r\00e\00c\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2512) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00") (table $0 2 2 funcref) (elem $0 (i32.const 1) $incremental-gc/call-indirect/foo) (export "issue_2923" (func $incremental-gc/call-indirect/issue_2923)) @@ -84,327 +98,106 @@ i32.and return ) - (func $~lib/rt/itcms/visitRoots (param $cookie i32) - (local $pn i32) - (local $iter i32) - local.get $cookie - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.set $pn - local.get $pn - call $~lib/rt/itcms/Object#get:next - local.set $iter - loop $while-continue|0 - local.get $iter - local.get $pn - i32.ne - if - i32.const 1 - drop - local.get $iter - call $~lib/rt/itcms/Object#get:color - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $iter - i32.const 20 - i32.add - local.get $cookie - call $~lib/rt/__visit_members - local.get $iter - call $~lib/rt/itcms/Object#get:next - local.set $iter - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) - local.get $this - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $color - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) local.get $this - i32.load offset=8 + i32.load offset=16 ) - (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) - local.get $this - local.get $obj + (func $~lib/string/String#get:length (param $this i32) (result i32) local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.and - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return ) - (func $~lib/rt/itcms/Object#unlink (param $this i32) - (local $next i32) - (local $prev i32) - local.get $this - call $~lib/rt/itcms/Object#get:next - local.set $next - local.get $next + (func $~lib/rt/itcms/interrupt + (local $budget i32) i32.const 0 - i32.eq - if - i32.const 1 - drop - local.get $this - call $~lib/rt/itcms/Object#get:prev + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state i32.const 0 i32.eq - if (result i32) - local.get $this - global.get $~lib/memory/__heap_base - i32.lt_u - else - i32.const 0 - end - i32.eqz if i32.const 0 - i32.const 64 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return end - return - end - local.get $this - call $~lib/rt/itcms/Object#get:prev - local.set $prev - i32.const 1 - drop - local.get $prev - i32.eqz - if + local.get $budget i32.const 0 - i32.const 64 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.gt_s + br_if $do-loop|0 end - local.get $next - local.get $prev - call $~lib/rt/itcms/Object#set:prev - local.get $prev - local.get $next - call $~lib/rt/itcms/Object#set:next + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop ) - (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) local.get $this - i32.load offset=12 + local.get $flMap + i32.store ) - (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) local.get $this i32.load ) - (func $~lib/rt/__typeinfo (param $id i32) (result i32) - (local $ptr i32) - global.get $~lib/rt/__rtti_base - local.set $ptr - local.get $id - local.get $ptr - i32.load - i32.gt_u - if - i32.const 160 - i32.const 224 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $ptr - i32.const 4 - i32.add - local.get $id - i32.const 4 - i32.mul - i32.add - call $~lib/shared/typeinfo/Typeinfo#get:flags - return - ) - (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) - (local $rtId i32) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) local.get $this - call $~lib/rt/itcms/Object#get:rtId - local.set $rtId - local.get $rtId - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $rtId - call $~lib/rt/__typeinfo - i32.const 32 - i32.and - i32.const 0 - i32.ne - end - return + local.get $mmInfo + i32.store ) - (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) - (local $prev i32) - local.get $list - call $~lib/rt/itcms/Object#get:prev - local.set $prev - local.get $this - local.get $list - local.get $withColor - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) local.get $this local.get $prev - call $~lib/rt/itcms/Object#set:prev - local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) local.get $this - call $~lib/rt/itcms/Object#set:next - local.get $list + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) local.get $this - call $~lib/rt/itcms/Object#set:prev + i32.load offset=4 ) - (func $~lib/rt/itcms/Object#makeGray (param $this i32) - (local $1 i32) - local.get $this - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $this - call $~lib/rt/itcms/Object#get:prev - local.tee $1 - i32.eqz - if (result i32) - i32.const 0 - i32.const 64 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - else - local.get $1 - end - global.set $~lib/rt/itcms/iter - end - local.get $this - call $~lib/rt/itcms/Object#unlink - local.get $this - global.get $~lib/rt/itcms/toSpace - local.get $this - call $~lib/rt/itcms/Object#get:isPointerfree - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) - (local $obj i32) - local.get $ptr - i32.eqz - if - return - end - local.get $ptr - i32.const 20 - i32.sub - local.set $obj - i32.const 0 - drop - local.get $obj - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $obj - 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/visitStack (param $cookie i32) - (local $ptr i32) - global.get $~lib/memory/__stack_pointer - local.set $ptr - loop $while-continue|0 - local.get $ptr - global.get $~lib/memory/__heap_base - i32.lt_u - if - local.get $ptr - i32.load - local.get $cookie - call $~lib/rt/itcms/__visit - local.get $ptr - i32.const 4 - i32.add - local.set $ptr - br $while-continue|0 - end - end - ) - (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) - i32.const 4 - local.get $this - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - return - ) - (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) - local.get $this - local.get $flMap - i32.store - ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) - local.get $this - local.get $mmInfo - i32.store - ) - (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) - local.get $this - local.get $prev - i32.store offset=4 - ) - (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) - local.get $this - local.get $next - i32.store offset=8 - ) - (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) local.get $this i32.load offset=8 ) @@ -446,7 +239,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 288 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -466,7 +259,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 288 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -529,7 +322,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 288 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -682,7 +475,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 288 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -699,7 +492,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 288 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -788,7 +581,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 288 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -831,7 +624,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 288 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -849,7 +642,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 288 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -917,7 +710,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 288 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1034,7 +827,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 288 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1080,7 +873,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 288 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1112,7 +905,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 288 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1327,968 +1120,1618 @@ local.get $root global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) - (local $block i32) - local.get $ptr - i32.const 4 - i32.sub - local.set $block - local.get $ptr - i32.const 0 - i32.ne + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u if (result i32) - local.get $ptr - i32.const 15 - i32.and - i32.eqz + i32.const 12 else - i32.const 0 - end - if (result i32) - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 1 + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor i32.and - i32.eqz - else - i32.const 0 + i32.const 4 + i32.sub end - i32.eqz + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u if - i32.const 0 - i32.const 304 - i32.const 562 - i32.const 3 + i32.const 160 + i32.const 288 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $block + local.get $size + call $~lib/rt/tlsf/computeSize return ) - (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) - i32.const 0 - drop - local.get $block - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $root - local.get $block - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/__free (param $ptr i32) - local.get $ptr - global.get $~lib/memory/__heap_base + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 i32.lt_u - if - return - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size end - global.get $~lib/rt/tlsf/ROOT - local.get $ptr - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock + return ) - (func $~lib/rt/itcms/free (param $obj i32) - local.get $obj - global.get $~lib/memory/__heap_base + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 i32.lt_u if - local.get $obj - i32.const 0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $obj - i32.const 0 - call $~lib/rt/itcms/Object#set:prev - else - global.get $~lib/rt/itcms/total - local.get $obj - call $~lib/rt/itcms/Object#get:size - i32.sub - global.set $~lib/rt/itcms/total i32.const 0 - drop - local.get $obj + local.set $fl + local.get $size i32.const 4 - i32.add - call $~lib/rt/tlsf/__free - end - ) - (func $~lib/rt/itcms/step (result i32) - (local $obj i32) - (local $1 i32) - (local $black i32) - (local $from i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - local.set $1 - local.get $1 - i32.const 0 - i32.eq - br_if $case0|0 - local.get $1 - i32.const 1 - i32.eq - br_if $case1|0 - local.get $1 - i32.const 2 - i32.eq - br_if $case2|0 - br $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - i32.const 0 - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.mul - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $black - global.get $~lib/rt/itcms/iter - call $~lib/rt/itcms/Object#get:next - local.set $obj - loop $while-continue|1 - local.get $obj - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $obj - global.set $~lib/rt/itcms/iter - local.get $obj - call $~lib/rt/itcms/Object#get:color - local.get $black - i32.ne - if - local.get $obj - local.get $black - call $~lib/rt/itcms/Object#set:color - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $obj - i32.const 20 - i32.add - i32.const 0 - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.mul - return - end - local.get $obj - call $~lib/rt/itcms/Object#get:next - local.set $obj - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 288 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if i32.const 0 - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/iter - call $~lib/rt/itcms/Object#get:next - local.set $obj - local.get $obj - global.get $~lib/rt/itcms/toSpace - i32.eq - if - i32.const 0 - call $~lib/rt/itcms/visitStack - global.get $~lib/rt/itcms/iter - call $~lib/rt/itcms/Object#get:next - local.set $obj - loop $while-continue|2 - local.get $obj - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $obj - call $~lib/rt/itcms/Object#get:color - local.get $black - i32.ne - if - local.get $obj - local.get $black - call $~lib/rt/itcms/Object#set:color - local.get $obj - i32.const 20 - i32.add - i32.const 0 - call $~lib/rt/__visit_members - end - local.get $obj - call $~lib/rt/itcms/Object#get:next - local.set $obj - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $from - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $from - global.set $~lib/rt/itcms/toSpace - local.get $black - global.set $~lib/rt/itcms/white - local.get $from - call $~lib/rt/itcms/Object#get:next - global.set $~lib/rt/itcms/iter + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 i32.const 2 - global.set $~lib/rt/itcms/state + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 end - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.mul - return - end - global.get $~lib/rt/itcms/iter - local.set $obj - local.get $obj - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $obj - call $~lib/rt/itcms/Object#get:next - global.set $~lib/rt/itcms/iter + local.set $slMap i32.const 1 drop - local.get $obj - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq + local.get $slMap i32.eqz if i32.const 0 - i32.const 64 - i32.const 229 - i32.const 20 + i32.const 288 + i32.const 347 + i32.const 18 call $~lib/builtins/abort unreachable end - local.get $obj - call $~lib/rt/itcms/free - i32.const 10 - return + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 288 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - call $~lib/rt/itcms/Object#set:nextWithColor - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - call $~lib/rt/itcms/Object#set:prev - i32.const 0 - global.set $~lib/rt/itcms/state - br $break|0 + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo end - i32.const 0 - return ) - (func $~lib/rt/itcms/__collect - i32.const 0 - drop - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz if - loop $while-continue|0 - global.get $~lib/rt/itcms/state + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if i32.const 0 - i32.ne - if - call $~lib/rt/itcms/step - drop - br $while-continue|0 - end + i32.const 288 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable end end - call $~lib/rt/itcms/step + i32.const 1 drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if i32.const 0 - i32.ne - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end + i32.const 288 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i32.const 200 - i64.extend_i32_u - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - i32.const 0 - drop + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock i32.const 0 drop + local.get $block + return ) - (func $~lib/rt/itcms/interrupt - (local $budget i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 1024 - i32.const 200 - i32.mul - i32.const 100 - i32.div_u - local.set $budget - loop $do-loop|0 - local.get $budget - call $~lib/rt/itcms/step - i32.sub - local.set $budget - global.get $~lib/rt/itcms/state - i32.const 0 - i32.eq - if - i32.const 0 - drop - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i32.const 200 - i64.extend_i32_u - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - i32.const 0 - drop - return - end - local.get $budget - i32.const 0 - i32.gt_s - br_if $do-loop|0 + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 160 + i32.const 224 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - i32.const 0 - drop - global.get $~lib/rt/itcms/total - i32.const 1024 global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 i32.sub - i32.const 1024 - i32.lt_u - i32.mul + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size i32.add - global.set $~lib/rt/itcms/threshold + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr i32.const 0 - drop - ) - (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) local.get $size - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $size - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.sub - end + memory.fill + local.get $ptr return ) - (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) - local.get $size - i32.const 1073741820 - i32.gt_u + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u if - i32.const 368 - i32.const 304 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end unreachable end - local.get $size - call $~lib/rt/tlsf/computeSize - return + unreachable ) - (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) - local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 620 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 620 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 i32.sub + local.set $offset + i32.const 620 + local.get $d1|10 + i32.const 2 i32.shl i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset i32.const 1 - i32.sub - else - local.get $size + i32.shl + i32.add + local.get $digits + i32.store end - return - ) - (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) - (local $fl i32) - (local $sl i32) - (local $requestSize i32) - (local $root|5 i32) - (local $fl|6 i32) - (local $slMap i32) - (local $head i32) - (local $flMap i32) - (local $root|10 i32) - (local $fl|11 i32) - (local $root|12 i32) - (local $fl|13 i32) - (local $sl|14 i32) - (local $root|15 i32) - (local $fl|16 i32) - (local $sl|17 i32) - local.get $size - i32.const 256 - i32.lt_u + local.get $num + i32.const 10 + i32.ge_u if - i32.const 0 - local.set $fl - local.get $size - i32.const 4 - i32.shr_u - local.set $sl - else - local.get $size - call $~lib/rt/tlsf/roundSize - local.set $requestSize - i32.const 4 - i32.const 8 - i32.mul - i32.const 1 - i32.sub - local.get $requestSize - i32.clz - i32.sub - local.set $fl - local.get $requestSize - local.get $fl - i32.const 4 + local.get $offset + i32.const 2 i32.sub - i32.shr_u + local.set $offset + i32.const 620 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset i32.const 1 - i32.const 4 i32.shl - i32.xor - local.set $sl - local.get $fl - i32.const 8 + i32.add + local.get $digits|12 + i32.store + else + local.get $offset i32.const 1 i32.sub - i32.sub - local.set $fl + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 end - i32.const 1 - drop - local.get $fl - i32.const 23 - i32.lt_u - if (result i32) - local.get $sl - i32.const 16 - i32.lt_u - else - i32.const 0 + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1040 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end end - i32.eqz + local.get $offset + i32.const 1 + i32.and if - i32.const 0 - i32.const 304 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $root - local.set $root|5 - local.get $fl - local.set $fl|6 - local.get $root|5 - local.get $fl|6 - i32.const 2 + local.get $buffer + i32.const 1040 + local.get $num + i32.wrap_i64 + i32.const 6 i32.shl i32.add - i32.load offset=4 - br $~lib/rt/tlsf/GETSL|inlined.2 + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 end - i32.const 0 - i32.const -1 - i32.xor - local.get $sl - i32.shl - i32.and - local.set $slMap - i32.const 0 - local.set $head - local.get $slMap - i32.eqz if - local.get $root - call $~lib/rt/tlsf/Root#get:flMap - i32.const 0 - i32.const -1 - i32.xor - local.get $fl + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u i32.const 1 i32.add - i32.shl + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 i32.and - local.set $flMap - local.get $flMap - i32.eqz + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2096 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2096 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne if - i32.const 0 - local.set $head - else - local.get $flMap - i32.ctz - local.set $fl - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $root - local.set $root|10 - local.get $fl - local.set $fl|11 - local.get $root|10 - local.get $fl|11 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - br $~lib/rt/tlsf/GETSL|inlined.3 - end - local.set $slMap i32.const 1 drop - local.get $slMap + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq i32.eqz if i32.const 0 - i32.const 304 - i32.const 347 - i32.const 18 + i32.const 224 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $root - local.set $root|12 - local.get $fl - local.set $fl|13 - local.get $slMap - i32.ctz - local.set $sl|14 - local.get $root|12 - local.get $fl|13 - i32.const 4 - i32.shl - local.get $sl|14 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - br $~lib/rt/tlsf/GETHEAD|inlined.2 - end - local.set $head - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $root - local.set $root|15 - local.get $fl - local.set $fl|16 - local.get $slMap - i32.ctz - local.set $sl|17 - local.get $root|15 - local.get $fl|16 - i32.const 4 - i32.shl - local.get $sl|17 - i32.add - i32.const 2 - i32.shl + local.get $iter + i32.const 20 i32.add - i32.load offset=96 - br $~lib/rt/tlsf/GETHEAD|inlined.3 + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 end - local.set $head end - local.get $head - return ) - (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) - (local $pagesBefore i32) - (local $root|3 i32) - (local $pagesNeeded i32) - (local $5 i32) - (local $6 i32) - (local $pagesWanted i32) - (local $pagesAfter i32) - i32.const 0 - drop - local.get $size - i32.const 256 - i32.ge_u - if - local.get $size - call $~lib/rt/tlsf/roundSize - local.set $size - end - memory.size - local.set $pagesBefore - local.get $size - i32.const 4 - local.get $pagesBefore - i32.const 16 - i32.shl - i32.const 4 - i32.sub - block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) - local.get $root - local.set $root|3 - local.get $root|3 - i32.load offset=1568 - br $~lib/rt/tlsf/GETTAIL|inlined.1 - end - i32.ne - i32.shl - i32.add - local.set $size - local.get $size - i32.const 65535 - i32.add - i32.const 65535 + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 i32.const -1 i32.xor i32.and - i32.const 16 - i32.shr_u - local.set $pagesNeeded - local.get $pagesBefore - local.tee $5 - local.get $pagesNeeded - local.tee $6 - local.get $5 - local.get $6 - i32.gt_s - select - local.set $pagesWanted - local.get $pagesWanted - memory.grow + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next i32.const 0 - i32.lt_s + i32.eq if - local.get $pagesNeeded - memory.grow + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev i32.const 0 - i32.lt_s + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz if + i32.const 0 + i32.const 224 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort unreachable end + return end - memory.size - local.set $pagesAfter - local.get $root - local.get $pagesBefore - i32.const 16 - i32.shl - local.get $pagesAfter - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) - (local $blockInfo i32) - (local $remaining i32) - (local $spare i32) - (local $block|6 i32) - (local $block|7 i32) - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - local.set $blockInfo + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev i32.const 1 drop - local.get $size - i32.const 4 - i32.add - i32.const 15 - i32.and - i32.eqz + local.get $prev i32.eqz if i32.const 0 - i32.const 304 - i32.const 361 - i32.const 14 + i32.const 224 + i32.const 132 + i32.const 16 call $~lib/builtins/abort unreachable end - local.get $blockInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $size - i32.sub - local.set $remaining - local.get $remaining + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 2288 + i32.const 2352 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr i32.const 4 - i32.const 12 i32.add - i32.ge_u - if - local.get $block - local.get $size - local.get $blockInfo - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $block - i32.const 4 - i32.add - local.get $size - i32.add - local.set $spare - local.get $spare - local.get $remaining - i32.const 4 - i32.sub + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $root - local.get $spare - call $~lib/rt/tlsf/insertBlock else - local.get $block - local.get $blockInfo - i32.const 1 - i32.const -1 - i32.xor + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $block - local.set $block|7 - local.get $block|7 - i32.const 4 - i32.add - local.get $block|7 - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - br $~lib/rt/tlsf/GETRIGHT|inlined.3 + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 224 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $block - local.set $block|6 - local.get $block|6 + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr i32.const 4 i32.add - local.get $block|6 - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - br $~lib/rt/tlsf/GETRIGHT|inlined.2 + local.set $ptr + br $while-continue|0 end + end + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 2 - i32.const -1 - i32.xor + i32.const 1 i32.and - call $~lib/rt/common/BLOCK#set:mmInfo + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 288 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $block + return ) - (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) - (local $payloadSize i32) - (local $block i32) - local.get $size - call $~lib/rt/tlsf/prepareSize - local.set $payloadSize + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo local.get $root - local.get $payloadSize - call $~lib/rt/tlsf/searchBlock - local.set $block local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT i32.eqz if - local.get $root - local.get $payloadSize - call $~lib/rt/tlsf/growMemory - local.get $root - local.get $payloadSize - call $~lib/rt/tlsf/searchBlock - local.set $block - i32.const 1 + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 drop - local.get $block - i32.eqz - if + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end i32.const 0 - i32.const 304 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return end - end - i32.const 1 - drop - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $payloadSize - i32.ge_u - i32.eqz - if + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev i32.const 0 - i32.const 304 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/state + br $break|0 end - local.get $root - local.get $block - call $~lib/rt/tlsf/removeBlock - local.get $root - local.get $block - local.get $payloadSize - call $~lib/rt/tlsf/prepareBlock i32.const 0 - drop - local.get $block - return - ) - (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $size - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add return ) - (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) - local.get $this - local.get $rtId - i32.store offset=12 - ) - (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) - local.get $this - local.get $rtSize - i32.store offset=16 - ) - (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) - (local $obj i32) - (local $ptr i32) - local.get $size - i32.const 1073741804 - i32.ge_u + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s if - i32.const 368 - i32.const 64 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - call $~lib/rt/itcms/interrupt + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end end - i32.const 16 - local.get $size - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $obj - local.get $obj - local.get $id - call $~lib/rt/itcms/Object#set:rtId - local.get $obj - local.get $size - call $~lib/rt/itcms/Object#set:rtSize - local.get $obj - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo global.get $~lib/rt/itcms/total - local.get $obj - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $obj - i32.const 20 + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 i32.add - local.set $ptr - local.get $ptr + global.set $~lib/rt/itcms/threshold i32.const 0 - local.get $size - memory.fill - local.get $ptr - return + drop + i32.const 0 + drop ) (func $incremental-gc/call-indirect/B#set:v (param $this i32) (param $v i32) local.get $this @@ -2313,12 +2756,6 @@ i32.const 16 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 112 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 256 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace memory.size i32.const 16 i32.shl @@ -2327,104 +2764,245 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 336 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 2240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace call $incremental-gc/call-indirect/issue_2923 i32.const 10 i32.eq i32.eqz if i32.const 0 - i32.const 464 + i32.const 2432 i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 160 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 368 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + (func $~start + call $start:incremental-gc/call-indirect ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35344 + i32.const 35392 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) - (func $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>#get:_env (param $this i32) (result i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $incremental-gc/call-indirect/B - block $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> - block $incremental-gc/call-indirect/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $incremental-gc/call-indirect/A $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> $incremental-gc/call-indirect/B $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>~visit - return - end + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 128 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - unreachable + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~start - call $start:incremental-gc/call-indirect + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33376 - i32.const 33424 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 384 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 384 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 2192 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $incremental-gc/call-indirect/B#constructor (param $this i32) (result i32) (local $1 i32) @@ -2567,7 +3145,7 @@ local.get $0 i32.store local.get $0 - i32.const 432 + i32.const 2400 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -2583,8 +3161,18 @@ local.get $0 return ) - (func $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2593,19 +3181,132 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 416 + i32.const 544 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 608 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $12 + return ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) @@ -2635,4 +3336,104 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2288 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 160 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1040 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2096 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $incremental-gc/call-indirect/B + block $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> + block $incremental-gc/call-indirect/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $incremental-gc/call-indirect/A $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> $incremental-gc/call-indirect/B $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>~visit + return + end + return + end + unreachable + ) + (func $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/incremental-gc/call-indirect.release.wat b/tests/compiler/incremental-gc/call-indirect.release.wat index 142078dea4..65b18940ce 100644 --- a/tests/compiler/incremental-gc/call-indirect.release.wat +++ b/tests/compiler/incremental-gc/call-indirect.release.wat @@ -1,242 +1,65 @@ (module - (type $0 (func)) - (type $1 (func (param i32) (result i32))) - (type $2 (func (param i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32 i32) (result i32))) (type $3 (func (param i32 i32))) - (type $4 (func (result i32))) - (type $5 (func (param i32 i32) (result i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $4 (func (param i32))) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (param i32 i32 i32 i32))) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) - (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)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34352)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (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/memory/__stack_pointer (mut i32) (i32.const 36320)) (memory $0 1) - (data $1 (i32.const 1052) "<") - (data $1.1 (i32.const 1064) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $3 (i32.const 1148) "<") - (data $3.1 (i32.const 1160) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $4 (i32.const 1212) ",") - (data $4.1 (i32.const 1224) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $6 (i32.const 1292) "<") - (data $6.1 (i32.const 1304) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $7 (i32.const 1356) "<") - (data $7.1 (i32.const 1368) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $8 (i32.const 1420) "\1c") - (data $8.1 (i32.const 1432) "\05\00\00\00\08\00\00\00\01") - (data $9 (i32.const 1452) "\\") - (data $9.1 (i32.const 1464) "\02\00\00\00>\00\00\00i\00n\00c\00r\00e\00m\00e\00n\00t\00a\00l\00-\00g\00c\00/\00c\00a\00l\00l\00-\00i\00n\00d\00i\00r\00e\00c\00t\00.\00t\00s") - (data $10 (i32.const 1552) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") + (data $1 (i32.const 1052) "\1c") + (data $1.1 (i32.const 1064) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1084) "\1c") + (data $2.1 (i32.const 1096) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1116) "\1c") + (data $3.1 (i32.const 1128) "\02") + (data $4 (i32.const 1148) "<") + (data $4.1 (i32.const 1160) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1212) "<") + (data $5.1 (i32.const 1224) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $6 (i32.const 1276) "<") + (data $6.1 (i32.const 1288) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1372) "\1c") + (data $8.1 (i32.const 1384) "\02\00\00\00\02\00\00\00:") + (data $9 (i32.const 1404) "|") + (data $9.1 (i32.const 1416) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $10 (i32.const 1532) "<") + (data $10.1 (i32.const 1544) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $11 (i32.const 1596) "\1c") + (data $11.1 (i32.const 1608) "\02\00\00\00\02\00\00\000") + (data $12 (i32.const 1628) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $13 (i32.const 2028) "\1c\04") + (data $13.1 (i32.const 2040) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $14 (i32.const 3084) "\\") + (data $14.1 (i32.const 3096) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $15 (i32.const 3180) "<") + (data $15.1 (i32.const 3192) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $17 (i32.const 3276) "<") + (data $17.1 (i32.const 3288) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $18 (i32.const 3340) ",") + (data $18.1 (i32.const 3352) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $19 (i32.const 3388) "\1c") + (data $19.1 (i32.const 3400) "\05\00\00\00\08\00\00\00\01") + (data $20 (i32.const 3420) "\\") + (data $20.1 (i32.const 3432) "\02\00\00\00>\00\00\00i\00n\00c\00r\00e\00m\00e\00n\00t\00a\00l\00-\00g\00c\00/\00c\00a\00l\00l\00-\00i\00n\00d\00i\00r\00e\00c\00t\00.\00t\00s") + (data $21 (i32.const 3520) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") (table $0 2 2 funcref) (elem $0 (i32.const 1) $incremental-gc/call-indirect/foo) (export "issue_2923" (func $incremental-gc/call-indirect/issue_2923)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1168 - call $~lib/rt/itcms/__visit - i32.const 1376 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$123 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34352 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$123 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 1552 - i32.load - i32.gt_u - if - i32.const 1168 - i32.const 1232 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.shl - i32.const 1556 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -250,7 +73,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1296 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -264,7 +87,7 @@ i32.lt_u if i32.const 0 - i32.const 1312 + i32.const 1296 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -310,7 +133,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1296 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -393,7 +216,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1296 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -407,7 +230,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1296 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -468,7 +291,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1296 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -501,7 +324,7 @@ i32.lt_u if i32.const 0 - i32.const 1312 + i32.const 1296 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -516,7 +339,7 @@ i32.ne if i32.const 0 - i32.const 1312 + i32.const 1296 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -567,7 +390,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1296 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -639,7 +462,7 @@ i64.lt_u if i32.const 0 - i32.const 1312 + i32.const 1296 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -664,7 +487,7 @@ i32.gt_u if i32.const 0 - i32.const 1312 + i32.const 1296 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -691,7 +514,7 @@ i32.gt_u if i32.const 0 - i32.const 1312 + i32.const 1296 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -763,10 +586,10 @@ if unreachable end - i32.const 34352 + i32.const 36320 i32.const 0 i32.store - i32.const 35920 + i32.const 37888 i32.const 0 i32.store loop $for-loop|0 @@ -777,7 +600,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34352 + i32.const 36320 i32.add i32.const 0 i32.store offset=4 @@ -795,7 +618,7 @@ i32.add i32.const 2 i32.shl - i32.const 34352 + i32.const 36320 i32.add i32.const 0 i32.store offset=96 @@ -813,301 +636,41 @@ br $for-loop|0 end end - i32.const 34352 - i32.const 35924 + i32.const 36320 + i32.const 37892 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34352 + i32.const 36320 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34352 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34352 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34352 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1312 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub local.set $1 end local.get $1 @@ -1137,7 +700,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1296 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1189,7 +752,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1296 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1221,8 +784,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1376 - i32.const 1072 + i32.const 1168 + i32.const 1232 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1232,7 +795,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$52 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1253,7 +816,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$52 end local.get $2 i32.const 0 @@ -1286,8 +849,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1376 - i32.const 1312 + i32.const 1168 + i32.const 1296 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1389,7 +952,7 @@ i32.eqz if i32.const 0 - i32.const 1312 + i32.const 1296 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1404,7 +967,7 @@ i32.gt_u if i32.const 0 - i32.const 1312 + i32.const 1296 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1423,7 +986,7 @@ i32.and if i32.const 0 - i32.const 1312 + i32.const 1296 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1528,67 +1091,664 @@ memory.fill local.get $1 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $incremental-gc/call-indirect/B - block $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> - block $incremental-gc/call-indirect/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $incremental-gc/call-indirect/A $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> $incremental-gc/call-indirect/B $invalid - end - return - end - return - end + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3552 + i32.lt_s + if + i32.const 36352 + i32.const 36400 + 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$56 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1616 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$56 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1628 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1628 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1628 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1628 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 3296 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + i32.const 2048 + call $~lib/rt/itcms/__visit + i32.const 3104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$137 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36320 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$137 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3520 + i32.load + i32.gt_u + if + i32.const 3296 + i32.const 3360 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3524 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount return end local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end - return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1584 - i32.lt_s + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + 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 34384 - i32.const 34432 - i32.const 1 - i32.const 1 + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36320 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 36320 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36320 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1296 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 return end - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - unreachable + i32.const 0 ) (func $~start i32.const 1028 @@ -1599,42 +1759,242 @@ i32.store i32.const 1024 global.set $~lib/rt/itcms/pinSpace - i32.const 1124 - i32.const 1120 - i32.store - i32.const 1128 - i32.const 1120 - i32.store - i32.const 1120 - global.set $~lib/rt/itcms/toSpace - i32.const 1268 - i32.const 1264 - i32.store - i32.const 1272 - i32.const 1264 - i32.store - i32.const 1264 - global.set $~lib/rt/itcms/fromSpace memory.size i32.const 16 i32.shl - i32.const 34352 + i32.const 36320 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + i32.const 3252 + i32.const 3248 + i32.store + i32.const 3256 + i32.const 3248 + i32.store + i32.const 3248 + global.set $~lib/rt/itcms/toSpace call $incremental-gc/call-indirect/issue_2923 i32.const 10 i32.ne if i32.const 0 - i32.const 1472 + i32.const 3440 i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3552 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3552 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$141 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1136 + local.set $0 + br $__inlined_func$~lib/string/String#concat$141 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36352 + i32.const 36400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3552 + i32.lt_s + if + i32.const 36352 + i32.const 36400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1072 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1104 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1392 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1392 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3200 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $incremental-gc/call-indirect/foo (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -1644,7 +2004,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1584 + i32.const 3552 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1689,7 +2049,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1584 + i32.const 3552 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1732,8 +2092,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1747,7 +2107,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1584 + i32.const 3552 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1758,7 +2118,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1584 + i32.const 3552 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1792,20 +2152,20 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 1440 + i32.const 3408 i32.store offset=4 local.get $0 - i32.const 1440 + i32.const 3408 i32.load - call_indirect (type $1) + call_indirect (type $0) global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1817,11 +2177,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1584 + i32.const 3552 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1846,4 +2206,66 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $incremental-gc/call-indirect/B + block $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> + block $incremental-gc/call-indirect/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $incremental-gc/call-indirect/A $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> $incremental-gc/call-indirect/B $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3552 + i32.lt_s + if + i32.const 36352 + i32.const 36400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/infer-array.debug.wat b/tests/compiler/infer-array.debug.wat index b864b32944..e8aa4dddf7 100644 --- a/tests/compiler/infer-array.debug.wat +++ b/tests/compiler/infer-array.debug.wat @@ -6,16 +6,19 @@ (type $4 (func (param i32 i32 i32))) (type $5 (func)) (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (type $9 (func (param i32 i32 i32) (result i32))) - (type $10 (func (param i32 i32) (result f64))) - (type $11 (func (param i32 i32) (result f32))) - (type $12 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i64 i32))) + (type $8 (func (param i64 i32) (result i32))) + (type $9 (func (param i32 i64 i32 i32))) + (type $10 (func (param i32 i32 i64) (result i32))) + (type $11 (func (result i32))) + (type $12 (func (param i32 i32 i32) (result i32))) + (type $13 (func (param i32 i32) (result f64))) + (type $14 (func (param i32 i32) (result f32))) + (type $15 (func (param i32 i32 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 $~lib/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -28,41 +31,481 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/rt/__rtti_base i32 (i32.const 1136)) - (global $~lib/memory/__data_end i32 (i32.const 1192)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33960)) - (global $~lib/memory/__heap_base i32 (i32.const 33960)) + (global $~lib/rt/__rtti_base i32 (i32.const 3104)) + (global $~lib/memory/__data_end i32 (i32.const 3160)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35928)) + (global $~lib/memory/__heap_base i32 (i32.const 35928)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 444) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $10 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00n\00f\00e\00r\00-\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data $11 (i32.const 540) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00") - (data $12 (i32.const 588) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\ff\ff\ff\ff\00\00\00\00") - (data $13 (i32.const 620) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00") - (data $14 (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data $15 (i32.const 700) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $16 (i32.const 748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") - (data $17 (i32.const 780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\00\00\03\00\00\00\00\00\00") - (data $18 (i32.const 812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $19 (i32.const 844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $20 (i32.const 876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $21 (i32.const 908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") - (data $22 (i32.const 940) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $23 (i32.const 972) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data $24 (i32.const 1004) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $25 (i32.const 1136) "\r\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\1a\00\00\02\01\00\00\02\19\00\00 \00\00\00\02a\00\00\02a\00\00\02\01\00\00\02A\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 172) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 396) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $9 (i32.const 796) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 1852) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $11 (i32.const 1948) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 2012) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $13 (i32.const 2076) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $21 (i32.const 2460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00n\00f\00e\00r\00-\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data $22 (i32.const 2508) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00") + (data $23 (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\ff\ff\ff\ff\00\00\00\00") + (data $24 (i32.const 2588) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00") + (data $25 (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data $26 (i32.const 2668) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $27 (i32.const 2716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\00\b0\n\00\00\00\00\00\00") + (data $29 (i32.const 2780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 2812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 2844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 2876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data $33 (i32.const 2908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $34 (i32.const 2940) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $35 (i32.const 2972) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 3104) "\r\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\1a\00\00\02\01\00\00\02\19\00\00 \00\00\00\02a\00\00\02a\00\00\02\01\00\00\02A\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 396 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 396 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 396 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 396 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 816 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 816 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1872 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1872 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -127,7 +570,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2096 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -197,7 +640,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2096 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -214,7 +657,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2096 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -244,8 +687,8 @@ i32.load i32.gt_u if - i32.const 256 - i32.const 320 + i32.const 2224 + i32.const 2288 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -313,7 +756,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 128 + i32.const 2096 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -465,7 +908,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -485,7 +928,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -548,7 +991,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -701,7 +1144,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -718,7 +1161,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -807,7 +1250,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -850,7 +1293,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -868,7 +1311,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -936,7 +1379,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1053,7 +1496,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1099,7 +1542,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1131,7 +1574,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1375,7 +1818,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1595,7 +2038,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2096 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1703,8 +2146,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 64 - i32.const 400 + i32.const 2032 + i32.const 2368 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1806,7 +2249,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1877,7 +2320,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2034,7 +2477,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2149,7 +2592,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2169,7 +2612,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2217,8 +2660,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 64 - i32.const 128 + i32.const 2032 + i32.const 2096 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2294,7 +2737,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2096 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2479,220 +2922,226 @@ local.get $this i32.load offset=4 ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 256 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 720 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 1024 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 64 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load + (func $~start + call $start:infer-array ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35952 + i32.const 36000 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array<~lib/string/String|null>#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array<~lib/string/String|null>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String|null>#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array<~lib/array/Array>#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/array/Array<~lib/array/Array> - block $~lib/array/Array - block $~lib/array/Array<~lib/string/String|null> - block $~lib/array/Array - block $infer-array/Ref - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $infer-array/Ref $~lib/array/Array $~lib/array/Array<~lib/string/String|null> $~lib/array/Array $~lib/array/Array<~lib/array/Array> $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String|null>~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>~visit + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 128 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - unreachable + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~start - call $start:infer-array + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33984 - i32.const 34032 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 160 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 160 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 1968 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) (local $value i32) @@ -2715,8 +3164,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 256 - i32.const 464 + i32.const 2224 + i32.const 2432 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2768,8 +3217,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 256 - i32.const 464 + i32.const 2224 + i32.const 2432 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2820,8 +3269,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 256 - i32.const 464 + i32.const 2224 + i32.const 2432 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2873,8 +3322,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 256 - i32.const 464 + i32.const 2224 + i32.const 2432 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2982,8 +3431,8 @@ i32.shr_u i32.gt_u if - i32.const 720 - i32.const 464 + i32.const 2688 + i32.const 2432 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -3085,8 +3534,8 @@ i32.const 0 i32.lt_s if - i32.const 256 - i32.const 464 + i32.const 2224 + i32.const 2432 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -3155,8 +3604,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 256 - i32.const 464 + i32.const 2224 + i32.const 2432 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -3212,8 +3661,8 @@ call $~lib/array/Array<~lib/string/String|null>#get:length_ i32.ge_u if - i32.const 256 - i32.const 464 + i32.const 2224 + i32.const 2432 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -3269,8 +3718,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 256 - i32.const 464 + i32.const 2224 + i32.const 2432 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -3324,8 +3773,8 @@ i32.const 0 i32.lt_s if - i32.const 256 - i32.const 464 + i32.const 2224 + i32.const 2432 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -3394,8 +3843,8 @@ call $~lib/array/Array<~lib/array/Array>#get:length_ i32.ge_u if - i32.const 256 - i32.const 464 + i32.const 2224 + i32.const 2432 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -3424,8 +3873,8 @@ local.get $value i32.eqz if - i32.const 1024 - i32.const 464 + i32.const 2992 + i32.const 2432 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -3495,13 +3944,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 208 + i32.const 2176 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 352 + i32.const 2320 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer @@ -3525,7 +3974,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 3 i32.const 3 call $~lib/builtins/abort @@ -3544,7 +3993,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 4 i32.const 3 call $~lib/builtins/abort @@ -3554,7 +4003,7 @@ i32.const 3 i32.const 3 i32.const 5 - i32.const 560 + i32.const 2528 call $~lib/rt/__newArray local.tee $3 i32.store offset=8 @@ -3571,7 +4020,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 8 i32.const 3 call $~lib/builtins/abort @@ -3581,7 +4030,7 @@ i32.const 2 i32.const 2 i32.const 6 - i32.const 608 + i32.const 2576 call $~lib/rt/__newArray local.tee $5 i32.store offset=12 @@ -3598,7 +4047,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 12 i32.const 3 call $~lib/builtins/abort @@ -3618,7 +4067,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 13 i32.const 3 call $~lib/builtins/abort @@ -3637,7 +4086,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 14 i32.const 3 call $~lib/builtins/abort @@ -3647,7 +4096,7 @@ i32.const 3 i32.const 3 i32.const 5 - i32.const 640 + i32.const 2608 call $~lib/rt/__newArray local.tee $7 i32.store offset=16 @@ -3664,7 +4113,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -3674,7 +4123,7 @@ i32.const 3 i32.const 2 i32.const 7 - i32.const 688 + i32.const 2656 call $~lib/rt/__newArray local.tee $9 i32.store offset=20 @@ -3691,7 +4140,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 22 i32.const 3 call $~lib/builtins/abort @@ -3749,7 +4198,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 30 i32.const 3 call $~lib/builtins/abort @@ -3798,7 +4247,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -3842,7 +4291,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 41 i32.const 3 call $~lib/builtins/abort @@ -3852,7 +4301,7 @@ i32.const 2 i32.const 2 i32.const 10 - i32.const 800 + i32.const 2768 call $~lib/rt/__newArray local.tee $23 i32.store offset=68 @@ -3869,7 +4318,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -3879,7 +4328,7 @@ i32.const 1 i32.const 2 i32.const 11 - i32.const 832 + i32.const 2800 call $~lib/rt/__newArray local.tee $25 i32.store offset=72 @@ -3896,7 +4345,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -3916,7 +4365,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 50 i32.const 3 call $~lib/builtins/abort @@ -3926,7 +4375,7 @@ i32.const 2 i32.const 2 i32.const 11 - i32.const 864 + i32.const 2832 call $~lib/rt/__newArray local.tee $27 i32.store offset=76 @@ -3943,7 +4392,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 52 i32.const 3 call $~lib/builtins/abort @@ -3963,7 +4412,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 53 i32.const 3 call $~lib/builtins/abort @@ -3973,7 +4422,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 896 + i32.const 2864 call $~lib/rt/__newArray local.tee $29 i32.store offset=80 @@ -3990,7 +4439,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 57 i32.const 3 call $~lib/builtins/abort @@ -4010,7 +4459,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 58 i32.const 3 call $~lib/builtins/abort @@ -4020,7 +4469,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 928 + i32.const 2896 call $~lib/rt/__newArray local.tee $31 i32.store offset=84 @@ -4037,7 +4486,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -4057,7 +4506,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -4077,7 +4526,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 960 + i32.const 2928 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $32 @@ -4085,7 +4534,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 992 + i32.const 2960 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $32 @@ -4104,7 +4553,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 2480 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -4118,6 +4567,439 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 192 + i32.const 320 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 384 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2688 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2992 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2032 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 816 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1872 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array<~lib/string/String|null>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String|null>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String|null>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array<~lib/array/Array>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array<~lib/array/Array> + block $~lib/array/Array + block $~lib/array/Array<~lib/string/String|null> + block $~lib/array/Array + block $infer-array/Ref + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $infer-array/Ref $~lib/array/Array $~lib/array/Array<~lib/string/String|null> $~lib/array/Array $~lib/array/Array<~lib/array/Array> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String|null>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>~visit + return + end + unreachable + ) (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) (local $2 i32) global.get $~lib/memory/__stack_pointer @@ -4458,85 +5340,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) - (local $bufferSize i32) - (local $buffer i32) - (local $array i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $length - local.get $alignLog2 - i32.shl - local.set $bufferSize - global.get $~lib/memory/__stack_pointer - local.get $bufferSize - i32.const 1 - local.get $data - call $~lib/rt/__newBuffer - local.tee $buffer - i32.store - i32.const 16 - local.get $id - call $~lib/rt/itcms/__new - local.set $array - local.get $array - local.get $buffer - i32.store - local.get $array - local.get $buffer - i32.const 0 - call $~lib/rt/itcms/__link - local.get $array - local.get $buffer - i32.store offset=4 - local.get $array - local.get $bufferSize - i32.store offset=8 - local.get $array - local.get $length - i32.store offset=12 - local.get $array - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - ) - (func $~lib/object/Object#constructor (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) ) diff --git a/tests/compiler/infer-array.release.wat b/tests/compiler/infer-array.release.wat index 4e368e641f..b01bb182e0 100644 --- a/tests/compiler/infer-array.release.wat +++ b/tests/compiler/infer-array.release.wat @@ -5,10 +5,10 @@ (type $3 (func (param i32 i32) (result i32))) (type $4 (func (result i32))) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32) (result i32))) (type $7 (func (param i32 i32 i64))) - (type $8 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i32 i32) (result i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -19,67 +19,290 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34984)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36952)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data $1 (i32.const 1068) "<") - (data $1.1 (i32.const 1080) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $2 (i32.const 1132) "<") - (data $2.1 (i32.const 1144) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $5 (i32.const 1260) "<") - (data $5.1 (i32.const 1272) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $6 (i32.const 1324) ",") - (data $6.1 (i32.const 1336) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $8 (i32.const 1404) "<") - (data $8.1 (i32.const 1416) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $9 (i32.const 1468) ",") - (data $9.1 (i32.const 1480) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $10 (i32.const 1516) ",") - (data $10.1 (i32.const 1528) "\02\00\00\00\1c\00\00\00i\00n\00f\00e\00r\00-\00a\00r\00r\00a\00y\00.\00t\00s") - (data $11 (i32.const 1564) ",") - (data $11.1 (i32.const 1576) "\01\00\00\00\18") - (data $11.2 (i32.const 1590) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data $12 (i32.const 1612) "\1c") - (data $12.1 (i32.const 1624) "\01\00\00\00\08\00\00\00\01\00\00\00\ff\ff\ff\ff") - (data $13 (i32.const 1644) ",") - (data $13.1 (i32.const 1656) "\01\00\00\00\18") - (data $13.2 (i32.const 1670) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data $14 (i32.const 1692) "\1c") - (data $14.1 (i32.const 1704) "\01\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data $15 (i32.const 1724) ",") - (data $15.1 (i32.const 1736) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $16 (i32.const 1772) "\1c") - (data $16.1 (i32.const 1784) "\02\00\00\00\02\00\00\00a") - (data $17 (i32.const 1804) "\1c") - (data $17.1 (i32.const 1816) "\01\00\00\00\08\00\00\00\00\00\00\00\00\07") - (data $18 (i32.const 1836) "\1c") - (data $18.1 (i32.const 1848) "\01\00\00\00\04") - (data $19 (i32.const 1868) "\1c") - (data $19.1 (i32.const 1880) "\01\00\00\00\08") - (data $20 (i32.const 1900) "\1c") - (data $20.1 (i32.const 1912) "\01\00\00\00\08\00\00\00\01") - (data $21 (i32.const 1932) "\1c") - (data $21.1 (i32.const 1944) "\01\00\00\00\08\00\00\00\00\00\00\00\01") - (data $22 (i32.const 1964) "\1c") - (data $22.1 (i32.const 1976) "\01\00\00\00\04\00\00\00\01") - (data $23 (i32.const 1996) "\1c") - (data $23.1 (i32.const 2008) "\01\00\00\00\04\00\00\00\02") - (data $24 (i32.const 2028) "|") - (data $24.1 (i32.const 2040) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data $25 (i32.const 2160) "\r\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\1a\00\00\02\01\00\00\02\19\00\00 \00\00\00\02a\00\00\02a\00\00\02\01\00\00\02A") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02") + (data $4 (i32.const 1164) "\1c") + (data $4.1 (i32.const 1176) "\02\00\00\00\02\00\00\00:") + (data $5 (i32.const 1196) "|") + (data $5.1 (i32.const 1208) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $6 (i32.const 1324) "<") + (data $6.1 (i32.const 1336) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $7 (i32.const 1388) "\1c") + (data $7.1 (i32.const 1400) "\02\00\00\00\02\00\00\000") + (data $8 (i32.const 1420) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $9 (i32.const 1820) "\1c\04") + (data $9.1 (i32.const 1832) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $10 (i32.const 2876) "\\") + (data $10.1 (i32.const 2888) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $11 (i32.const 2972) "<") + (data $11.1 (i32.const 2984) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $12 (i32.const 3036) "<") + (data $12.1 (i32.const 3048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $13 (i32.const 3100) "<") + (data $13.1 (i32.const 3112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $16 (i32.const 3228) "<") + (data $16.1 (i32.const 3240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $17 (i32.const 3292) ",") + (data $17.1 (i32.const 3304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $19 (i32.const 3372) "<") + (data $19.1 (i32.const 3384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $20 (i32.const 3436) ",") + (data $20.1 (i32.const 3448) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $21 (i32.const 3484) ",") + (data $21.1 (i32.const 3496) "\02\00\00\00\1c\00\00\00i\00n\00f\00e\00r\00-\00a\00r\00r\00a\00y\00.\00t\00s") + (data $22 (i32.const 3532) ",") + (data $22.1 (i32.const 3544) "\01\00\00\00\18") + (data $22.2 (i32.const 3558) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") + (data $23 (i32.const 3580) "\1c") + (data $23.1 (i32.const 3592) "\01\00\00\00\08\00\00\00\01\00\00\00\ff\ff\ff\ff") + (data $24 (i32.const 3612) ",") + (data $24.1 (i32.const 3624) "\01\00\00\00\18") + (data $24.2 (i32.const 3638) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") + (data $25 (i32.const 3660) "\1c") + (data $25.1 (i32.const 3672) "\01\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data $26 (i32.const 3692) ",") + (data $26.1 (i32.const 3704) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $27 (i32.const 3740) "\1c") + (data $27.1 (i32.const 3752) "\02\00\00\00\02\00\00\00a") + (data $28 (i32.const 3772) "\1c") + (data $28.1 (i32.const 3784) "\01\00\00\00\08\00\00\00\00\00\00\00\b0\0e") + (data $29 (i32.const 3804) "\1c") + (data $29.1 (i32.const 3816) "\01\00\00\00\04") + (data $30 (i32.const 3836) "\1c") + (data $30.1 (i32.const 3848) "\01\00\00\00\08") + (data $31 (i32.const 3868) "\1c") + (data $31.1 (i32.const 3880) "\01\00\00\00\08\00\00\00\01") + (data $32 (i32.const 3900) "\1c") + (data $32.1 (i32.const 3912) "\01\00\00\00\08\00\00\00\00\00\00\00\01") + (data $33 (i32.const 3932) "\1c") + (data $33.1 (i32.const 3944) "\01\00\00\00\04\00\00\00\01") + (data $34 (i32.const 3964) "\1c") + (data $34.1 (i32.const 3976) "\01\00\00\00\04\00\00\00\02") + (data $35 (i32.const 3996) "|") + (data $35.1 (i32.const 4008) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $36 (i32.const 4128) "\r\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\1a\00\00\02\01\00\00\02\19\00\00 \00\00\00\02a\00\00\02a\00\00\02\01\00\00\02A") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 4184 + i32.lt_s + if + i32.const 36976 + i32.const 37024 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1408 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1420 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1420 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1420 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1420 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1280 + i32.const 3248 call $~lib/rt/itcms/__visit - i32.const 1744 + i32.const 3712 call $~lib/rt/itcms/__visit - i32.const 2048 + i32.const 4016 call $~lib/rt/itcms/__visit - i32.const 1088 + i32.const 3056 + call $~lib/rt/itcms/__visit + i32.const 1840 + call $~lib/rt/itcms/__visit + i32.const 2896 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -100,7 +323,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3120 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -133,7 +356,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3120 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -142,7 +365,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$154 + block $__inlined_func$~lib/rt/itcms/Object#unlink$167 local.get $0 i32.load offset=4 i32.const -4 @@ -154,19 +377,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34984 + i32.const 36952 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3120 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$154 + br $__inlined_func$~lib/rt/itcms/Object#unlink$167 end local.get $0 i32.load offset=8 @@ -174,7 +397,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3120 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -203,12 +426,12 @@ i32.const 1 else local.get $1 - i32.const 2160 + i32.const 4128 i32.load i32.gt_u if - i32.const 1280 - i32.const 1344 + i32.const 3248 + i32.const 3312 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -217,7 +440,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 2164 + i32.const 4132 i32.add i32.load i32.const 32 @@ -288,7 +511,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -302,7 +525,7 @@ i32.lt_u if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -348,7 +571,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -431,7 +654,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -445,7 +668,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -506,7 +729,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -539,7 +762,7 @@ i32.lt_u if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -554,7 +777,7 @@ i32.ne if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -605,7 +828,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -677,7 +900,7 @@ i64.lt_u if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -702,7 +925,7 @@ i32.gt_u if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -729,7 +952,7 @@ i32.gt_u if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -801,10 +1024,10 @@ if unreachable end - i32.const 34992 + i32.const 36960 i32.const 0 i32.store - i32.const 36560 + i32.const 38528 i32.const 0 i32.store loop $for-loop|0 @@ -815,7 +1038,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34992 + i32.const 36960 i32.add i32.const 0 i32.store offset=4 @@ -833,7 +1056,7 @@ i32.add i32.const 2 i32.shl - i32.const 34992 + i32.const 36960 i32.add i32.const 0 i32.store offset=96 @@ -851,14 +1074,14 @@ br $for-loop|0 end end - i32.const 34992 - i32.const 36564 + i32.const 36960 + i32.const 38532 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34992 + i32.const 36960 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -943,7 +1166,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34984 + i32.const 36952 i32.lt_u if local.get $0 @@ -1032,14 +1255,14 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3120 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34984 + i32.const 36952 i32.lt_u if local.get $0 @@ -1062,7 +1285,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34984 + i32.const 36952 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1091,7 +1314,7 @@ end if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1175,7 +1398,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1227,7 +1450,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1259,8 +1482,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1088 - i32.const 1152 + i32.const 3056 + i32.const 3120 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1270,7 +1493,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1291,7 +1514,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1324,8 +1547,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1088 - i32.const 1424 + i32.const 3056 + i32.const 3392 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1427,7 +1650,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1442,7 +1665,7 @@ i32.gt_u if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1461,7 +1684,7 @@ i32.and if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1577,7 +1800,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3120 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1625,130 +1848,208 @@ end end ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) + (func $~start + call $start:infer-array + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $infer-array/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $infer-array/Ref $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner1 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2216 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 4184 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2216 + i32.const 4184 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $2 i32.store local.get $0 - i32.load offset=4 - local.set $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 + i32.store + block $__inlined_func$~lib/string/String#concat$172 local.get $1 - local.get $2 - i32.lt_u + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $1 - br $while-continue|0 + global.set $~lib/memory/__stack_pointer + i32.const 1152 + local.set $0 + br $__inlined_func$~lib/string/String#concat$172 end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 return end - i32.const 35008 - i32.const 35056 + i32.const 36976 + i32.const 37024 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~start - call $start:infer-array + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4184 + i32.lt_s + if + i32.const 36976 + i32.const 37024 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1088 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1120 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1184 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1184 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2992 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/array/Array#__get (param $0 i32) global.get $~lib/memory/__stack_pointer @@ -1756,11 +2057,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2216 + i32.const 4184 i32.lt_s if - i32.const 35008 - i32.const 35056 + i32.const 36976 + i32.const 37024 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1776,8 +2077,8 @@ i32.load offset=12 i32.eqz if - i32.const 1280 - i32.const 1488 + i32.const 3248 + i32.const 3456 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -1801,11 +2102,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2216 + i32.const 4184 i32.lt_s if - i32.const 35008 - i32.const 35056 + i32.const 36976 + i32.const 37024 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1821,8 +2122,8 @@ i32.load offset=12 i32.eqz if - i32.const 1280 - i32.const 1488 + i32.const 3248 + i32.const 3456 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -1846,11 +2147,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2216 + i32.const 4184 i32.lt_s if - i32.const 35008 - i32.const 35056 + i32.const 36976 + i32.const 37024 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1867,8 +2168,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1280 - i32.const 1488 + i32.const 3248 + i32.const 3456 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -1895,11 +2196,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2216 + i32.const 4184 i32.lt_s if - i32.const 35008 - i32.const 35056 + i32.const 36976 + i32.const 37024 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1916,8 +2217,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1280 - i32.const 1488 + i32.const 3248 + i32.const 3456 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -1948,7 +2249,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2216 + i32.const 4184 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1969,7 +2270,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2216 + i32.const 4184 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1998,8 +2299,8 @@ local.get $0 return end - i32.const 35008 - i32.const 35056 + i32.const 36976 + i32.const 37024 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2017,7 +2318,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2216 + i32.const 4184 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2035,8 +2336,8 @@ i32.const 0 i32.lt_s if - i32.const 1280 - i32.const 1488 + i32.const 3248 + i32.const 3456 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -2052,7 +2353,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2216 + i32.const 4184 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2073,8 +2374,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1744 - i32.const 1488 + i32.const 3712 + i32.const 3456 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -2083,7 +2384,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $__inlined_func$~lib/rt/itcms/__renew$149 + block $__inlined_func$~lib/rt/itcms/__renew$155 i32.const 1073741820 local.get $4 i32.const 1 @@ -2126,7 +2427,7 @@ i32.store offset=16 local.get $4 local.set $3 - br $__inlined_func$~lib/rt/itcms/__renew$149 + br $__inlined_func$~lib/rt/itcms/__renew$155 end local.get $5 local.get $7 @@ -2195,8 +2496,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 35008 - i32.const 35056 + i32.const 36976 + i32.const 37024 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2208,11 +2509,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2216 + i32.const 4184 i32.lt_s if - i32.const 35008 - i32.const 35056 + i32.const 36976 + i32.const 37024 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2229,8 +2530,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1280 - i32.const 1488 + i32.const 3248 + i32.const 3456 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2264,7 +2565,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2216 + i32.const 4184 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2274,34 +2575,34 @@ memory.size i32.const 16 i32.shl - i32.const 34984 + i32.const 36952 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/pinSpace - i32.const 1236 - i32.const 1232 + i32.const 3204 + i32.const 3200 i32.store - i32.const 1240 - i32.const 1232 + i32.const 3208 + i32.const 3200 i32.store - i32.const 1232 + i32.const 3200 global.set $~lib/rt/itcms/toSpace - i32.const 1380 - i32.const 1376 + i32.const 3348 + i32.const 3344 i32.store - i32.const 1384 - i32.const 1376 + i32.const 3352 + i32.const 3344 i32.store - i32.const 1376 + i32.const 3344 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 3 @@ -2325,7 +2626,7 @@ i32.const 3 i32.const 3 i32.const 5 - i32.const 1584 + i32.const 3552 call $~lib/rt/__newArray local.tee $0 i32.store offset=8 @@ -2338,7 +2639,7 @@ i32.const 2 i32.const 2 i32.const 6 - i32.const 1632 + i32.const 3600 call $~lib/rt/__newArray local.tee $0 i32.store offset=12 @@ -2366,7 +2667,7 @@ i32.ne if i32.const 0 - i32.const 1536 + i32.const 3504 i32.const 14 i32.const 3 call $~lib/builtins/abort @@ -2376,7 +2677,7 @@ i32.const 3 i32.const 3 i32.const 5 - i32.const 1664 + i32.const 3632 call $~lib/rt/__newArray local.tee $0 i32.store offset=16 @@ -2389,7 +2690,7 @@ i32.const 3 i32.const 2 i32.const 7 - i32.const 1712 + i32.const 3680 call $~lib/rt/__newArray local.tee $0 i32.store offset=20 @@ -2504,7 +2805,7 @@ i32.const 2 i32.const 2 i32.const 10 - i32.const 1824 + i32.const 3792 call $~lib/rt/__newArray local.tee $0 i32.store offset=68 @@ -2518,7 +2819,7 @@ i32.const 1 i32.const 2 i32.const 11 - i32.const 1856 + i32.const 3824 call $~lib/rt/__newArray local.tee $0 i32.store offset=72 @@ -2540,7 +2841,7 @@ i32.const 2 i32.const 2 i32.const 11 - i32.const 1888 + i32.const 3856 call $~lib/rt/__newArray local.tee $0 i32.store offset=76 @@ -2562,7 +2863,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 1920 + i32.const 3888 call $~lib/rt/__newArray local.tee $0 i32.store offset=80 @@ -2580,7 +2881,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 1952 + i32.const 3920 call $~lib/rt/__newArray local.tee $0 i32.store offset=84 @@ -2608,7 +2909,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 1984 + i32.const 3952 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -2616,7 +2917,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 2016 + i32.const 3984 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -2629,7 +2930,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2216 + i32.const 4184 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2642,8 +2943,8 @@ i32.load offset=12 i32.eqz if - i32.const 1280 - i32.const 1488 + i32.const 3248 + i32.const 3456 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2661,8 +2962,8 @@ local.get $0 i32.eqz if - i32.const 2048 - i32.const 1488 + i32.const 4016 + i32.const 3456 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -2678,8 +2979,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 35008 - i32.const 35056 + i32.const 36976 + i32.const 37024 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2693,11 +2994,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2216 + i32.const 4184 i32.lt_s if - i32.const 35008 - i32.const 35056 + i32.const 36976 + i32.const 37024 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2748,4 +3049,126 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $infer-array/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $infer-array/Ref $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4184 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4184 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36976 + i32.const 37024 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) ) diff --git a/tests/compiler/infer-generic.debug.wat b/tests/compiler/infer-generic.debug.wat index e5325dead1..dcc2da1fbd 100644 --- a/tests/compiler/infer-generic.debug.wat +++ b/tests/compiler/infer-generic.debug.wat @@ -2,22 +2,22 @@ (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) - (type $5 (func (param i32 f32 i32 i32) (result i32))) - (type $6 (func (param i32 i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 f32 i32 i32) (result i32))) (type $7 (func (param f32) (result f32))) (type $8 (func (param f64 f64) (result i32))) - (type $9 (func (param i32 i32 i32 i32))) - (type $10 (func (param i32 i32 i64) (result i32))) - (type $11 (func (result i32))) - (type $12 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $infer-generic/arr i32 (i32.const 128)) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (param i32 i64 i32))) + (type $12 (func (param i64 i32) (result i32))) + (type $13 (func (param i32 i64 i32 i32))) + (type $14 (func (param i32 i32 i32 i32))) + (type $15 (func (param i32 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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -29,24 +29,38 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 592)) - (global $~lib/memory/__data_end i32 (i32.const 636)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33404)) - (global $~lib/memory/__heap_base i32 (i32.const 33404)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $infer-generic/arr i32 (i32.const 2496)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2560)) + (global $~lib/memory/__data_end i32 (i32.const 2604)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35372)) + (global $~lib/memory/__heap_base i32 (i32.const 35372)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00i\00n\00f\00e\00r\00-\00g\00e\00n\00e\00r\00i\00c\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data $2 (i32.const 108) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00`\00\00\00`\00\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 156) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 188) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $5 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 444) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 496) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 524) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 592) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\19\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00i\00n\00f\00e\00r\00-\00g\00e\00n\00e\00r\00i\00c\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2444) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data $21 (i32.const 2476) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00\a0\t\00\00\a0\t\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2560) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\19\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 2 2 funcref) (elem $0 (i32.const 1) $start:infer-generic~anonymous|0) (export "test1" (func $infer-generic/test1)) @@ -63,33 +77,19 @@ f64.eq return ) - (func $start:infer-generic~anonymous|0 (param $acc i32) (param $cur f32) (param $$2 i32) (param $$3 i32) (result i32) - local.get $acc - if (result i32) - local.get $cur - f32.const 0 - f32.ne - else - i32.const 0 - end - ) - (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) local.get $this - i32.load offset=12 + i32.load offset=16 ) - (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + (func $~lib/string/String#get:length (param $this i32) (result i32) local.get $this - i32.load offset=4 - ) - (func $infer-generic/inferDefault (param $a i32) (result i32) - local.get $a + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u return ) - (func $infer-generic/Ref#set:x (param $this i32) (param $x i32) - local.get $this - local.get $x - i32.store - ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -154,7 +154,7 @@ i32.eqz if i32.const 0 - i32.const 272 + i32.const 192 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -224,7 +224,7 @@ i32.eqz if i32.const 0 - i32.const 272 + i32.const 192 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -241,7 +241,7 @@ i32.eqz if i32.const 0 - i32.const 272 + i32.const 192 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -271,8 +271,8 @@ i32.load i32.gt_u if - i32.const 400 - i32.const 464 + i32.const 320 + i32.const 384 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -340,7 +340,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 272 + i32.const 192 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -492,7 +492,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -512,7 +512,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -575,7 +575,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -728,7 +728,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -745,7 +745,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -834,7 +834,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -877,7 +877,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -895,7 +895,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -963,7 +963,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1080,7 +1080,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1126,7 +1126,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1158,7 +1158,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1402,7 +1402,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 464 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1622,7 +1622,7 @@ i32.eqz if i32.const 0 - i32.const 272 + i32.const 192 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1730,8 +1730,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 208 - i32.const 544 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1833,7 +1833,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1904,7 +1904,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2061,7 +2061,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2176,7 +2176,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2196,7 +2196,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 464 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2244,8 +2244,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 208 - i32.const 272 + i32.const 128 + i32.const 192 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2290,6 +2290,449 @@ local.get $ptr return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $start:infer-generic~anonymous|0 (param $acc i32) (param $cur f32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $acc + if (result i32) + local.get $cur + f32.const 0 + f32.ne + else + i32.const 0 + end + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $infer-generic/inferDefault (param $a i32) (result i32) + local.get $a + return + ) + (func $infer-generic/Ref#set:x (param $this i32) (param $x i32) + local.get $this + local.get $x + i32.store + ) (func $infer-generic/inferDefault (param $a i32) (result i32) local.get $a return @@ -2323,167 +2766,226 @@ local.get $this i32.load ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $infer-generic/arr - local.tee $1 + (func $~start + call $start:infer-generic + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 35392 + i32.const 35440 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 400 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 208 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28%29=>f64>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28%29=>f64>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>f64>#__visit - ) - (func $~lib/function/Function<%28f32%29=>f64>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28f32%29=>f64>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%29=>f64>#__visit ) - (func $~lib/function/Function<%28f32%2Ci32%29=>f64>#get:_env (param $this i32) (result i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28f32%2Ci32%29=>f64>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Ci32%29=>f64>#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/function/Function<%28f32%2Ci32%29=>f64> - block $~lib/function/Function<%28f32%29=>f64> - block $~lib/function/Function<%28%29=>f64> - block $infer-generic/Ref - block $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool> - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool> $infer-generic/Ref $~lib/function/Function<%28%29=>f64> $~lib/function/Function<%28f32%29=>f64> $~lib/function/Function<%28f32%2Ci32%29=>f64> $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool>~visit - return - end - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>f64>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%29=>f64>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Ci32%29=>f64>~visit + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - unreachable + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~start - call $start:infer-generic + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33424 - i32.const 33472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/array/Array#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) (local $acc i32) @@ -2554,7 +3056,7 @@ global.set $~argumentsLength local.get $fn i32.load - call_indirect (type $5) + call_indirect (type $6) local.set $acc local.get $i i32.const 1 @@ -2633,13 +3135,30 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace f64.const 1 f64.const 1 call $infer-generic/inferCompatible i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 54 i32.const 1 call $~lib/builtins/abort @@ -2651,7 +3170,7 @@ local.get $2 i32.store local.get $2 - i32.const 176 + i32.const 2544 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -2667,29 +3186,12 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 70 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 320 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 352 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 496 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 0 call $infer-generic/Ref#constructor @@ -2715,7 +3217,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 71 i32.const 1 call $~lib/builtins/abort @@ -2845,7 +3347,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 32 + i32.const 2400 i32.const 75 i32.const 3 call $~lib/builtins/abort @@ -2865,8 +3367,18 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2875,24 +3387,135 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $12 + return ) - (func $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2902,92 +3525,81 @@ i32.const 0 i32.store local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/function/Function<%28%29=>f64>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) + (func $export:infer-generic/test2 (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 - call $~lib/function/Function<%28%29=>f64>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $0 + call $infer-generic/test2 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/function/Function<%28f32%29=>f64>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) + (func $export:infer-generic/test3 (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 - call $~lib/function/Function<%28f32%29=>f64>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $0 + call $infer-generic/test3 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/function/Function<%28f32%2Ci32%29=>f64>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) + (func $export:infer-generic/test4 (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 - call $~lib/function/Function<%28f32%2Ci32%29=>f64>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $0 + call $infer-generic/test4 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/object/Object#constructor (param $this i32) (result i32) + (func $export:infer-generic/test5 (param $0 i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -2995,19 +3607,10 @@ global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 i32.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this + local.get $0 + call $infer-generic/test5 local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3015,8 +3618,7 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $export:infer-generic/test2 (param $0 i32) (result i32) - (local $1 i32) + (func $export:infer-generic/inferAssert (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3026,82 +3628,281 @@ local.get $0 i32.store local.get $0 - call $infer-generic/test2 - local.set $1 + call $infer-generic/inferAssert global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 ) - (func $export:infer-generic/test3 (param $0 i32) (result i32) + (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) + global.get $infer-generic/arr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28%29=>f64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>f64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>f64>#__visit + ) + (func $~lib/function/Function<%28f32%29=>f64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f32%29=>f64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%29=>f64>#__visit + ) + (func $~lib/function/Function<%28f32%2Ci32%29=>f64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f32%2Ci32%29=>f64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%29=>f64>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28f32%2Ci32%29=>f64> + block $~lib/function/Function<%28f32%29=>f64> + block $~lib/function/Function<%28%29=>f64> + block $infer-generic/Ref + block $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool> + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool> $infer-generic/Ref $~lib/function/Function<%28%29=>f64> $~lib/function/Function<%28f32%29=>f64> $~lib/function/Function<%28f32%2Ci32%29=>f64> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>f64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%29=>f64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%29=>f64>~visit + return + end + unreachable + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - local.get $0 - call $infer-generic/test3 - local.set $1 + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 ) - (func $export:infer-generic/test4 (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - local.get $0 - call $infer-generic/test4 - local.set $1 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 ) - (func $export:infer-generic/test5 (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/function/Function<%28%29=>f64>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - local.get $0 - call $infer-generic/test5 - local.set $1 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>f64>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 ) - (func $export:infer-generic/inferAssert (param $0 i32) + (func $~lib/function/Function<%28f32%29=>f64>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - local.get $0 - call $infer-generic/inferAssert + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28f32%29=>f64>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28f32%2Ci32%29=>f64>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28f32%2Ci32%29=>f64>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/infer-generic.release.wat b/tests/compiler/infer-generic.release.wat index c09c4b901d..875521bbb1 100644 --- a/tests/compiler/infer-generic.release.wat +++ b/tests/compiler/infer-generic.release.wat @@ -1,15 +1,14 @@ (module (type $0 (func)) (type $1 (func (param i32))) - (type $2 (func (param i32 f32 i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32) (result i32))) - (type $5 (func (param i32 i32 i32 i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 f32 i32 i32) (result i32))) (type $6 (func (param i32 i32 i64))) (type $7 (func (result i32))) (type $8 (func (param f32) (result f32))) - (type $9 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $9 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -20,27 +19,48 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34428)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36396)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00 \00\00\00i\00n\00f\00e\00r\00-\00g\00e\00n\00e\00r\00i\00c\00.\00t\00s") - (data $1 (i32.const 1100) "\1c") - (data $1.1 (i32.const 1112) "\01\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data $2 (i32.const 1132) ",") - (data $2.1 (i32.const 1144) "\04\00\00\00\10\00\00\00`\04\00\00`\04\00\00\0c\00\00\00\03") - (data $3 (i32.const 1180) "\1c") - (data $3.1 (i32.const 1192) "\05\00\00\00\08\00\00\00\01") - (data $4 (i32.const 1212) "<") - (data $4.1 (i32.const 1224) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $5 (i32.const 1276) "<") - (data $5.1 (i32.const 1288) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $8 (i32.const 1404) "<") - (data $8.1 (i32.const 1416) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $9 (i32.const 1468) ",") - (data $9.1 (i32.const 1480) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $11 (i32.const 1548) "<") - (data $11.1 (i32.const 1560) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $12 (i32.const 1616) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\19\00\00\00\00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) "<") + (data $19.1 (i32.const 3416) "\02\00\00\00 \00\00\00i\00n\00f\00e\00r\00-\00g\00e\00n\00e\00r\00i\00c\00.\00t\00s") + (data $20 (i32.const 3468) "\1c") + (data $20.1 (i32.const 3480) "\01\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data $21 (i32.const 3500) ",") + (data $21.1 (i32.const 3512) "\04\00\00\00\10\00\00\00\a0\r\00\00\a0\r\00\00\0c\00\00\00\03") + (data $22 (i32.const 3548) "\1c") + (data $22.1 (i32.const 3560) "\05\00\00\00\08\00\00\00\01") + (data $23 (i32.const 3584) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\19\00\00\00\00\00\00 ") (table $0 2 2 funcref) (elem $0 (i32.const 1) $start:infer-generic~anonymous|0) (export "test1" (func $infer-generic/test1)) @@ -51,22 +71,18 @@ (export "test5" (func $export:infer-generic/test2)) (export "inferAssert" (func $export:infer-generic/inferAssert)) (start $~start) - (func $start:infer-generic~anonymous|0 (param $0 i32) (param $1 f32) (param $2 i32) (param $3 i32) (result i32) - local.get $1 - f32.const 0 - f32.ne - i32.const 0 - local.get $0 - select - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) + i32.const 3520 + call $~lib/rt/itcms/__visit + i32.const 1344 + call $~lib/rt/itcms/__visit i32.const 1152 call $~lib/rt/itcms/__visit - i32.const 1424 + i32.const 2208 call $~lib/rt/itcms/__visit - i32.const 1232 + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -87,7 +103,7 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -135,7 +151,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -144,7 +160,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$138 + block $__inlined_func$~lib/rt/itcms/Object#unlink$151 local.get $1 i32.load offset=4 i32.const -4 @@ -156,19 +172,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34428 + i32.const 36396 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$138 + br $__inlined_func$~lib/rt/itcms/Object#unlink$151 end local.get $1 i32.load offset=8 @@ -176,7 +192,7 @@ i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -205,12 +221,12 @@ i32.const 1 else local.get $0 - i32.const 1616 + i32.const 3584 i32.load i32.gt_u if - i32.const 1424 - i32.const 1488 + i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -219,7 +235,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1620 + i32.const 3588 i32.add i32.load i32.const 32 @@ -271,7 +287,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -285,7 +301,7 @@ i32.lt_u if i32.const 0 - i32.const 1568 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -331,7 +347,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -414,7 +430,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -428,7 +444,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -489,7 +505,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -522,7 +538,7 @@ i32.lt_u if i32.const 0 - i32.const 1568 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -537,7 +553,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -588,7 +604,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -660,7 +676,7 @@ i64.lt_u if i32.const 0 - i32.const 1568 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -685,7 +701,7 @@ i32.gt_u if i32.const 0 - i32.const 1568 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -712,7 +728,7 @@ i32.gt_u if i32.const 0 - i32.const 1568 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -784,10 +800,10 @@ if unreachable end - i32.const 34432 + i32.const 36400 i32.const 0 i32.store - i32.const 36000 + i32.const 37968 i32.const 0 i32.store loop $for-loop|0 @@ -798,7 +814,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34432 + i32.const 36400 i32.add i32.const 0 i32.store offset=4 @@ -816,7 +832,7 @@ i32.add i32.const 2 i32.shl - i32.const 34432 + i32.const 36400 i32.add i32.const 0 i32.store offset=96 @@ -834,14 +850,14 @@ br $for-loop|0 end end - i32.const 34432 - i32.const 36004 + i32.const 36400 + i32.const 37972 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34432 + i32.const 36400 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -926,7 +942,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34428 + i32.const 36396 i32.lt_u if local.get $0 @@ -1015,14 +1031,14 @@ i32.ne if i32.const 0 - i32.const 1296 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34428 + i32.const 36396 i32.lt_u if local.get $0 @@ -1045,7 +1061,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34428 + i32.const 36396 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1074,7 +1090,7 @@ end if i32.const 0 - i32.const 1568 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1158,7 +1174,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 1488 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1210,7 +1226,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1242,8 +1258,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1232 - i32.const 1296 + i32.const 1152 + i32.const 1216 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1253,7 +1269,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1274,7 +1290,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end local.get $2 i32.const 0 @@ -1307,8 +1323,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1232 - i32.const 1568 + i32.const 1152 + i32.const 1488 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1410,7 +1426,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1425,7 +1441,7 @@ i32.gt_u if i32.const 0 - i32.const 1568 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1444,7 +1460,7 @@ i32.and if i32.const 0 - i32.const 1568 + i32.const 1488 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1549,92 +1565,214 @@ memory.fill local.get $1 ) - (func $infer-generic/test1 (param $0 f32) (result f32) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $infer-generic/Ref - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $folding-inner0 $infer-generic/Ref $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1660 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - return - end - unreachable + 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 3628 + i32.lt_s + if + i32.const 36416 + i32.const 36464 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1660 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - return end - i32.const 34448 - i32.const 34496 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + ) + (func $start:infer-generic~anonymous|0 (param $0 i32) (param $1 f32) (param $2 i32) (param $3 i32) (result i32) + local.get $1 + f32.const 0 + f32.ne + i32.const 0 + local.get $0 + select + ) + (func $infer-generic/test1 (param $0 f32) (result f32) + local.get $0 ) (func $~start (local $0 i32) @@ -1648,7 +1786,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1660 + i32.const 3628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1657,36 +1795,68 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 + memory.size + i32.const 16 + i32.shl + i32.const 36396 + 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 1152 + i32.const 3520 i32.store global.get $~lib/memory/__stack_pointer - i32.const 1200 + i32.const 3568 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1660 + i32.const 3628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 1152 + i32.const 3520 i32.store - i32.const 1164 + i32.const 3532 i32.load local.set $3 loop $for-loop|0 global.get $~lib/memory/__stack_pointer - i32.const 1152 + i32.const 3520 i32.store local.get $1 local.get $3 - i32.const 1164 + i32.const 3532 i32.load local.tee $4 local.get $3 @@ -1696,9 +1866,9 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 1152 + i32.const 3520 i32.store offset=4 - i32.const 1156 + i32.const 3524 i32.load local.get $1 i32.const 2 @@ -1707,15 +1877,15 @@ f32.load local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 1152 + i32.const 3520 i32.store local.get $0 local.get $2 local.get $1 - i32.const 1152 - i32.const 1200 + i32.const 3520 + i32.const 3568 i32.load - call_indirect (type $2) + call_indirect (type $5) local.set $0 local.get $1 i32.const 1 @@ -1728,45 +1898,13 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - memory.size - i32.const 16 - i32.shl - i32.const 34428 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/pinSpace - i32.const 1380 - i32.const 1376 - i32.store - i32.const 1384 - i32.const 1376 - i32.store - i32.const 1376 - global.set $~lib/rt/itcms/toSpace - i32.const 1524 - i32.const 1520 - i32.store - i32.const 1528 - i32.const 1520 - i32.store - i32.const 1520 - global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1660 + i32.const 3628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1787,7 +1925,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1660 + i32.const 3628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1836,13 +1974,213 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34448 - i32.const 34496 + i32.const 36416 + i32.const 36464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$157 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$157 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36416 + i32.const 36464 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3628 + i32.lt_s + if + i32.const 36416 + i32.const 36464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $export:infer-generic/test2 (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -1850,7 +2188,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1660 + i32.const 3628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1861,7 +2199,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1660 + i32.const 3628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1881,8 +2219,8 @@ local.get $0 return end - i32.const 34448 - i32.const 34496 + i32.const 36416 + i32.const 36464 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1895,7 +2233,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1660 + i32.const 3628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1906,7 +2244,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1660 + i32.const 3628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1919,7 +2257,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 75 i32.const 3 call $~lib/builtins/abort @@ -1941,8 +2279,92 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34448 - i32.const 34496 + i32.const 36416 + i32.const 36464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $infer-generic/Ref + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $folding-inner0 $infer-generic/Ref $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3628 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3628 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36416 + i32.const 36464 i32.const 1 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/inlining-blocklocals.debug.wat b/tests/compiler/inlining-blocklocals.debug.wat index fd5ccaf5c2..89beb8a268 100644 --- a/tests/compiler/inlining-blocklocals.debug.wat +++ b/tests/compiler/inlining-blocklocals.debug.wat @@ -1,20 +1,2694 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $inlining-blocklocals/b (mut i32) (i32.const 2)) (global $inlining-blocklocals/theCall_a (mut i32) (i32.const 0)) (global $inlining-blocklocals/theCall_b (mut i32) (i32.const 0)) (global $inlining-blocklocals/theCall_c (mut i32) (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 92)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32860)) - (global $~lib/memory/__heap_base i32 (i32.const 32860)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2464)) + (global $~lib/memory/__data_end i32 (i32.const 2484)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35252)) + (global $~lib/memory/__heap_base i32 (i32.const 35252)) (memory $0 1) - (data $0 (i32.const 12) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2464) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $inlining-blocklocals/test (local $a i32) (local $1 i32) @@ -55,7 +2729,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -67,7 +2741,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 19 i32.const 3 call $~lib/builtins/abort @@ -79,7 +2753,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 20 i32.const 3 call $~lib/builtins/abort @@ -91,7 +2765,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -99,9 +2773,443 @@ end ) (func $start:inlining-blocklocals + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $inlining-blocklocals/test ) (func $~start call $start:inlining-blocklocals ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35280 + i32.const 35328 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/inlining-blocklocals.release.wat b/tests/compiler/inlining-blocklocals.release.wat index ede3330ebc..9e2826e6ea 100644 --- a/tests/compiler/inlining-blocklocals.release.wat +++ b/tests/compiler/inlining-blocklocals.release.wat @@ -1,17 +1,1786 @@ (module - (type $0 (func (param i32 i32 i32 i32))) - (type $1 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) (global $inlining-blocklocals/b (mut i32) (i32.const 2)) (global $inlining-blocklocals/theCall_b (mut i32) (i32.const 0)) (global $inlining-blocklocals/theCall_c (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36276)) (memory $0 1) - (data $0 (i32.const 1036) "L") - (data $0.1 (i32.const 1048) "\02\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) "L") + (data $19.1 (i32.const 3416) "\02\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s") + (data $20 (i32.const 3488) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$120 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36276 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$120 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3488 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3492 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36288 + i32.const 0 + i32.store + i32.const 37856 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36288 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36288 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36288 + i32.const 37860 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36288 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36276 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36276 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36276 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3508 + i32.lt_s + if + i32.const 36304 + i32.const 36352 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~start (local $0 i32) + memory.size + i32.const 16 + i32.shl + i32.const 36276 + 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 $inlining-blocklocals/b local.tee $0 i32.const 1 @@ -26,7 +1795,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 19 i32.const 3 call $~lib/builtins/abort @@ -37,11 +1806,235 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 20 i32.const 3 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3508 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3508 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$126 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$126 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3508 + i32.lt_s + if + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/inlining.debug.wat b/tests/compiler/inlining.debug.wat index 1478d40aca..dd5e0a87ad 100644 --- a/tests/compiler/inlining.debug.wat +++ b/tests/compiler/inlining.debug.wat @@ -1,18 +1,22 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func)) - (type $3 (func (param i32))) + (type $2 (func (param i32))) + (type $3 (func)) (type $4 (func (param i32 i32) (result i32))) - (type $5 (func (result i32))) - (type $6 (func (param i32 i32 i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (result i32))) (type $7 (func (param i32 i32 i32) (result f64))) - (type $8 (func (param i32 i32 i32 i32))) - (type $9 (func (param i32 i32 i64) (result i32))) - (type $10 (func (param f64) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param f64) (result f64))) + (type $13 (func (param i32 i32 i32 i32))) (global $inlining/constantGlobal i32 (i32.const 1)) - (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/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,28 +25,38 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 496)) - (global $~lib/memory/__data_end i32 (i32.const 532)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33300)) - (global $~lib/memory/__heap_base i32 (i32.const 33300)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2464)) + (global $~lib/memory/__data_end i32 (i32.const 2500)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35268)) + (global $~lib/memory/__heap_base i32 (i32.const 35268)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s\00\00\00\00\00\00\00") - (data $1 (i32.const 60) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 92) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $3 (i32.const 156) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 284) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 496) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s\00\00\00\00\00\00\00") + (data $20 (i32.const 2428) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2464) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00") (table $0 2 2 funcref) (elem $0 (i32.const 1) $inlining/func_fe~anonymous|0) (export "test" (func $inlining/test)) @@ -56,536 +70,292 @@ i32.add return ) - (func $inlining/func_fe~anonymous|0 (param $a i32) (result i32) - local.get $a + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 ) - (func $inlining/test_funcs - (local $a f32) - (local $b f64) - (local $a|2 i32) - (local $a|3 i32) - (local $a|4 i32) - (local $a|5 i32) - (local $a|6 i32) - (local $a|7 i32) - (local $a|8 i32) - (local $a|9 i32) - (local $b|10 i32) - (local $e i32) - (local $c i32) - (local $d i32) - (local $a|14 i32) - (local $b|15 i32) - (local $e|16 i32) - (local $c|17 i32) - (local $d|18 i32) - (local $a|19 i32) - (local $a|20 i32) - (local $b|21 i32) - (local $foo i32) - (local $this i32) - (local $a|24 i32) - (local $b|25 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - f32.const -1 - local.set $a - f64.const -2 - local.set $b - block $inlining/func_ii|inlined.0 (result i32) - i32.const 42 - local.set $a|2 - local.get $a|2 - i32.const 42 - i32.eq + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne if i32.const 1 - br $inlining/func_ii|inlined.0 - end - local.get $a|2 - i32.const 42 - i32.lt_s - if (result i32) - i32.const 2 - else + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 end - br $inlining/func_ii|inlined.0 end - i32.const 1 + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 i32.eq - drop - block $inlining/func_ii|inlined.1 (result i32) - i32.const 41 - local.set $a|3 - local.get $a|3 - i32.const 42 + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 i32.eq - if - i32.const 1 - br $inlining/func_ii|inlined.1 - end - local.get $a|3 - i32.const 42 - i32.lt_s if (result i32) - i32.const 2 + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u else - i32.const 3 + i32.const 0 end - br $inlining/func_ii|inlined.1 - end - i32.const 2 - i32.eq - drop - block $inlining/func_ii|inlined.2 (result i32) - i32.const 43 - local.set $a|4 - local.get $a|4 - i32.const 42 - i32.eq + i32.eqz if - i32.const 1 - br $inlining/func_ii|inlined.2 - end - local.get $a|4 - i32.const 42 - i32.lt_s - if (result i32) - i32.const 2 - else - i32.const 3 + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end - br $inlining/func_ii|inlined.2 + return end - i32.const 3 - i32.eq + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 drop - block $inlining/func_ii_opt|inlined.0 (result i32) + local.get $prev + i32.eqz + if i32.const 0 - local.set $a|5 - local.get $a|5 - br $inlining/func_ii_opt|inlined.0 - end - i32.const 0 - i32.eq - drop - block $inlining/func_ii_opt|inlined.1 (result i32) - i32.const 1 - local.set $a|6 - local.get $a|6 - br $inlining/func_ii_opt|inlined.1 - end - i32.const 1 - i32.eq - drop - block $inlining/func_ii_opt|inlined.3 (result i32) - block $inlining/func_ii_opt|inlined.2 (result i32) - i32.const 1 - local.set $a|7 - local.get $a|7 - br $inlining/func_ii_opt|inlined.2 - end - local.set $a|8 - local.get $a|8 - br $inlining/func_ii_opt|inlined.3 - end - i32.const 1 - i32.eq - drop - block $inlining/func_ii_loc|inlined.0 (result i32) - i32.const 2 - local.set $a|9 - local.get $a|9 - local.set $b|10 - i32.const 1 - drop - local.get $b|10 - local.set $c - local.get $c - local.set $d - local.get $d - i32.const 1 - i32.add - local.set $e - local.get $e - br $inlining/func_ii_loc|inlined.0 - end - i32.const 3 - i32.eq - drop - block $inlining/func_ii_loc|inlined.1 (result i32) - i32.const 3 - local.set $a|14 - local.get $a|14 - local.set $b|15 - i32.const 1 - drop - local.get $b|15 - local.set $c|17 - local.get $c|17 - local.set $d|18 - local.get $d|18 - i32.const 1 - i32.add - local.set $e|16 - local.get $e|16 - br $inlining/func_ii_loc|inlined.1 - end - i32.const 4 - i32.eq - drop - i32.const 0 - local.set $a|19 - i32.const 2 - i32.const 1 - global.set $~argumentsLength - block $inlining/func_fe|inlined.0 (result i32) - i32.const 80 - br $inlining/func_fe|inlined.0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this i32.load - call_indirect (type $0) - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - block $inlining/Foo.method_static|inlined.0 (result i32) - i32.const 42 - local.set $a|20 - i32.const 2 - local.set $b|21 - local.get $a|20 - local.get $b|21 - i32.add - br $inlining/Foo.method_static|inlined.0 - end - i32.const 44 - i32.eq - drop - global.get $~lib/memory/__stack_pointer - i32.const 123 - local.tee $foo - i32.store - block $inlining/Foo#method_this|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - local.get $foo - local.tee $this - i32.store offset=4 - i32.const 43 - local.set $a|24 - i32.const 3 - local.set $b|25 - local.get $this - br $inlining/Foo#method_this|inlined.0 - end - i32.const 123 - i32.eq - i32.eqz + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u if - i32.const 0 - i32.const 32 - i32.const 72 - i32.const 3 + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $ptr + i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return ) - (func $inlining/Baz#set:b (param $this i32) (param $b i32) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) local.get $this - local.get $b - i32.store offset=4 + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return ) - (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev local.get $this - local.get $nextWithColor - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor local.get $this local.get $prev - i32.store offset=8 - ) - (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) - local.get $space - local.get $space - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $space - local.get $space call $~lib/rt/itcms/Object#set:prev - local.get $space - return - ) - (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $prev local.get $this - i32.load offset=4 - ) - (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + call $~lib/rt/itcms/Object#set:next + local.get $list local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.const -1 - i32.xor - i32.and - return + call $~lib/rt/itcms/Object#set:prev ) - (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.and - return - ) - (func $~lib/rt/itcms/visitRoots (param $cookie i32) - (local $pn i32) - (local $iter i32) - local.get $cookie - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.set $pn - local.get $pn - call $~lib/rt/itcms/Object#get:next - local.set $iter - loop $while-continue|0 - local.get $iter - local.get $pn - i32.ne - if - i32.const 1 - drop - local.get $iter - call $~lib/rt/itcms/Object#get:color - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $iter - i32.const 20 - i32.add - local.get $cookie - call $~lib/rt/__visit_members - local.get $iter - call $~lib/rt/itcms/Object#get:next - local.set $iter - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) - local.get $this - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $color - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) - local.get $this - i32.load offset=8 - ) - (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) - local.get $this - local.get $obj - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.and - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#unlink (param $this i32) - (local $next i32) - (local $prev i32) - local.get $this - call $~lib/rt/itcms/Object#get:next - local.set $next - local.get $next - i32.const 0 - i32.eq - if - i32.const 1 - drop - local.get $this - call $~lib/rt/itcms/Object#get:prev - i32.const 0 - i32.eq - if (result i32) - local.get $this - global.get $~lib/memory/__heap_base - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $this - call $~lib/rt/itcms/Object#get:prev - local.set $prev - i32.const 1 - drop - local.get $prev - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $next - local.get $prev - call $~lib/rt/itcms/Object#set:prev - local.get $prev - local.get $next - call $~lib/rt/itcms/Object#set:next - ) - (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) - local.get $this - i32.load offset=12 - ) - (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/rt/__typeinfo (param $id i32) (result i32) - (local $ptr i32) - global.get $~lib/rt/__rtti_base - local.set $ptr - local.get $id - local.get $ptr - i32.load - i32.gt_u - if - i32.const 304 - i32.const 368 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $ptr - i32.const 4 - i32.add - local.get $id - i32.const 4 - i32.mul - i32.add - call $~lib/shared/typeinfo/Typeinfo#get:flags - return - ) - (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) - (local $rtId i32) - local.get $this - call $~lib/rt/itcms/Object#get:rtId - local.set $rtId - local.get $rtId - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $rtId - call $~lib/rt/__typeinfo - i32.const 32 - i32.and - i32.const 0 - i32.ne - end - return - ) - (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) - (local $prev i32) - local.get $list - call $~lib/rt/itcms/Object#get:prev - local.set $prev - local.get $this - local.get $list - local.get $withColor - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $this - local.get $prev - call $~lib/rt/itcms/Object#set:prev - local.get $prev - local.get $this - call $~lib/rt/itcms/Object#set:next - local.get $list - local.get $this - call $~lib/rt/itcms/Object#set:prev - ) - (func $~lib/rt/itcms/Object#makeGray (param $this i32) - (local $1 i32) - local.get $this - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $this - call $~lib/rt/itcms/Object#get:prev - local.tee $1 - i32.eqz - if (result i32) - i32.const 0 - i32.const 176 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - else - local.get $1 - end - global.set $~lib/rt/itcms/iter - end - local.get $this - call $~lib/rt/itcms/Object#unlink - local.get $this - global.get $~lib/rt/itcms/toSpace - local.get $this - call $~lib/rt/itcms/Object#get:isPointerfree - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo ) (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) (local $obj i32) @@ -715,7 +485,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -735,7 +505,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -798,7 +568,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -951,7 +721,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -968,7 +738,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -1057,7 +827,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -1100,7 +870,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -1118,7 +888,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -1186,7 +956,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1303,7 +1073,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1349,7 +1119,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1381,7 +1151,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1625,7 +1395,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1845,7 +1615,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 192 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1953,8 +1723,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 112 - i32.const 448 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -2056,7 +1826,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -2127,7 +1897,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2284,7 +2054,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2399,119 +2169,792 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - i32.const 1 + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $inlining/func_fe~anonymous|0 (param $a i32) (result i32) + local.get $a + ) + (func $inlining/test_funcs + (local $a f32) + (local $b f64) + (local $a|2 i32) + (local $a|3 i32) + (local $a|4 i32) + (local $a|5 i32) + (local $a|6 i32) + (local $a|7 i32) + (local $a|8 i32) + (local $a|9 i32) + (local $b|10 i32) + (local $e i32) + (local $c i32) + (local $d i32) + (local $a|14 i32) + (local $b|15 i32) + (local $e|16 i32) + (local $c|17 i32) + (local $d|18 i32) + (local $a|19 i32) + (local $a|20 i32) + (local $b|21 i32) + (local $foo i32) + (local $this i32) + (local $a|24 i32) + (local $b|25 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + f32.const -1 + local.set $a + f64.const -2 + local.set $b + block $inlining/func_ii|inlined.0 (result i32) + i32.const 42 + local.set $a|2 + local.get $a|2 + i32.const 42 + i32.eq + if + i32.const 1 + br $inlining/func_ii|inlined.0 + end + local.get $a|2 + i32.const 42 + i32.lt_s + if (result i32) + i32.const 2 + else + i32.const 3 + end + br $inlining/func_ii|inlined.0 + end + i32.const 1 + i32.eq + drop + block $inlining/func_ii|inlined.1 (result i32) + i32.const 41 + local.set $a|3 + local.get $a|3 + i32.const 42 + i32.eq + if + i32.const 1 + br $inlining/func_ii|inlined.1 + end + local.get $a|3 + i32.const 42 + i32.lt_s + if (result i32) + i32.const 2 + else + i32.const 3 + end + br $inlining/func_ii|inlined.1 + end + i32.const 2 + i32.eq + drop + block $inlining/func_ii|inlined.2 (result i32) + i32.const 43 + local.set $a|4 + local.get $a|4 + i32.const 42 + i32.eq + if + i32.const 1 + br $inlining/func_ii|inlined.2 + end + local.get $a|4 + i32.const 42 + i32.lt_s + if (result i32) + i32.const 2 + else + i32.const 3 + end + br $inlining/func_ii|inlined.2 + end + i32.const 3 + i32.eq + drop + block $inlining/func_ii_opt|inlined.0 (result i32) + i32.const 0 + local.set $a|5 + local.get $a|5 + br $inlining/func_ii_opt|inlined.0 + end + i32.const 0 + i32.eq + drop + block $inlining/func_ii_opt|inlined.1 (result i32) + i32.const 1 + local.set $a|6 + local.get $a|6 + br $inlining/func_ii_opt|inlined.1 + end + i32.const 1 + i32.eq + drop + block $inlining/func_ii_opt|inlined.3 (result i32) + block $inlining/func_ii_opt|inlined.2 (result i32) + i32.const 1 + local.set $a|7 + local.get $a|7 + br $inlining/func_ii_opt|inlined.2 + end + local.set $a|8 + local.get $a|8 + br $inlining/func_ii_opt|inlined.3 + end + i32.const 1 + i32.eq + drop + block $inlining/func_ii_loc|inlined.0 (result i32) + i32.const 2 + local.set $a|9 + local.get $a|9 + local.set $b|10 + i32.const 1 + drop + local.get $b|10 + local.set $c + local.get $c + local.set $d + local.get $d + i32.const 1 + i32.add + local.set $e + local.get $e + br $inlining/func_ii_loc|inlined.0 + end + i32.const 3 + i32.eq + drop + block $inlining/func_ii_loc|inlined.1 (result i32) + i32.const 3 + local.set $a|14 + local.get $a|14 + local.set $b|15 + i32.const 1 + drop + local.get $b|15 + local.set $c|17 + local.get $c|17 + local.set $d|18 + local.get $d|18 + i32.const 1 + i32.add + local.set $e|16 + local.get $e|16 + br $inlining/func_ii_loc|inlined.1 + end + i32.const 4 + i32.eq drop - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $payloadSize - i32.ge_u + i32.const 0 + local.set $a|19 + i32.const 2 + i32.const 1 + global.set $~argumentsLength + block $inlining/func_fe|inlined.0 (result i32) + i32.const 2448 + br $inlining/func_fe|inlined.0 + end + i32.load + call_indirect (type $0) + i32.const 2 + i32.eq i32.eqz if i32.const 0 - i32.const 448 - i32.const 501 - i32.const 14 + i32.const 2400 + i32.const 69 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $root - local.get $block - call $~lib/rt/tlsf/removeBlock - local.get $root - local.get $block - local.get $payloadSize - call $~lib/rt/tlsf/prepareBlock - i32.const 0 + block $inlining/Foo.method_static|inlined.0 (result i32) + i32.const 42 + local.set $a|20 + i32.const 2 + local.set $b|21 + local.get $a|20 + local.get $b|21 + i32.add + br $inlining/Foo.method_static|inlined.0 + end + i32.const 44 + i32.eq drop - local.get $block - return - ) - (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize + global.get $~lib/memory/__stack_pointer + i32.const 123 + local.tee $foo + i32.store + block $inlining/Foo#method_this|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $foo + local.tee $this + i32.store offset=4 + i32.const 43 + local.set $a|24 + i32.const 3 + local.set $b|25 + local.get $this + br $inlining/Foo#method_this|inlined.0 end - global.get $~lib/rt/tlsf/ROOT - local.get $size - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - return - ) - (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) - local.get $this - local.get $rtId - i32.store offset=12 - ) - (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) - local.get $this - local.get $rtSize - i32.store offset=16 - ) - (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) - (local $obj i32) - (local $ptr i32) - local.get $size - i32.const 1073741804 - i32.ge_u + i32.const 123 + i32.eq + i32.eqz if - i32.const 112 - i32.const 176 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 2400 + i32.const 72 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - call $~lib/rt/itcms/interrupt - end - i32.const 16 - local.get $size - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $obj - local.get $obj - local.get $id - call $~lib/rt/itcms/Object#set:rtId - local.get $obj - local.get $size - call $~lib/rt/itcms/Object#set:rtSize - local.get $obj - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $obj - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $obj - i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $ptr - local.get $ptr - i32.const 0 - local.get $size - memory.fill - local.get $ptr - return + global.set $~lib/memory/__stack_pointer + ) + (func $inlining/Baz#set:b (param $this i32) (param $b i32) + local.get $this + local.get $b + i32.store offset=4 ) (func $inlining/Baz#set:a (param $this i32) (param $a i32) local.get $this @@ -2545,19 +2988,6 @@ i32.load offset=12 ) (func $start:inlining - call $inlining/test - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $inlining/test_funcs memory.size i32.const 16 i32.shl @@ -2566,15 +2996,28 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 224 + i32.const 240 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 256 + i32.const 272 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 400 + i32.const 416 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace + call $inlining/test + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $inlining/test_funcs call $inlining/test_ctor ) (func $~lib/math/NativeMath.cbrt (param $x f64) (result f64) @@ -2760,81 +3203,8 @@ local.get $a local.get $c call $inlining/foo - f64.div - return - ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 304 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 112 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/function/Function<%28i32%29=>i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%29=>i32>#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $inlining/Baz - block $inlining/Bar - block $inlining/Foo - block $~lib/function/Function<%28i32%29=>i32> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $inlining/Foo $inlining/Bar $inlining/Baz $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%29=>i32>~visit - return - end - return - end - return - end - return - end - unreachable + f64.div + return ) (func $~start call $start:inlining @@ -2844,14 +3214,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33328 - i32.const 33376 + i32.const 35296 + i32.const 35344 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $inlining/test_ctor (local $this i32) (local $f i32) @@ -2968,7 +3543,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 96 i32.const 3 call $~lib/builtins/abort @@ -2986,7 +3561,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -3004,7 +3579,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -3022,7 +3597,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 99 i32.const 3 call $~lib/builtins/abort @@ -3033,6 +3608,232 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $inlining/Baz + block $inlining/Bar + block $inlining/Foo + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $inlining/Foo $inlining/Bar $inlining/Baz $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>~visit + return + end + return + end + return + end + return + end + unreachable + ) (func $~lib/function/Function<%28i32%29=>i32>#__visit (param $this i32) (param $cookie i32) (local $2 i32) global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/inlining.release.wat b/tests/compiler/inlining.release.wat index bb306de122..d190261fc9 100644 --- a/tests/compiler/inlining.release.wat +++ b/tests/compiler/inlining.release.wat @@ -1,15 +1,14 @@ (module (type $0 (func)) - (type $1 (func (result i32))) + (type $1 (func (param i32 i32) (result i32))) (type $2 (func (param i32) (result i32))) - (type $3 (func (param i32))) - (type $4 (func (param i32 i32))) - (type $5 (func (param i32 i32) (result i32))) + (type $3 (func (result i32))) + (type $4 (func (param i32))) + (type $5 (func (param i32 i32))) (type $6 (func (param i32 i32 i32) (result f64))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64))) - (type $9 (func (param f64) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (param f64) (result f64))) + (type $9 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -20,24 +19,45 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34324)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36292)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s") - (data $1 (i32.const 1084) "\1c") - (data $1.1 (i32.const 1096) "\04\00\00\00\08\00\00\00\01") - (data $2 (i32.const 1116) "<") - (data $2.1 (i32.const 1128) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $3 (i32.const 1180) "<") - (data $3.1 (i32.const 1192) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $6 (i32.const 1308) "<") - (data $6.1 (i32.const 1320) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $7 (i32.const 1372) ",") - (data $7.1 (i32.const 1384) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $9 (i32.const 1452) "<") - (data $9.1 (i32.const 1464) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $10 (i32.const 1520) "\08\00\00\00 \00\00\00 \00\00\00 ") - (data $10.1 (i32.const 1544) " \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s") + (data $20 (i32.const 3452) "\1c") + (data $20.1 (i32.const 3464) "\04\00\00\00\08\00\00\00\01") + (data $21 (i32.const 3488) "\08\00\00\00 \00\00\00 \00\00\00 ") + (data $21.1 (i32.const 3512) " \00\00\00 \00\00\00 ") (table $0 2 2 funcref) (elem $0 (i32.const 1) $inlining/func_fe~anonymous|0) (export "test" (func $inlining/test)) @@ -48,15 +68,16 @@ (func $inlining/test (result i32) i32.const 3 ) - (func $inlining/func_fe~anonymous|0 (param $0 i32) (result i32) - i32.const 2 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1328 + i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1136 + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -77,7 +98,7 @@ i32.ne if i32.const 0 - i32.const 1200 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -125,7 +146,7 @@ i32.eqz if i32.const 0 - i32.const 1200 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -134,7 +155,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$125 + block $__inlined_func$~lib/rt/itcms/Object#unlink$138 local.get $1 i32.load offset=4 i32.const -4 @@ -146,19 +167,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34324 + i32.const 36292 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1200 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$125 + br $__inlined_func$~lib/rt/itcms/Object#unlink$138 end local.get $1 i32.load offset=8 @@ -166,7 +187,7 @@ i32.eqz if i32.const 0 - i32.const 1200 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -195,12 +216,12 @@ i32.const 1 else local.get $0 - i32.const 1520 + i32.const 3488 i32.load i32.gt_u if - i32.const 1328 - i32.const 1392 + i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -209,7 +230,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1524 + i32.const 3492 i32.add i32.load i32.const 32 @@ -261,7 +282,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -275,7 +296,7 @@ i32.lt_u if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -321,7 +342,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -404,7 +425,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -418,7 +439,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -479,7 +500,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -512,7 +533,7 @@ i32.lt_u if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -527,7 +548,7 @@ i32.ne if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -578,7 +599,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -650,7 +671,7 @@ i64.lt_u if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -675,7 +696,7 @@ i32.gt_u if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -702,7 +723,7 @@ i32.gt_u if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -774,10 +795,10 @@ if unreachable end - i32.const 34336 + i32.const 36304 i32.const 0 i32.store - i32.const 35904 + i32.const 37872 i32.const 0 i32.store loop $for-loop|0 @@ -788,7 +809,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34336 + i32.const 36304 i32.add i32.const 0 i32.store offset=4 @@ -806,7 +827,7 @@ i32.add i32.const 2 i32.shl - i32.const 34336 + i32.const 36304 i32.add i32.const 0 i32.store offset=96 @@ -824,14 +845,14 @@ br $for-loop|0 end end - i32.const 34336 - i32.const 35908 + i32.const 36304 + i32.const 37876 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34336 + i32.const 36304 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -916,7 +937,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34324 + i32.const 36292 i32.lt_u if local.get $0 @@ -1005,14 +1026,14 @@ i32.ne if i32.const 0 - i32.const 1200 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34324 + i32.const 36292 i32.lt_u if local.get $0 @@ -1035,7 +1056,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34324 + i32.const 36292 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1064,7 +1085,7 @@ end if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1148,7 +1169,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1200,7 +1221,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1232,8 +1253,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1136 - i32.const 1200 + i32.const 1152 + i32.const 1216 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1297,8 +1318,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1136 - i32.const 1472 + i32.const 1152 + i32.const 1488 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1400,7 +1421,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1415,7 +1436,7 @@ i32.gt_u if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1434,7 +1455,7 @@ i32.and if i32.const 0 - i32.const 1472 + i32.const 1488 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1539,24 +1560,257 @@ memory.fill local.get $1 ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3524 + i32.lt_s + if + i32.const 36320 + i32.const 36368 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $inlining/func_fe~anonymous|0 (param $0 i32) (result i32) + i32.const 2 + ) (func $start:inlining (local $0 i32) (local $1 i32) (local $2 i32) + memory.size + i32.const 16 + i32.shl + i32.const 36292 + 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 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1556 + i32.const 3524 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store i32.const 2 - i32.const 1104 + i32.const 3472 i32.load call_indirect (type $2) drop @@ -1570,44 +1824,12 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - memory.size - i32.const 16 - i32.shl - i32.const 34324 - 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 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1556 + i32.const 3524 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1686,7 +1908,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 96 i32.const 3 call $~lib/builtins/abort @@ -1701,7 +1923,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -1716,7 +1938,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -1731,7 +1953,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 99 i32.const 3 call $~lib/builtins/abort @@ -1743,8 +1965,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34352 - i32.const 34400 + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1906,6 +2128,209 @@ f64.add f64.div ) + (func $~start + call $start:inlining + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$143 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$143 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36320 + i32.const 36368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3524 + i32.lt_s + if + i32.const 36320 + i32.const 36368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid block $inlining/Baz @@ -1938,11 +2363,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1556 + i32.const 3524 i32.lt_s if - i32.const 34352 - i32.const 34400 + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1971,7 +2396,4 @@ end unreachable ) - (func $~start - call $start:inlining - ) ) diff --git a/tests/compiler/instanceof.debug.wat b/tests/compiler/instanceof.debug.wat index 43f6efa61f..d81380366a 100644 --- a/tests/compiler/instanceof.debug.wat +++ b/tests/compiler/instanceof.debug.wat @@ -2,14 +2,20 @@ (type $0 (func (param i32))) (type $1 (func (param i32) (result i32))) (type $2 (func (param i32 i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (type $9 (func (param f64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (param f64) (result i32))) + (type $12 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,9 +24,6 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) @@ -46,25 +49,465 @@ (global $instanceof/x (mut i32) (i32.const 0)) (global $instanceof/y (mut i32) (i32.const 0)) (global $instanceof/z (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 464)) - (global $~lib/memory/__data_end i32 (i32.const 564)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33332)) - (global $~lib/memory/__heap_base i32 (i32.const 33332)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2532)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35300)) + (global $~lib/memory/__heap_base i32 (i32.const 35300)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00\00\00") - (data $9 (i32.const 464) "\18\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00\00\00") + (data $20 (i32.const 2432) "\18\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -129,7 +572,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -199,7 +642,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -216,7 +659,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -246,8 +689,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -315,7 +758,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -467,7 +910,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -487,7 +930,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -550,7 +993,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -703,7 +1146,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -720,7 +1163,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -809,7 +1252,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -852,7 +1295,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -870,7 +1313,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -938,7 +1381,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1055,7 +1498,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1101,7 +1544,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1133,7 +1576,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1377,7 +1820,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1597,7 +2040,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1705,8 +2148,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1808,7 +2251,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1879,7 +2322,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2036,7 +2479,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2151,7 +2594,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2171,7 +2614,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2219,8 +2662,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2362,7 +2805,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -2407,7 +2850,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -2452,7 +2895,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -2497,7 +2940,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -2542,7 +2985,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -2587,7 +3030,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -2632,7 +3075,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -2677,7 +3120,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -2767,7 +3210,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -2811,7 +3254,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -2856,7 +3299,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -2901,7 +3344,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -2955,7 +3398,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -3000,7 +3443,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -3059,7 +3502,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -3103,7 +3546,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -3147,7 +3590,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -3191,7 +3634,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -3248,7 +3691,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -3293,7 +3736,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -3338,7 +3781,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -3383,7 +3826,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -3437,7 +3880,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -3481,7 +3924,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -3532,7 +3975,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -3577,7 +4020,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -3698,7 +4141,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -3743,7 +4186,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -3788,7 +4231,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -3833,7 +4276,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -3878,7 +4321,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -3923,7 +4366,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -3968,7 +4411,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -4013,7 +4456,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -4058,7 +4501,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -4103,7 +4546,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -4450,253 +4893,226 @@ end i32.const 1 ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $instanceof/a - local.tee $1 + (func $~start + call $start:instanceof + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 35328 + i32.const 35376 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $instanceof/b - local.tee $1 + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - global.get $instanceof/an - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/child - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/childAsParent - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/animal - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/cat - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/blackcat - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/nullableAnimal - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/nullableCat - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/nullableBlackcat - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/nullAnimal - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/nullCat - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/nullBlackcat - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/w - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/x - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/y - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/z - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $instanceof/IE - block $instanceof/Z - block $instanceof/IC - block $instanceof/ID - block $instanceof/Y - block $instanceof/IA - block $instanceof/IB - block $instanceof/X - block $instanceof/W - block $instanceof/BlackCat - block $instanceof/Cat - block $instanceof/Animal - block $instanceof/SomethingElse - block $instanceof/Parent - block $instanceof/Child - block $instanceof/Parent - block $instanceof/Child - block $instanceof/C - block $instanceof/B - block $instanceof/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $instanceof/A $instanceof/B $instanceof/C $instanceof/Child $instanceof/Parent $instanceof/Child $instanceof/Parent $instanceof/SomethingElse $instanceof/Animal $instanceof/Cat $instanceof/BlackCat $instanceof/W $instanceof/X $instanceof/IB $instanceof/IA $instanceof/Y $instanceof/ID $instanceof/IC $instanceof/Z $instanceof/IE $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - unreachable - ) - (func $~start - call $start:instanceof + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33360 - i32.const 33408 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $instanceof/A#constructor (param $this i32) (result i32) (local $1 i32) @@ -5270,13 +5686,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -5325,7 +5741,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 50 i32.const 1 call $~lib/builtins/abort @@ -5418,7 +5834,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 94 i32.const 1 call $~lib/builtins/abort @@ -5430,7 +5846,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 95 i32.const 1 call $~lib/builtins/abort @@ -5442,7 +5858,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 96 i32.const 1 call $~lib/builtins/abort @@ -5454,7 +5870,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 97 i32.const 1 call $~lib/builtins/abort @@ -5467,7 +5883,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 100 i32.const 1 call $~lib/builtins/abort @@ -5483,7 +5899,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 103 i32.const 1 call $~lib/builtins/abort @@ -5539,7 +5955,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 126 i32.const 1 call $~lib/builtins/abort @@ -5563,7 +5979,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 128 i32.const 1 call $~lib/builtins/abort @@ -5602,7 +6018,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 143 i32.const 1 call $~lib/builtins/abort @@ -5624,7 +6040,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 144 i32.const 1 call $~lib/builtins/abort @@ -5647,7 +6063,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 147 i32.const 1 call $~lib/builtins/abort @@ -5669,7 +6085,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 148 i32.const 1 call $~lib/builtins/abort @@ -5692,7 +6108,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 151 i32.const 1 call $~lib/builtins/abort @@ -5713,7 +6129,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 152 i32.const 1 call $~lib/builtins/abort @@ -5734,7 +6150,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 158 i32.const 1 call $~lib/builtins/abort @@ -5756,7 +6172,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 159 i32.const 1 call $~lib/builtins/abort @@ -5778,7 +6194,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 160 i32.const 1 call $~lib/builtins/abort @@ -5790,7 +6206,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 162 i32.const 1 call $~lib/builtins/abort @@ -5811,7 +6227,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 163 i32.const 1 call $~lib/builtins/abort @@ -5833,7 +6249,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 164 i32.const 1 call $~lib/builtins/abort @@ -5845,7 +6261,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 166 i32.const 1 call $~lib/builtins/abort @@ -5866,7 +6282,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 167 i32.const 1 call $~lib/builtins/abort @@ -5887,7 +6303,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 168 i32.const 1 call $~lib/builtins/abort @@ -5900,7 +6316,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 174 i32.const 1 call $~lib/builtins/abort @@ -5922,7 +6338,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 175 i32.const 1 call $~lib/builtins/abort @@ -5944,7 +6360,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 176 i32.const 1 call $~lib/builtins/abort @@ -5957,7 +6373,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 178 i32.const 1 call $~lib/builtins/abort @@ -5979,7 +6395,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 179 i32.const 1 call $~lib/builtins/abort @@ -6001,7 +6417,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 180 i32.const 1 call $~lib/builtins/abort @@ -6014,7 +6430,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 182 i32.const 1 call $~lib/builtins/abort @@ -6036,7 +6452,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 183 i32.const 1 call $~lib/builtins/abort @@ -6058,7 +6474,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 184 i32.const 1 call $~lib/builtins/abort @@ -7001,9 +7417,156 @@ local.get $21 call $"instanceof/assertDynamicTrue" global.get $~lib/memory/__stack_pointer - i32.const 88 + i32.const 88 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $12 + return ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) @@ -7033,4 +7596,242 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $instanceof/a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/b + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/an + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/child + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/childAsParent + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/animal + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/cat + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/blackcat + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/nullableAnimal + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/nullableCat + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/nullableBlackcat + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/nullAnimal + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/nullCat + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/nullBlackcat + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/w + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/x + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/y + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/z + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $instanceof/IE + block $instanceof/Z + block $instanceof/IC + block $instanceof/ID + block $instanceof/Y + block $instanceof/IA + block $instanceof/IB + block $instanceof/X + block $instanceof/W + block $instanceof/BlackCat + block $instanceof/Cat + block $instanceof/Animal + block $instanceof/SomethingElse + block $instanceof/Parent + block $instanceof/Child + block $instanceof/Parent + block $instanceof/Child + block $instanceof/C + block $instanceof/B + block $instanceof/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $instanceof/A $instanceof/B $instanceof/C $instanceof/Child $instanceof/Parent $instanceof/Child $instanceof/Parent $instanceof/SomethingElse $instanceof/Animal $instanceof/Cat $instanceof/BlackCat $instanceof/W $instanceof/X $instanceof/IB $instanceof/IA $instanceof/Y $instanceof/ID $instanceof/IC $instanceof/Z $instanceof/IE $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/instanceof.release.wat b/tests/compiler/instanceof.release.wat index 3ee62101c1..04cb43dc28 100644 --- a/tests/compiler/instanceof.release.wat +++ b/tests/compiler/instanceof.release.wat @@ -2,11 +2,11 @@ (type $0 (func (param i32) (result i32))) (type $1 (func (param i32))) (type $2 (func)) - (type $3 (func (param i32 i32))) - (type $4 (func (result i32))) - (type $5 (func (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (result i32))) (type $6 (func (param i32 i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -32,23 +32,242 @@ (global $instanceof/x (mut i32) (i32.const 0)) (global $instanceof/y (mut i32) (i32.const 0)) (global $instanceof/z (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34356)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36324)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) ",") - (data $8.1 (i32.const 1448) "\02\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") - (data $9 (i32.const 1488) "\18\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") + (data $20 (i32.const 3456) "\18\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3556 + i32.lt_s + if + i32.const 36352 + i32.const 36400 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -142,9 +361,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -165,7 +388,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -213,7 +436,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -222,7 +445,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$241 + block $__inlined_func$~lib/rt/itcms/Object#unlink$254 local.get $1 i32.load offset=4 i32.const -4 @@ -234,19 +457,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34356 + i32.const 36324 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$241 + br $__inlined_func$~lib/rt/itcms/Object#unlink$254 end local.get $1 i32.load offset=8 @@ -254,7 +477,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -283,12 +506,12 @@ i32.const 1 else local.get $0 - i32.const 1488 + i32.const 3456 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -297,7 +520,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1492 + i32.const 3460 i32.add i32.load i32.const 32 @@ -349,7 +572,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -363,7 +586,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -409,7 +632,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -492,7 +715,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -506,7 +729,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -567,7 +790,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -600,7 +823,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -615,7 +838,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -666,7 +889,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -738,7 +961,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -763,7 +986,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -790,7 +1013,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -862,10 +1085,10 @@ if unreachable end - i32.const 34368 + i32.const 36336 i32.const 0 i32.store - i32.const 35936 + i32.const 37904 i32.const 0 i32.store loop $for-loop|0 @@ -876,7 +1099,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34368 + i32.const 36336 i32.add i32.const 0 i32.store offset=4 @@ -894,7 +1117,7 @@ i32.add i32.const 2 i32.shl - i32.const 34368 + i32.const 36336 i32.add i32.const 0 i32.store offset=96 @@ -912,14 +1135,14 @@ br $for-loop|0 end end - i32.const 34368 - i32.const 35940 + i32.const 36336 + i32.const 37908 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34368 + i32.const 36336 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -1004,7 +1227,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34356 + i32.const 36324 i32.lt_u if local.get $0 @@ -1093,14 +1316,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34356 + i32.const 36324 i32.lt_u if local.get $0 @@ -1123,7 +1346,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34356 + i32.const 36324 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1152,7 +1375,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1182,18 +1405,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1201,32 +1491,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1239,23 +1533,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 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 @@ -1269,9 +1575,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1294,31 +1600,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if memory.size - local.tee $1 + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end i32.const 4 - local.get $2 + local.get $4 i32.load offset=1568 - local.get $1 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1334,8 +1695,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1343,119 +1704,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1463,14 +1841,14 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 + memory.fill + local.get $1 ) (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" (param $0 i32) global.get $~lib/memory/__stack_pointer @@ -1478,11 +1856,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1496,7 +1874,7 @@ i32.store local.get $0 if (result i32) - block $__inlined_func$~instanceof|instanceof/X$76 (result i32) + block $__inlined_func$~instanceof|instanceof/X$78 (result i32) block $is_instance block $tablify|0 local.get $0 @@ -1508,7 +1886,7 @@ br_table $is_instance $tablify|0 $tablify|0 $is_instance $tablify|0 $tablify|0 $is_instance $tablify|0 end i32.const 0 - br $__inlined_func$~instanceof|instanceof/X$76 + br $__inlined_func$~instanceof|instanceof/X$78 end i32.const 1 end @@ -1518,7 +1896,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -1535,11 +1913,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1553,7 +1931,7 @@ i32.store local.get $0 if (result i32) - block $__inlined_func$~instanceof|instanceof/Y$78 (result i32) + block $__inlined_func$~instanceof|instanceof/Y$80 (result i32) block $is_instance local.get $0 i32.const 8 @@ -1568,7 +1946,7 @@ i32.eq br_if $is_instance i32.const 0 - br $__inlined_func$~instanceof|instanceof/Y$78 + br $__inlined_func$~instanceof|instanceof/Y$80 end i32.const 1 end @@ -1578,7 +1956,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -1595,11 +1973,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1625,7 +2003,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -1642,11 +2020,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1660,7 +2038,7 @@ i32.store local.get $0 if (result i32) - block $__inlined_func$~instanceof|instanceof/Y$82 (result i32) + block $__inlined_func$~instanceof|instanceof/Y$84 (result i32) block $is_instance local.get $0 i32.const 8 @@ -1675,7 +2053,7 @@ i32.eq br_if $is_instance i32.const 0 - br $__inlined_func$~instanceof|instanceof/Y$82 + br $__inlined_func$~instanceof|instanceof/Y$84 end i32.const 1 end @@ -1684,7 +2062,7 @@ end if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -1701,11 +2079,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1730,7 +2108,7 @@ end if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -1741,93 +2119,208 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $instanceof/IE - block $instanceof/Z - block $instanceof/IC - block $instanceof/ID - block $instanceof/Y - block $instanceof/IA - block $instanceof/IB - block $instanceof/X - block $instanceof/W - block $instanceof/BlackCat - block $instanceof/Cat - block $instanceof/Animal - block $instanceof/SomethingElse - block $instanceof/Parent - block $instanceof/Child - block $instanceof/Parent - block $instanceof/Child - block $instanceof/C - block $instanceof/B - block $instanceof/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $instanceof/A $instanceof/B $instanceof/C $instanceof/Child $instanceof/Parent $instanceof/Child $instanceof/Parent $instanceof/SomethingElse $instanceof/Animal $instanceof/Cat $instanceof/BlackCat $instanceof/W $instanceof/X $instanceof/IB $instanceof/IA $instanceof/Y $instanceof/ID $instanceof/IC $instanceof/Z $instanceof/IE $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return + (func $~start + call $start:instanceof + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$259 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$259 end - return + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 return end + i32.const 36352 + i32.const 36400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) - (func $~start - call $start:instanceof + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3556 + i32.lt_s + if + i32.const 36352 + i32.const 36400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $instanceof/A#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -1835,11 +2328,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1852,6 +2345,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 @@ -1877,11 +2371,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1894,6 +2388,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 12 call $~lib/rt/itcms/__new local.tee $0 @@ -1919,11 +2414,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1936,6 +2431,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 13 call $~lib/rt/itcms/__new local.tee $0 @@ -1962,11 +2458,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1976,6 +2472,7 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 14 call $~lib/rt/itcms/__new local.tee $0 @@ -2000,11 +2497,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2017,6 +2514,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 16 call $~lib/rt/itcms/__new local.tee $0 @@ -2042,11 +2540,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2059,6 +2557,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 19 call $~lib/rt/itcms/__new local.tee $0 @@ -2087,7 +2586,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2097,34 +2596,34 @@ memory.size i32.const 16 i32.shl - i32.const 34356 + i32.const 36324 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace i32.const 0 call $instanceof/A#constructor @@ -2134,13 +2633,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 5 call $~lib/rt/itcms/__new local.tee $0 @@ -2164,13 +2664,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 6 call $~lib/rt/itcms/__new local.tee $0 @@ -2202,7 +2703,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2242,7 +2743,7 @@ end if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 50 i32.const 1 call $~lib/builtins/abort @@ -2251,7 +2752,7 @@ global.get $instanceof/an if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 100 i32.const 1 call $~lib/builtins/abort @@ -2264,13 +2765,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 7 call $~lib/rt/itcms/__new local.tee $0 @@ -2284,7 +2786,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2294,6 +2796,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 8 call $~lib/rt/itcms/__new local.tee $0 @@ -2324,13 +2827,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 9 call $~lib/rt/itcms/__new local.tee $0 @@ -2344,7 +2848,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2354,6 +2858,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 10 call $~lib/rt/itcms/__new local.tee $0 @@ -2397,7 +2902,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 126 i32.const 1 call $~lib/builtins/abort @@ -2409,7 +2914,7 @@ i32.store offset=12 local.get $0 if (result i32) - block $__inlined_func$~anyinstanceof|instanceof/Child$110 (result i32) + block $__inlined_func$~anyinstanceof|instanceof/Child$114 (result i32) block $is_instance1 local.get $0 i32.const 8 @@ -2424,7 +2929,7 @@ i32.eq br_if $is_instance1 i32.const 0 - br $__inlined_func$~anyinstanceof|instanceof/Child$110 + br $__inlined_func$~anyinstanceof|instanceof/Child$114 end i32.const 1 end @@ -2434,7 +2939,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 128 i32.const 1 call $~lib/builtins/abort @@ -2454,7 +2959,7 @@ i32.store offset=16 local.get $0 if (result i32) - block $__inlined_func$~instanceof|instanceof/Cat$111 (result i32) + block $__inlined_func$~instanceof|instanceof/Cat$115 (result i32) block $is_instance2 local.get $0 i32.const 8 @@ -2469,7 +2974,7 @@ i32.eq br_if $is_instance2 i32.const 0 - br $__inlined_func$~instanceof|instanceof/Cat$111 + br $__inlined_func$~instanceof|instanceof/Cat$115 end i32.const 1 end @@ -2478,7 +2983,7 @@ end if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 143 i32.const 1 call $~lib/builtins/abort @@ -2501,7 +3006,7 @@ end if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 144 i32.const 1 call $~lib/builtins/abort @@ -2513,7 +3018,7 @@ i32.store offset=24 local.get $0 if (result i32) - block $__inlined_func$~instanceof|instanceof/Cat$113 (result i32) + block $__inlined_func$~instanceof|instanceof/Cat$117 (result i32) block $is_instance4 local.get $0 i32.const 8 @@ -2528,7 +3033,7 @@ i32.eq br_if $is_instance4 i32.const 0 - br $__inlined_func$~instanceof|instanceof/Cat$113 + br $__inlined_func$~instanceof|instanceof/Cat$117 end i32.const 1 end @@ -2538,7 +3043,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 147 i32.const 1 call $~lib/builtins/abort @@ -2561,7 +3066,7 @@ end if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 148 i32.const 1 call $~lib/builtins/abort @@ -2573,7 +3078,7 @@ i32.store offset=32 local.get $0 if (result i32) - block $__inlined_func$~instanceof|instanceof/Cat$115 (result i32) + block $__inlined_func$~instanceof|instanceof/Cat$119 (result i32) block $is_instance6 local.get $0 i32.const 8 @@ -2588,7 +3093,7 @@ i32.eq br_if $is_instance6 i32.const 0 - br $__inlined_func$~instanceof|instanceof/Cat$115 + br $__inlined_func$~instanceof|instanceof/Cat$119 end i32.const 1 end @@ -2598,7 +3103,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 151 i32.const 1 call $~lib/builtins/abort @@ -2622,7 +3127,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 152 i32.const 1 call $~lib/builtins/abort @@ -2640,7 +3145,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 158 i32.const 1 call $~lib/builtins/abort @@ -2652,7 +3157,7 @@ i32.store offset=40 local.get $0 if (result i32) - block $__inlined_func$~instanceof|instanceof/Cat$117 (result i32) + block $__inlined_func$~instanceof|instanceof/Cat$121 (result i32) block $is_instance8 local.get $0 i32.const 8 @@ -2667,7 +3172,7 @@ i32.eq br_if $is_instance8 i32.const 0 - br $__inlined_func$~instanceof|instanceof/Cat$117 + br $__inlined_func$~instanceof|instanceof/Cat$121 end i32.const 1 end @@ -2676,7 +3181,7 @@ end if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 159 i32.const 1 call $~lib/builtins/abort @@ -2699,7 +3204,7 @@ end if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 160 i32.const 1 call $~lib/builtins/abort @@ -2709,7 +3214,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 162 i32.const 1 call $~lib/builtins/abort @@ -2721,7 +3226,7 @@ i32.store offset=48 local.get $0 if (result i32) - block $__inlined_func$~instanceof|instanceof/Cat$119 (result i32) + block $__inlined_func$~instanceof|instanceof/Cat$123 (result i32) block $is_instance10 local.get $0 i32.const 8 @@ -2736,7 +3241,7 @@ i32.eq br_if $is_instance10 i32.const 0 - br $__inlined_func$~instanceof|instanceof/Cat$119 + br $__inlined_func$~instanceof|instanceof/Cat$123 end i32.const 1 end @@ -2746,7 +3251,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 163 i32.const 1 call $~lib/builtins/abort @@ -2769,7 +3274,7 @@ end if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 164 i32.const 1 call $~lib/builtins/abort @@ -2779,7 +3284,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 166 i32.const 1 call $~lib/builtins/abort @@ -2791,7 +3296,7 @@ i32.store offset=56 local.get $0 if (result i32) - block $__inlined_func$~instanceof|instanceof/Cat$121 (result i32) + block $__inlined_func$~instanceof|instanceof/Cat$125 (result i32) block $is_instance12 local.get $0 i32.const 8 @@ -2806,7 +3311,7 @@ i32.eq br_if $is_instance12 i32.const 0 - br $__inlined_func$~instanceof|instanceof/Cat$121 + br $__inlined_func$~instanceof|instanceof/Cat$125 end i32.const 1 end @@ -2816,7 +3321,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 167 i32.const 1 call $~lib/builtins/abort @@ -2840,7 +3345,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 168 i32.const 1 call $~lib/builtins/abort @@ -2869,13 +3374,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 15 call $~lib/rt/itcms/__new local.tee $0 @@ -2905,13 +3411,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 22 call $~lib/rt/itcms/__new local.tee $0 @@ -2981,7 +3488,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3004,7 +3511,7 @@ i32.eqz if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 12 i32.const 5 call $~lib/builtins/abort @@ -3551,8 +4058,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3564,11 +4071,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1588 + i32.const 3556 i32.lt_s if - i32.const 34384 - i32.const 34432 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3582,6 +4089,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -3592,4 +4100,89 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $instanceof/IE + block $instanceof/Z + block $instanceof/IC + block $instanceof/ID + block $instanceof/Y + block $instanceof/IA + block $instanceof/IB + block $instanceof/X + block $instanceof/W + block $instanceof/BlackCat + block $instanceof/Cat + block $instanceof/Animal + block $instanceof/SomethingElse + block $instanceof/Parent + block $instanceof/Child + block $instanceof/Parent + block $instanceof/Child + block $instanceof/C + block $instanceof/B + block $instanceof/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $instanceof/A $instanceof/B $instanceof/C $instanceof/Child $instanceof/Parent $instanceof/Child $instanceof/Parent $instanceof/SomethingElse $instanceof/Animal $instanceof/Cat $instanceof/BlackCat $instanceof/W $instanceof/X $instanceof/IB $instanceof/IA $instanceof/Y $instanceof/ID $instanceof/IC $instanceof/Z $instanceof/IE $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/issues/1095.debug.wat b/tests/compiler/issues/1095.debug.wat index 9acf0935c0..3e8bebe34e 100644 --- a/tests/compiler/issues/1095.debug.wat +++ b/tests/compiler/issues/1095.debug.wat @@ -2,13 +2,19 @@ (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32 i32))) - (type $5 (func (param i32 i32) (result i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,33 +23,470 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 624)) - (global $~lib/memory/__data_end i32 (i32.const 648)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33416)) - (global $~lib/memory/__heap_base i32 (i32.const 33416)) + (global $~lib/rt/__rtti_base i32 (i32.const 2592)) + (global $~lib/memory/__data_end i32 (i32.const 2616)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35384)) + (global $~lib/memory/__heap_base i32 (i32.const 35384)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00e\00s\00t\00\00\00\00\00") - (data $9 (i32.const 444) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\000\009\005\00.\00t\00s\00") - (data $11 (i32.const 624) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00e\00s\00t\00\00\00\00\00") + (data $20 (i32.const 2412) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2540) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\000\009\005\00.\00t\00s\00") + (data $22 (i32.const 2592) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -108,7 +551,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -178,7 +621,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -195,7 +638,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -225,8 +668,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -294,7 +737,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -446,7 +889,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -466,7 +909,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -529,7 +972,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -682,7 +1125,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -699,7 +1142,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -788,7 +1231,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -831,7 +1274,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -849,7 +1292,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -917,7 +1360,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1034,7 +1477,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1080,7 +1523,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1112,7 +1555,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1356,7 +1799,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1576,7 +2019,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1684,8 +2127,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1787,7 +2230,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1858,7 +2301,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2015,7 +2458,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2130,7 +2573,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2150,7 +2593,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2198,8 +2641,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2259,7 +2702,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2325,68 +2768,6 @@ local.get $this i32.load ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $issues/1095/Foo~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $issues/1095/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1095/Foo $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $issues/1095/Foo~visit - return - end - unreachable - ) (func $~start call $start:issues/1095 ) @@ -2395,14 +2776,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33440 - i32.const 33488 + i32.const 35408 + i32.const 35456 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $issues/1095/Foo#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2439,7 +3025,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 432 + i32.const 2400 call $issues/1095/Foo#set:bar local.get $this local.set $1 @@ -2483,8 +3069,8 @@ if (result i32) local.get $1 else - i32.const 464 - i32.const 592 + i32.const 2432 + i32.const 2560 i32.const 8 i32.const 13 call $~lib/builtins/abort @@ -2519,13 +3105,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -2541,6 +3127,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2569,4 +3302,72 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $issues/1095/Foo~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $issues/1095/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1095/Foo $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $issues/1095/Foo~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/issues/1095.release.wat b/tests/compiler/issues/1095.release.wat index 14500886a4..6369798076 100644 --- a/tests/compiler/issues/1095.release.wat +++ b/tests/compiler/issues/1095.release.wat @@ -3,10 +3,10 @@ (type $1 (func (param i32))) (type $2 (func (param i32 i32))) (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,33 +17,256 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34440)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36408)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) "\1c") - (data $8.1 (i32.const 1448) "\02\00\00\00\08\00\00\00t\00e\00s\00t") - (data $9 (i32.const 1468) "|") - (data $9.1 (i32.const 1480) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") - (data $10 (i32.const 1596) ",") - (data $10.1 (i32.const 1608) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\000\009\005\00.\00t\00s") - (data $11 (i32.const 1648) "\05\00\00\00 \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "\1c") + (data $19.1 (i32.const 3416) "\02\00\00\00\08\00\00\00t\00e\00s\00t") + (data $20 (i32.const 3436) "|") + (data $20.1 (i32.const 3448) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") + (data $21 (i32.const 3564) ",") + (data $21.1 (i32.const 3576) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\000\009\005\00.\00t\00s") + (data $22 (i32.const 3616) "\05\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3640 + i32.lt_s + if + i32.const 36432 + i32.const 36480 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -64,7 +287,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -97,7 +320,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -106,7 +329,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$117 + block $__inlined_func$~lib/rt/itcms/Object#unlink$130 local.get $0 i32.load offset=4 i32.const -4 @@ -118,19 +341,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34440 + i32.const 36408 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$117 + br $__inlined_func$~lib/rt/itcms/Object#unlink$130 end local.get $0 i32.load offset=8 @@ -138,7 +361,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -167,12 +390,12 @@ i32.const 1 else local.get $1 - i32.const 1648 + i32.const 3616 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -181,7 +404,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1652 + i32.const 3620 i32.add i32.load i32.const 32 @@ -252,7 +475,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -266,7 +489,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -312,7 +535,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -395,7 +618,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -409,7 +632,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -470,7 +693,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -503,7 +726,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -518,7 +741,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -569,7 +792,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -641,7 +864,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -666,7 +889,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -693,7 +916,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -765,10 +988,10 @@ if unreachable end - i32.const 34448 + i32.const 36416 i32.const 0 i32.store - i32.const 36016 + i32.const 37984 i32.const 0 i32.store loop $for-loop|0 @@ -779,7 +1002,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34448 + i32.const 36416 i32.add i32.const 0 i32.store offset=4 @@ -797,7 +1020,7 @@ i32.add i32.const 2 i32.shl - i32.const 34448 + i32.const 36416 i32.add i32.const 0 i32.store offset=96 @@ -815,14 +1038,14 @@ br $for-loop|0 end end - i32.const 34448 - i32.const 36020 + i32.const 36416 + i32.const 37988 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34448 + i32.const 36416 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -907,7 +1130,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34440 + i32.const 36408 i32.lt_u if local.get $0 @@ -996,14 +1219,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34440 + i32.const 36408 i32.lt_u if local.get $0 @@ -1026,7 +1249,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34440 + i32.const 36408 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1055,7 +1278,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1139,7 +1362,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1191,7 +1414,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1223,8 +1446,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1056 - i32.const 1120 + i32.const 3024 + i32.const 3088 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1234,7 +1457,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1255,7 +1478,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1288,8 +1511,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1056 - i32.const 1392 + i32.const 3024 + i32.const 3360 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1391,7 +1614,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1406,7 +1629,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1425,7 +1648,7 @@ i32.and if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1540,7 +1763,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1585,37 +1808,6 @@ end end ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $issues/1095/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1095/Foo $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - ) (func $~start (local $0 i32) (local $1 i32) @@ -1625,7 +1817,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1672 + i32.const 3640 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1634,41 +1826,41 @@ memory.size i32.const 16 i32.shl - i32.const 34440 + i32.const 36408 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1672 + i32.const 3640 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1689,7 +1881,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1672 + i32.const 3640 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1715,7 +1907,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 1456 + i32.const 3424 call $issues/1095/Foo#set:bar global.get $~lib/memory/__stack_pointer i32.const 8 @@ -1729,7 +1921,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1672 + i32.const 3640 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1752,8 +1944,8 @@ local.get $1 i32.eqz if - i32.const 1488 - i32.const 1616 + i32.const 3456 + i32.const 3584 i32.const 8 i32.const 13 call $~lib/builtins/abort @@ -1775,11 +1967,242 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34464 - i32.const 34512 + i32.const 36432 + i32.const 36480 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$136 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$136 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36432 + i32.const 36480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3640 + i32.lt_s + if + i32.const 36432 + i32.const 36480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/1095/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1095/Foo $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/issues/1225.debug.wat b/tests/compiler/issues/1225.debug.wat index b87f40c3c9..67d7f18593 100644 --- a/tests/compiler/issues/1225.debug.wat +++ b/tests/compiler/issues/1225.debug.wat @@ -1,14 +1,20 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) - (type $5 (func (result i32))) - (type $6 (func (param i32 i32 i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i64 i32))) + (type $8 (func (param i64 i32) (result i32))) + (type $9 (func (param i32 i64 i32 i32))) + (type $10 (func (param i32 i32 i64) (result i32))) + (type $11 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,28 +23,36 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $issues/1225/x (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 464)) - (global $~lib/memory/__data_end i32 (i32.const 488)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33256)) - (global $~lib/memory/__heap_base i32 (i32.const 33256)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2456)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35224)) + (global $~lib/memory/__heap_base i32 (i32.const 35224)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\002\002\005\00.\00t\00s\00") - (data $9 (i32.const 464) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\002\002\005\00.\00t\00s\00") + (data $20 (i32.const 2432) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "normal" (func $issues/1225/normal)) @@ -59,6 +73,435 @@ local.get $normal i32.store ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -123,7 +566,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -193,7 +636,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -210,7 +653,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -240,8 +683,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -309,7 +752,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -461,7 +904,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -481,7 +924,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -544,7 +987,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -697,7 +1140,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -714,7 +1157,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -803,7 +1246,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -846,7 +1289,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -864,7 +1307,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -932,7 +1375,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1049,7 +1492,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1095,7 +1538,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1127,7 +1570,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1371,7 +1814,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1591,7 +2034,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1699,8 +2142,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1802,7 +2245,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1873,7 +2316,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2030,7 +2473,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2145,7 +2588,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2165,7 +2608,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2213,8 +2656,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2327,13 +2770,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -2346,7 +2789,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -2358,7 +2801,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -2368,62 +2811,6 @@ global.set $issues/1225/x call $~lib/rt/itcms/__collect ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $issues/1225/x - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $issues/1225/X - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1225/X $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - unreachable - ) (func $~start call $start:issues/1225 ) @@ -2432,14 +2819,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33280 - i32.const 33328 + i32.const 35248 + i32.const 35296 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $issues/1225/X#constructor (param $this i32) (param $x i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer @@ -2567,4 +3159,213 @@ local.get $0 return ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $issues/1225/x + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $issues/1225/X + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1225/X $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/issues/1225.release.wat b/tests/compiler/issues/1225.release.wat index be387fc91c..fbb04ac577 100644 --- a/tests/compiler/issues/1225.release.wat +++ b/tests/compiler/issues/1225.release.wat @@ -1,12 +1,12 @@ (module - (type $0 (func (result i32))) - (type $1 (func)) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func)) + (type $1 (func (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,25 +18,244 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $issues/1225/x (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34280)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36248)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) ",") - (data $8.1 (i32.const 1448) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\002\002\005\00.\00t\00s") - (data $9 (i32.const 1488) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\002\002\005\00.\00t\00s") + (data $20 (i32.const 3456) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "normal" (func $issues/1225/normal)) (export "viaThis" (func $issues/1225/viaThis)) (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3480 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -46,9 +265,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -69,7 +292,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -117,7 +340,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -126,7 +349,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$119 + block $__inlined_func$~lib/rt/itcms/Object#unlink$132 local.get $1 i32.load offset=4 i32.const -4 @@ -138,19 +361,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34280 + i32.const 36248 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$119 + br $__inlined_func$~lib/rt/itcms/Object#unlink$132 end local.get $1 i32.load offset=8 @@ -158,7 +381,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -187,12 +410,12 @@ i32.const 1 else local.get $0 - i32.const 1488 + i32.const 3456 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -201,7 +424,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1492 + i32.const 3460 i32.add i32.load i32.const 32 @@ -253,7 +476,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -267,7 +490,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -313,7 +536,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -396,7 +619,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -410,7 +633,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -471,7 +694,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -504,7 +727,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -519,7 +742,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -570,7 +793,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -642,7 +865,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -667,7 +890,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -694,7 +917,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -766,10 +989,10 @@ if unreachable end - i32.const 34288 + i32.const 36256 i32.const 0 i32.store - i32.const 35856 + i32.const 37824 i32.const 0 i32.store loop $for-loop|0 @@ -780,7 +1003,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34288 + i32.const 36256 i32.add i32.const 0 i32.store offset=4 @@ -798,7 +1021,7 @@ i32.add i32.const 2 i32.shl - i32.const 34288 + i32.const 36256 i32.add i32.const 0 i32.store offset=96 @@ -816,14 +1039,14 @@ br $for-loop|0 end end - i32.const 34288 - i32.const 35860 + i32.const 36256 + i32.const 37828 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34288 + i32.const 36256 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -908,7 +1131,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34280 + i32.const 36248 i32.lt_u if local.get $0 @@ -997,14 +1220,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34280 + i32.const 36248 i32.lt_u if local.get $0 @@ -1027,7 +1250,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34280 + i32.const 36248 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1056,7 +1279,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1086,18 +1309,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1105,32 +1395,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1143,23 +1437,35 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 - local.set $0 + local.set $2 loop $do-loop|0 - local.get $0 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $0 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1173,9 +1479,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end - local.get $0 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1198,39 +1504,94 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $1 + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 call $~lib/rt/tlsf/searchBlock - local.tee $0 + local.tee $2 i32.eqz if memory.size - local.tee $0 + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end i32.const 4 - local.get $1 + local.get $4 i32.load offset=1568 - local.get $0 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.tee $2 - local.get $0 + local.tee $3 local.get $2 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1238,8 +1599,8 @@ unreachable end end - local.get $1 - local.get $0 + local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1247,119 +1608,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $1 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $0 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $0 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $0 + local.get $4 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $0 + local.get $2 i32.load - local.tee $2 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub local.tee $3 i32.const 16 i32.ge_u if - local.get $0 local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $0 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $2 + local.get $5 + i32.add + local.tee $5 local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $1 - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $0 local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $0 + local.get $2 i32.const 4 i32.add - local.get $0 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $0 - i32.const 4 + local.get $2 + local.get $1 i32.store offset=12 + local.get $2 local.get $0 - i32.const 12 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $0 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $0 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $0 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $0 + local.get $2 i32.load i32.const -4 i32.and @@ -1367,87 +1745,59 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $0 + local.get $2 i32.const 20 i32.add - local.tee $0 + local.tee $1 i32.const 0 - i32.const 12 - memory.fill local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $issues/1225/X - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1225/X $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable + memory.fill + local.get $1 ) (func $~start (local $0 i32) memory.size i32.const 16 i32.shl - i32.const 34280 + i32.const 36248 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1512 + i32.const 3480 i32.lt_s if - i32.const 34304 - i32.const 34352 + i32.const 36272 + i32.const 36320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1460,6 +1810,8 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1508,7 +1860,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -1519,7 +1871,7 @@ i32.ne if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -1561,6 +1913,206 @@ i32.add global.set $~lib/rt/itcms/threshold ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$137 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$137 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3480 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $issues/1225/normal (result i32) (local $0 i32) global.get $~lib/memory/__stack_pointer @@ -1568,11 +2120,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1512 + i32.const 3480 i32.lt_s if - i32.const 34304 - i32.const 34352 + i32.const 36272 + i32.const 36320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1599,11 +2151,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1512 + i32.const 3480 i32.lt_s if - i32.const 34304 - i32.const 34352 + i32.const 36272 + i32.const 36320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1623,4 +2175,32 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/1225/X + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1225/X $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/issues/1699.debug.wat b/tests/compiler/issues/1699.debug.wat index 168e3faaaf..401577321b 100644 --- a/tests/compiler/issues/1699.debug.wat +++ b/tests/compiler/issues/1699.debug.wat @@ -1,14 +1,16 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) (type $6 (func (param i32 i32 i32 i32))) (type $7 (func (param i32 i32 i64) (result i32))) (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 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)) @@ -23,29 +25,54 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/rt/__rtti_base i32 (i32.const 688)) - (global $~lib/memory/__data_end i32 (i32.const 716)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33484)) - (global $~lib/memory/__heap_base i32 (i32.const 33484)) + (global $~lib/rt/__rtti_base i32 (i32.const 2656)) + (global $~lib/memory/__data_end i32 (i32.const 2684)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35452)) + (global $~lib/memory/__heap_base i32 (i32.const 35452)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $1 (i32.const 60) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $3 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 508) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 636) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\006\009\009\00.\00t\00s\00") - (data $12 (i32.const 688) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\02A\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $20 (i32.const 2428) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $21 (i32.const 2476) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2604) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\006\009\009\00.\00t\00s\00") + (data $23 (i32.const 2656) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\02A\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -2246,6 +2273,422 @@ local.get $ptr return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) (local $child i32) (local $parent i32) @@ -2429,94 +2872,226 @@ global.set $~lib/rt/itcms/fromSpace call $issues/1699/test ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 320 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 528 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 128 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + (func $~start + call $start:issues/1699 ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35472 + i32.const 35520 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/array/Array - block $issues/1699/MultiAssignmentTest - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1699/MultiAssignmentTest $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - unreachable + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~start - call $start:issues/1699 + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33504 - i32.const 33552 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) (local $2 i32) @@ -2583,8 +3158,8 @@ i32.shr_u i32.gt_u if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -2742,8 +3317,8 @@ i32.shr_u i32.gt_u if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -2846,7 +3421,7 @@ i32.lt_s if i32.const 320 - i32.const 80 + i32.const 2448 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -2916,7 +3491,7 @@ i32.ge_u if i32.const 320 - i32.const 80 + i32.const 2448 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2945,8 +3520,8 @@ local.get $value i32.eqz if - i32.const 528 - i32.const 80 + i32.const 2496 + i32.const 2448 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -3113,7 +3688,7 @@ i32.eqz if i32.const 0 - i32.const 656 + i32.const 2624 i32.const 15 i32.const 3 call $~lib/builtins/abort @@ -3139,7 +3714,7 @@ i32.eqz if i32.const 0 - i32.const 656 + i32.const 2624 i32.const 16 i32.const 3 call $~lib/builtins/abort @@ -3150,6 +3725,260 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2400 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2496 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $issues/1699/MultiAssignmentTest + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1699/MultiAssignmentTest $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) (local $cur i32) (local $end i32) @@ -3220,32 +4049,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/object/Object#constructor (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) ) diff --git a/tests/compiler/issues/1699.release.wat b/tests/compiler/issues/1699.release.wat index 80c73bc8a5..9b163e1e8b 100644 --- a/tests/compiler/issues/1699.release.wat +++ b/tests/compiler/issues/1699.release.wat @@ -1,13 +1,13 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (type $4 (func (result i32))) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (param i32) (result i32))) + (type $8 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,27 +18,48 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34508)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36476)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $1 (i32.const 1084) ",") - (data $1.1 (i32.const 1096) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $2 (i32.const 1132) "<") - (data $2.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $3 (i32.const 1196) "<") - (data $3.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $6 (i32.const 1324) "<") - (data $6.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $7 (i32.const 1388) ",") - (data $7.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $9 (i32.const 1468) "<") - (data $9.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $10 (i32.const 1532) "|") - (data $10.1 (i32.const 1544) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data $11 (i32.const 1660) ",") - (data $11.1 (i32.const 1672) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\006\009\009\00.\00t\00s") - (data $12 (i32.const 1712) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\02A") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $20 (i32.const 3452) ",") + (data $20.1 (i32.const 3464) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $21 (i32.const 3500) "|") + (data $21.1 (i32.const 3512) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $22 (i32.const 3628) ",") + (data $22.1 (i32.const 3640) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\006\009\009\00.\00t\00s") + (data $23 (i32.const 3680) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\02A") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots @@ -46,12 +67,16 @@ (local $1 i32) i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3424 call $~lib/rt/itcms/__visit - i32.const 1552 + i32.const 3520 call $~lib/rt/itcms/__visit i32.const 1152 call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -113,7 +138,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$146 + block $__inlined_func$~lib/rt/itcms/Object#unlink$159 local.get $0 i32.load offset=4 i32.const -4 @@ -125,7 +150,7 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34508 + i32.const 36476 i32.lt_u i32.and i32.eqz @@ -137,7 +162,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$146 + br $__inlined_func$~lib/rt/itcms/Object#unlink$159 end local.get $0 i32.load offset=8 @@ -174,7 +199,7 @@ i32.const 1 else local.get $1 - i32.const 1712 + i32.const 3680 i32.load i32.gt_u if @@ -188,7 +213,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1716 + i32.const 3684 i32.add i32.load i32.const 32 @@ -772,10 +797,10 @@ if unreachable end - i32.const 34512 + i32.const 36480 i32.const 0 i32.store - i32.const 36080 + i32.const 38048 i32.const 0 i32.store loop $for-loop|0 @@ -786,7 +811,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34512 + i32.const 36480 i32.add i32.const 0 i32.store offset=4 @@ -804,7 +829,7 @@ i32.add i32.const 2 i32.shl - i32.const 34512 + i32.const 36480 i32.add i32.const 0 i32.store offset=96 @@ -822,14 +847,14 @@ br $for-loop|0 end end - i32.const 34512 - i32.const 36084 + i32.const 36480 + i32.const 38052 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34512 + i32.const 36480 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -914,7 +939,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34508 + i32.const 36476 i32.lt_u if local.get $0 @@ -1010,7 +1035,7 @@ unreachable end local.get $0 - i32.const 34508 + i32.const 36476 i32.lt_u if local.get $0 @@ -1033,7 +1058,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34508 + i32.const 36476 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1241,7 +1266,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1262,7 +1287,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end local.get $2 i32.const 0 @@ -1537,6 +1562,204 @@ memory.fill local.get $1 ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3708 + i32.lt_s + if + i32.const 36496 + i32.const 36544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa32$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 @@ -1603,7 +1826,7 @@ memory.size i32.const 16 i32.shl - i32.const 34508 + i32.const 36476 i32.sub i32.const 1 i32.shr_u @@ -1638,7 +1861,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1740 + i32.const 3708 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -1651,7 +1874,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1740 + i32.const 3708 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -1778,7 +2001,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1740 + i32.const 3708 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -1841,7 +2064,7 @@ i32.ne if i32.const 0 - i32.const 1680 + i32.const 3648 i32.const 15 i32.const 3 call $~lib/builtins/abort @@ -1864,7 +2087,7 @@ i32.eq if i32.const 0 - i32.const 1680 + i32.const 3648 i32.const 16 i32.const 3 call $~lib/builtins/abort @@ -1876,112 +2099,215 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34528 - i32.const 34576 + i32.const 36496 + i32.const 36544 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) + (func $~start + call $start:issues/1699 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - block $invalid - block $~lib/array/Array - block $issues/1699/MultiAssignmentTest - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1699/MultiAssignmentTest $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 3708 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1740 + i32.const 3708 i32.lt_s - if - i32.const 34528 - i32.const 34576 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $2 i32.store local.get $0 - i32.load offset=4 - local.set $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 + i32.store + block $__inlined_func$~lib/string/String#concat$164 local.get $1 - local.get $2 - i32.lt_u + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $1 - br $while-continue|0 + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$164 end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 return end + i32.const 36496 + i32.const 36544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) - (func $~start - call $start:issues/1699 + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3708 + i32.lt_s + if + i32.const 36496 + i32.const 36544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $issues/1699/MultiAssignmentTest#constructor (result i32) (local $0 i32) @@ -1992,7 +2318,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1740 + i32.const 3708 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2013,7 +2339,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1740 + i32.const 3708 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2048,8 +2374,8 @@ local.get $0 return end - i32.const 34528 - i32.const 34576 + i32.const 36496 + i32.const 36544 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2067,7 +2393,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1740 + i32.const 3708 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2086,7 +2412,7 @@ i32.lt_s if i32.const 1344 - i32.const 1104 + i32.const 3472 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -2102,7 +2428,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1740 + i32.const 3708 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2123,8 +2449,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1056 - i32.const 1104 + i32.const 3424 + i32.const 3472 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -2133,7 +2459,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $__inlined_func$~lib/rt/itcms/__renew$145 + block $__inlined_func$~lib/rt/itcms/__renew$153 i32.const 1073741820 local.get $4 i32.const 1 @@ -2176,7 +2502,7 @@ i32.store offset=16 local.get $4 local.set $3 - br $__inlined_func$~lib/rt/itcms/__renew$145 + br $__inlined_func$~lib/rt/itcms/__renew$153 end local.get $5 local.get $7 @@ -2245,8 +2571,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34528 - i32.const 34576 + i32.const 36496 + i32.const 36544 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2258,11 +2584,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1740 + i32.const 3708 i32.lt_s if - i32.const 34528 - i32.const 34576 + i32.const 36496 + i32.const 36544 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2280,7 +2606,7 @@ i32.ge_u if i32.const 1344 - i32.const 1104 + i32.const 3472 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2302,8 +2628,8 @@ local.get $0 i32.eqz if - i32.const 1552 - i32.const 1104 + i32.const 3520 + i32.const 3472 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -2315,4 +2641,101 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $invalid + block $~lib/array/Array + block $issues/1699/MultiAssignmentTest + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1699/MultiAssignmentTest $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3708 + i32.lt_s + if + i32.const 36496 + i32.const 36544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) ) diff --git a/tests/compiler/issues/1714.debug.wat b/tests/compiler/issues/1714.debug.wat index a99a595629..c0473e10aa 100644 --- a/tests/compiler/issues/1714.debug.wat +++ b/tests/compiler/issues/1714.debug.wat @@ -1,21 +1,59 @@ (module - (type $0 (func (result i32))) - (type $1 (func)) - (type $2 (func (param i32) (result i32))) - (type $3 (func (param i32 i32 i32 i32))) - (type $4 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $5 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (result i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $12 (func (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 92)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32860)) - (global $~lib/memory/__heap_base i32 (i32.const 32860)) + (global $~lib/rt/__rtti_base i32 (i32.const 2464)) + (global $~lib/memory/__data_end i32 (i32.const 2484)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35252)) + (global $~lib/memory/__heap_base i32 (i32.const 35252)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\007\001\004\00.\00t\00s\00") - (data $1 (i32.const 60) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\003\002\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\007\001\004\00.\00t\00s\00") + (data $20 (i32.const 2428) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\003\002\00\00\00\00\00\00\00") + (data $21 (i32.const 2464) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -32,10 +70,2639 @@ i32.eq return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $"issues/1714/bar" (result i32) i32.const 0 drop - i32.const 80 + i32.const 2448 return ) (func $"issues/1714/bar" (result i32) @@ -44,19 +2711,6 @@ call $"issues/1714/bar" return ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u - return - ) (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) (local $ptr1 i32) (local $ptr2 i32) @@ -169,14 +2823,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 32880 - i32.const 32928 + i32.const 35280 + i32.const 35328 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) (local $leftLength i32) (local $3 i32) @@ -283,13 +3142,30 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $"issues/1714/foo" i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -301,12 +3177,12 @@ local.get $0 i32.store local.get $0 - i32.const 80 + i32.const 2448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -317,4 +3193,203 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/issues/1714.release.wat b/tests/compiler/issues/1714.release.wat index 5fc4c4ca7e..e52fcae034 100644 --- a/tests/compiler/issues/1714.release.wat +++ b/tests/compiler/issues/1714.release.wat @@ -1,15 +1,1751 @@ (module - (type $0 (func (param i32 i32 i32 i32))) - (type $1 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33884)) + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36276)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\007\001\004\00.\00t\00s") - (data $1 (i32.const 1084) "\1c") - (data $1.1 (i32.const 1096) "\02\00\00\00\06\00\00\00i\003\002") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\007\001\004\00.\00t\00s") + (data $20 (i32.const 3452) "\1c") + (data $20.1 (i32.const 3464) "\02\00\00\00\06\00\00\00i\003\002") + (data $21 (i32.const 3488) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$129 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36276 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$129 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3488 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3492 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36288 + i32.const 0 + i32.store + i32.const 37856 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36288 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36288 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36288 + i32.const 37860 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36288 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36276 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36276 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36276 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$71 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$71 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3508 + i32.lt_s + if + i32.const 36304 + i32.const 36352 + 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$75 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$75 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~start global.get $~lib/memory/__stack_pointer i32.const 4 @@ -17,21 +1753,53 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1116 + i32.const 3508 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + memory.size + i32.const 16 + i32.shl + i32.const 36276 + 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 1104 + i32.const 3472 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 1116 + i32.const 3508 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -47,11 +1815,235 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 33904 - i32.const 33952 + i32.const 36304 + i32.const 36352 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3508 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3508 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$134 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$134 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3508 + i32.lt_s + if + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/issues/2166.debug.wat b/tests/compiler/issues/2166.debug.wat index 48b86fe01b..f93903edbf 100644 --- a/tests/compiler/issues/2166.debug.wat +++ b/tests/compiler/issues/2166.debug.wat @@ -1,15 +1,21 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (type $9 (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $12 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,36 +24,472 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 608)) - (global $~lib/memory/__data_end i32 (i32.const 636)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33404)) - (global $~lib/memory/__heap_base i32 (i32.const 33404)) + (global $~lib/rt/__rtti_base i32 (i32.const 2576)) + (global $~lib/memory/__data_end i32 (i32.const 2604)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35372)) + (global $~lib/memory/__heap_base i32 (i32.const 35372)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\001\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 444) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g\00") - (data $10 (i32.const 476) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\001\006\006\00.\00t\00s\00") - (data $11 (i32.const 524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\003\002\00\00\00\00\00\00\00") - (data $12 (i32.const 556) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00t\00e\00s\00t\00-\002\001\006\006\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 608) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\001\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g\00") + (data $21 (i32.const 2444) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\001\006\006\00.\00t\00s\00") + (data $22 (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\003\002\00\00\00\00\00\00\00") + (data $23 (i32.const 2524) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00t\00e\00s\00t\00-\002\001\006\006\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2576) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -112,7 +554,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -182,7 +624,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -199,7 +641,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -229,8 +671,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -298,7 +740,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -450,7 +892,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -470,7 +912,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -533,7 +975,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -686,7 +1128,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -703,7 +1145,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -792,7 +1234,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -835,7 +1277,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -853,7 +1295,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -921,7 +1363,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1038,7 +1480,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1084,7 +1526,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1116,7 +1558,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1360,7 +1802,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1580,7 +2022,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1688,8 +2130,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1791,7 +2233,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1862,7 +2304,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2019,7 +2461,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2134,7 +2576,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2154,7 +2596,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2202,8 +2644,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2248,19 +2690,6 @@ local.get $ptr return ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u - return - ) (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) (local $ptr1 i32) (local $ptr2 i32) @@ -2366,25 +2795,25 @@ return ) (func $issues/2166/Test2166Ref1<~lib/string/String>#fn (param $this i32) (param $a1 i32) (param $a2 i32) - i32.const 464 - i32.const 464 + i32.const 2432 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 496 + i32.const 2464 i32.const 9 i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 544 - i32.const 544 + i32.const 2512 + i32.const 2512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 496 + i32.const 2464 i32.const 10 i32.const 5 call $~lib/builtins/abort @@ -2392,71 +2821,19 @@ end ) (func $issues/2166/Test2166Ref2#bar<~lib/string/String> (param $this i32) (param $i i32) - i32.const 464 - i32.const 464 + i32.const 2432 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 496 + i32.const 2464 i32.const 22 i32.const 5 call $~lib/builtins/abort unreachable end ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $issues/2166/Test2166Ref2 - block $issues/2166/Test2166Ref1<~lib/string/String> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2166/Test2166Ref1<~lib/string/String> $issues/2166/Test2166Ref2 $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - unreachable - ) (func $~start call $start:issues/2166 ) @@ -2465,14 +2842,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33424 - i32.const 33472 + i32.const 35392 + i32.const 35440 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $issues/2166/Test2166Ref1<~lib/string/String>#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2629,7 +3211,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 432 + i32.const 2400 i32.const 1 call $issues/2166/Test2166Ref1<~lib/string/String>#fn global.get $~lib/memory/__stack_pointer @@ -2655,13 +3237,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace call $issues/2166/testfunc2166 @@ -2672,13 +3254,160 @@ local.get $0 i32.store local.get $0 - i32.const 576 + i32.const 2544 call $issues/2166/Test2166Ref2#bar<~lib/string/String> global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2727,13 +3456,13 @@ local.tee $this i32.store end - i32.const 544 - i32.const 544 + i32.const 2512 + i32.const 2512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 496 + i32.const 2464 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -2747,4 +3476,62 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $issues/2166/Test2166Ref2 + block $issues/2166/Test2166Ref1<~lib/string/String> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2166/Test2166Ref1<~lib/string/String> $issues/2166/Test2166Ref2 $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/issues/2166.release.wat b/tests/compiler/issues/2166.release.wat index 959b426ae6..ee5cf66526 100644 --- a/tests/compiler/issues/2166.release.wat +++ b/tests/compiler/issues/2166.release.wat @@ -1,13 +1,12 @@ (module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,37 +17,260 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34428)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36396)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) "\1c") - (data $8.1 (i32.const 1448) "\02\00\00\00\04\00\00\001\001") - (data $9 (i32.const 1468) "\1c") - (data $9.1 (i32.const 1480) "\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g") - (data $10 (i32.const 1500) ",") - (data $10.1 (i32.const 1512) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\001\006\006\00.\00t\00s") - (data $11 (i32.const 1548) "\1c") - (data $11.1 (i32.const 1560) "\02\00\00\00\06\00\00\00i\003\002") - (data $12 (i32.const 1580) ",") - (data $12.1 (i32.const 1592) "\02\00\00\00\12\00\00\00t\00e\00s\00t\00-\002\001\006\006") - (data $13 (i32.const 1632) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "\1c") + (data $19.1 (i32.const 3416) "\02\00\00\00\04\00\00\001\001") + (data $20 (i32.const 3436) "\1c") + (data $20.1 (i32.const 3448) "\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g") + (data $21 (i32.const 3468) ",") + (data $21.1 (i32.const 3480) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\001\006\006\00.\00t\00s") + (data $22 (i32.const 3516) "\1c") + (data $22.1 (i32.const 3528) "\02\00\00\00\06\00\00\00i\003\002") + (data $23 (i32.const 3548) ",") + (data $23.1 (i32.const 3560) "\02\00\00\00\12\00\00\00t\00e\00s\00t\00-\002\001\006\006") + (data $24 (i32.const 3600) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3628 + i32.lt_s + if + i32.const 36416 + i32.const 36464 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -69,7 +291,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -117,7 +339,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -126,7 +348,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$122 + block $__inlined_func$~lib/rt/itcms/Object#unlink$134 local.get $1 i32.load offset=4 i32.const -4 @@ -138,19 +360,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34428 + i32.const 36396 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$122 + br $__inlined_func$~lib/rt/itcms/Object#unlink$134 end local.get $1 i32.load offset=8 @@ -158,7 +380,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -187,12 +409,12 @@ i32.const 1 else local.get $0 - i32.const 1632 + i32.const 3600 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -201,7 +423,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1636 + i32.const 3604 i32.add i32.load i32.const 32 @@ -253,7 +475,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -267,7 +489,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -313,7 +535,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -396,7 +618,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -410,7 +632,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -471,7 +693,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -504,7 +726,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -519,7 +741,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -570,7 +792,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -642,7 +864,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -667,7 +889,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -694,7 +916,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -766,10 +988,10 @@ if unreachable end - i32.const 34432 + i32.const 36400 i32.const 0 i32.store - i32.const 36000 + i32.const 37968 i32.const 0 i32.store loop $for-loop|0 @@ -780,7 +1002,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34432 + i32.const 36400 i32.add i32.const 0 i32.store offset=4 @@ -798,7 +1020,7 @@ i32.add i32.const 2 i32.shl - i32.const 34432 + i32.const 36400 i32.add i32.const 0 i32.store offset=96 @@ -816,14 +1038,14 @@ br $for-loop|0 end end - i32.const 34432 - i32.const 36004 + i32.const 36400 + i32.const 37972 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34432 + i32.const 36400 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -908,7 +1130,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34428 + i32.const 36396 i32.lt_u if local.get $0 @@ -997,14 +1219,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34428 + i32.const 36396 i32.lt_u if local.get $0 @@ -1027,7 +1249,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34428 + i32.const 36396 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1056,7 +1278,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1086,18 +1308,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1105,32 +1394,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1143,23 +1436,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 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 @@ -1173,9 +1478,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1198,31 +1503,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.const 1073741820 + i32.gt_u if - memory.size - local.tee $1 - i32.const 4 + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 i32.load offset=1568 - local.get $1 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1238,8 +1598,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1247,119 +1607,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1367,45 +1744,14 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $issues/2166/Test2166Ref2 - block $issues/2166/Test2166Ref1<~lib/string/String> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2166/Test2166Ref1<~lib/string/String> $issues/2166/Test2166Ref2 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable + memory.fill + local.get $1 ) (func $~start (local $0 i32) @@ -1417,7 +1763,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1660 + i32.const 3628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1426,41 +1772,41 @@ memory.size i32.const 16 i32.shl - i32.const 34428 + i32.const 36396 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 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 1660 + i32.const 3628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1472,13 +1818,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1660 + i32.const 3628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 @@ -1492,7 +1839,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1660 + i32.const 3628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1503,6 +1850,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1522,25 +1870,25 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - i32.const 1488 - i32.const 1488 + i32.const 3456 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3488 i32.const 9 i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1568 - i32.const 1568 + i32.const 3536 + i32.const 3536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3488 i32.const 10 i32.const 5 call $~lib/builtins/abort @@ -1555,24 +1903,25 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1660 + i32.const 3628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 5 call $~lib/rt/itcms/__new local.tee $0 i32.store - i32.const 1568 - i32.const 1568 + i32.const 3536 + i32.const 3536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3488 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -1585,13 +1934,13 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - i32.const 1488 - i32.const 1488 + i32.const 3456 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3488 i32.const 22 i32.const 5 call $~lib/builtins/abort @@ -1603,13 +1952,213 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34448 - i32.const 34496 + i32.const 36416 + i32.const 36464 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$140 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$140 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36416 + i32.const 36464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3628 + i32.lt_s + if + i32.const 36416 + i32.const 36464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1620,11 +2169,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1660 + i32.const 3628 i32.lt_s if - i32.const 34448 - i32.const 34496 + i32.const 36416 + i32.const 36464 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1723,7 +2272,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$79 + block $__inlined_func$~lib/util/string/compareImpl$82 loop $while-continue|1 local.get $0 local.tee $3 @@ -1743,7 +2292,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$79 + br_if $__inlined_func$~lib/util/string/compareImpl$82 local.get $2 i32.const 2 i32.add @@ -1772,4 +2321,35 @@ global.set $~lib/memory/__stack_pointer i32.const 0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/2166/Test2166Ref2 + block $issues/2166/Test2166Ref1<~lib/string/String> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2166/Test2166Ref1<~lib/string/String> $issues/2166/Test2166Ref2 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/issues/2322/index.debug.wat b/tests/compiler/issues/2322/index.debug.wat index febbe4e10f..ee96d8bf12 100644 --- a/tests/compiler/issues/2322/index.debug.wat +++ b/tests/compiler/issues/2322/index.debug.wat @@ -2,13 +2,19 @@ (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,31 +23,468 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 416)) - (global $~lib/memory/__data_end i32 (i32.const 440)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33208)) - (global $~lib/memory/__heap_base i32 (i32.const 33208)) + (global $~lib/rt/__rtti_base i32 (i32.const 2384)) + (global $~lib/memory/__data_end i32 (i32.const 2408)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35176)) + (global $~lib/memory/__heap_base i32 (i32.const 35176)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 416) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2384) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "test" (func $issues/2322/index/test)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -106,7 +549,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -176,7 +619,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -193,7 +636,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -223,8 +666,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -292,7 +735,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -444,7 +887,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -464,7 +907,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -527,7 +970,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -680,7 +1123,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -697,7 +1140,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -786,7 +1229,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -829,7 +1272,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -847,7 +1290,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -915,7 +1358,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1032,7 +1475,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1078,7 +1521,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1110,7 +1553,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1354,7 +1797,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1574,7 +2017,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1682,8 +2125,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1785,7 +2228,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1856,7 +2299,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2013,7 +2456,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2128,7 +2571,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2148,7 +2591,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2196,8 +2639,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2249,55 +2692,6 @@ ) (func $issues/2322/lib/test (param $t i32) ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $issues/2322/lib/Wrapper - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2322/lib/Wrapper $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - unreachable - ) (func $~start memory.size i32.const 16 @@ -2307,13 +2701,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace ) @@ -2322,14 +2716,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33232 - i32.const 33280 + i32.const 35200 + i32.const 35248 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $issues/2322/lib/Wrapper#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2399,6 +2998,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2427,4 +3173,59 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $issues/2322/lib/Wrapper + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2322/lib/Wrapper $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/issues/2322/index.release.wat b/tests/compiler/issues/2322/index.release.wat index 9349beea7c..ddbf1c1f60 100644 --- a/tests/compiler/issues/2322/index.release.wat +++ b/tests/compiler/issues/2322/index.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,28 +17,251 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34232)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36200)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1440) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3408) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "test" (func $issues/2322/index/test)) (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3432 + i32.lt_s + if + i32.const 36224 + i32.const 36272 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -59,7 +282,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -107,7 +330,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -116,7 +339,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$112 + block $__inlined_func$~lib/rt/itcms/Object#unlink$125 local.get $1 i32.load offset=4 i32.const -4 @@ -128,19 +351,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34232 + i32.const 36200 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$112 + br $__inlined_func$~lib/rt/itcms/Object#unlink$125 end local.get $1 i32.load offset=8 @@ -148,7 +371,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -177,12 +400,12 @@ i32.const 1 else local.get $0 - i32.const 1440 + i32.const 3408 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -191,7 +414,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1444 + i32.const 3412 i32.add i32.load i32.const 32 @@ -243,7 +466,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -257,7 +480,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -303,7 +526,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -386,7 +609,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -400,7 +623,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -461,7 +684,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -494,7 +717,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -509,7 +732,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -560,7 +783,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -632,7 +855,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -657,7 +880,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -684,7 +907,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -756,10 +979,10 @@ if unreachable end - i32.const 34240 + i32.const 36208 i32.const 0 i32.store - i32.const 35808 + i32.const 37776 i32.const 0 i32.store loop $for-loop|0 @@ -770,7 +993,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34240 + i32.const 36208 i32.add i32.const 0 i32.store offset=4 @@ -788,7 +1011,7 @@ i32.add i32.const 2 i32.shl - i32.const 34240 + i32.const 36208 i32.add i32.const 0 i32.store offset=96 @@ -806,14 +1029,14 @@ br $for-loop|0 end end - i32.const 34240 - i32.const 35812 + i32.const 36208 + i32.const 37780 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34240 + i32.const 36208 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -898,7 +1121,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34232 + i32.const 36200 i32.lt_u if local.get $0 @@ -987,14 +1210,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34232 + i32.const 36200 i32.lt_u if local.get $0 @@ -1017,7 +1240,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34232 + i32.const 36200 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1046,7 +1269,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1130,7 +1353,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1182,7 +1405,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1214,8 +1437,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1056 - i32.const 1120 + i32.const 3024 + i32.const 3088 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1225,7 +1448,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1246,7 +1469,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1279,8 +1502,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1056 - i32.const 1392 + i32.const 3024 + i32.const 3360 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1382,7 +1605,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1397,7 +1620,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1416,7 +1639,7 @@ i32.and if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1521,68 +1744,240 @@ memory.fill local.get $1 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $issues/2322/lib/Wrapper - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2322/lib/Wrapper $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) (func $~start memory.size i32.const 16 i32.shl - i32.const 34232 + i32.const 36200 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3432 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3432 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$130 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$130 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36224 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3432 + i32.lt_s + if + i32.const 36224 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $issues/2322/index/test (local $0 i32) (local $1 i32) @@ -1592,7 +1987,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1464 + i32.const 3432 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1603,7 +1998,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1464 + i32.const 3432 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1624,7 +2019,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1464 + i32.const 3432 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1665,11 +2060,39 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34256 - i32.const 34304 + i32.const 36224 + i32.const 36272 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/2322/lib/Wrapper + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2322/lib/Wrapper $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/issues/2622.debug.wat b/tests/compiler/issues/2622.debug.wat index 07020ccd43..e8a4555e4b 100644 --- a/tests/compiler/issues/2622.debug.wat +++ b/tests/compiler/issues/2622.debug.wat @@ -1,14 +1,20 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,9 +23,6 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) @@ -27,24 +30,464 @@ (global $issues/2622/a (mut i32) (i32.const 0)) (global $issues/2622/_b/t2 (mut i32) (i32.const 0)) (global $issues/2622/b (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 416)) - (global $~lib/memory/__data_end i32 (i32.const 444)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33212)) - (global $~lib/memory/__heap_base i32 (i32.const 33212)) + (global $~lib/rt/__rtti_base i32 (i32.const 2384)) + (global $~lib/memory/__data_end i32 (i32.const 2412)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35180)) + (global $~lib/memory/__heap_base i32 (i32.const 35180)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 416) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2384) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -109,7 +552,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -179,7 +622,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -196,7 +639,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -226,8 +669,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -295,7 +738,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -447,7 +890,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -467,7 +910,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -530,7 +973,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -683,7 +1126,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -700,7 +1143,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -789,7 +1232,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -832,7 +1275,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -850,7 +1293,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -918,7 +1361,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1035,7 +1478,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1081,7 +1524,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1113,7 +1556,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1357,7 +1800,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1577,7 +2020,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1685,8 +2128,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1788,7 +2231,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1859,7 +2302,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2016,7 +2459,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2131,7 +2574,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2151,7 +2594,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2199,8 +2642,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2254,13 +2697,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -2277,115 +2720,226 @@ global.get $issues/2622/_b/t2 global.set $issues/2622/b ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $issues/2622/a - local.tee $1 + (func $~start + call $start:issues/2622 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 35200 + i32.const 35248 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $issues/2622/b - local.tee $1 + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - global.get $issues/2622/_a/t1 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $issues/2622/_a/t1 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $issues/2622/_b/t2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $issues/2622/_b/t2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $issues/2622/_b/T2 - block $issues/2622/_a/T1 - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2622/_a/T1 $issues/2622/_b/T2 $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - unreachable - ) - (func $~start - call $start:issues/2622 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33232 - i32.const 33280 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $issues/2622/_a/T1#constructor (param $this i32) (result i32) (local $1 i32) @@ -2463,6 +3017,153 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2491,4 +3192,104 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $issues/2622/a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/b + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + global.get $issues/2622/_a/t1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/_a/t1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/_b/t2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/_b/t2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $issues/2622/_b/T2 + block $issues/2622/_a/T1 + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2622/_a/T1 $issues/2622/_b/T2 $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/issues/2622.release.wat b/tests/compiler/issues/2622.release.wat index 835db6b8c6..f014d6be1b 100644 --- a/tests/compiler/issues/2622.release.wat +++ b/tests/compiler/issues/2622.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32) (result i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -21,21 +21,240 @@ (global $issues/2622/a (mut i32) (i32.const 0)) (global $issues/2622/_b/t2 (mut i32) (i32.const 0)) (global $issues/2622/b (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34236)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36204)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1440) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3408) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3436 + i32.lt_s + if + i32.const 36224 + i32.const 36272 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -51,9 +270,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $issues/2622/_a/t1 local.tee $0 @@ -98,7 +321,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -146,7 +369,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -155,7 +378,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$111 + block $__inlined_func$~lib/rt/itcms/Object#unlink$124 local.get $1 i32.load offset=4 i32.const -4 @@ -167,19 +390,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34236 + i32.const 36204 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$111 + br $__inlined_func$~lib/rt/itcms/Object#unlink$124 end local.get $1 i32.load offset=8 @@ -187,7 +410,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -216,12 +439,12 @@ i32.const 1 else local.get $0 - i32.const 1440 + i32.const 3408 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -230,7 +453,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1444 + i32.const 3412 i32.add i32.load i32.const 32 @@ -282,7 +505,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -296,7 +519,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -342,7 +565,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -425,7 +648,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -439,7 +662,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -500,7 +723,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -533,7 +756,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -548,7 +771,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -599,7 +822,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -671,7 +894,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -696,7 +919,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -723,7 +946,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -795,10 +1018,10 @@ if unreachable end - i32.const 34240 + i32.const 36208 i32.const 0 i32.store - i32.const 35808 + i32.const 37776 i32.const 0 i32.store loop $for-loop|0 @@ -809,7 +1032,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34240 + i32.const 36208 i32.add i32.const 0 i32.store offset=4 @@ -827,7 +1050,7 @@ i32.add i32.const 2 i32.shl - i32.const 34240 + i32.const 36208 i32.add i32.const 0 i32.store offset=96 @@ -845,14 +1068,14 @@ br $for-loop|0 end end - i32.const 34240 - i32.const 35812 + i32.const 36208 + i32.const 37780 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34240 + i32.const 36208 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -937,7 +1160,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34236 + i32.const 36204 i32.lt_u if local.get $0 @@ -1026,14 +1249,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34236 + i32.const 36204 i32.lt_u if local.get $0 @@ -1056,7 +1279,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34236 + i32.const 36204 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1085,7 +1308,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1115,18 +1338,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1134,32 +1424,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1172,23 +1466,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 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 @@ -1202,9 +1508,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1227,31 +1533,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.const 1073741820 + i32.gt_u if - memory.size - local.tee $1 - i32.const 4 + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 local.get $2 - 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 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1267,8 +1628,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1276,119 +1637,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1396,80 +1774,49 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $issues/2622/_b/T2 - block $issues/2622/_a/T1 - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2622/_a/T1 $issues/2622/_b/T2 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable + memory.fill + local.get $1 ) (func $~start (local $0 i32) - block $__inlined_func$start:issues/2622$1 + block $__inlined_func$start:issues/2622 memory.size i32.const 16 i32.shl - i32.const 34236 + i32.const 36204 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 8 @@ -1477,13 +1824,14 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3436 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 @@ -1509,13 +1857,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3436 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 5 call $~lib/rt/itcms/__new local.tee $0 @@ -1536,27 +1885,227 @@ global.set $issues/2622/_b/t2 global.get $issues/2622/_b/t2 global.set $issues/2622/b - br $__inlined_func$start:issues/2622$1 + br $__inlined_func$start:issues/2622 end - i32.const 34256 - i32.const 34304 + i32.const 36224 + i32.const 36272 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3436 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3436 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$130 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$130 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36224 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3436 + i32.lt_s + if + i32.const 36224 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/object/Object#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3436 i32.lt_s if - i32.const 34256 - i32.const 34304 + i32.const 36224 + i32.const 36272 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1570,6 +2119,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1580,4 +2130,35 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/2622/_b/T2 + block $issues/2622/_a/T1 + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2622/_a/T1 $issues/2622/_b/T2 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/issues/2707.debug.wat b/tests/compiler/issues/2707.debug.wat index bf7710636a..ac8318de96 100644 --- a/tests/compiler/issues/2707.debug.wat +++ b/tests/compiler/issues/2707.debug.wat @@ -1,20 +1,23 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32 i32))) - (type $5 (func (param i32 i32) (result i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (type $9 (func (param i32 i32 i32) (result i32))) - (type $10 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (param i32 i32 i32) (result i32))) + (type $12 (func (param i32 i32 i32 i32))) + (type $13 (func (param i32 i32 i32 i32) (result i32))) (global $issues/2707/func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -27,22 +30,33 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 496)) - (global $~lib/memory/__data_end i32 (i32.const 524)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33292)) - (global $~lib/memory/__heap_base i32 (i32.const 33292)) + (global $~lib/rt/__rtti_base i32 (i32.const 2464)) + (global $~lib/memory/__data_end i32 (i32.const 2492)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35260)) + (global $~lib/memory/__heap_base i32 (i32.const 35260)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 92) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $3 (i32.const 156) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 284) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 496) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\00\00\00\00") + (data $2 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $3 (i32.const 124) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $4 (i32.const 156) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 220) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 444) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $10 (i32.const 844) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1900) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $12 (i32.const 1996) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2060) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $14 (i32.const 2124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2464) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\00\00\00\00") (table $0 2 2 funcref) (elem $0 (i32.const 1) $start:issues/2707~anonymous|0) (export "memory" (memory $0)) @@ -51,6 +65,435 @@ i32.const 1 return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 444 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 444 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 444 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 444 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 864 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 864 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1920 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1920 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -115,7 +558,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 2144 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -185,7 +628,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 2144 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -202,7 +645,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 2144 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -232,8 +675,8 @@ i32.load i32.gt_u if - i32.const 304 - i32.const 368 + i32.const 2272 + i32.const 2336 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -301,7 +744,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 176 + i32.const 2144 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -453,7 +896,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 2416 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -473,7 +916,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 2416 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -536,7 +979,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 2416 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -689,7 +1132,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 2416 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -706,7 +1149,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 2416 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -795,7 +1238,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 2416 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -838,7 +1281,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 2416 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -856,7 +1299,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 2416 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -924,7 +1367,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 2416 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1041,7 +1484,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 2416 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1087,7 +1530,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 2416 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1119,7 +1562,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 2416 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1363,7 +1806,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 2416 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1583,7 +2026,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 2144 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1691,8 +2134,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 112 - i32.const 448 + i32.const 2080 + i32.const 2416 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1794,7 +2237,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 2416 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1865,7 +2308,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 2416 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2022,7 +2465,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 2416 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2137,7 +2580,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 2416 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2157,7 +2600,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 2416 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2205,8 +2648,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 112 - i32.const 176 + i32.const 2080 + i32.const 2144 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2282,7 +2725,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 2144 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2335,103 +2778,226 @@ end end ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 304 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 112 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load + (func $~start + call $start:issues/2707 ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35280 + i32.const 35328 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) - (func $~lib/function/Function<%28~lib/array/Array%29=>i32>#get:_env (param $this i32) (result i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28~lib/array/Array%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28~lib/array/Array%29=>i32>#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/function/Function<%28~lib/array/Array%29=>i32> - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/function/Function<%28~lib/array/Array%29=>i32> $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28~lib/array/Array%29=>i32>~visit + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 176 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - unreachable + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~start - call $start:issues/2707 + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 33312 - i32.const 33360 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 112 end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 144 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 208 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 208 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2016 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $start:issues/2707 (local $0 i32) @@ -2452,13 +3018,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 224 + i32.const 2192 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 256 + i32.const 2224 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 400 + i32.const 2368 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 4 @@ -2482,34 +3048,18 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/function/Function<%28~lib/array/Array%29=>i32>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2518,19 +3068,132 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28~lib/array/Array%29=>i32>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 240 + i32.const 368 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 432 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $12 + return ) (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) (local $bufferSize i32) @@ -2585,4 +3248,142 @@ local.get $7 return ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2272 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2080 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 864 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1920 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28~lib/array/Array%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28~lib/array/Array%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/array/Array%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28~lib/array/Array%29=>i32> + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/function/Function<%28~lib/array/Array%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/array/Array%29=>i32>~visit + return + end + unreachable + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28~lib/array/Array%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28~lib/array/Array%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/issues/2707.release.wat b/tests/compiler/issues/2707.release.wat index bdafcad22f..fd4e10066d 100644 --- a/tests/compiler/issues/2707.release.wat +++ b/tests/compiler/issues/2707.release.wat @@ -2,11 +2,11 @@ (type $0 (func (param i32) (result i32))) (type $1 (func)) (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,23 +17,44 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34316)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36284)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\05\00\00\00\08\00\00\00\01") (data $1 (i32.const 1068) ",") (data $1.1 (i32.const 1080) "\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") - (data $2 (i32.const 1116) "<") - (data $2.1 (i32.const 1128) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $3 (i32.const 1180) "<") - (data $3.1 (i32.const 1192) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $6 (i32.const 1308) "<") - (data $6.1 (i32.const 1320) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $7 (i32.const 1372) ",") - (data $7.1 (i32.const 1384) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $9 (i32.const 1452) "<") - (data $9.1 (i32.const 1464) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $10 (i32.const 1520) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t") + (data $2 (i32.const 1116) "\1c") + (data $2.1 (i32.const 1128) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $3 (i32.const 1148) "\1c") + (data $3.1 (i32.const 1160) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $4 (i32.const 1180) "\1c") + (data $4.1 (i32.const 1192) "\02") + (data $5 (i32.const 1212) "\1c") + (data $5.1 (i32.const 1224) "\02\00\00\00\02\00\00\00:") + (data $6 (i32.const 1244) "|") + (data $6.1 (i32.const 1256) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $8 (i32.const 1436) "\1c") + (data $8.1 (i32.const 1448) "\02\00\00\00\02\00\00\000") + (data $9 (i32.const 1468) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $10 (i32.const 1868) "\1c\04") + (data $10.1 (i32.const 1880) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $11 (i32.const 2924) "\\") + (data $11.1 (i32.const 2936) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $12 (i32.const 3020) "<") + (data $12.1 (i32.const 3032) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $13 (i32.const 3084) "<") + (data $13.1 (i32.const 3096) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $14 (i32.const 3148) "<") + (data $14.1 (i32.const 3160) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $17 (i32.const 3276) "<") + (data $17.1 (i32.const 3288) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $18 (i32.const 3340) ",") + (data $18.1 (i32.const 3352) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $20 (i32.const 3420) "<") + (data $20.1 (i32.const 3432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $21 (i32.const 3488) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t") (table $0 2 2 funcref) (elem $0 (i32.const 1) $start:issues/2707~anonymous|0) (export "memory" (memory $0)) @@ -41,12 +62,214 @@ (func $start:issues/2707~anonymous|0 (param $0 i32) (result i32) i32.const 1 ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3516 + i32.lt_s + if + i32.const 36304 + i32.const 36352 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1456 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1468 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1468 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1468 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1468 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1328 + i32.const 3296 call $~lib/rt/itcms/__visit - i32.const 1136 + i32.const 3104 + call $~lib/rt/itcms/__visit + i32.const 1888 + call $~lib/rt/itcms/__visit + i32.const 2944 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -67,7 +290,7 @@ i32.ne if i32.const 0 - i32.const 1200 + i32.const 3168 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -100,7 +323,7 @@ i32.eqz if i32.const 0 - i32.const 1200 + i32.const 3168 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -109,7 +332,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$119 + block $__inlined_func$~lib/rt/itcms/Object#unlink$132 local.get $0 i32.load offset=4 i32.const -4 @@ -121,19 +344,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34316 + i32.const 36284 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1200 + i32.const 3168 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$119 + br $__inlined_func$~lib/rt/itcms/Object#unlink$132 end local.get $0 i32.load offset=8 @@ -141,7 +364,7 @@ i32.eqz if i32.const 0 - i32.const 1200 + i32.const 3168 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -170,12 +393,12 @@ i32.const 1 else local.get $1 - i32.const 1520 + i32.const 3488 i32.load i32.gt_u if - i32.const 1328 - i32.const 1392 + i32.const 3296 + i32.const 3360 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -184,7 +407,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1524 + i32.const 3492 i32.add i32.load i32.const 32 @@ -255,7 +478,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 3440 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -269,7 +492,7 @@ i32.lt_u if i32.const 0 - i32.const 1472 + i32.const 3440 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -315,7 +538,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 3440 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -398,7 +621,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 3440 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -412,7 +635,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 3440 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -473,7 +696,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 3440 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -506,7 +729,7 @@ i32.lt_u if i32.const 0 - i32.const 1472 + i32.const 3440 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -521,7 +744,7 @@ i32.ne if i32.const 0 - i32.const 1472 + i32.const 3440 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -572,7 +795,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 3440 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -644,7 +867,7 @@ i64.lt_u if i32.const 0 - i32.const 1472 + i32.const 3440 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -669,7 +892,7 @@ i32.gt_u if i32.const 0 - i32.const 1472 + i32.const 3440 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -696,7 +919,7 @@ i32.gt_u if i32.const 0 - i32.const 1472 + i32.const 3440 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -768,10 +991,10 @@ if unreachable end - i32.const 34320 + i32.const 36288 i32.const 0 i32.store - i32.const 35888 + i32.const 37856 i32.const 0 i32.store loop $for-loop|0 @@ -782,7 +1005,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34320 + i32.const 36288 i32.add i32.const 0 i32.store offset=4 @@ -800,7 +1023,7 @@ i32.add i32.const 2 i32.shl - i32.const 34320 + i32.const 36288 i32.add i32.const 0 i32.store offset=96 @@ -818,14 +1041,14 @@ br $for-loop|0 end end - i32.const 34320 - i32.const 35892 + i32.const 36288 + i32.const 37860 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34320 + i32.const 36288 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -910,7 +1133,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34316 + i32.const 36284 i32.lt_u if local.get $0 @@ -999,14 +1222,14 @@ i32.ne if i32.const 0 - i32.const 1200 + i32.const 3168 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34316 + i32.const 36284 i32.lt_u if local.get $0 @@ -1029,7 +1252,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34316 + i32.const 36284 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1058,7 +1281,7 @@ end if i32.const 0 - i32.const 1472 + i32.const 3440 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1088,18 +1311,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3440 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -4 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1107,32 +1397,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1472 + i32.const 3440 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1145,23 +1439,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3104 + i32.const 3168 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 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 @@ -1175,9 +1481,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1200,31 +1506,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.const 1073741820 + i32.gt_u if - memory.size - local.tee $1 - i32.const 4 + i32.const 3104 + i32.const 3440 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 i32.load offset=1568 - local.get $1 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65579 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1240,8 +1601,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1249,119 +1610,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1472 + i32.const 3440 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 44 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1472 + i32.const 3440 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3440 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 44 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 44 i32.or i32.store - local.get $1 - i32.const 48 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 16 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1369,97 +1747,14 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i64.const 0 - i64.store align=1 - local.get $0 - i64.const 0 - i64.store offset=8 align=1 + local.tee $1 + i32.const 0 local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $~lib/function/Function<%28~lib/array/Array%29=>i32> - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/function/Function<%28~lib/array/Array%29=>i32> $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1548 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1548 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - unreachable - end - i32.const 34336 - i32.const 34384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + memory.fill + local.get $1 ) (func $~start (local $0 i32) @@ -1472,7 +1767,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1548 + i32.const 3516 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1481,47 +1776,48 @@ memory.size i32.const 16 i32.shl - i32.const 34316 + i32.const 36284 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1252 - i32.const 1248 + i32.const 3220 + i32.const 3216 i32.store - i32.const 1256 - i32.const 1248 + i32.const 3224 + i32.const 3216 i32.store - i32.const 1248 + i32.const 3216 global.set $~lib/rt/itcms/pinSpace - i32.const 1284 - i32.const 1280 + i32.const 3252 + i32.const 3248 i32.store - i32.const 1288 - i32.const 1280 + i32.const 3256 + i32.const 3248 i32.store - i32.const 1280 + i32.const 3248 global.set $~lib/rt/itcms/toSpace - i32.const 1428 - i32.const 1424 + i32.const 3396 + i32.const 3392 i32.store - i32.const 1432 - i32.const 1424 + i32.const 3400 + i32.const 3392 i32.store - i32.const 1424 + i32.const 3392 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1548 + i32.const 3516 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer + i32.const 16 i32.const 1 call $~lib/rt/itcms/__new local.tee $0 @@ -1530,6 +1826,7 @@ memory.copy local.get $0 i32.store + i32.const 16 i32.const 4 call $~lib/rt/itcms/__new local.tee $2 @@ -1541,7 +1838,7 @@ i32.eqz if i32.const 0 - i32.const 1200 + i32.const 3168 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1612,8 +1909,289 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34336 - i32.const 34384 + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3516 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3516 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$139 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1200 + local.set $0 + br $__inlined_func$~lib/string/String#concat$139 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3516 + i32.lt_s + if + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1136 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1168 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1232 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1232 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3040 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/function/Function<%28~lib/array/Array%29=>i32> + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/function/Function<%28~lib/array/Array%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3516 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3516 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + end + i32.const 36304 + i32.const 36352 i32.const 1 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/issues/2825.debug.wat b/tests/compiler/issues/2825.debug.wat index 4ecc4ddd57..2a75e3f73f 100644 --- a/tests/compiler/issues/2825.debug.wat +++ b/tests/compiler/issues/2825.debug.wat @@ -1,18 +1,2691 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/memory/__data_end i32 (i32.const 60)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) - (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2452)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35220)) + (global $~lib/memory/__heap_base i32 (i32.const 35220)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\008\002\005\00.\00t\00s\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\008\002\005\00.\00t\00s\00") + (data $20 (i32.const 2432) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "init" (func $issues/2825/init)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $issues/2825/increment (param $x i32) (result i32) local.get $x i32.const 1234 @@ -20,7 +2693,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2 i32.const 3 call $~lib/builtins/abort @@ -34,6 +2707,23 @@ (func $start:issues/2825 (local $i i32) (local $i|1 i32) + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 0 local.set $i loop $for-loop|0 @@ -66,4 +2756,421 @@ (func $~start call $start:issues/2825 ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35248 + i32.const 35296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/issues/2825.release.wat b/tests/compiler/issues/2825.release.wat index c11fb2dae0..629aff33e3 100644 --- a/tests/compiler/issues/2825.release.wat +++ b/tests/compiler/issues/2825.release.wat @@ -1,13 +1,1750 @@ (module (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36244)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\008\002\005\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\008\002\005\00.\00t\00s") + (data $20 (i32.const 3456) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "init" (func $issues/2825/init)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$120 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36244 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$120 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3456 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3460 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36256 + i32.const 0 + i32.store + i32.const 37824 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36256 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36256 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36256 + i32.const 37828 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36256 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36244 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36244 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36244 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3476 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $issues/2825/init loop $for-loop|0 br $for-loop|0 @@ -16,6 +1753,38 @@ ) (func $~start (local $0 i32) + memory.size + i32.const 16 + i32.shl + i32.const 36244 + 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 loop $for-loop|0 local.get $0 i32.const 10 @@ -26,7 +1795,7 @@ i32.eq if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2 i32.const 3 call $~lib/builtins/abort @@ -40,4 +1809,228 @@ end end ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$126 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$126 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/issues/2873.debug.wat b/tests/compiler/issues/2873.debug.wat index 6e59a0ad5a..218124ba11 100644 --- a/tests/compiler/issues/2873.debug.wat +++ b/tests/compiler/issues/2873.debug.wat @@ -1,24 +1,26 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) (type $4 (func)) (type $5 (func (param i32 i32 i32) (result i32))) (type $6 (func (param i32 i32 i32))) (type $7 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $8 (func (param i32 f64 i32) (result i32))) - (type $9 (func (param i32 i32 i32 i32))) - (type $10 (func (param i32 i32 i64) (result i32))) - (type $11 (func (result i32))) - (type $12 (func (param f32 i32) (result i32))) - (type $13 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $14 (func (param f64 i32) (result i32))) - (type $15 (func (param i32 f32) (result i32))) - (type $16 (func (param i32 f64) (result i32))) - (type $17 (func (param f32) (result i32))) - (type $18 (func (param f64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param i32 i32 i64) (result i32))) + (type $13 (func (result i32))) + (type $14 (func (param f32 i32) (result i32))) + (type $15 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $16 (func (param f64 i32) (result i32))) + (type $17 (func (param i32 f32) (result i32))) + (type $18 (func (param i32 f64) (result i32))) + (type $19 (func (param i32 i32 i32 i32))) + (type $20 (func (param f32) (result i32))) + (type $21 (func (param f64) (result i32))) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) (global $~lib/util/number/_exp (mut i32) (i32.const 0)) @@ -26,6 +28,9 @@ (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~lib/native/ASC_SHRINK_LEVEL 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/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)) @@ -34,18 +39,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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $issues/2873/f32arr i32 (i32.const 2080)) - (global $issues/2873/f64arr i32 (i32.const 2288)) - (global $~lib/rt/__rtti_base i32 (i32.const 2320)) - (global $~lib/memory/__data_end i32 (i32.const 2348)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35116)) - (global $~lib/memory/__heap_base i32 (i32.const 35116)) + (global $issues/2873/f32arr i32 (i32.const 3648)) + (global $issues/2873/f64arr i32 (i32.const 3824)) + (global $~lib/rt/__rtti_base i32 (i32.const 3856)) + (global $~lib/memory/__data_end i32 (i32.const 3884)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36652)) + (global $~lib/memory/__heap_base i32 (i32.const 36652)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") @@ -56,24 +58,33 @@ (data $6 (i32.const 928) "<\fbW\fbr\fb\8c\fb\a7\fb\c1\fb\dc\fb\f6\fb\11\fc,\fcF\fca\fc{\fc\96\fc\b1\fc\cb\fc\e6\fc\00\fd\1b\fd5\fdP\fdk\fd\85\fd\a0\fd\ba\fd\d5\fd\ef\fd\n\fe%\fe?\feZ\fet\fe\8f\fe\a9\fe\c4\fe\df\fe\f9\fe\14\ff.\ffI\ffc\ff~\ff\99\ff\b3\ff\ce\ff\e8\ff\03\00\1e\008\00S\00m\00\88\00\a2\00\bd\00\d8\00\f2\00\r\01\'\01B\01\\\01w\01\92\01\ac\01\c7\01\e1\01\fc\01\16\021\02L\02f\02\81\02\9b\02\b6\02\d0\02\eb\02\06\03 \03;\03U\03p\03\8b\03\a5\03\c0\03\da\03\f5\03\0f\04*\04") (data $7 (i32.const 1104) "\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;") (data $8 (i32.const 1144) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data $9 (i32.const 1548) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $10 (i32.const 1612) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 1680) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 1712) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 1740) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 1804) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 1856) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 1884) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $17 (i32.const 1948) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00.\001\00\00\00\00\00\00\00") - (data $18 (i32.const 1980) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\008\007\003\00.\00t\00s\00") - (data $19 (i32.const 2028) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\cd\cc\8c?\cd\cc\0c@33S@") - (data $20 (i32.const 2060) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00\00\08\00\00\00\08\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $21 (i32.const 2108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $22 (i32.const 2140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") - (data $23 (i32.const 2172) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\001\00.\001\00,\002\00.\002\00,\003\00.\003\00\00\00\00\00\00\00") - (data $24 (i32.const 2220) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\9a\99\99\99\99\99\f1?\9a\99\99\99\99\99\01@ffffff\n@\00\00\00\00") - (data $25 (i32.const 2268) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\10\00\00\00\c0\08\00\00\c0\08\00\00\18\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $26 (i32.const 2320) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\19\00\00\02\1a\00\00") + (data $9 (i32.const 1548) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $10 (i32.const 1580) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $11 (i32.const 1612) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 1644) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 1676) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 1804) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $15 (i32.const 1868) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 1900) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2956) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 3052) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 3116) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $20 (i32.const 3180) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 3248) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 3280) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 3308) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 3372) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 3424) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 3452) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 3516) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00.\001\00\00\00\00\00\00\00") + (data $28 (i32.const 3548) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\008\007\003\00.\00t\00s\00") + (data $29 (i32.const 3596) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\cd\cc\8c?\cd\cc\0c@33S@") + (data $30 (i32.const 3628) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00 \0e\00\00 \0e\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 3676) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 3708) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\001\00.\001\00,\002\00.\002\00,\003\00.\003\00\00\00\00\00\00\00") + (data $33 (i32.const 3756) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\9a\99\99\99\99\99\f1?\9a\99\99\99\99\99\01@ffffff\n@\00\00\00\00") + (data $34 (i32.const 3804) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\10\00\00\00\c0\0e\00\00\c0\0e\00\00\18\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $35 (i32.const 3856) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\19\00\00\02\1a\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -1643,6 +1654,240 @@ i32.add return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1920 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1920 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2976 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2976 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -1707,7 +1952,7 @@ i32.eqz if i32.const 0 - i32.const 1632 + i32.const 3200 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -1777,7 +2022,7 @@ i32.eqz if i32.const 0 - i32.const 1632 + i32.const 3200 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -1794,7 +2039,7 @@ i32.eqz if i32.const 0 - i32.const 1632 + i32.const 3200 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -1824,8 +2069,8 @@ i32.load i32.gt_u if - i32.const 1760 - i32.const 1824 + i32.const 3328 + i32.const 3392 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -1893,7 +2138,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 1632 + i32.const 3200 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -2045,7 +2290,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 3472 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -2065,7 +2310,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 3472 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -2128,7 +2373,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 3472 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -2281,7 +2526,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 3472 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -2298,7 +2543,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 3472 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -2387,7 +2632,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 3472 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -2430,7 +2675,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 3472 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -2448,7 +2693,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 3472 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -2516,7 +2761,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 3472 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -2633,7 +2878,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 3472 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -2679,7 +2924,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 3472 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -2711,7 +2956,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 3472 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -2955,7 +3200,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 3472 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -3175,7 +3420,7 @@ i32.eqz if i32.const 0 - i32.const 1632 + i32.const 3200 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -3283,8 +3528,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1568 - i32.const 1904 + i32.const 3136 + i32.const 3472 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -3386,7 +3631,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 3472 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -3457,7 +3702,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 3472 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -3614,7 +3859,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 3472 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -3729,7 +3974,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 3472 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -3749,7 +3994,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 3472 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -3797,8 +4042,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1568 - i32.const 1632 + i32.const 3136 + i32.const 3200 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -3848,19 +4093,6 @@ call $~lib/util/number/dtoa return ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u - return - ) (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) (local $ptr1 i32) (local $ptr2 i32) @@ -4159,117 +4391,226 @@ end return ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $issues/2873/f32arr - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $issues/2873/f64arr - local.tee $1 + (func $~start + call $start:issues/2873 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 36672 + i32.const 36720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 1760 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 1568 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 1632 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - unreachable + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~start - call $start:issues/2873 + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 1568 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 35136 - i32.const 35184 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1600 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 1664 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 1664 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 3072 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) (local $leftLength i32) @@ -4465,7 +4806,7 @@ local.get $size i32.eqz if - i32.const 2128 + i32.const 1632 local.set $22 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -4541,7 +4882,7 @@ i32.const 0 i32.lt_s if - i32.const 2128 + i32.const 1632 local.set $10 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -4761,7 +5102,7 @@ i32.const 0 i32.lt_s if - i32.const 2128 + i32.const 1632 local.set $10 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -4976,13 +5317,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1680 + i32.const 3248 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 1712 + i32.const 3280 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 1856 + i32.const 3424 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace f32.const 1.100000023841858 @@ -4993,12 +5334,12 @@ local.get $2 i32.store local.get $2 - i32.const 1968 + i32.const 3536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2000 + i32.const 3568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5012,12 +5353,12 @@ local.get $2 i32.store local.get $2 - i32.const 1968 + i32.const 3536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2000 + i32.const 3568 i32.const 2 i32.const 1 call $~lib/builtins/abort @@ -5029,19 +5370,19 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2160 + i32.const 3696 call $~lib/array/Array#join local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 - i32.const 2192 + i32.const 3728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2000 + i32.const 3568 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -5053,19 +5394,19 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2160 + i32.const 3696 call $~lib/array/Array#join local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 - i32.const 2192 + i32.const 3728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2000 + i32.const 3568 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -5076,34 +5417,18 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -5112,21 +5437,132 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 1696 + i32.const 1824 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 1888 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $12 + return ) (func $~lib/util/number/dtoa (param $value f32) (result i32) (local $value|1 f64) @@ -5281,4 +5717,158 @@ local.get $5 return ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $issues/2873/f32arr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2873/f64arr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 3328 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 3136 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1920 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2976 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/issues/2873.release.wat b/tests/compiler/issues/2873.release.wat index 72b243e83c..a466829881 100644 --- a/tests/compiler/issues/2873.release.wat +++ b/tests/compiler/issues/2873.release.wat @@ -1,21 +1,20 @@ (module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32) (result i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i64 i64 i32 i64 i32) (result i32))) - (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32) (result i32))) - (type $7 (func (param i32 f64 i32) (result i32))) - (type $8 (func (param i32 i32 i32 i32))) + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i64 i64 i32 i64 i32) (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32) (result i32))) + (type $8 (func (param i32 f64 i32) (result i32))) (type $9 (func (param i32 i32 i64))) (type $10 (func (result i32))) - (type $11 (func (param i32) (result i32))) - (type $12 (func (param i32 f32) (result i32))) - (type $13 (func (param i32 f64) (result i32))) + (type $11 (func (param i32 f32) (result i32))) + (type $12 (func (param i32 f64) (result i32))) + (type $13 (func (param i32 i32 i32 i32))) (type $14 (func (param f32) (result i32))) (type $15 (func (param f64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) (global $~lib/util/number/_exp (mut i32) (i32.const 0)) @@ -32,7 +31,7 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36140)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37676)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02\00\00\00\06\00\00\000\00.\000") @@ -46,35 +45,53 @@ (data $6 (i32.const 1952) "<\fbW\fbr\fb\8c\fb\a7\fb\c1\fb\dc\fb\f6\fb\11\fc,\fcF\fca\fc{\fc\96\fc\b1\fc\cb\fc\e6\fc\00\fd\1b\fd5\fdP\fdk\fd\85\fd\a0\fd\ba\fd\d5\fd\ef\fd\n\fe%\fe?\feZ\fet\fe\8f\fe\a9\fe\c4\fe\df\fe\f9\fe\14\ff.\ffI\ffc\ff~\ff\99\ff\b3\ff\ce\ff\e8\ff\03\00\1e\008\00S\00m\00\88\00\a2\00\bd\00\d8\00\f2\00\r\01\'\01B\01\\\01w\01\92\01\ac\01\c7\01\e1\01\fc\01\16\021\02L\02f\02\81\02\9b\02\b6\02\d0\02\eb\02\06\03 \03;\03U\03p\03\8b\03\a5\03\c0\03\da\03\f5\03\0f\04*\04") (data $7 (i32.const 2128) "\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;") (data $8 (i32.const 2168) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data $9 (i32.const 2572) "<") - (data $9.1 (i32.const 2584) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $10 (i32.const 2636) "<") - (data $10.1 (i32.const 2648) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $13 (i32.const 2764) "<") - (data $13.1 (i32.const 2776) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $14 (i32.const 2828) ",") - (data $14.1 (i32.const 2840) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $16 (i32.const 2908) "<") - (data $16.1 (i32.const 2920) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $17 (i32.const 2972) "\1c") - (data $17.1 (i32.const 2984) "\02\00\00\00\06\00\00\001\00.\001") - (data $18 (i32.const 3004) ",") - (data $18.1 (i32.const 3016) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\008\007\003\00.\00t\00s") - (data $19 (i32.const 3052) "\1c") - (data $19.1 (i32.const 3064) "\01\00\00\00\0c\00\00\00\cd\cc\8c?\cd\cc\0c@33S@") - (data $20 (i32.const 3084) ",") - (data $20.1 (i32.const 3096) "\04\00\00\00\10\00\00\00\00\0c\00\00\00\0c\00\00\0c\00\00\00\03") - (data $21 (i32.const 3132) "\1c") - (data $21.1 (i32.const 3144) "\02") - (data $22 (i32.const 3164) "\1c") - (data $22.1 (i32.const 3176) "\02\00\00\00\02\00\00\00,") - (data $23 (i32.const 3196) ",") - (data $23.1 (i32.const 3208) "\02\00\00\00\16\00\00\001\00.\001\00,\002\00.\002\00,\003\00.\003") - (data $24 (i32.const 3244) ",") - (data $24.1 (i32.const 3256) "\01\00\00\00\18\00\00\00\9a\99\99\99\99\99\f1?\9a\99\99\99\99\99\01@ffffff\n@") - (data $25 (i32.const 3292) ",") - (data $25.1 (i32.const 3304) "\05\00\00\00\10\00\00\00\c0\0c\00\00\c0\0c\00\00\18\00\00\00\03") - (data $26 (i32.const 3344) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\19\00\00\02\1a") + (data $9 (i32.const 2572) "\1c") + (data $9.1 (i32.const 2584) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $10 (i32.const 2604) "\1c") + (data $10.1 (i32.const 2616) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $11 (i32.const 2636) "\1c") + (data $11.1 (i32.const 2648) "\02") + (data $12 (i32.const 2668) "\1c") + (data $12.1 (i32.const 2680) "\02\00\00\00\02\00\00\00:") + (data $13 (i32.const 2700) "|") + (data $13.1 (i32.const 2712) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $14 (i32.const 2828) "<") + (data $14.1 (i32.const 2840) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $15 (i32.const 2892) "\1c") + (data $15.1 (i32.const 2904) "\02\00\00\00\02\00\00\000") + (data $16 (i32.const 2924) "\1c\04") + (data $16.1 (i32.const 2936) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3980) "\\") + (data $17.1 (i32.const 3992) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 4076) "<") + (data $18.1 (i32.const 4088) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 4140) "<") + (data $19.1 (i32.const 4152) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $20 (i32.const 4204) "<") + (data $20.1 (i32.const 4216) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $23 (i32.const 4332) "<") + (data $23.1 (i32.const 4344) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $24 (i32.const 4396) ",") + (data $24.1 (i32.const 4408) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $26 (i32.const 4476) "<") + (data $26.1 (i32.const 4488) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $27 (i32.const 4540) "\1c") + (data $27.1 (i32.const 4552) "\02\00\00\00\06\00\00\001\00.\001") + (data $28 (i32.const 4572) ",") + (data $28.1 (i32.const 4584) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\008\007\003\00.\00t\00s") + (data $29 (i32.const 4620) "\1c") + (data $29.1 (i32.const 4632) "\01\00\00\00\0c\00\00\00\cd\cc\8c?\cd\cc\0c@33S@") + (data $30 (i32.const 4652) ",") + (data $30.1 (i32.const 4664) "\04\00\00\00\10\00\00\00 \12\00\00 \12\00\00\0c\00\00\00\03") + (data $31 (i32.const 4700) "\1c") + (data $31.1 (i32.const 4712) "\02\00\00\00\02\00\00\00,") + (data $32 (i32.const 4732) ",") + (data $32.1 (i32.const 4744) "\02\00\00\00\16\00\00\001\00.\001\00,\002\00.\002\00,\003\00.\003") + (data $33 (i32.const 4780) ",") + (data $33.1 (i32.const 4792) "\01\00\00\00\18\00\00\00\9a\99\99\99\99\99\f1?\9a\99\99\99\99\99\01@ffffff\n@") + (data $34 (i32.const 4828) ",") + (data $34.1 (i32.const 4840) "\05\00\00\00\10\00\00\00\c0\12\00\00\c0\12\00\00\18\00\00\00\03") + (data $35 (i32.const 4880) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\19\00\00\02\1a") (export "memory" (memory $0)) (start $~start) (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) @@ -1248,16 +1265,118 @@ local.get $4 i32.add ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4908 + i32.lt_s + if + i32.const 37696 + i32.const 37744 + 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$4 + local.get $0 + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2912 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$4 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 3104 + i32.const 4672 call $~lib/rt/itcms/__visit - i32.const 3312 + i32.const 4848 call $~lib/rt/itcms/__visit - i32.const 2784 + i32.const 4352 call $~lib/rt/itcms/__visit - i32.const 2592 + i32.const 4160 + call $~lib/rt/itcms/__visit + i32.const 2944 + call $~lib/rt/itcms/__visit + i32.const 4000 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -1278,7 +1397,7 @@ i32.ne if i32.const 0 - i32.const 2656 + i32.const 4224 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -1326,7 +1445,7 @@ i32.eqz if i32.const 0 - i32.const 2656 + i32.const 4224 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -1335,7 +1454,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$138 + block $__inlined_func$~lib/rt/itcms/Object#unlink$149 local.get $1 i32.load offset=4 i32.const -4 @@ -1347,19 +1466,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 36140 + i32.const 37676 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 2656 + i32.const 4224 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$138 + br $__inlined_func$~lib/rt/itcms/Object#unlink$149 end local.get $1 i32.load offset=8 @@ -1367,7 +1486,7 @@ i32.eqz if i32.const 0 - i32.const 2656 + i32.const 4224 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -1396,12 +1515,12 @@ i32.const 1 else local.get $0 - i32.const 3344 + i32.const 4880 i32.load i32.gt_u if - i32.const 2784 - i32.const 2848 + i32.const 4352 + i32.const 4416 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -1410,7 +1529,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 3348 + i32.const 4884 i32.add i32.load i32.const 32 @@ -1462,7 +1581,7 @@ i32.eqz if i32.const 0 - i32.const 2928 + i32.const 4496 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -1476,7 +1595,7 @@ i32.lt_u if i32.const 0 - i32.const 2928 + i32.const 4496 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -1522,7 +1641,7 @@ i32.eqz if i32.const 0 - i32.const 2928 + i32.const 4496 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -1605,7 +1724,7 @@ i32.eqz if i32.const 0 - i32.const 2928 + i32.const 4496 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -1619,7 +1738,7 @@ i32.eqz if i32.const 0 - i32.const 2928 + i32.const 4496 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -1680,7 +1799,7 @@ i32.eqz if i32.const 0 - i32.const 2928 + i32.const 4496 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -1713,7 +1832,7 @@ i32.lt_u if i32.const 0 - i32.const 2928 + i32.const 4496 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -1728,7 +1847,7 @@ i32.ne if i32.const 0 - i32.const 2928 + i32.const 4496 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -1779,7 +1898,7 @@ i32.eqz if i32.const 0 - i32.const 2928 + i32.const 4496 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1851,7 +1970,7 @@ i64.lt_u if i32.const 0 - i32.const 2928 + i32.const 4496 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1876,7 +1995,7 @@ i32.gt_u if i32.const 0 - i32.const 2928 + i32.const 4496 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1903,7 +2022,7 @@ i32.gt_u if i32.const 0 - i32.const 2928 + i32.const 4496 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1975,10 +2094,10 @@ if unreachable end - i32.const 36144 + i32.const 37680 i32.const 0 i32.store - i32.const 37712 + i32.const 39248 i32.const 0 i32.store loop $for-loop|0 @@ -1989,7 +2108,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 36144 + i32.const 37680 i32.add i32.const 0 i32.store offset=4 @@ -2007,7 +2126,7 @@ i32.add i32.const 2 i32.shl - i32.const 36144 + i32.const 37680 i32.add i32.const 0 i32.store offset=96 @@ -2025,14 +2144,14 @@ br $for-loop|0 end end - i32.const 36144 - i32.const 37716 + i32.const 37680 + i32.const 39252 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 36144 + i32.const 37680 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -2117,7 +2236,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 36140 + i32.const 37676 i32.lt_u if local.get $0 @@ -2206,14 +2325,14 @@ i32.ne if i32.const 0 - i32.const 2656 + i32.const 4224 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 36140 + i32.const 37676 i32.lt_u if local.get $0 @@ -2236,7 +2355,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 36140 + i32.const 37676 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -2265,7 +2384,7 @@ end if i32.const 0 - i32.const 2928 + i32.const 4496 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -2349,7 +2468,7 @@ i32.eqz if i32.const 0 - i32.const 2928 + i32.const 4496 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -2401,7 +2520,7 @@ i32.eqz if i32.const 0 - i32.const 2928 + i32.const 4496 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2433,8 +2552,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 2592 - i32.const 2656 + i32.const 4160 + i32.const 4224 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2444,7 +2563,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$72 + block $__inlined_func$~lib/rt/itcms/interrupt$74 i32.const 2048 local.set $1 loop $do-loop|0 @@ -2465,7 +2584,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$72 + br $__inlined_func$~lib/rt/itcms/interrupt$74 end local.get $1 i32.const 0 @@ -2498,8 +2617,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 2592 - i32.const 2928 + i32.const 4160 + i32.const 4496 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -2601,7 +2720,7 @@ i32.eqz if i32.const 0 - i32.const 2928 + i32.const 4496 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2616,7 +2735,7 @@ i32.gt_u if i32.const 0 - i32.const 2928 + i32.const 4496 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2635,7 +2754,7 @@ i32.and if i32.const 0 - i32.const 2928 + i32.const 4496 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2889,71 +3008,6 @@ call $~lib/util/number/dtoa_core end ) - (func $~lib/array/Array~visit (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3372 - i32.lt_s - if - i32.const 36160 - i32.const 36208 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - unreachable - ) (func $~start (local $0 i32) (local $1 i32) @@ -2968,7 +3022,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 3372 + i32.const 4908 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2977,34 +3031,34 @@ memory.size i32.const 16 i32.shl - i32.const 36140 + i32.const 37676 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 2708 - i32.const 2704 + i32.const 4276 + i32.const 4272 i32.store - i32.const 2712 - i32.const 2704 + i32.const 4280 + i32.const 4272 i32.store - i32.const 2704 + i32.const 4272 global.set $~lib/rt/itcms/pinSpace - i32.const 2740 - i32.const 2736 + i32.const 4308 + i32.const 4304 i32.store - i32.const 2744 - i32.const 2736 + i32.const 4312 + i32.const 4304 i32.store - i32.const 2736 + i32.const 4304 global.set $~lib/rt/itcms/toSpace - i32.const 2884 - i32.const 2880 + i32.const 4452 + i32.const 4448 i32.store - i32.const 2888 - i32.const 2880 + i32.const 4456 + i32.const 4448 i32.store - i32.const 2880 + i32.const 4448 global.set $~lib/rt/itcms/fromSpace f32.const 1.100000023841858 call $~lib/util/number/dtoa @@ -3013,12 +3067,12 @@ local.get $1 i32.store local.get $1 - i32.const 2992 + i32.const 4560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3024 + i32.const 4592 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3031,58 +3085,58 @@ local.get $1 i32.store local.get $1 - i32.const 2992 + i32.const 4560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3024 + i32.const 4592 i32.const 2 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 3104 + 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 3372 + i32.const 4908 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3104 + i32.const 4672 i32.store - i32.const 3108 + i32.const 4676 i32.load local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 3104 + i32.const 4672 i32.store - i32.const 3116 + i32.const 4684 i32.load local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 3184 + i32.const 4720 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 3372 + i32.const 4908 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinFloatArray$143 + block $__inlined_func$~lib/util/string/joinFloatArray$154 local.get $1 i32.const 1 i32.sub @@ -3094,9 +3148,9 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 3152 + i32.const 2656 local.set $1 - br $__inlined_func$~lib/util/string/joinFloatArray$143 + br $__inlined_func$~lib/util/string/joinFloatArray$154 end local.get $4 i32.eqz @@ -3109,13 +3163,13 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinFloatArray$143 + br $__inlined_func$~lib/util/string/joinFloatArray$154 end global.get $~lib/memory/__stack_pointer - i32.const 3184 + i32.const 4720 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3180 + i32.const 4716 i32.load i32.const 1 i32.shr_u @@ -3159,7 +3213,7 @@ i32.const 1 i32.shl i32.add - i32.const 3184 + i32.const 4720 local.get $5 i32.const 1 i32.shl @@ -3205,7 +3259,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinFloatArray$143 + br $__inlined_func$~lib/util/string/joinFloatArray$154 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -3220,58 +3274,58 @@ local.get $1 i32.store local.get $1 - i32.const 3216 + i32.const 4752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3024 + i32.const 4592 i32.const 5 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 3312 + 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 3372 + i32.const 4908 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3312 + i32.const 4848 i32.store - i32.const 3316 + i32.const 4852 i32.load local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 3312 + i32.const 4848 i32.store - i32.const 3324 + i32.const 4860 i32.load local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 3184 + i32.const 4720 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 3372 + i32.const 4908 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinFloatArray$144 + block $__inlined_func$~lib/util/string/joinFloatArray$155 local.get $0 i32.const 1 i32.sub @@ -3283,9 +3337,9 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 3152 + i32.const 2656 local.set $1 - br $__inlined_func$~lib/util/string/joinFloatArray$144 + br $__inlined_func$~lib/util/string/joinFloatArray$155 end local.get $4 i32.eqz @@ -3298,13 +3352,13 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinFloatArray$144 + br $__inlined_func$~lib/util/string/joinFloatArray$155 end global.get $~lib/memory/__stack_pointer - i32.const 3184 + i32.const 4720 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3180 + i32.const 4716 i32.load i32.const 1 i32.shr_u @@ -3352,7 +3406,7 @@ i32.const 1 i32.shl i32.add - i32.const 3184 + i32.const 4720 local.get $5 i32.const 1 i32.shl @@ -3398,7 +3452,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinFloatArray$144 + br $__inlined_func$~lib/util/string/joinFloatArray$155 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -3413,12 +3467,12 @@ local.get $1 i32.store local.get $1 - i32.const 3216 + i32.const 4752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3024 + i32.const 4592 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -3430,13 +3484,212 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 36160 - i32.const 36208 + i32.const 37696 + i32.const 37744 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4908 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4908 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$156 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2656 + local.set $0 + br $__inlined_func$~lib/string/String#concat$156 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 37696 + i32.const 37744 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4908 + i32.lt_s + if + i32.const 37696 + i32.const 37744 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2592 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 2624 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 2688 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 2688 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 4096 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -3447,11 +3700,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3372 + i32.const 4908 i32.lt_s if - i32.const 36160 - i32.const 36208 + i32.const 37696 + i32.const 37744 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3550,7 +3803,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$82 + block $__inlined_func$~lib/util/string/compareImpl$83 loop $while-continue|1 local.get $0 local.tee $3 @@ -3570,7 +3823,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$82 + br_if $__inlined_func$~lib/util/string/compareImpl$83 local.get $2 i32.const 2 i32.add @@ -3608,11 +3861,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3372 + i32.const 4908 i32.lt_s if - i32.const 36160 - i32.const 36208 + i32.const 37696 + i32.const 37744 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3669,7 +3922,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 3152 + i32.const 2656 return end local.get $3 @@ -3714,11 +3967,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3372 + i32.const 4908 i32.lt_s if - i32.const 36160 - i32.const 36208 + i32.const 37696 + i32.const 37744 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3788,11 +4041,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3372 + i32.const 4908 i32.lt_s if - i32.const 36160 - i32.const 36208 + i32.const 37696 + i32.const 37744 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3852,4 +4105,69 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/array/Array~visit (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4908 + i32.lt_s + if + i32.const 37696 + i32.const 37744 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/logical.debug.wat b/tests/compiler/logical.debug.wat index d5fc0a82e6..9da4669338 100644 --- a/tests/compiler/logical.debug.wat +++ b/tests/compiler/logical.debug.wat @@ -1,19 +1,20 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) - (type $5 (func (param i64 i32) (result i32))) - (type $6 (func (param i32 i32 i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (type $9 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i64 i32) (result i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $logical/i (mut i32) (i32.const 0)) - (global $logical/I (mut i64) (i64.const 0)) - (global $logical/f (mut f32) (f32.const 0)) - (global $logical/F (mut f64) (f64.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/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,33 +23,45 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $logical/I (mut i64) (i64.const 0)) + (global $logical/f (mut f32) (f32.const 0)) + (global $logical/F (mut f64) (f64.const 0)) (global $logical/foo (mut i32) (i32.const 456)) (global $logical/bar (mut f64) (f64.const -0)) (global $logical/baz (mut i32) (i32.const 321)) (global $logical/qux (mut f64) (f64.const 2.718)) (global $logical/b (mut i32) (i32.const 0)) (global $logical/c (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 464)) - (global $~lib/memory/__data_end i32 (i32.const 500)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33268)) - (global $~lib/memory/__heap_base i32 (i32.const 33268)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2468)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35236)) + (global $~lib/memory/__heap_base i32 (i32.const 35236)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 464) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2432) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "foo" (global $logical/foo)) @@ -57,26 +70,17 @@ (export "qux" (global $logical/qux)) (export "memory" (memory $0)) (start $~start) - (func $logical/testShortcutAnd (param $a i64) (param $b i32) (result i32) - local.get $a - i64.const 0 - i64.ne - if (result i32) - local.get $b - else - i32.const 0 - end - return + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 ) - (func $logical/testShortcutOr (param $a i64) (param $b i32) (result i32) - local.get $a - i64.const 0 - i64.ne - if (result i32) - i32.const 1 - else - local.get $b - end + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u return ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) @@ -143,7 +147,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -213,7 +217,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -230,7 +234,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -260,8 +264,8 @@ i32.load i32.gt_u if - i32.const 272 - i32.const 336 + i32.const 320 + i32.const 384 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -329,7 +333,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 144 + i32.const 192 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -481,7 +485,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -501,7 +505,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -564,7 +568,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -717,7 +721,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -734,7 +738,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -823,7 +827,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -866,7 +870,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -884,7 +888,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -952,7 +956,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1069,7 +1073,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1115,7 +1119,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1147,7 +1151,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1391,7 +1395,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1611,7 +1615,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1719,8 +1723,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 80 - i32.const 416 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1822,7 +1826,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1893,7 +1897,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2050,7 +2054,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2165,7 +2169,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2185,7 +2189,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2233,8 +2237,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 80 - i32.const 144 + i32.const 128 + i32.const 192 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2279,6 +2283,444 @@ local.get $ptr return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $logical/testShortcutAnd (param $a i64) (param $b i32) (result i32) + local.get $a + i64.const 0 + i64.ne + if (result i32) + local.get $b + else + i32.const 0 + end + return + ) + (func $logical/testShortcutOr (param $a i64) (param $b i32) (result i32) + local.get $a + i64.const 0 + i64.ne + if (result i32) + i32.const 1 + else + local.get $b + end + return + ) (func $logical/testContextualBoolAnd (param $someObj i32) (param $someInt i32) (result i32) local.get $someObj if (result i32) @@ -2315,93 +2757,226 @@ end return ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $logical/b - local.tee $1 + (func $~start + call $start:logical + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 35264 + i32.const 35312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $logical/c - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 272 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 80 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $logical/C - block $logical/A - block $logical/B - block $logical/Obj - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $logical/Obj $logical/B $logical/A $logical/C $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - return - end + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - unreachable + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~start - call $start:logical + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33296 - i32.const 33344 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $logical/Obj#constructor (param $this i32) (result i32) (local $1 i32) @@ -2604,13 +3179,30 @@ drop i32.const 2 global.set $logical/i + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $logical/i i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -2624,7 +3216,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -2638,7 +3230,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -2652,7 +3244,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -2666,7 +3258,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -2680,7 +3272,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -2694,7 +3286,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 36 i32.const 1 call $~lib/builtins/abort @@ -2708,7 +3300,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 39 i32.const 1 call $~lib/builtins/abort @@ -2722,7 +3314,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -2736,7 +3328,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 47 i32.const 1 call $~lib/builtins/abort @@ -2750,7 +3342,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 50 i32.const 1 call $~lib/builtins/abort @@ -2764,7 +3356,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 53 i32.const 1 call $~lib/builtins/abort @@ -2779,7 +3371,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 56 i32.const 1 call $~lib/builtins/abort @@ -2794,7 +3386,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 59 i32.const 1 call $~lib/builtins/abort @@ -2809,7 +3401,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 62 i32.const 1 call $~lib/builtins/abort @@ -2824,7 +3416,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 65 i32.const 1 call $~lib/builtins/abort @@ -2838,7 +3430,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 76 i32.const 1 call $~lib/builtins/abort @@ -2852,29 +3444,12 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 77 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 192 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 224 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 368 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace i32.const 0 call $logical/Obj#constructor local.set $4 @@ -2889,7 +3464,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 87 i32.const 1 call $~lib/builtins/abort @@ -2909,7 +3484,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 92 i32.const 1 call $~lib/builtins/abort @@ -2933,7 +3508,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 114 i32.const 1 call $~lib/builtins/abort @@ -2946,7 +3521,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 115 i32.const 1 call $~lib/builtins/abort @@ -2964,7 +3539,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 120 i32.const 1 call $~lib/builtins/abort @@ -2977,7 +3552,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 121 i32.const 1 call $~lib/builtins/abort @@ -2988,6 +3563,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -3016,4 +3738,82 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $logical/b + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $logical/c + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $logical/C + block $logical/A + block $logical/B + block $logical/Obj + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $logical/Obj $logical/B $logical/A $logical/C $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/logical.release.wat b/tests/compiler/logical.release.wat index a244889d24..73eb4f7a5e 100644 --- a/tests/compiler/logical.release.wat +++ b/tests/compiler/logical.release.wat @@ -1,12 +1,12 @@ (module - (type $0 (func (param i32) (result i32))) - (type $1 (func)) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (result i32))) - (type $5 (func (param i32 i32 i32 i32))) + (type $0 (func)) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (result i32))) (type $6 (func (param i32 i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -23,21 +23,42 @@ (global $logical/qux (mut f64) (f64.const 2.718)) (global $logical/b (mut i32) (i32.const 0)) (global $logical/c (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34292)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36260)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s") - (data $1 (i32.const 1084) "<") - (data $1.1 (i32.const 1096) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $2 (i32.const 1148) "<") - (data $2.1 (i32.const 1160) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $5 (i32.const 1276) "<") - (data $5.1 (i32.const 1288) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $6 (i32.const 1340) ",") - (data $6.1 (i32.const 1352) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $8 (i32.const 1420) "<") - (data $8.1 (i32.const 1432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $9 (i32.const 1488) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s") + (data $20 (i32.const 3456) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "foo" (global $logical/foo)) (export "bar" (global $logical/bar)) (export "baz" (global $logical/baz)) @@ -59,9 +80,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1296 + i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1104 + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -82,7 +107,7 @@ i32.ne if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -130,7 +155,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -139,7 +164,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$122 + block $__inlined_func$~lib/rt/itcms/Object#unlink$135 local.get $1 i32.load offset=4 i32.const -4 @@ -151,19 +176,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34292 + i32.const 36260 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$122 + br $__inlined_func$~lib/rt/itcms/Object#unlink$135 end local.get $1 i32.load offset=8 @@ -171,7 +196,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -200,12 +225,12 @@ i32.const 1 else local.get $0 - i32.const 1488 + i32.const 3456 i32.load i32.gt_u if - i32.const 1296 - i32.const 1360 + i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -214,7 +239,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1492 + i32.const 3460 i32.add i32.load i32.const 32 @@ -266,7 +291,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -280,7 +305,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -326,7 +351,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -409,7 +434,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -423,7 +448,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -484,7 +509,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -517,7 +542,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -532,7 +557,7 @@ i32.ne if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -583,7 +608,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -655,7 +680,7 @@ i64.lt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -680,7 +705,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -707,7 +732,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -779,10 +804,10 @@ if unreachable end - i32.const 34304 + i32.const 36272 i32.const 0 i32.store - i32.const 35872 + i32.const 37840 i32.const 0 i32.store loop $for-loop|0 @@ -793,7 +818,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34304 + i32.const 36272 i32.add i32.const 0 i32.store offset=4 @@ -811,7 +836,7 @@ i32.add i32.const 2 i32.shl - i32.const 34304 + i32.const 36272 i32.add i32.const 0 i32.store offset=96 @@ -829,14 +854,14 @@ br $for-loop|0 end end - i32.const 34304 - i32.const 35876 + i32.const 36272 + i32.const 37844 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34304 + i32.const 36272 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -921,7 +946,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34292 + i32.const 36260 i32.lt_u if local.get $0 @@ -1010,14 +1035,14 @@ i32.ne if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34292 + i32.const 36260 i32.lt_u if local.get $0 @@ -1040,7 +1065,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34292 + i32.const 36260 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1069,7 +1094,7 @@ end if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1099,18 +1124,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1118,32 +1210,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1156,23 +1252,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 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 @@ -1186,9 +1294,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1211,31 +1319,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if memory.size - local.tee $1 + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end i32.const 4 - local.get $2 + local.get $4 i32.load offset=1568 - local.get $1 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1251,8 +1414,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1260,119 +1423,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1380,62 +1560,223 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 + memory.fill + local.get $1 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $logical/C - block $logical/A - block $logical/B - block $logical/Obj - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $logical/Obj $logical/B $logical/A $logical/C $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3492 + i32.lt_s + if + i32.const 36288 + i32.const 36336 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add end - return end - return + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end - unreachable + local.get $0 ) (func $~start (local $0 i32) - block $__inlined_func$start:logical$1 + block $__inlined_func$start:logical global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1524 + i32.const 3492 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1444,34 +1785,34 @@ memory.size i32.const 16 i32.shl - i32.const 34292 + i32.const 36260 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 + i32.const 1268 + i32.const 1264 i32.store - i32.const 1224 - i32.const 1216 + i32.const 1272 + i32.const 1264 i32.store - i32.const 1216 + i32.const 1264 global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 + i32.const 1300 + i32.const 1296 i32.store - i32.const 1256 - i32.const 1248 + i32.const 1304 + i32.const 1296 i32.store - i32.const 1248 + i32.const 1296 global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 + i32.const 1444 + i32.const 1440 i32.store - i32.const 1400 - i32.const 1392 + i32.const 1448 + i32.const 1440 i32.store - i32.const 1392 + i32.const 1440 global.set $~lib/rt/itcms/fromSpace call $logical/Obj#constructor local.set $0 @@ -1482,7 +1823,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 87 i32.const 1 call $~lib/builtins/abort @@ -1497,7 +1838,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 92 i32.const 1 call $~lib/builtins/abort @@ -1508,13 +1849,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1524 + i32.const 3492 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 5 call $~lib/rt/itcms/__new local.tee $0 @@ -1538,13 +1880,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1524 + i32.const 3492 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 7 call $~lib/rt/itcms/__new local.tee $0 @@ -1575,7 +1918,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 114 i32.const 1 call $~lib/builtins/abort @@ -1593,7 +1936,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 120 i32.const 1 call $~lib/builtins/abort @@ -1603,15 +1946,215 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$start:logical$1 + br $__inlined_func$start:logical + end + i32.const 36288 + i32.const 36336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$140 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$140 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - i32.const 34320 - i32.const 34368 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36288 + i32.const 36336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3492 + i32.lt_s + if + i32.const 36288 + i32.const 36336 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $logical/Obj#constructor (result i32) (local $0 i32) @@ -1620,11 +2163,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1524 + i32.const 3492 i32.lt_s if - i32.const 34320 - i32.const 34368 + i32.const 36288 + i32.const 36336 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1634,6 +2177,7 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 @@ -1658,11 +2202,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1524 + i32.const 3492 i32.lt_s if - i32.const 34320 - i32.const 34368 + i32.const 36288 + i32.const 36336 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1675,6 +2219,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 6 call $~lib/rt/itcms/__new local.tee $0 @@ -1700,11 +2245,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1524 + i32.const 3492 i32.lt_s if - i32.const 34320 - i32.const 34368 + i32.const 36288 + i32.const 36336 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1718,6 +2263,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1728,4 +2274,41 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $logical/C + block $logical/A + block $logical/B + block $logical/Obj + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $logical/Obj $logical/B $logical/A $logical/C $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/loop-flow.debug.wat b/tests/compiler/loop-flow.debug.wat index 2fde4e0b10..d5e440ca06 100644 --- a/tests/compiler/loop-flow.debug.wat +++ b/tests/compiler/loop-flow.debug.wat @@ -1,15 +1,58 @@ (module - (type $0 (func (result i32))) - (type $1 (func (param i32) (result i32))) - (type $2 (func)) - (type $3 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/memory/__data_end i32 (i32.const 92)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32860)) - (global $~lib/memory/__heap_base i32 (i32.const 32860)) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2464)) + (global $~lib/memory/__data_end i32 (i32.const 2484)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35252)) + (global $~lib/memory/__heap_base i32 (i32.const 35252)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s\00\00\00\00\00") - (data $1 (i32.const 60) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00e\00r\00m\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s\00\00\00\00\00") + (data $20 (i32.const 2428) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00e\00r\00m\00\00\00\00\00") + (data $21 (i32.const 2464) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "whileReturn" (func $loop-flow/whileReturn)) @@ -35,6 +78,2635 @@ end unreachable ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $loop-flow/whileAny (param $a i32) (result i32) loop $while-continue|0 i32.const 1 @@ -50,8 +2722,8 @@ i32.const 2 i32.eq if - i32.const 80 - i32.const 32 + i32.const 2448 + i32.const 2400 i32.const 24 i32.const 22 call $~lib/builtins/abort @@ -90,8 +2762,8 @@ i32.const 2 i32.eq if - i32.const 80 - i32.const 32 + i32.const 2448 + i32.const 2400 i32.const 54 i32.const 22 call $~lib/builtins/abort @@ -129,8 +2801,8 @@ i32.const 2 i32.eq if - i32.const 80 - i32.const 32 + i32.const 2448 + i32.const 2400 i32.const 78 i32.const 22 call $~lib/builtins/abort @@ -148,13 +2820,30 @@ unreachable ) (func $start:loop-flow + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $loop-flow/whileReturn i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -167,7 +2856,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -179,7 +2868,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 37 i32.const 1 call $~lib/builtins/abort @@ -192,7 +2881,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 59 i32.const 1 call $~lib/builtins/abort @@ -204,7 +2893,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 67 i32.const 1 call $~lib/builtins/abort @@ -217,7 +2906,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 83 i32.const 1 call $~lib/builtins/abort @@ -228,8 +2917,8 @@ loop $while-continue|0 i32.const 1 if - i32.const 80 - i32.const 32 + i32.const 2448 + i32.const 2400 i32.const 11 i32.const 5 call $~lib/builtins/abort @@ -250,8 +2939,8 @@ (func $loop-flow/forThrow (result i32) i32.const 1 if - i32.const 80 - i32.const 32 + i32.const 2448 + i32.const 2400 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -273,8 +2962,8 @@ ) (func $loop-flow/doThrow (result i32) loop $do-loop|0 - i32.const 80 - i32.const 32 + i32.const 2448 + i32.const 2400 i32.const 71 i32.const 5 call $~lib/builtins/abort @@ -285,4 +2974,421 @@ (func $~start call $start:loop-flow ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35280 + i32.const 35328 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/loop-flow.release.wat b/tests/compiler/loop-flow.release.wat index f6a91f814e..5150e47264 100644 --- a/tests/compiler/loop-flow.release.wat +++ b/tests/compiler/loop-flow.release.wat @@ -1,14 +1,60 @@ (module (type $0 (func (result i32))) (type $1 (func (param i32) (result i32))) - (type $2 (func (param i32 i32 i32 i32))) - (type $3 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36276)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s") - (data $1 (i32.const 1084) "\1c") - (data $1.1 (i32.const 1096) "\02\00\00\00\08\00\00\00t\00e\00r\00m") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s") + (data $20 (i32.const 3452) "\1c") + (data $20.1 (i32.const 3464) "\02\00\00\00\08\00\00\00t\00e\00r\00m") + (data $21 (i32.const 3488) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "whileReturn" (func $loop-flow/whileReturn)) (export "whileThrow" (func $loop-flow/whileThrow)) (export "whileContinue" (func $loop-flow/whileContinue)) @@ -25,6 +71,1695 @@ (func $loop-flow/whileReturn (result i32) i32.const 1 ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$122 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36276 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$122 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3488 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3492 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36288 + i32.const 0 + i32.store + i32.const 37856 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36288 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36288 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36288 + i32.const 37860 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36288 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36276 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36276 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36276 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3508 + i32.lt_s + if + i32.const 36304 + i32.const 36352 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $loop-flow/whileAny (param $0 i32) (result i32) loop $while-continue|0 (result i32) local.get $0 @@ -37,8 +1772,8 @@ i32.const 2 i32.eq if - i32.const 1104 - i32.const 1056 + i32.const 3472 + i32.const 3424 i32.const 24 i32.const 22 call $~lib/builtins/abort @@ -62,8 +1797,8 @@ i32.const 2 i32.eq if - i32.const 1104 - i32.const 1056 + i32.const 3472 + i32.const 3424 i32.const 54 i32.const 22 call $~lib/builtins/abort @@ -85,8 +1820,8 @@ i32.const 2 i32.eq if - i32.const 1104 - i32.const 1056 + i32.const 3472 + i32.const 3424 i32.const 78 i32.const 22 call $~lib/builtins/abort @@ -97,8 +1832,8 @@ end ) (func $loop-flow/whileThrow (result i32) - i32.const 1104 - i32.const 1056 + i32.const 3472 + i32.const 3424 i32.const 11 i32.const 5 call $~lib/builtins/abort @@ -111,22 +1846,54 @@ unreachable ) (func $loop-flow/forThrow (result i32) - i32.const 1104 - i32.const 1056 + i32.const 3472 + i32.const 3424 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable ) (func $loop-flow/doThrow (result i32) - i32.const 1104 - i32.const 1056 + i32.const 3472 + i32.const 3424 i32.const 71 i32.const 5 call $~lib/builtins/abort unreachable ) (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36276 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace i32.const 1 call $loop-flow/whileAny drop @@ -137,4 +1904,228 @@ call $loop-flow/doAny drop ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3508 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3508 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$128 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$128 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3508 + i32.lt_s + if + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/managed-cast.debug.wat b/tests/compiler/managed-cast.debug.wat index 9aa6652349..7bb739f0d5 100644 --- a/tests/compiler/managed-cast.debug.wat +++ b/tests/compiler/managed-cast.debug.wat @@ -2,13 +2,19 @@ (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,33 +23,470 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 672)) - (global $~lib/memory/__data_end i32 (i32.const 700)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33468)) - (global $~lib/memory/__heap_base i32 (i32.const 33468)) + (global $~lib/rt/__rtti_base i32 (i32.const 2640)) + (global $~lib/memory/__data_end i32 (i32.const 2668)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35436)) + (global $~lib/memory/__heap_base i32 (i32.const 35436)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 540) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00m\00a\00n\00a\00g\00e\00d\00-\00c\00a\00s\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 604) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00i\00n\00v\00a\00l\00i\00d\00 \00d\00o\00w\00n\00c\00a\00s\00t\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 672) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00m\00a\00n\00a\00g\00e\00d\00-\00c\00a\00s\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2572) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00i\00n\00v\00a\00l\00i\00d\00 \00d\00o\00w\00n\00c\00a\00s\00t\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2640) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -108,7 +551,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -178,7 +621,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -195,7 +638,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -225,8 +668,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -294,7 +737,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -446,7 +889,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -466,7 +909,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -529,7 +972,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -682,7 +1125,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -699,7 +1142,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -788,7 +1231,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -831,7 +1274,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -849,7 +1292,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -917,7 +1360,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1034,7 +1477,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1080,7 +1523,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1112,7 +1555,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1356,7 +1799,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1576,7 +2019,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1684,8 +2127,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1787,7 +2230,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1858,7 +2301,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2015,7 +2458,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2130,7 +2573,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2150,7 +2593,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2198,8 +2641,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2311,58 +2754,6 @@ end i32.const 1 ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $managed-cast/Animal - block $managed-cast/Cat - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $managed-cast/Cat $managed-cast/Animal $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - unreachable - ) (func $~start call $start:managed-cast ) @@ -2371,14 +2762,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33488 - i32.const 33536 + i32.const 35456 + i32.const 35504 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $managed-cast/Animal#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2496,8 +3092,8 @@ if (result i32) local.get $1 else - i32.const 432 - i32.const 560 + i32.const 2400 + i32.const 2528 i32.const 14 i32.const 12 call $~lib/builtins/abort @@ -2594,8 +3190,8 @@ if (result i32) local.get $1 else - i32.const 624 - i32.const 560 + i32.const 2592 + i32.const 2528 i32.const 31 i32.const 9 call $~lib/builtins/abort @@ -2636,8 +3232,8 @@ if (result i32) local.get $1 else - i32.const 432 - i32.const 560 + i32.const 2400 + i32.const 2528 i32.const 36 i32.const 9 call $~lib/builtins/abort @@ -2650,8 +3246,8 @@ if (result i32) local.get $2 else - i32.const 624 - i32.const 560 + i32.const 2592 + i32.const 2528 i32.const 36 i32.const 9 call $~lib/builtins/abort @@ -2693,8 +3289,8 @@ if (result i32) local.get $1 else - i32.const 624 - i32.const 560 + i32.const 2592 + i32.const 2528 i32.const 41 i32.const 30 call $~lib/builtins/abort @@ -2747,8 +3343,8 @@ if (result i32) local.get $1 else - i32.const 624 - i32.const 560 + i32.const 2592 + i32.const 2528 i32.const 47 i32.const 30 call $~lib/builtins/abort @@ -2790,13 +3386,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -2871,6 +3467,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2899,4 +3642,62 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $managed-cast/Animal + block $managed-cast/Cat + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $managed-cast/Cat $managed-cast/Animal $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/managed-cast.release.wat b/tests/compiler/managed-cast.release.wat index 48251000ec..9f6ae0959d 100644 --- a/tests/compiler/managed-cast.release.wat +++ b/tests/compiler/managed-cast.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) - (type $4 (func (param i32) (result i32))) - (type $5 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32) (result i32))) (type $6 (func (param i32 i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,33 +17,256 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34492)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36460)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) "|") - (data $8.1 (i32.const 1448) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") - (data $9 (i32.const 1564) "<") - (data $9.1 (i32.const 1576) "\02\00\00\00\1e\00\00\00m\00a\00n\00a\00g\00e\00d\00-\00c\00a\00s\00t\00.\00t\00s") - (data $10 (i32.const 1628) "<") - (data $10.1 (i32.const 1640) "\02\00\00\00 \00\00\00i\00n\00v\00a\00l\00i\00d\00 \00d\00o\00w\00n\00c\00a\00s\00t") - (data $11 (i32.const 1696) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "|") + (data $19.1 (i32.const 3416) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") + (data $20 (i32.const 3532) "<") + (data $20.1 (i32.const 3544) "\02\00\00\00\1e\00\00\00m\00a\00n\00a\00g\00e\00d\00-\00c\00a\00s\00t\00.\00t\00s") + (data $21 (i32.const 3596) "<") + (data $21.1 (i32.const 3608) "\02\00\00\00 \00\00\00i\00n\00v\00a\00l\00i\00d\00 \00d\00o\00w\00n\00c\00a\00s\00t") + (data $22 (i32.const 3664) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3692 + i32.lt_s + if + i32.const 36480 + i32.const 36528 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -64,7 +287,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -112,7 +335,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -121,7 +344,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$137 + block $__inlined_func$~lib/rt/itcms/Object#unlink$150 local.get $1 i32.load offset=4 i32.const -4 @@ -133,19 +356,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34492 + i32.const 36460 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$137 + br $__inlined_func$~lib/rt/itcms/Object#unlink$150 end local.get $1 i32.load offset=8 @@ -153,7 +376,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -182,12 +405,12 @@ i32.const 1 else local.get $0 - i32.const 1696 + i32.const 3664 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -196,7 +419,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1700 + i32.const 3668 i32.add i32.load i32.const 32 @@ -248,7 +471,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -262,7 +485,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -308,7 +531,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -391,7 +614,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -405,7 +628,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -466,7 +689,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -499,7 +722,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -514,7 +737,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -565,7 +788,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -637,7 +860,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -662,7 +885,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -689,7 +912,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -761,10 +984,10 @@ if unreachable end - i32.const 34496 + i32.const 36464 i32.const 0 i32.store - i32.const 36064 + i32.const 38032 i32.const 0 i32.store loop $for-loop|0 @@ -775,7 +998,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34496 + i32.const 36464 i32.add i32.const 0 i32.store offset=4 @@ -793,7 +1016,7 @@ i32.add i32.const 2 i32.shl - i32.const 34496 + i32.const 36464 i32.add i32.const 0 i32.store offset=96 @@ -811,14 +1034,14 @@ br $for-loop|0 end end - i32.const 34496 - i32.const 36068 + i32.const 36464 + i32.const 38036 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34496 + i32.const 36464 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -903,7 +1126,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34492 + i32.const 36460 i32.lt_u if local.get $0 @@ -992,14 +1215,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34492 + i32.const 36460 i32.lt_u if local.get $0 @@ -1022,7 +1245,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34492 + i32.const 36460 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1051,7 +1274,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1081,18 +1304,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1100,32 +1390,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1138,23 +1432,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 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 @@ -1168,9 +1474,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1193,31 +1499,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.const 1073741820 + i32.gt_u if - memory.size - local.tee $1 - i32.const 4 + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 local.get $2 - 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 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1233,8 +1594,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1242,119 +1603,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1362,45 +1740,14 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $managed-cast/Animal - block $managed-cast/Cat - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $managed-cast/Cat $managed-cast/Animal $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable + memory.fill + local.get $1 ) (func $~start (local $0 i32) @@ -1411,7 +1758,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1724 + i32.const 3692 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1420,34 +1767,34 @@ memory.size i32.const 16 i32.shl - i32.const 34492 + i32.const 36460 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace call $managed-cast/Cat#constructor local.set $0 @@ -1459,7 +1806,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1724 + i32.const 3692 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1482,7 +1829,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1724 + i32.const 3692 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1494,8 +1841,8 @@ local.get $0 i32.eqz if - i32.const 1456 - i32.const 1584 + i32.const 3424 + i32.const 3552 i32.const 14 i32.const 12 call $~lib/builtins/abort @@ -1532,13 +1879,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1724 + i32.const 3692 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~instanceof|managed-cast/Cat$85 (result i32) + block $__inlined_func$~instanceof|managed-cast/Cat$89 (result i32) global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 @@ -1549,14 +1896,14 @@ i32.load i32.const 4 i32.ne - br_if $__inlined_func$~instanceof|managed-cast/Cat$85 + br_if $__inlined_func$~instanceof|managed-cast/Cat$89 drop i32.const 1 end i32.eqz if - i32.const 1648 - i32.const 1584 + i32.const 3616 + i32.const 3552 i32.const 31 i32.const 9 call $~lib/builtins/abort @@ -1579,7 +1926,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1724 + i32.const 3692 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1588,7 +1935,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $__inlined_func$~instanceof|managed-cast/Cat$88 (result i32) + block $__inlined_func$~instanceof|managed-cast/Cat$92 (result i32) global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 @@ -1596,8 +1943,8 @@ local.get $0 i32.eqz if - i32.const 1456 - i32.const 1584 + i32.const 3424 + i32.const 3552 i32.const 36 i32.const 9 call $~lib/builtins/abort @@ -1612,14 +1959,14 @@ i32.load i32.const 4 i32.ne - br_if $__inlined_func$~instanceof|managed-cast/Cat$88 + br_if $__inlined_func$~instanceof|managed-cast/Cat$92 drop i32.const 1 end i32.eqz if - i32.const 1648 - i32.const 1584 + i32.const 3616 + i32.const 3552 i32.const 36 i32.const 9 call $~lib/builtins/abort @@ -1642,7 +1989,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1724 + i32.const 3692 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1652,7 +1999,7 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - block $__inlined_func$~instanceof|managed-cast/Cat$91 (result i32) + block $__inlined_func$~instanceof|managed-cast/Cat$95 (result i32) global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -1663,14 +2010,14 @@ i32.load i32.const 4 i32.ne - br_if $__inlined_func$~instanceof|managed-cast/Cat$91 + br_if $__inlined_func$~instanceof|managed-cast/Cat$95 drop i32.const 1 end i32.eqz if - i32.const 1648 - i32.const 1584 + i32.const 3616 + i32.const 3552 i32.const 41 i32.const 30 call $~lib/builtins/abort @@ -1698,7 +2045,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1724 + i32.const 3692 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1720,8 +2067,8 @@ i32.const 4 i32.ne if - i32.const 1648 - i32.const 1584 + i32.const 3616 + i32.const 3552 i32.const 47 i32.const 30 call $~lib/builtins/abort @@ -1743,7 +2090,7 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 34492 + i32.const 36460 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 @@ -1784,13 +2131,213 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34512 - i32.const 34560 + i32.const 36480 + i32.const 36528 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3692 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3692 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$155 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$155 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36480 + i32.const 36528 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3692 + i32.lt_s + if + i32.const 36480 + i32.const 36528 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $managed-cast/Cat#constructor (result i32) (local $0 i32) (local $1 i32) @@ -1801,13 +2348,14 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1724 + i32.const 3692 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 @@ -1821,7 +2369,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1724 + i32.const 3692 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1831,6 +2379,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 5 call $~lib/rt/itcms/__new local.tee $0 @@ -1845,7 +2394,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1724 + i32.const 3692 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1856,6 +2405,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1879,8 +2429,8 @@ local.get $0 return end - i32.const 34512 - i32.const 34560 + i32.const 36480 + i32.const 36528 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1892,11 +2442,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1724 + i32.const 3692 i32.lt_s if - i32.const 34512 - i32.const 34560 + i32.const 36480 + i32.const 36528 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1919,4 +2469,35 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $managed-cast/Animal + block $managed-cast/Cat + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $managed-cast/Cat $managed-cast/Animal $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/many-locals.debug.wat b/tests/compiler/many-locals.debug.wat index d3fd8e7178..c332e54c23 100644 --- a/tests/compiler/many-locals.debug.wat +++ b/tests/compiler/many-locals.debug.wat @@ -1,13 +1,57 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func)) - (type $2 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/memory/__data_end i32 (i32.const 60)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) - (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2452)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35220)) + (global $~lib/memory/__heap_base i32 (i32.const 35220)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s\00") + (data $20 (i32.const 2432) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "testI32" (func $many-locals/testI32)) @@ -402,6 +446,2635 @@ local.get $a7F return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $many-locals/testI8 (param $a i32) (result i32) (local $a00 i32) (local $a01 i32) @@ -792,6 +3465,23 @@ return ) (func $start:many-locals + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 42 call $many-locals/testI32 i32.const 42 @@ -799,7 +3489,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 133 i32.const 1 call $~lib/builtins/abort @@ -812,7 +3502,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 267 i32.const 1 call $~lib/builtins/abort @@ -822,4 +3512,421 @@ (func $~start call $start:many-locals ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35248 + i32.const 35296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/many-locals.release.wat b/tests/compiler/many-locals.release.wat index d6e24e0568..4d33f3381a 100644 --- a/tests/compiler/many-locals.release.wat +++ b/tests/compiler/many-locals.release.wat @@ -1,11 +1,49 @@ (module (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s") + (data $20 (i32.const 3456) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "testI32" (func $many-locals/testI32)) (export "testI8" (func $many-locals/testI8)) (export "memory" (memory $0)) + (start $~start) (func $many-locals/testI32 (param $0 i32) (result i32) local.get $0 ) @@ -13,4 +51,38 @@ local.get $0 i32.extend8_s ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36244 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + ) ) diff --git a/tests/compiler/memcpy.debug.wat b/tests/compiler/memcpy.debug.wat index 0435fe9b90..b951544b71 100644 --- a/tests/compiler/memcpy.debug.wat +++ b/tests/compiler/memcpy.debug.wat @@ -1,15 +1,60 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32 i32) (result i32))) - (type $2 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param i32 i32 i32 i32))) (global $memcpy/base i32 (i32.const 8)) (global $memcpy/dest (mut i32) (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 60)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) - (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2452)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35220)) + (global $~lib/memory/__heap_base i32 (i32.const 35220)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2432) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memcpy" (func $memcpy/memcpy)) @@ -1112,6 +1157,2635 @@ local.get $ret return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $start:memcpy global.get $memcpy/base i64.const 1229782938247303441 @@ -1140,6 +3814,23 @@ i32.const 4 call $memcpy/memcpy global.set $memcpy/dest + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $memcpy/dest global.get $memcpy/base i32.const 1 @@ -1148,7 +3839,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 151 i32.const 1 call $~lib/builtins/abort @@ -1161,7 +3852,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 152 i32.const 1 call $~lib/builtins/abort @@ -1178,7 +3869,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 155 i32.const 1 call $~lib/builtins/abort @@ -1191,7 +3882,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 156 i32.const 1 call $~lib/builtins/abort @@ -1206,7 +3897,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 157 i32.const 1 call $~lib/builtins/abort @@ -1221,7 +3912,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 158 i32.const 1 call $~lib/builtins/abort @@ -1236,7 +3927,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 159 i32.const 1 call $~lib/builtins/abort @@ -1258,7 +3949,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 162 i32.const 1 call $~lib/builtins/abort @@ -1280,7 +3971,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 165 i32.const 1 call $~lib/builtins/abort @@ -1295,7 +3986,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 166 i32.const 1 call $~lib/builtins/abort @@ -1310,7 +4001,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 167 i32.const 1 call $~lib/builtins/abort @@ -1325,7 +4016,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 168 i32.const 1 call $~lib/builtins/abort @@ -1335,4 +4026,421 @@ (func $~start call $start:memcpy ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35248 + i32.const 35296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/memcpy.release.wat b/tests/compiler/memcpy.release.wat index b82c318426..f648c36884 100644 --- a/tests/compiler/memcpy.release.wat +++ b/tests/compiler/memcpy.release.wat @@ -1,12 +1,60 @@ (module - (type $0 (func (param i32 i32 i32) (result i32))) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i32 i32 i32))) (global $memcpy/dest (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36244)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s") + (data $20 (i32.const 3456) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memcpy" (func $memcpy/memcpy)) (export "memory" (memory $0)) (start $~start) @@ -697,7 +745,1696 @@ end local.get $5 ) - (func $~start + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$119 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36244 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$119 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3456 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3460 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36256 + i32.const 0 + i32.store + i32.const 37824 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36256 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36256 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36256 + i32.const 37828 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36256 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36244 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36244 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36244 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3476 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $start:memcpy i32.const 8 i64.const 1229782938247303441 i64.store @@ -715,12 +2452,44 @@ i32.const 4 call $memcpy/memcpy global.set $memcpy/dest + memory.size + i32.const 16 + i32.shl + i32.const 36244 + 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 $memcpy/dest i32.const 9 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 151 i32.const 1 call $~lib/builtins/abort @@ -732,7 +2501,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 152 i32.const 1 call $~lib/builtins/abort @@ -748,7 +2517,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 155 i32.const 1 call $~lib/builtins/abort @@ -760,7 +2529,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 156 i32.const 1 call $~lib/builtins/abort @@ -772,7 +2541,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 157 i32.const 1 call $~lib/builtins/abort @@ -784,7 +2553,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 158 i32.const 1 call $~lib/builtins/abort @@ -796,7 +2565,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 159 i32.const 1 call $~lib/builtins/abort @@ -813,7 +2582,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 162 i32.const 1 call $~lib/builtins/abort @@ -830,7 +2599,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 165 i32.const 1 call $~lib/builtins/abort @@ -842,7 +2611,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 166 i32.const 1 call $~lib/builtins/abort @@ -854,7 +2623,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 167 i32.const 1 call $~lib/builtins/abort @@ -866,11 +2635,238 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 168 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~start + call $start:memcpy + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$124 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$124 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/memmove.debug.wat b/tests/compiler/memmove.debug.wat index e325c90617..7174865abe 100644 --- a/tests/compiler/memmove.debug.wat +++ b/tests/compiler/memmove.debug.wat @@ -1,15 +1,60 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32 i32) (result i32))) - (type $2 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param i32 i32 i32 i32))) (global $memmove/base i32 (i32.const 8)) (global $memmove/dest (mut i32) (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 60)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) - (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2452)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35220)) + (global $~lib/memory/__heap_base i32 (i32.const 35220)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2432) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -200,6 +245,2635 @@ local.get $ret return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $start:memmove global.get $memmove/base i64.const 1229782938247303441 @@ -228,6 +2902,23 @@ i32.const 4 call $memmove/memmove global.set $memmove/dest + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $memmove/dest global.get $memmove/base i32.const 1 @@ -236,7 +2927,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 55 i32.const 1 call $~lib/builtins/abort @@ -249,7 +2940,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 56 i32.const 1 call $~lib/builtins/abort @@ -266,7 +2957,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 59 i32.const 1 call $~lib/builtins/abort @@ -279,7 +2970,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 60 i32.const 1 call $~lib/builtins/abort @@ -294,7 +2985,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 61 i32.const 1 call $~lib/builtins/abort @@ -309,7 +3000,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 62 i32.const 1 call $~lib/builtins/abort @@ -324,7 +3015,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 63 i32.const 1 call $~lib/builtins/abort @@ -346,7 +3037,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 66 i32.const 1 call $~lib/builtins/abort @@ -368,7 +3059,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 69 i32.const 1 call $~lib/builtins/abort @@ -383,7 +3074,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 70 i32.const 1 call $~lib/builtins/abort @@ -398,7 +3089,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 71 i32.const 1 call $~lib/builtins/abort @@ -413,7 +3104,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 72 i32.const 1 call $~lib/builtins/abort @@ -423,4 +3114,421 @@ (func $~start call $start:memmove ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35248 + i32.const 35296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/memmove.release.wat b/tests/compiler/memmove.release.wat index 9c569cc378..a2e54989f7 100644 --- a/tests/compiler/memmove.release.wat +++ b/tests/compiler/memmove.release.wat @@ -1,12 +1,60 @@ (module - (type $0 (func (param i32 i32 i32) (result i32))) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i32 i32 i32))) (global $memmove/dest (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36244)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s") + (data $20 (i32.const 3456) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) (func $memmove/memmove (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -191,7 +239,1696 @@ end local.get $5 ) - (func $~start + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$119 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36244 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$119 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3456 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3460 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36256 + i32.const 0 + i32.store + i32.const 37824 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36256 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36256 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36256 + i32.const 37828 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36256 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36244 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36244 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36244 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3476 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $start:memmove i32.const 8 i64.const 1229782938247303441 i64.store @@ -209,12 +1946,44 @@ i32.const 4 call $memmove/memmove global.set $memmove/dest + memory.size + i32.const 16 + i32.shl + i32.const 36244 + 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 $memmove/dest i32.const 9 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 55 i32.const 1 call $~lib/builtins/abort @@ -226,7 +1995,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 56 i32.const 1 call $~lib/builtins/abort @@ -242,7 +2011,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 59 i32.const 1 call $~lib/builtins/abort @@ -254,7 +2023,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 60 i32.const 1 call $~lib/builtins/abort @@ -266,7 +2035,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 61 i32.const 1 call $~lib/builtins/abort @@ -278,7 +2047,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 62 i32.const 1 call $~lib/builtins/abort @@ -290,7 +2059,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 63 i32.const 1 call $~lib/builtins/abort @@ -307,7 +2076,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 66 i32.const 1 call $~lib/builtins/abort @@ -324,7 +2093,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 69 i32.const 1 call $~lib/builtins/abort @@ -336,7 +2105,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 70 i32.const 1 call $~lib/builtins/abort @@ -348,7 +2117,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 71 i32.const 1 call $~lib/builtins/abort @@ -360,11 +2129,238 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 72 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~start + call $start:memmove + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$124 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$124 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/memory.debug.wat b/tests/compiler/memory.debug.wat index f9d1689708..8dadcb0408 100644 --- a/tests/compiler/memory.debug.wat +++ b/tests/compiler/memory.debug.wat @@ -1,38 +1,82 @@ (module - (type $0 (func (result i32))) - (type $1 (func)) - (type $2 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $memory/ptr (mut i32) (i32.const 80)) - (global $~lib/memory/__data_end i32 (i32.const 212)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32980)) - (global $~lib/memory/__heap_base i32 (i32.const 32980)) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $memory/ptr (mut i32) (i32.const 2448)) + (global $~lib/rt/__rtti_base i32 (i32.const 2592)) + (global $~lib/memory/__data_end i32 (i32.const 2612)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35380)) + (global $~lib/memory/__heap_base i32 (i32.const 35380)) (memory $0 1) (data $0 (i32.const 16) "\00\00\00\00") - (data $1 (i32.const 28) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00m\00e\00m\00o\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 80) "\00") - (data $3 (i32.const 96) "\00") - (data $4 (i32.const 104) "\00") - (data $5 (i32.const 108) "\00") - (data $6 (i32.const 110) "\00") - (data $7 (i32.const 111) "\00") - (data $8 (i32.const 112) "\00") - (data $9 (i32.const 128) "\00") - (data $10 (i32.const 144) "\00") - (data $11 (i32.const 152) "\00") - (data $12 (i32.const 156) "\00") - (data $13 (i32.const 158) "\00") - (data $14 (i32.const 159) "\00") - (data $15 (i32.const 160) "\00") - (data $16 (i32.const 161) "\01\02\03") - (data $17 (i32.const 164) "\00\00\c0?\00\00 @\00\00`@") - (data $18 (i32.const 176) "\00") - (data $19 (i32.const 192) "\01") - (data $20 (i32.const 200) "\01") - (data $21 (i32.const 204) "\01") - (data $22 (i32.const 206) "\01") - (data $23 (i32.const 207) "\01") - (data $24 (i32.const 208) "\01") + (data $1 (i32.const 28) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 60) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $5 (i32.const 188) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 460) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 556) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 684) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $15 (i32.const 748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 780) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $17 (i32.const 1180) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2236) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $19 (i32.const 2332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00m\00e\00m\00o\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2448) "\00") + (data $22 (i32.const 2464) "\00") + (data $23 (i32.const 2472) "\00") + (data $24 (i32.const 2476) "\00") + (data $25 (i32.const 2478) "\00") + (data $26 (i32.const 2479) "\00") + (data $27 (i32.const 2480) "\00") + (data $28 (i32.const 2496) "\00") + (data $29 (i32.const 2512) "\00") + (data $30 (i32.const 2520) "\00") + (data $31 (i32.const 2524) "\00") + (data $32 (i32.const 2526) "\00") + (data $33 (i32.const 2527) "\00") + (data $34 (i32.const 2528) "\00") + (data $35 (i32.const 2529) "\01\02\03") + (data $36 (i32.const 2532) "\00\00\c0?\00\00 @\00\00`@") + (data $37 (i32.const 2544) "\00") + (data $38 (i32.const 2560) "\01") + (data $39 (i32.const 2568) "\01") + (data $40 (i32.const 2572) "\01") + (data $41 (i32.const 2574) "\01") + (data $42 (i32.const 2575) "\01") + (data $43 (i32.const 2576) "\01") + (data $44 (i32.const 2592) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -50,34 +94,2680 @@ local.get $value return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 336 + i32.const 400 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 208 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 144 + i32.const 480 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 144 + i32.const 208 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 780 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 780 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 780 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 780 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1200 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1200 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2256 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2256 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $memory/testGeneric (result i32) - i32.const 144 + i32.const 2512 return ) (func $memory/testGeneric (result i32) - i32.const 152 + i32.const 2520 return ) (func $memory/testGeneric (result i32) - i32.const 156 + i32.const 2524 return ) (func $memory/testGeneric (result i32) - i32.const 158 + i32.const 2526 return ) (func $memory/testGeneric (result i32) - i32.const 159 + i32.const 2527 return ) (func $start:memory + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 256 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 432 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $memory/test i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -89,7 +2779,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -101,7 +2791,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -110,14 +2800,14 @@ global.get $memory/ptr i32.const 16 i32.add - i32.const 96 + i32.const 2464 global.set $memory/ptr global.get $memory/ptr i32.eq i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -126,14 +2816,14 @@ global.get $memory/ptr i32.const 8 i32.add - i32.const 104 + i32.const 2472 global.set $memory/ptr global.get $memory/ptr i32.eq i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -142,14 +2832,14 @@ global.get $memory/ptr i32.const 4 i32.add - i32.const 108 + i32.const 2476 global.set $memory/ptr global.get $memory/ptr i32.eq i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -158,14 +2848,14 @@ global.get $memory/ptr i32.const 2 i32.add - i32.const 110 + i32.const 2478 global.set $memory/ptr global.get $memory/ptr i32.eq i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -174,14 +2864,14 @@ global.get $memory/ptr i32.const 1 i32.add - i32.const 111 + i32.const 2479 global.set $memory/ptr global.get $memory/ptr i32.eq i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -190,18 +2880,18 @@ global.get $memory/ptr i32.const 1 i32.add - i32.const 112 + i32.const 2480 i32.eq i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 128 + i32.const 2496 global.set $memory/ptr global.get $memory/ptr i32.const 16 @@ -213,7 +2903,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -229,7 +2919,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -245,7 +2935,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 36 i32.const 1 call $~lib/builtins/abort @@ -261,7 +2951,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 37 i32.const 1 call $~lib/builtins/abort @@ -277,7 +2967,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -286,18 +2976,18 @@ global.get $memory/ptr i32.const 1 i32.add - i32.const 160 + i32.const 2528 i32.eq i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 39 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 161 + i32.const 2529 global.set $memory/ptr global.get $memory/ptr i32.load8_u @@ -306,7 +2996,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -319,7 +3009,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 45 i32.const 1 call $~lib/builtins/abort @@ -332,13 +3022,13 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 164 + i32.const 2532 global.set $memory/ptr global.get $memory/ptr f32.load @@ -347,7 +3037,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 49 i32.const 1 call $~lib/builtins/abort @@ -360,7 +3050,7 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 50 i32.const 1 call $~lib/builtins/abort @@ -373,25 +3063,25 @@ i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 51 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 176 + i32.const 2544 global.set $memory/ptr global.get $memory/ptr i32.const 16 i32.add - i32.const 192 + i32.const 2560 global.set $memory/ptr global.get $memory/ptr i32.eq i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 56 i32.const 1 call $~lib/builtins/abort @@ -400,14 +3090,14 @@ global.get $memory/ptr i32.const 8 i32.add - i32.const 200 + i32.const 2568 global.set $memory/ptr global.get $memory/ptr i32.eq i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 57 i32.const 1 call $~lib/builtins/abort @@ -416,14 +3106,14 @@ global.get $memory/ptr i32.const 4 i32.add - i32.const 204 + i32.const 2572 global.set $memory/ptr global.get $memory/ptr i32.eq i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 58 i32.const 1 call $~lib/builtins/abort @@ -432,14 +3122,14 @@ global.get $memory/ptr i32.const 2 i32.add - i32.const 206 + i32.const 2574 global.set $memory/ptr global.get $memory/ptr i32.eq i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 59 i32.const 1 call $~lib/builtins/abort @@ -448,14 +3138,14 @@ global.get $memory/ptr i32.const 1 i32.add - i32.const 207 + i32.const 2575 global.set $memory/ptr global.get $memory/ptr i32.eq i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 60 i32.const 1 call $~lib/builtins/abort @@ -464,12 +3154,12 @@ global.get $memory/ptr i32.const 1 i32.add - i32.const 208 + i32.const 2576 i32.eq i32.eqz if i32.const 0 - i32.const 48 + i32.const 2416 i32.const 61 i32.const 1 call $~lib/builtins/abort @@ -479,4 +3169,421 @@ (func $~start call $start:memory ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35408 + i32.const 35456 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 112 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 48 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 80 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 544 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 544 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2352 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 576 + i32.const 704 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 768 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 336 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 144 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1200 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2256 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/memory.release.wat b/tests/compiler/memory.release.wat index b1afa82e8f..81c0ba4f4e 100644 --- a/tests/compiler/memory.release.wat +++ b/tests/compiler/memory.release.wat @@ -1,23 +1,1792 @@ (module (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $memory/ptr (mut i32) (i32.const 1088)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $memory/ptr (mut i32) (i32.const 3456)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36388)) (memory $0 1) - (data $1 (i32.const 1036) ",") - (data $1.1 (i32.const 1048) "\02\00\00\00\12\00\00\00m\00e\00m\00o\00r\00y\00.\00t\00s") - (data $16 (i32.const 1169) "\01\02\03") - (data $17 (i32.const 1174) "\c0?\00\00 @\00\00`@") - (data $19 (i32.const 1200) "\01") - (data $20 (i32.const 1208) "\01") - (data $21 (i32.const 1212) "\01") - (data $22 (i32.const 1214) "\01") - (data $23 (i32.const 1215) "\01") - (data $24 (i32.const 1216) "\01") + (data $1 (i32.const 1036) "\1c") + (data $1.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1068) "\1c") + (data $2.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1100) "\1c") + (data $3.1 (i32.const 1112) "\02") + (data $4 (i32.const 1132) "<") + (data $4.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1196) "<") + (data $5.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1324) "<") + (data $8.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1388) ",") + (data $9.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1468) "<") + (data $11.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1532) "\1c") + (data $12.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $13 (i32.const 1564) "|") + (data $13.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $14 (i32.const 1692) "<") + (data $14.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $15 (i32.const 1756) "\1c") + (data $15.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $16 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $17 (i32.const 2188) "\1c\04") + (data $17.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $18 (i32.const 3244) "\\") + (data $18.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $19 (i32.const 3340) "<") + (data $19.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $20 (i32.const 3404) ",") + (data $20.1 (i32.const 3416) "\02\00\00\00\12\00\00\00m\00e\00m\00o\00r\00y\00.\00t\00s") + (data $35 (i32.const 3537) "\01\02\03") + (data $36 (i32.const 3542) "\c0?\00\00 @\00\00`@") + (data $38 (i32.const 3568) "\01") + (data $39 (i32.const 3576) "\01") + (data $40 (i32.const 3580) "\01") + (data $41 (i32.const 3582) "\01") + (data $42 (i32.const 3583) "\01") + (data $43 (i32.const 3584) "\01") + (data $44 (i32.const 3600) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$127 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36388 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$127 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3600 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3604 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36400 + i32.const 0 + i32.store + i32.const 37968 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36400 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36400 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36400 + i32.const 37972 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36400 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36388 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36388 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36388 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3620 + i32.lt_s + if + i32.const 36416 + i32.const 36464 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $start:memory (local $0 i32) + memory.size + i32.const 16 + i32.shl + i32.const 36388 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace i32.const 1024 i32.const 1024 i32.load @@ -28,7 +1797,7 @@ local.get $0 if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -46,7 +1815,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -64,7 +1833,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -73,13 +1842,13 @@ global.get $memory/ptr i32.const 16 i32.add - i32.const 1104 + i32.const 3472 global.set $memory/ptr - i32.const 1104 + i32.const 3472 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -88,13 +1857,13 @@ global.get $memory/ptr i32.const 8 i32.add - i32.const 1112 + i32.const 3480 global.set $memory/ptr - i32.const 1112 + i32.const 3480 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -103,13 +1872,13 @@ global.get $memory/ptr i32.const 4 i32.add - i32.const 1116 + i32.const 3484 global.set $memory/ptr - i32.const 1116 + i32.const 3484 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -118,13 +1887,13 @@ global.get $memory/ptr i32.const 2 i32.add - i32.const 1118 + i32.const 3486 global.set $memory/ptr - i32.const 1118 + i32.const 3486 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -133,50 +1902,50 @@ global.get $memory/ptr i32.const 1 i32.add - i32.const 1119 + i32.const 3487 global.set $memory/ptr - i32.const 1119 + i32.const 3487 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 23 i32.const 1 call $~lib/builtins/abort unreachable end global.get $memory/ptr - i32.const 1119 + i32.const 3487 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1136 + i32.const 3504 global.set $memory/ptr - i32.const 1152 + i32.const 3520 global.set $memory/ptr - i32.const 1160 + i32.const 3528 global.set $memory/ptr - i32.const 1164 + i32.const 3532 global.set $memory/ptr - i32.const 1166 + i32.const 3534 global.set $memory/ptr - i32.const 1167 + i32.const 3535 global.set $memory/ptr - i32.const 1169 + i32.const 3537 global.set $memory/ptr - i32.const 1169 + i32.const 3537 i32.load8_u i32.const 1 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -188,7 +1957,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 45 i32.const 1 call $~lib/builtins/abort @@ -200,21 +1969,21 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1172 + i32.const 3540 global.set $memory/ptr - i32.const 1172 + i32.const 3540 f32.load f32.const 1.5 f32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 49 i32.const 1 call $~lib/builtins/abort @@ -226,7 +1995,7 @@ f32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 50 i32.const 1 call $~lib/builtins/abort @@ -238,26 +2007,250 @@ f32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 51 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1184 + i32.const 3552 global.set $memory/ptr - i32.const 1200 + i32.const 3568 global.set $memory/ptr - i32.const 1208 + i32.const 3576 global.set $memory/ptr - i32.const 1212 + i32.const 3580 global.set $memory/ptr - i32.const 1214 + i32.const 3582 global.set $memory/ptr - i32.const 1215 + i32.const 3583 global.set $memory/ptr ) (func $~start call $start:memory ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$132 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$132 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36416 + i32.const 36464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3620 + i32.lt_s + if + i32.const 36416 + i32.const 36464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/memset.debug.wat b/tests/compiler/memset.debug.wat index 06ad44229b..b6d7c13aeb 100644 --- a/tests/compiler/memset.debug.wat +++ b/tests/compiler/memset.debug.wat @@ -1,14 +1,59 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32 i32) (result i32))) - (type $2 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param i32 i32 i32 i32))) (global $memset/dest (mut i32) (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 60)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) - (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2452)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35220)) + (global $~lib/memory/__heap_base i32 (i32.const 35220)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2432) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -274,6 +319,2635 @@ local.get $ret return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $start:memset global.get $~lib/memory/__heap_base global.set $memset/dest @@ -282,6 +2956,23 @@ i32.const 16 call $memset/memset drop + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $memset/dest i32.load8_u i32.const 1 @@ -289,7 +2980,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 72 i32.const 1 call $~lib/builtins/abort @@ -304,7 +2995,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 73 i32.const 1 call $~lib/builtins/abort @@ -324,7 +3015,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 77 i32.const 1 call $~lib/builtins/abort @@ -339,7 +3030,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 78 i32.const 1 call $~lib/builtins/abort @@ -354,7 +3045,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 79 i32.const 1 call $~lib/builtins/abort @@ -369,7 +3060,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 80 i32.const 1 call $~lib/builtins/abort @@ -379,4 +3070,421 @@ (func $~start call $start:memset ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35248 + i32.const 35296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/memset.release.wat b/tests/compiler/memset.release.wat index 422cb7f274..9c6835ca9a 100644 --- a/tests/compiler/memset.release.wat +++ b/tests/compiler/memset.release.wat @@ -1,12 +1,60 @@ (module - (type $0 (func (param i32 i32 i32))) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i32 i32 i32))) (global $memset/dest (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36244)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s") + (data $20 (i32.const 3456) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) (func $memset/memset (param $0 i32) (param $1 i32) (param $2 i32) @@ -199,20 +247,1741 @@ end end ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$120 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36244 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$120 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3456 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3460 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36256 + i32.const 0 + i32.store + i32.const 37824 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36256 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36256 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36256 + i32.const 37828 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36256 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36244 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36244 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36244 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3476 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~start - i32.const 33852 + i32.const 36244 global.set $memset/dest - i32.const 33852 + i32.const 36244 i32.const 1 i32.const 16 call $memset/memset + memory.size + i32.const 16 + i32.shl + i32.const 36244 + 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 $memset/dest i32.load8_u i32.const 1 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 72 i32.const 1 call $~lib/builtins/abort @@ -224,7 +1993,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 73 i32.const 1 call $~lib/builtins/abort @@ -242,7 +2011,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 77 i32.const 1 call $~lib/builtins/abort @@ -254,7 +2023,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 78 i32.const 1 call $~lib/builtins/abort @@ -266,7 +2035,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 79 i32.const 1 call $~lib/builtins/abort @@ -278,11 +2047,235 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 80 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$125 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$125 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/mutable-globals.debug.wat b/tests/compiler/mutable-globals.debug.wat index 6b2dac9834..393d6538a6 100644 --- a/tests/compiler/mutable-globals.debug.wat +++ b/tests/compiler/mutable-globals.debug.wat @@ -1,29 +1,2720 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (import "mutable-globals" "external" (global $mutable-globals/external (mut i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $mutable-globals/internal (mut i32) (i32.const 124)) - (global $~lib/memory/__data_end i32 (i32.const 76)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32844)) - (global $~lib/memory/__heap_base i32 (i32.const 32844)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2448)) + (global $~lib/memory/__data_end i32 (i32.const 2468)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35236)) + (global $~lib/memory/__heap_base i32 (i32.const 35236)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00m\00u\00t\00a\00b\00l\00e\00-\00g\00l\00o\00b\00a\00l\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00m\00u\00t\00a\00b\00l\00e\00-\00g\00l\00o\00b\00a\00l\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2448) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "external" (global $mutable-globals/external)) (export "internal" (global $mutable-globals/internal)) (export "memory" (memory $0)) (export "_start" (func $~start)) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $start:mutable-globals + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $mutable-globals/external i32.const 123 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -35,7 +2726,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -55,7 +2746,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -67,7 +2758,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -83,4 +2774,421 @@ global.set $~started call $start:mutable-globals ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35264 + i32.const 35312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/mutable-globals.release.wat b/tests/compiler/mutable-globals.release.wat index 5b8e61143c..b39f1074d1 100644 --- a/tests/compiler/mutable-globals.release.wat +++ b/tests/compiler/mutable-globals.release.wat @@ -1,17 +1,1754 @@ (module - (type $0 (func (param i32 i32 i32 i32))) - (type $1 (func)) + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) (import "mutable-globals" "external" (global $mutable-globals/external (mut i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $mutable-globals/internal (mut i32) (i32.const 124)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36260)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00$\00\00\00m\00u\00t\00a\00b\00l\00e\00-\00g\00l\00o\00b\00a\00l\00s\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) "<") + (data $19.1 (i32.const 3416) "\02\00\00\00$\00\00\00m\00u\00t\00a\00b\00l\00e\00-\00g\00l\00o\00b\00a\00l\00s\00.\00t\00s") + (data $20 (i32.const 3472) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "external" (global $mutable-globals/external)) (export "internal" (global $mutable-globals/internal)) (export "memory" (memory $0)) (export "_start" (func $~start)) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$120 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36260 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$120 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3472 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3476 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36272 + i32.const 0 + i32.store + i32.const 37840 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36272 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36272 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36272 + i32.const 37844 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36272 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36260 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36260 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36260 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3492 + i32.lt_s + if + i32.const 36288 + i32.const 36336 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~start global.get $~started if @@ -19,12 +1756,44 @@ end i32.const 1 global.set $~started + memory.size + i32.const 16 + i32.shl + i32.const 36260 + 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 $mutable-globals/external i32.const 123 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -35,7 +1804,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -54,7 +1823,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -65,11 +1834,235 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 12 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$125 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$125 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36288 + i32.const 36336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3492 + i32.lt_s + if + i32.const 36288 + i32.const 36336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/new.debug.wat b/tests/compiler/new.debug.wat index f0dc63a471..864a8c0665 100644 --- a/tests/compiler/new.debug.wat +++ b/tests/compiler/new.debug.wat @@ -1,15 +1,21 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $new/ref (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,9 +24,6 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) @@ -29,24 +32,464 @@ (global $new/genext (mut i32) (i32.const 0)) (global $new/genext2 (mut i32) (i32.const 0)) (global $new/genext3 (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 416)) - (global $~lib/memory/__data_end i32 (i32.const 452)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33220)) - (global $~lib/memory/__heap_base i32 (i32.const 33220)) + (global $~lib/rt/__rtti_base i32 (i32.const 2384)) + (global $~lib/memory/__data_end i32 (i32.const 2420)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35188)) + (global $~lib/memory/__heap_base i32 (i32.const 35188)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 416) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2384) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -111,7 +554,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -181,7 +624,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -198,7 +641,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -228,8 +671,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -297,7 +740,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -449,7 +892,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -469,7 +912,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -532,7 +975,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -685,7 +1128,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -702,7 +1145,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -791,7 +1234,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -834,7 +1277,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -852,7 +1295,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -920,7 +1363,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1037,7 +1480,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1083,7 +1526,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1115,7 +1558,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1359,7 +1802,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1579,7 +2022,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1687,8 +2130,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1790,7 +2233,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1861,7 +2304,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2018,7 +2461,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2133,7 +2576,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2153,7 +2596,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2201,8 +2644,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2259,121 +2702,226 @@ local.get $this return ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $new/ref - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $new/gen - local.tee $1 + (func $~start + call $start:new + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 35216 + i32.const 35264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $new/ref2 - local.tee $1 + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - global.get $new/genext - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $new/genext2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $new/genext3 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $new/GenExt - block $new/ns.Ref - block $new/Gen - block $new/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $new/Ref $new/Gen $new/ns.Ref $new/GenExt $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - return - end - return - end - unreachable - ) - (func $~start - call $start:new + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33248 - i32.const 33296 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $new/Ref#constructor (param $this i32) (result i32) (local $1 i32) @@ -2545,13 +3093,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -2613,6 +3161,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2641,4 +3336,110 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $new/ref + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/gen + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/ref2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/genext + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/genext2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/genext3 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $new/GenExt + block $new/ns.Ref + block $new/Gen + block $new/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $new/Ref $new/Gen $new/ns.Ref $new/GenExt $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/new.release.wat b/tests/compiler/new.release.wat index 72a7a42fe2..5361649c0b 100644 --- a/tests/compiler/new.release.wat +++ b/tests/compiler/new.release.wat @@ -2,11 +2,11 @@ (type $0 (func (result i32))) (type $1 (func (param i32) (result i32))) (type $2 (func)) - (type $3 (func (param i32))) - (type $4 (func (param i32 i32))) - (type $5 (func (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func (param i32 i32))) (type $6 (func (param i32 i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) (global $new/ref (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)) @@ -23,21 +23,240 @@ (global $new/genext (mut i32) (i32.const 0)) (global $new/genext2 (mut i32) (i32.const 0)) (global $new/genext3 (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34244)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36212)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1440) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3408) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3444 + i32.lt_s + if + i32.const 36240 + i32.const 36288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa32$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -77,9 +296,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -100,7 +323,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -148,7 +371,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -157,7 +380,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$116 + block $__inlined_func$~lib/rt/itcms/Object#unlink$129 local.get $1 i32.load offset=4 i32.const -4 @@ -169,19 +392,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34244 + i32.const 36212 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$116 + br $__inlined_func$~lib/rt/itcms/Object#unlink$129 end local.get $1 i32.load offset=8 @@ -189,7 +412,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -218,12 +441,12 @@ i32.const 1 else local.get $0 - i32.const 1440 + i32.const 3408 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -232,7 +455,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1444 + i32.const 3412 i32.add i32.load i32.const 32 @@ -284,7 +507,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -298,7 +521,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -344,7 +567,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -427,7 +650,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -441,7 +664,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -502,7 +725,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -535,7 +758,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -550,7 +773,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -601,7 +824,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -673,7 +896,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -698,7 +921,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -725,7 +948,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -797,10 +1020,10 @@ if unreachable end - i32.const 34256 + i32.const 36224 i32.const 0 i32.store - i32.const 35824 + i32.const 37792 i32.const 0 i32.store loop $for-loop|0 @@ -811,7 +1034,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34256 + i32.const 36224 i32.add i32.const 0 i32.store offset=4 @@ -829,7 +1052,7 @@ i32.add i32.const 2 i32.shl - i32.const 34256 + i32.const 36224 i32.add i32.const 0 i32.store offset=96 @@ -847,14 +1070,14 @@ br $for-loop|0 end end - i32.const 34256 - i32.const 35828 + i32.const 36224 + i32.const 37796 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34256 + i32.const 36224 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -939,7 +1162,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34244 + i32.const 36212 i32.lt_u if local.get $0 @@ -1028,14 +1251,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34244 + i32.const 36212 i32.lt_u if local.get $0 @@ -1058,7 +1281,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34244 + i32.const 36212 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1087,7 +1310,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1117,18 +1340,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1136,32 +1426,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1174,23 +1468,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 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 @@ -1204,9 +1510,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1229,31 +1535,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.const 1073741820 + i32.gt_u if - memory.size - local.tee $1 - i32.const 4 + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else local.get $2 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1269,8 +1630,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1278,119 +1639,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1398,51 +1776,14 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $new/GenExt - block $new/ns.Ref - block $new/Gen - block $new/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $new/Ref $new/Gen $new/ns.Ref $new/GenExt $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - unreachable + memory.fill + local.get $1 ) (func $~start (local $0 i32) @@ -1451,11 +1792,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1476 + i32.const 3444 i32.lt_s if - i32.const 34272 - i32.const 34320 + i32.const 36240 + i32.const 36288 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1467,34 +1808,34 @@ memory.size i32.const 16 i32.shl - i32.const 34244 + i32.const 36212 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace call $new/Ref#constructor global.set $new/ref @@ -1543,6 +1884,206 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3444 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3444 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$134 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$134 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36240 + i32.const 36288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3444 + i32.lt_s + if + i32.const 36240 + i32.const 36288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $new/Ref#constructor (result i32) (local $0 i32) global.get $~lib/memory/__stack_pointer @@ -1550,11 +2091,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1476 + i32.const 3444 i32.lt_s if - i32.const 34272 - i32.const 34320 + i32.const 36240 + i32.const 36288 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1564,6 +2105,7 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 @@ -1588,11 +2130,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1476 + i32.const 3444 i32.lt_s if - i32.const 34272 - i32.const 34320 + i32.const 36240 + i32.const 36288 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1605,6 +2147,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 5 call $~lib/rt/itcms/__new local.tee $0 @@ -1631,11 +2174,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1476 + i32.const 3444 i32.lt_s if - i32.const 34272 - i32.const 34320 + i32.const 36240 + i32.const 36288 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1645,6 +2188,7 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 6 call $~lib/rt/itcms/__new local.tee $0 @@ -1670,11 +2214,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1476 + i32.const 3444 i32.lt_s if - i32.const 34272 - i32.const 34320 + i32.const 36240 + i32.const 36288 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1684,6 +2228,7 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 7 call $~lib/rt/itcms/__new local.tee $0 @@ -1708,11 +2253,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1476 + i32.const 3444 i32.lt_s if - i32.const 34272 - i32.const 34320 + i32.const 36240 + i32.const 36288 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1726,6 +2271,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1736,4 +2282,41 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $new/GenExt + block $new/ns.Ref + block $new/Gen + block $new/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $new/Ref $new/Gen $new/ns.Ref $new/GenExt $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/number.debug.wat b/tests/compiler/number.debug.wat index 4c4c4c7a86..3785094073 100644 --- a/tests/compiler/number.debug.wat +++ b/tests/compiler/number.debug.wat @@ -1,25 +1,27 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) (type $4 (func)) (type $5 (func (param i32 i32 i32))) (type $6 (func (param f64) (result i32))) (type $7 (func (param f32) (result i32))) - (type $8 (func (param i32 i32 i32 i32))) - (type $9 (func (param i32 i32 i64) (result i32))) - (type $10 (func (result i32))) - (type $11 (func (param i32 i64 i32))) - (type $12 (func (param i64 i32) (result i32))) - (type $13 (func (param i32 i64 i32 i32))) - (type $14 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $15 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $16 (func (param i32 i32 i32) (result i32))) - (type $17 (func (param i32 f64 i32) (result i32))) - (type $18 (func (param f64 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (result i32))) + (type $10 (func (param i32 i64 i32))) + (type $11 (func (param i64 i32) (result i32))) + (type $12 (func (param i32 i64 i32 i32))) + (type $13 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $14 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $15 (func (param i32 i32 i32) (result i32))) + (type $16 (func (param i32 f64 i32) (result i32))) + (type $17 (func (param f64 i32) (result i32))) + (type $18 (func (param i32 i32 i32 i32))) (global $number/a (mut 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/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)) @@ -28,9 +30,6 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) @@ -51,101 +50,64 @@ (global $~lib/builtins/f64.MIN_SAFE_INTEGER f64 (f64.const -9007199254740991)) (global $~lib/builtins/f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991)) (global $~lib/builtins/f64.EPSILON f64 (f64.const 2.220446049250313e-16)) - (global $~lib/rt/__rtti_base i32 (i32.const 3632)) - (global $~lib/memory/__data_end i32 (i32.const 3652)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36420)) - (global $~lib/memory/__heap_base i32 (i32.const 36420)) + (global $~lib/rt/__rtti_base i32 (i32.const 3824)) + (global $~lib/memory/__data_end i32 (i32.const 3844)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36612)) + (global $~lib/memory/__heap_base i32 (i32.const 36612)) (memory $0 1) - (data $0 (i32.const 12) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $2 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $4 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 544) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 572) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 636) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data $12 (i32.const 1036) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 2092) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") - (data $14 (i32.const 2188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 2220) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 2268) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") - (data $17 (i32.const 2300) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") - (data $18 (i32.const 2332) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") - (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $20 (i32.const 2432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $21 (i32.const 2488) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2288 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2288 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) local.get $this - i32.load + local.get $radix + call $~lib/util/number/utoa32 + return ) - (func $object-literal/Managed#get:baz (param $this i32) (result i32) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $object-literal/Managed#set:baz (param $this i32) (param $baz i32) local.get $this - i32.load offset=4 + local.get $baz + i32.store offset=4 + local.get $this + local.get $baz + i32.const 0 + call $~lib/rt/itcms/__link ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + (func $object-literal/Managed#get:bar (param $this i32) (result i32) local.get $this - i32.load offset=16 + i32.load ) - (func $~lib/string/String#get:length (param $this i32) (result i32) + (func $object-literal/Managed#get:baz (param $this i32) (result i32) local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u - return + i32.load offset=4 ) (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) (local $ptr1 i32) @@ -2823,146 +3251,226 @@ i32.const 0 drop ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 176 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 288 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $object-literal/Managed~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $object-literal/MixedOmitted~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit + (func $~start + call $start:object-literal ) - (func $object-literal/OmittedFoo~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=8 - local.get $1 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=16 - local.get $1 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=20 - local.get $1 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=24 - local.get $1 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=28 - local.get $1 - call $~lib/rt/itcms/__visit + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35456 + i32.const 35504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $object-literal/OmittedFoo - block $object-literal/MixedOmitted - block $object-literal/OmittedTypes - block $object-literal/Managed - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $object-literal/Managed $object-literal/OmittedTypes $object-literal/MixedOmitted $object-literal/OmittedFoo $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $object-literal/Managed~visit - return - end - return - end - local.get $0 - local.get $1 - call $object-literal/MixedOmitted~visit - return - end - local.get $0 - local.get $1 - call $object-literal/OmittedFoo~visit + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 144 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - unreachable + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~start - call $start:object-literal + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 80 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33520 - i32.const 33568 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 112 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 576 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 576 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 2384 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $object-literal/Managed#constructor (param $this i32) (result i32) (local $1 i32) @@ -3136,7 +3644,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 9 i32.const 3 call $~lib/builtins/abort @@ -3159,7 +3667,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -3268,7 +3776,7 @@ local.get $size i32.eqz if - i32.const 544 + i32.const 144 local.set $22 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -3336,7 +3844,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -3349,12 +3857,12 @@ local.get $1 i32.store local.get $1 - i32.const 576 + i32.const 2512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 28 i32.const 3 call $~lib/builtins/abort @@ -3539,7 +4047,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 57 i32.const 3 call $~lib/builtins/abort @@ -3557,7 +4065,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 58 i32.const 3 call $~lib/builtins/abort @@ -3575,7 +4083,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 59 i32.const 3 call $~lib/builtins/abort @@ -3593,7 +4101,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -3611,7 +4119,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -3629,7 +4137,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 62 i32.const 3 call $~lib/builtins/abort @@ -3648,7 +4156,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -3668,7 +4176,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -3687,7 +4195,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -3707,7 +4215,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 66 i32.const 3 call $~lib/builtins/abort @@ -3725,7 +4233,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -3743,7 +4251,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -3761,7 +4269,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 69 i32.const 3 call $~lib/builtins/abort @@ -3781,7 +4289,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 70 i32.const 3 call $~lib/builtins/abort @@ -3876,7 +4384,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 82 i32.const 3 call $~lib/builtins/abort @@ -3894,12 +4402,12 @@ local.get $1 i32.store local.get $1 - i32.const 608 + i32.const 2544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -3917,7 +4425,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -3964,7 +4472,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 640 + i32.const 2576 call $object-literal/OmittedFoo#set:bar local.get $this local.set $1 @@ -3972,7 +4480,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 672 + i32.const 2608 call $object-literal/OmittedFoo#set:baz local.get $this local.set $1 @@ -4068,12 +4576,12 @@ local.get $1 i32.store local.get $1 - i32.const 640 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 107 i32.const 3 call $~lib/builtins/abort @@ -4091,12 +4599,12 @@ local.get $1 i32.store local.get $1 - i32.const 672 + i32.const 2608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -4119,7 +4627,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -4142,7 +4650,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 110 i32.const 3 call $~lib/builtins/abort @@ -4165,7 +4673,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 111 i32.const 3 call $~lib/builtins/abort @@ -4188,7 +4696,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 112 i32.const 3 call $~lib/builtins/abort @@ -4211,7 +4719,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 113 i32.const 3 call $~lib/builtins/abort @@ -4234,7 +4742,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -4252,7 +4760,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 115 i32.const 3 call $~lib/builtins/abort @@ -4270,7 +4778,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 116 i32.const 3 call $~lib/builtins/abort @@ -4297,9 +4805,6 @@ i32.const 0 i32.const 24 memory.fill - i32.const 128 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace memory.size i32.const 16 i32.shl @@ -4308,10 +4813,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 336 + i32.const 288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 368 + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 464 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer @@ -4434,7 +4942,7 @@ local.get $5 i32.store offset=8 local.get $5 - i32.const 608 + i32.const 2544 call $object-literal/MixedOmitted#set:complexType local.get $3 f64.const 0 @@ -4487,6 +4995,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 608 + i32.const 736 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 800 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -4515,4 +5170,135 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 368 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 176 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1232 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2288 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $object-literal/Managed~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $object-literal/MixedOmitted~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $object-literal/OmittedFoo~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=12 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=16 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=20 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=24 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=28 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $object-literal/OmittedFoo + block $object-literal/MixedOmitted + block $object-literal/OmittedTypes + block $object-literal/Managed + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $object-literal/Managed $object-literal/OmittedTypes $object-literal/MixedOmitted $object-literal/OmittedFoo $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $object-literal/Managed~visit + return + end + return + end + local.get $0 + local.get $1 + call $object-literal/MixedOmitted~visit + return + end + local.get $0 + local.get $1 + call $object-literal/OmittedFoo~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/object-literal.release.wat b/tests/compiler/object-literal.release.wat index 9070d20967..7e49e43b40 100644 --- a/tests/compiler/object-literal.release.wat +++ b/tests/compiler/object-literal.release.wat @@ -1,53 +1,120 @@ (module (type $0 (func (param i32))) - (type $1 (func)) - (type $2 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func)) (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (type $7 (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)) - (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) - (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (type $7 (func (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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34516)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36452)) (memory $0 1) (data $0 (i32.const 1036) ",") (data $0.1 (i32.const 1048) "\02\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d") - (data $1 (i32.const 1084) "<") - (data $1.1 (i32.const 1096) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $3 (i32.const 1180) "<") - (data $3.1 (i32.const 1192) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $4 (i32.const 1244) ",") - (data $4.1 (i32.const 1256) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $5 (i32.const 1292) "<") - (data $5.1 (i32.const 1304) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $8 (i32.const 1420) "<") - (data $8.1 (i32.const 1432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $9 (i32.const 1484) "<") - (data $9.1 (i32.const 1496) "\02\00\00\00\"\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") - (data $10 (i32.const 1548) "\1c") - (data $10.1 (i32.const 1560) "\02") - (data $11 (i32.const 1580) "\1c") - (data $11.1 (i32.const 1592) "\02\00\00\00\n\00\00\00h\00e\00l\00l\00o") - (data $12 (i32.const 1612) "\1c") - (data $12.1 (i32.const 1624) "\02\00\00\00\08\00\00\00t\00e\00s\00t") - (data $13 (i32.const 1644) "\1c") - (data $13.1 (i32.const 1656) "\02\00\00\00\06\00\00\00b\00a\00r") - (data $14 (i32.const 1676) "\1c") - (data $14.1 (i32.const 1688) "\02\00\00\00\06\00\00\00b\00a\00z") - (data $15 (i32.const 1712) "\08\00\00\00 \00\00\00 \00\00\00 ") - (data $15.1 (i32.const 1736) " ") + (data $1 (i32.const 1084) "\1c") + (data $1.1 (i32.const 1096) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1116) "\1c") + (data $2.1 (i32.const 1128) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1148) "\1c") + (data $3.1 (i32.const 1160) "\02") + (data $4 (i32.const 1180) "<") + (data $4.1 (i32.const 1192) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1244) "<") + (data $5.1 (i32.const 1256) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1372) "<") + (data $8.1 (i32.const 1384) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1436) ",") + (data $9.1 (i32.const 1448) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1516) "<") + (data $11.1 (i32.const 1528) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1580) "\1c") + (data $12.1 (i32.const 1592) "\02\00\00\00\02\00\00\00:") + (data $13 (i32.const 1612) "|") + (data $13.1 (i32.const 1624) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $14 (i32.const 1740) "<") + (data $14.1 (i32.const 1752) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $15 (i32.const 1804) "\1c") + (data $15.1 (i32.const 1816) "\02\00\00\00\02\00\00\000") + (data $16 (i32.const 1836) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $17 (i32.const 2236) "\1c\04") + (data $17.1 (i32.const 2248) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $18 (i32.const 3292) "\\") + (data $18.1 (i32.const 3304) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $19 (i32.const 3388) "<") + (data $19.1 (i32.const 3400) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $20 (i32.const 3452) "<") + (data $20.1 (i32.const 3464) "\02\00\00\00\"\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") + (data $21 (i32.const 3516) "\1c") + (data $21.1 (i32.const 3528) "\02\00\00\00\n\00\00\00h\00e\00l\00l\00o") + (data $22 (i32.const 3548) "\1c") + (data $22.1 (i32.const 3560) "\02\00\00\00\08\00\00\00t\00e\00s\00t") + (data $23 (i32.const 3580) "\1c") + (data $23.1 (i32.const 3592) "\02\00\00\00\06\00\00\00b\00a\00r") + (data $24 (i32.const 3612) "\1c") + (data $24.1 (i32.const 3624) "\02\00\00\00\06\00\00\00b\00a\00z") + (data $25 (i32.const 3648) "\08\00\00\00 \00\00\00 \00\00\00 ") + (data $25.1 (i32.const 3672) " ") (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1392 + call $~lib/rt/itcms/__visit + i32.const 1200 + call $~lib/rt/itcms/__visit + i32.const 2256 + call $~lib/rt/itcms/__visit + i32.const 3312 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1264 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) @@ -62,7 +129,7 @@ i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1264 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -71,7 +138,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$205 + block $__inlined_func$~lib/rt/itcms/Object#unlink$217 local.get $0 i32.load offset=4 i32.const -4 @@ -83,19 +150,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34516 + i32.const 36452 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1264 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$205 + br $__inlined_func$~lib/rt/itcms/Object#unlink$217 end local.get $0 i32.load offset=8 @@ -103,7 +170,7 @@ i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1264 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -132,12 +199,12 @@ i32.const 1 else local.get $1 - i32.const 1712 + i32.const 3648 i32.load i32.gt_u if - i32.const 1200 - i32.const 1264 + i32.const 1392 + i32.const 1456 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -146,7 +213,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1716 + i32.const 3652 i32.add i32.load i32.const 32 @@ -180,105 +247,6 @@ 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 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1200 - call $~lib/rt/itcms/__visit - i32.const 1312 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -316,7 +284,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -330,7 +298,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -376,7 +344,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -459,7 +427,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -473,7 +441,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -534,7 +502,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -567,7 +535,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -582,7 +550,7 @@ i32.ne if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -633,7 +601,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -705,7 +673,7 @@ i64.lt_u if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -730,7 +698,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -757,7 +725,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -829,10 +797,10 @@ if unreachable end - i32.const 34528 + i32.const 36464 i32.const 0 i32.store - i32.const 36096 + i32.const 38032 i32.const 0 i32.store loop $for-loop|0 @@ -843,7 +811,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34528 + i32.const 36464 i32.add i32.const 0 i32.store offset=4 @@ -861,7 +829,7 @@ i32.add i32.const 2 i32.shl - i32.const 34528 + i32.const 36464 i32.add i32.const 0 i32.store offset=96 @@ -879,21 +847,21 @@ br $for-loop|0 end end - i32.const 34528 - i32.const 36100 + i32.const 36464 + i32.const 38036 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34528 + i32.const 36464 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 - i32.const 34516 + i32.const 36452 i32.lt_u if return @@ -924,7 +892,7 @@ end if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1021,7 +989,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34516 + i32.const 36452 i32.lt_u if local.get $0 @@ -1110,14 +1078,14 @@ i32.ne if i32.const 0 - i32.const 1104 + i32.const 1264 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34516 + i32.const 36452 i32.lt_u if local.get $0 @@ -1209,7 +1177,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1261,7 +1229,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1291,8 +1259,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1312 - i32.const 1440 + i32.const 1200 + i32.const 1536 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1394,7 +1362,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1409,7 +1377,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1428,7 +1396,7 @@ i32.and if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1495,8 +1463,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1312 - i32.const 1104 + i32.const 1200 + i32.const 1264 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1506,7 +1474,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$68 + block $__inlined_func$~lib/rt/itcms/interrupt$69 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1527,7 +1495,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$68 + br $__inlined_func$~lib/rt/itcms/interrupt$69 end local.get $2 i32.const 0 @@ -1603,121 +1571,506 @@ memory.fill local.get $1 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $object-literal/OmittedFoo - block $object-literal/MixedOmitted - block $object-literal/OmittedTypes - block $object-literal/Managed - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $object-literal/Managed $object-literal/OmittedTypes $object-literal/MixedOmitted $object-literal/OmittedFoo $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - return - end - return - end - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=8 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=12 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=16 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=20 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=24 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=28 - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (func $~start - call $start:object-literal - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + local.get $0 + local.set $1 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 - i32.const 1748 + i32.const 3684 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36480 + i32.const 36528 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa32$73 local.get $1 i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1824 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$73 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (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 1264 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~start + call $start:object-literal + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3684 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3684 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$222 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1168 + local.set $0 + br $__inlined_func$~lib/string/String#concat$222 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36480 + i32.const 36528 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3684 + i32.lt_s + if + i32.const 36480 + i32.const 36528 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1104 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1136 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1600 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1600 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3408 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3684 + i32.lt_s + if + i32.const 36480 + i32.const 36528 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -1786,7 +2139,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$83 + block $__inlined_func$~lib/util/string/compareImpl$84 loop $while-continue|1 local.get $0 local.tee $3 @@ -1806,7 +2159,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$83 + br_if $__inlined_func$~lib/util/string/compareImpl$84 local.get $2 i32.const 2 i32.add @@ -1841,11 +2194,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3684 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36480 + i32.const 36528 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1861,7 +2214,7 @@ i32.load if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 57 i32.const 3 call $~lib/builtins/abort @@ -1874,7 +2227,7 @@ i32.load offset=4 if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 58 i32.const 3 call $~lib/builtins/abort @@ -1889,7 +2242,7 @@ i64.ne if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 59 i32.const 3 call $~lib/builtins/abort @@ -1904,7 +2257,7 @@ i64.ne if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -1919,7 +2272,7 @@ f32.ne if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -1934,7 +2287,7 @@ f64.ne if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 62 i32.const 3 call $~lib/builtins/abort @@ -1947,7 +2300,7 @@ i32.load8_u offset=40 if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -1960,7 +2313,7 @@ i32.load8_u offset=41 if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -1973,7 +2326,7 @@ i32.load16_u offset=42 if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -1986,7 +2339,7 @@ i32.load16_u offset=44 if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 66 i32.const 3 call $~lib/builtins/abort @@ -1999,7 +2352,7 @@ i32.load offset=48 if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -2012,7 +2365,7 @@ i32.load offset=52 if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -2027,7 +2380,7 @@ f64.ne if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 69 i32.const 3 call $~lib/builtins/abort @@ -2040,7 +2393,7 @@ i32.load8_u offset=64 if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 70 i32.const 3 call $~lib/builtins/abort @@ -2058,11 +2411,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3684 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36480 + i32.const 36528 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2080,12 +2433,12 @@ local.tee $1 i32.store local.get $1 - i32.const 1664 + i32.const 3600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 107 i32.const 3 call $~lib/builtins/abort @@ -2100,12 +2453,12 @@ local.tee $1 i32.store local.get $1 - i32.const 1696 + i32.const 3632 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -2125,7 +2478,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -2145,7 +2498,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 110 i32.const 3 call $~lib/builtins/abort @@ -2165,7 +2518,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 111 i32.const 3 call $~lib/builtins/abort @@ -2185,7 +2538,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 112 i32.const 3 call $~lib/builtins/abort @@ -2205,7 +2558,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 113 i32.const 3 call $~lib/builtins/abort @@ -2225,7 +2578,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -2238,7 +2591,7 @@ i32.load offset=32 if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 115 i32.const 3 call $~lib/builtins/abort @@ -2253,7 +2606,7 @@ i32.ne if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 116 i32.const 3 call $~lib/builtins/abort @@ -2276,44 +2629,44 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3684 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 24 memory.fill - i32.const 1156 - i32.const 1152 - i32.store - i32.const 1160 - i32.const 1152 - i32.store - i32.const 1152 - global.set $~lib/rt/itcms/toSpace memory.size i32.const 16 i32.shl - i32.const 34516 + i32.const 36452 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1364 - i32.const 1360 + i32.const 1316 + i32.const 1312 i32.store - i32.const 1368 - i32.const 1360 + i32.const 1320 + i32.const 1312 i32.store - i32.const 1360 + i32.const 1312 global.set $~lib/rt/itcms/pinSpace - i32.const 1396 - i32.const 1392 + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/toSpace + i32.const 1492 + i32.const 1488 i32.store - i32.const 1400 - i32.const 1392 + i32.const 1496 + i32.const 1488 i32.store - i32.const 1392 + i32.const 1488 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2321,7 +2674,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3684 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2385,7 +2738,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3684 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2400,7 +2753,7 @@ i32.ne if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 9 i32.const 3 call $~lib/builtins/abort @@ -2420,7 +2773,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -2454,7 +2807,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3684 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2482,7 +2835,7 @@ i32.const 1 i32.shl local.set $3 - block $__inlined_func$~lib/string/String#substring$210 + block $__inlined_func$~lib/string/String#substring$223 local.get $2 i32.const 0 local.get $2 @@ -2501,9 +2854,9 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1568 + i32.const 1168 local.set $0 - br $__inlined_func$~lib/string/String#substring$210 + br $__inlined_func$~lib/string/String#substring$223 end local.get $3 i32.eqz @@ -2520,7 +2873,7 @@ global.set $~lib/memory/__stack_pointer i32.const 1056 local.set $0 - br $__inlined_func$~lib/string/String#substring$210 + br $__inlined_func$~lib/string/String#substring$223 end global.get $~lib/memory/__stack_pointer local.get $2 @@ -2550,7 +2903,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3684 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2562,7 +2915,7 @@ i32.ne if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -2574,12 +2927,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1600 + i32.const 3536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 28 i32.const 3 call $~lib/builtins/abort @@ -2597,7 +2950,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3684 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2760,7 +3113,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3684 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2817,10 +3170,10 @@ local.get $1 i32.store offset=8 local.get $1 - i32.const 1632 + i32.const 3568 i32.store offset=4 local.get $1 - i32.const 1632 + i32.const 3568 call $~lib/rt/itcms/__link local.get $1 f64.const 0 @@ -2833,7 +3186,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3684 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2846,7 +3199,7 @@ i32.load if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 82 i32.const 3 call $~lib/builtins/abort @@ -2861,12 +3214,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1632 + i32.const 3568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -2881,7 +3234,7 @@ f64.ne if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -2897,7 +3250,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3684 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2921,19 +3274,19 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 1664 + i32.const 3600 i32.store local.get $0 - i32.const 1664 + i32.const 3600 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 1696 + i32.const 3632 i32.store offset=4 local.get $0 - i32.const 1696 + i32.const 3632 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 @@ -3033,7 +3386,7 @@ i32.store local.get $0 call $object-literal/testOmittedFoo - i32.const 34516 + i32.const 36452 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 @@ -3074,8 +3427,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34544 - i32.const 34592 + i32.const 36480 + i32.const 36528 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3087,11 +3440,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3684 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36480 + i32.const 36528 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3116,4 +3469,71 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $object-literal/OmittedFoo + block $object-literal/MixedOmitted + block $object-literal/OmittedTypes + block $object-literal/Managed + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $object-literal/Managed $object-literal/OmittedTypes $object-literal/MixedOmitted $object-literal/OmittedFoo $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=12 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=16 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=20 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=24 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=28 + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/operator-overload-non-ambiguity.debug.wat b/tests/compiler/operator-overload-non-ambiguity.debug.wat index 243a2fc1ae..70352c0aa9 100644 --- a/tests/compiler/operator-overload-non-ambiguity.debug.wat +++ b/tests/compiler/operator-overload-non-ambiguity.debug.wat @@ -1,14 +1,20 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,31 +23,468 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 512)) - (global $~lib/memory/__data_end i32 (i32.const 548)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33316)) - (global $~lib/memory/__heap_base i32 (i32.const 33316)) + (global $~lib/rt/__rtti_base i32 (i32.const 2480)) + (global $~lib/memory/__data_end i32 (i32.const 2516)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35284)) + (global $~lib/memory/__heap_base i32 (i32.const 35284)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00D\00\00\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00-\00n\00o\00n\00-\00a\00m\00b\00i\00g\00u\00i\00t\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 512) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00D\00\00\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00-\00n\00o\00n\00-\00a\00m\00b\00i\00g\00u\00i\00t\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2480) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -106,7 +549,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -176,7 +619,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -193,7 +636,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -223,8 +666,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -292,7 +735,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -444,7 +887,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -464,7 +907,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -527,7 +970,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -680,7 +1123,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -697,7 +1140,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -786,7 +1229,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -829,7 +1272,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -847,7 +1290,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -915,7 +1358,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1032,7 +1475,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1078,7 +1521,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1110,7 +1553,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1354,7 +1797,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1574,7 +2017,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1682,8 +2125,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1785,7 +2228,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1856,7 +2299,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2013,7 +2456,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2128,7 +2571,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2148,7 +2591,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2196,8 +2639,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2253,7 +2696,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -2262,64 +2705,6 @@ i32.const 1 return ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $operator-overload-non-ambiguity/T1 - block $operator-overload-non-ambiguity/P2 - block $operator-overload-non-ambiguity/Base - block $operator-overload-non-ambiguity/P1 - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $operator-overload-non-ambiguity/P1 $operator-overload-non-ambiguity/Base $operator-overload-non-ambiguity/P2 $operator-overload-non-ambiguity/T1 $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - return - end - return - end - unreachable - ) (func $~start call $start:operator-overload-non-ambiguity ) @@ -2328,14 +2713,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33344 - i32.const 33392 + i32.const 35312 + i32.const 35360 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $operator-overload-non-ambiguity/Base#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2506,13 +3096,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -2533,7 +3123,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -2551,7 +3141,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -2569,7 +3159,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -2580,6 +3170,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2608,4 +3345,68 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $operator-overload-non-ambiguity/T1 + block $operator-overload-non-ambiguity/P2 + block $operator-overload-non-ambiguity/Base + block $operator-overload-non-ambiguity/P1 + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $operator-overload-non-ambiguity/P1 $operator-overload-non-ambiguity/Base $operator-overload-non-ambiguity/P2 $operator-overload-non-ambiguity/T1 $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/operator-overload-non-ambiguity.release.wat b/tests/compiler/operator-overload-non-ambiguity.release.wat index f80cb51cd9..df2d1dde15 100644 --- a/tests/compiler/operator-overload-non-ambiguity.release.wat +++ b/tests/compiler/operator-overload-non-ambiguity.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func)) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (result i32))) - (type $5 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (result i32))) (type $6 (func (param i32 i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,29 +17,252 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34340)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36308)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) "\\") - (data $8.1 (i32.const 1448) "\02\00\00\00D\00\00\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00-\00n\00o\00n\00-\00a\00m\00b\00i\00g\00u\00i\00t\00y\00.\00t\00s") - (data $9 (i32.const 1536) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "\\") + (data $19.1 (i32.const 3416) "\02\00\00\00D\00\00\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00-\00n\00o\00n\00-\00a\00m\00b\00i\00g\00u\00i\00t\00y\00.\00t\00s") + (data $20 (i32.const 3504) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3540 + i32.lt_s + if + i32.const 36336 + i32.const 36384 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -60,7 +283,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -108,7 +331,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -117,7 +340,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$116 + block $__inlined_func$~lib/rt/itcms/Object#unlink$129 local.get $1 i32.load offset=4 i32.const -4 @@ -129,19 +352,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34340 + i32.const 36308 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$116 + br $__inlined_func$~lib/rt/itcms/Object#unlink$129 end local.get $1 i32.load offset=8 @@ -149,7 +372,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -178,12 +401,12 @@ i32.const 1 else local.get $0 - i32.const 1536 + i32.const 3504 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -192,7 +415,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1540 + i32.const 3508 i32.add i32.load i32.const 32 @@ -244,7 +467,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -258,7 +481,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -304,7 +527,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -387,7 +610,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -401,7 +624,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -462,7 +685,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -495,7 +718,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -510,7 +733,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -561,7 +784,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -633,7 +856,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -658,7 +881,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -685,7 +908,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -757,10 +980,10 @@ if unreachable end - i32.const 34352 + i32.const 36320 i32.const 0 i32.store - i32.const 35920 + i32.const 37888 i32.const 0 i32.store loop $for-loop|0 @@ -771,7 +994,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34352 + i32.const 36320 i32.add i32.const 0 i32.store offset=4 @@ -789,7 +1012,7 @@ i32.add i32.const 2 i32.shl - i32.const 34352 + i32.const 36320 i32.add i32.const 0 i32.store offset=96 @@ -807,14 +1030,14 @@ br $for-loop|0 end end - i32.const 34352 - i32.const 35924 + i32.const 36320 + i32.const 37892 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34352 + i32.const 36320 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -899,7 +1122,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34340 + i32.const 36308 i32.lt_u if local.get $0 @@ -988,14 +1211,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34340 + i32.const 36308 i32.lt_u if local.get $0 @@ -1018,7 +1241,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34340 + i32.const 36308 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1047,7 +1270,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1077,18 +1300,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1096,32 +1386,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1134,23 +1428,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 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 @@ -1164,9 +1470,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1189,31 +1495,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if memory.size - local.tee $1 - i32.const 4 - local.get $2 + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 i32.load offset=1568 - local.get $1 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1229,8 +1590,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1238,119 +1599,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1358,51 +1736,14 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $operator-overload-non-ambiguity/T1 - block $operator-overload-non-ambiguity/P2 - block $operator-overload-non-ambiguity/Base - block $operator-overload-non-ambiguity/P1 - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $operator-overload-non-ambiguity/P1 $operator-overload-non-ambiguity/Base $operator-overload-non-ambiguity/P2 $operator-overload-non-ambiguity/T1 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - unreachable + memory.fill + local.get $1 ) (func $~start (local $0 i32) @@ -1412,7 +1753,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1572 + i32.const 3540 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1421,47 +1762,48 @@ memory.size i32.const 16 i32.shl - i32.const 34340 + i32.const 36308 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1572 + i32.const 3540 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 @@ -1486,13 +1828,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1572 + i32.const 3540 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 6 call $~lib/rt/itcms/__new local.tee $0 @@ -1528,24 +1871,224 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34368 - i32.const 34416 + i32.const 36336 + i32.const 36384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$134 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$134 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36336 + i32.const 36384 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3540 + i32.lt_s + if + i32.const 36336 + i32.const 36384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $operator-overload-non-ambiguity/Base#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1572 + i32.const 3540 i32.lt_s if - i32.const 34368 - i32.const 34416 + i32.const 36336 + i32.const 36384 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1558,6 +2101,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 5 call $~lib/rt/itcms/__new local.tee $0 @@ -1584,11 +2128,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1572 + i32.const 3540 i32.lt_s if - i32.const 34368 - i32.const 34416 + i32.const 36336 + i32.const 36384 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1598,6 +2142,7 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 7 call $~lib/rt/itcms/__new local.tee $0 @@ -1622,11 +2167,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1572 + i32.const 3540 i32.lt_s if - i32.const 34368 - i32.const 34416 + i32.const 36336 + i32.const 36384 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1640,6 +2185,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1650,4 +2196,41 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $operator-overload-non-ambiguity/T1 + block $operator-overload-non-ambiguity/P2 + block $operator-overload-non-ambiguity/Base + block $operator-overload-non-ambiguity/P1 + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $operator-overload-non-ambiguity/P1 $operator-overload-non-ambiguity/Base $operator-overload-non-ambiguity/P2 $operator-overload-non-ambiguity/T1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/optional-typeparameters.debug.wat b/tests/compiler/optional-typeparameters.debug.wat index 181ae2e1ec..457e6b4b5c 100644 --- a/tests/compiler/optional-typeparameters.debug.wat +++ b/tests/compiler/optional-typeparameters.debug.wat @@ -2,15 +2,21 @@ (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (type $9 (func (param i32 i32 i32) (result i32))) - (type $10 (func (param i32 f64 f64) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (param i32 i32 i32) (result i32))) + (type $12 (func (param i32 f64 f64) (result f64))) + (type $13 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -19,9 +25,6 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) @@ -29,20 +32,31 @@ (global $optional-typeparameters/tDerived (mut i32) (i32.const 0)) (global $optional-typeparameters/tMethodDerived (mut i32) (i32.const 0)) (global $optional-typeparameters/tMethodDerived2 (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 416)) - (global $~lib/memory/__data_end i32 (i32.const 456)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33224)) - (global $~lib/memory/__heap_base i32 (i32.const 33224)) + (global $~lib/rt/__rtti_base i32 (i32.const 2384)) + (global $~lib/memory/__data_end i32 (i32.const 2424)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35192)) + (global $~lib/memory/__heap_base i32 (i32.const 35192)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 416) "\t\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00\02A\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2384) "\t\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00\02A\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -55,6 +69,435 @@ local.get $a return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -119,7 +562,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -189,7 +632,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -206,7 +649,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -236,8 +679,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -305,7 +748,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -457,7 +900,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -477,7 +920,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -540,7 +983,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -693,7 +1136,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -710,7 +1153,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -799,7 +1242,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -842,7 +1285,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -860,7 +1303,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -928,7 +1371,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1045,7 +1488,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1091,7 +1534,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1123,7 +1566,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1367,7 +1810,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1587,7 +2030,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1695,8 +2138,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1798,7 +2241,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1869,7 +2312,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2026,7 +2469,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2141,7 +2584,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2161,7 +2604,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2209,8 +2652,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2273,133 +2716,226 @@ i32.eq drop ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $optional-typeparameters/tConcrete - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $optional-typeparameters/tDerived - local.tee $1 + (func $~start + call $start:optional-typeparameters + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 35216 + i32.const 35264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $optional-typeparameters/tMethodDerived - local.tee $1 + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - global.get $optional-typeparameters/tMethodDerived2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/array/Array<~lib/string/String>#get:length_ (param $this i32) (result i32) - local.get $this - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out local.get $this - i32.load - ) - (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $optional-typeparameters/TestMethodDerived2 - block $~lib/array/Array<~lib/string/String> - block $optional-typeparameters/TestMethodDerived<~lib/string/String> - block $"optional-typeparameters/TestDerived" - block $"optional-typeparameters/TestConcrete" - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"optional-typeparameters/TestConcrete" $"optional-typeparameters/TestDerived" $optional-typeparameters/TestMethodDerived<~lib/string/String> $~lib/array/Array<~lib/string/String> $optional-typeparameters/TestMethodDerived2 $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>~visit - return - end - return - end - unreachable + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~start - call $start:optional-typeparameters + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33248 - i32.const 33296 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $"optional-typeparameters/TestConcrete#constructor" (param $this i32) (result i32) (local $1 i32) @@ -2599,13 +3135,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -2665,6 +3201,299 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $optional-typeparameters/tConcrete + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $optional-typeparameters/tDerived + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $optional-typeparameters/tMethodDerived + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $optional-typeparameters/tMethodDerived2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<~lib/string/String>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $optional-typeparameters/TestMethodDerived2 + block $~lib/array/Array<~lib/string/String> + block $optional-typeparameters/TestMethodDerived<~lib/string/String> + block $"optional-typeparameters/TestDerived" + block $"optional-typeparameters/TestConcrete" + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"optional-typeparameters/TestConcrete" $"optional-typeparameters/TestDerived" $optional-typeparameters/TestMethodDerived<~lib/string/String> $~lib/array/Array<~lib/string/String> $optional-typeparameters/TestMethodDerived2 $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + return + end + unreachable + ) (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) (local $cur i32) (local $end i32) @@ -2735,32 +3564,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/object/Object#constructor (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) ) diff --git a/tests/compiler/optional-typeparameters.release.wat b/tests/compiler/optional-typeparameters.release.wat index da3cdefbb6..11f94565cd 100644 --- a/tests/compiler/optional-typeparameters.release.wat +++ b/tests/compiler/optional-typeparameters.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32) (result i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -21,21 +21,240 @@ (global $optional-typeparameters/tDerived (mut i32) (i32.const 0)) (global $optional-typeparameters/tMethodDerived (mut i32) (i32.const 0)) (global $optional-typeparameters/tMethodDerived2 (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34248)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36216)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1440) "\t\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00\02A\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3408) "\t\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00\02A\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3448 + i32.lt_s + if + i32.const 36240 + i32.const 36288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa32$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -63,9 +282,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -86,7 +309,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -134,7 +357,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -143,7 +366,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$131 + block $__inlined_func$~lib/rt/itcms/Object#unlink$144 local.get $1 i32.load offset=4 i32.const -4 @@ -155,19 +378,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34248 + i32.const 36216 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$131 + br $__inlined_func$~lib/rt/itcms/Object#unlink$144 end local.get $1 i32.load offset=8 @@ -175,7 +398,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -204,12 +427,12 @@ i32.const 1 else local.get $0 - i32.const 1440 + i32.const 3408 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -218,7 +441,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1444 + i32.const 3412 i32.add i32.load i32.const 32 @@ -270,7 +493,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -284,7 +507,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -330,7 +553,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -413,7 +636,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -427,7 +650,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -488,7 +711,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -521,7 +744,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -536,7 +759,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -587,7 +810,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -659,7 +882,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -684,7 +907,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -711,7 +934,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -783,10 +1006,10 @@ if unreachable end - i32.const 34256 + i32.const 36224 i32.const 0 i32.store - i32.const 35824 + i32.const 37792 i32.const 0 i32.store loop $for-loop|0 @@ -797,7 +1020,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34256 + i32.const 36224 i32.add i32.const 0 i32.store offset=4 @@ -815,7 +1038,7 @@ i32.add i32.const 2 i32.shl - i32.const 34256 + i32.const 36224 i32.add i32.const 0 i32.store offset=96 @@ -833,14 +1056,14 @@ br $for-loop|0 end end - i32.const 34256 - i32.const 35828 + i32.const 36224 + i32.const 37796 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34256 + i32.const 36224 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -925,7 +1148,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34248 + i32.const 36216 i32.lt_u if local.get $0 @@ -1014,14 +1237,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34248 + i32.const 36216 i32.lt_u if local.get $0 @@ -1044,7 +1267,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34248 + i32.const 36216 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1073,7 +1296,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1103,18 +1326,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1122,32 +1412,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1160,23 +1454,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 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 @@ -1190,9 +1496,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1215,31 +1521,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.const 1073741820 + i32.gt_u if - memory.size - local.tee $1 - i32.const 4 + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 i32.load offset=1568 - local.get $1 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1255,8 +1616,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1264,119 +1625,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1384,120 +1762,14 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - block $invalid - block $optional-typeparameters/TestMethodDerived2 - block $~lib/array/Array<~lib/string/String> - block $optional-typeparameters/TestMethodDerived<~lib/string/String> - block $"optional-typeparameters/TestDerived" - block $"optional-typeparameters/TestConcrete" - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"optional-typeparameters/TestConcrete" $"optional-typeparameters/TestDerived" $optional-typeparameters/TestMethodDerived<~lib/string/String> $~lib/array/Array<~lib/string/String> $optional-typeparameters/TestMethodDerived2 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1480 - i32.lt_s - if - i32.const 34272 - i32.const 34320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - return - end - unreachable + memory.fill + local.get $1 ) (func $~start (local $0 i32) @@ -1507,7 +1779,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1480 + i32.const 3448 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1516,47 +1788,48 @@ memory.size i32.const 16 i32.shl - i32.const 34248 + i32.const 36216 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1480 + i32.const 3448 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 @@ -1583,13 +1856,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1480 + i32.const 3448 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 5 call $~lib/rt/itcms/__new local.tee $0 @@ -1616,13 +1890,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1480 + i32.const 3448 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 6 call $~lib/rt/itcms/__new local.tee $0 @@ -1649,13 +1924,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1480 + i32.const 3448 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 8 call $~lib/rt/itcms/__new local.tee $0 @@ -1686,7 +1962,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1480 + i32.const 3448 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1705,24 +1981,224 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34272 - i32.const 34320 + i32.const 36240 + i32.const 36288 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3448 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3448 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$149 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$149 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36240 + i32.const 36288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3448 + i32.lt_s + if + i32.const 36240 + i32.const 36288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/object/Object#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1480 + i32.const 3448 i32.lt_s if - i32.const 34272 - i32.const 34320 + i32.const 36240 + i32.const 36288 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1736,6 +2212,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1746,4 +2223,110 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $invalid + block $optional-typeparameters/TestMethodDerived2 + block $~lib/array/Array<~lib/string/String> + block $optional-typeparameters/TestMethodDerived<~lib/string/String> + block $"optional-typeparameters/TestDerived" + block $"optional-typeparameters/TestConcrete" + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"optional-typeparameters/TestConcrete" $"optional-typeparameters/TestDerived" $optional-typeparameters/TestMethodDerived<~lib/string/String> $~lib/array/Array<~lib/string/String> $optional-typeparameters/TestMethodDerived2 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3448 + i32.lt_s + if + i32.const 36240 + i32.const 36288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/overflow.debug.wat b/tests/compiler/overflow.debug.wat index 66d363d737..68dd24728c 100644 --- a/tests/compiler/overflow.debug.wat +++ b/tests/compiler/overflow.debug.wat @@ -1,16 +1,2690 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/memory/__data_end i32 (i32.const 60)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) - (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2452)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35220)) + (global $~lib/memory/__heap_base i32 (i32.const 35220)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s\00\00\00\00\00\00\00") + (data $20 (i32.const 2432) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $start:overflow (local $val i32) (local $ctx i32) @@ -32,6 +2706,23 @@ (local $b5 i32) (local $b6 i32) (local $c i32) + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 127 local.set $val local.get $val @@ -45,7 +2736,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -62,7 +2753,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 13 i32.const 3 call $~lib/builtins/abort @@ -82,7 +2773,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 16 i32.const 3 call $~lib/builtins/abort @@ -102,7 +2793,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 19 i32.const 3 call $~lib/builtins/abort @@ -119,7 +2810,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 22 i32.const 3 call $~lib/builtins/abort @@ -136,7 +2827,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 25 i32.const 3 call $~lib/builtins/abort @@ -154,7 +2845,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 28 i32.const 3 call $~lib/builtins/abort @@ -172,7 +2863,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 31 i32.const 3 call $~lib/builtins/abort @@ -187,7 +2878,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -206,7 +2897,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -223,7 +2914,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -243,7 +2934,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 48 i32.const 3 call $~lib/builtins/abort @@ -263,7 +2954,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 51 i32.const 3 call $~lib/builtins/abort @@ -280,7 +2971,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 54 i32.const 3 call $~lib/builtins/abort @@ -297,7 +2988,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 57 i32.const 3 call $~lib/builtins/abort @@ -315,7 +3006,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -333,7 +3024,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -348,7 +3039,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -368,7 +3059,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 74 i32.const 3 call $~lib/builtins/abort @@ -386,7 +3077,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 77 i32.const 3 call $~lib/builtins/abort @@ -407,7 +3098,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 80 i32.const 3 call $~lib/builtins/abort @@ -428,7 +3119,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -446,7 +3137,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 86 i32.const 3 call $~lib/builtins/abort @@ -464,7 +3155,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 89 i32.const 3 call $~lib/builtins/abort @@ -483,7 +3174,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 92 i32.const 3 call $~lib/builtins/abort @@ -502,7 +3193,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 95 i32.const 3 call $~lib/builtins/abort @@ -518,7 +3209,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -538,7 +3229,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 106 i32.const 3 call $~lib/builtins/abort @@ -556,7 +3247,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 109 i32.const 3 call $~lib/builtins/abort @@ -577,7 +3268,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 112 i32.const 3 call $~lib/builtins/abort @@ -598,7 +3289,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 115 i32.const 3 call $~lib/builtins/abort @@ -616,7 +3307,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 118 i32.const 3 call $~lib/builtins/abort @@ -634,7 +3325,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 121 i32.const 3 call $~lib/builtins/abort @@ -653,7 +3344,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 124 i32.const 3 call $~lib/builtins/abort @@ -672,7 +3363,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 127 i32.const 3 call $~lib/builtins/abort @@ -688,7 +3379,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 129 i32.const 3 call $~lib/builtins/abort @@ -716,7 +3407,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 144 i32.const 3 call $~lib/builtins/abort @@ -732,7 +3423,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 147 i32.const 3 call $~lib/builtins/abort @@ -746,7 +3437,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 150 i32.const 3 call $~lib/builtins/abort @@ -772,7 +3463,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 159 i32.const 3 call $~lib/builtins/abort @@ -782,4 +3473,421 @@ (func $~start call $start:overflow ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35248 + i32.const 35296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/overflow.release.wat b/tests/compiler/overflow.release.wat index c01f5ed58b..e2eaf49653 100644 --- a/tests/compiler/overflow.release.wat +++ b/tests/compiler/overflow.release.wat @@ -1,6 +1,78 @@ (module + (type $0 (func)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s") + (data $20 (i32.const 3456) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) + (start $~start) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36244 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + ) ) diff --git a/tests/compiler/polyfills.debug.wat b/tests/compiler/polyfills.debug.wat index 38b080c31a..82af80875f 100644 --- a/tests/compiler/polyfills.debug.wat +++ b/tests/compiler/polyfills.debug.wat @@ -1,14 +1,58 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func (param i64) (result i64))) - (type $2 (func)) - (type $3 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/memory/__data_end i32 (i32.const 60)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) - (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i64) (result i64))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2452)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35220)) + (global $~lib/memory/__heap_base i32 (i32.const 35220)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s\00\00\00\00\00") + (data $20 (i32.const 2432) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -23,6 +67,2635 @@ local.get $value return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/polyfills/bswap (param $value i32) (result i32) i32.const 1 drop @@ -312,6 +2985,23 @@ return ) (func $start:polyfills + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 170 call $~lib/polyfills/bswap i32.const 255 @@ -321,7 +3011,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2 i32.const 1 call $~lib/builtins/abort @@ -336,7 +3026,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3 i32.const 1 call $~lib/builtins/abort @@ -351,7 +3041,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -366,7 +3056,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -381,7 +3071,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -394,7 +3084,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -407,7 +3097,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -420,7 +3110,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -433,7 +3123,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -446,7 +3136,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 17 i32.const 1 call $~lib/builtins/abort @@ -459,7 +3149,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -472,7 +3162,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -485,7 +3175,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -498,7 +3188,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -508,4 +3198,421 @@ (func $~start call $start:polyfills ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35248 + i32.const 35296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/polyfills.release.wat b/tests/compiler/polyfills.release.wat index b46680aba3..77cabf6ba9 100644 --- a/tests/compiler/polyfills.release.wat +++ b/tests/compiler/polyfills.release.wat @@ -1,6 +1,78 @@ (module + (type $0 (func)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\18\00\00\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\18\00\00\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s") + (data $20 (i32.const 3456) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) + (start $~start) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36244 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + ) ) diff --git a/tests/compiler/portable-conversions.debug.wat b/tests/compiler/portable-conversions.debug.wat index b166b9278f..e6bd515140 100644 --- a/tests/compiler/portable-conversions.debug.wat +++ b/tests/compiler/portable-conversions.debug.wat @@ -1,27 +1,2718 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $portable-conversions/i (mut i32) (i32.const 1)) (global $portable-conversions/I (mut i64) (i64.const 1)) (global $portable-conversions/f (mut f32) (f32.const 1)) (global $portable-conversions/F (mut f64) (f64.const 1)) - (global $~lib/memory/__data_end i32 (i32.const 92)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32860)) - (global $~lib/memory/__heap_base i32 (i32.const 32860)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2464)) + (global $~lib/memory/__data_end i32 (i32.const 2484)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35252)) + (global $~lib/memory/__heap_base i32 (i32.const 35252)) (memory $0 1) - (data $0 (i32.const 12) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2464) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $start:portable-conversions + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $portable-conversions/i i32.extend8_s i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -33,7 +2724,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -45,7 +2736,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -57,7 +2748,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -68,7 +2759,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -80,7 +2771,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -92,7 +2783,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -104,7 +2795,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -114,7 +2805,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -125,7 +2816,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 17 i32.const 1 call $~lib/builtins/abort @@ -136,7 +2827,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -147,7 +2838,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -158,7 +2849,7 @@ i64.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -168,7 +2859,7 @@ i64.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -179,7 +2870,7 @@ i64.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -190,7 +2881,7 @@ i64.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -200,7 +2891,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -211,7 +2902,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -222,7 +2913,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -233,7 +2924,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -245,7 +2936,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -258,7 +2949,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 32 i32.const 1 call $~lib/builtins/abort @@ -271,7 +2962,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -284,7 +2975,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -296,7 +2987,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 36 i32.const 1 call $~lib/builtins/abort @@ -309,7 +3000,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 37 i32.const 1 call $~lib/builtins/abort @@ -322,7 +3013,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -335,7 +3026,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 39 i32.const 1 call $~lib/builtins/abort @@ -345,7 +3036,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -356,7 +3047,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -367,7 +3058,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 43 i32.const 1 call $~lib/builtins/abort @@ -378,7 +3069,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -389,7 +3080,7 @@ i64.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 46 i32.const 1 call $~lib/builtins/abort @@ -399,7 +3090,7 @@ i64.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 47 i32.const 1 call $~lib/builtins/abort @@ -410,7 +3101,7 @@ i64.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 48 i32.const 1 call $~lib/builtins/abort @@ -421,7 +3112,7 @@ i64.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 49 i32.const 1 call $~lib/builtins/abort @@ -431,7 +3122,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 51 i32.const 1 call $~lib/builtins/abort @@ -442,7 +3133,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 52 i32.const 1 call $~lib/builtins/abort @@ -453,7 +3144,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 53 i32.const 1 call $~lib/builtins/abort @@ -464,7 +3155,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 54 i32.const 1 call $~lib/builtins/abort @@ -476,7 +3167,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 56 i32.const 1 call $~lib/builtins/abort @@ -488,7 +3179,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 57 i32.const 1 call $~lib/builtins/abort @@ -505,7 +3196,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 58 i32.const 1 call $~lib/builtins/abort @@ -522,7 +3213,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 59 i32.const 1 call $~lib/builtins/abort @@ -534,7 +3225,7 @@ f32.eq if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 61 i32.const 1 call $~lib/builtins/abort @@ -546,7 +3237,7 @@ f32.eq if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 62 i32.const 1 call $~lib/builtins/abort @@ -557,7 +3248,7 @@ f32.eq if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 63 i32.const 1 call $~lib/builtins/abort @@ -569,7 +3260,7 @@ f32.eq if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 64 i32.const 1 call $~lib/builtins/abort @@ -581,7 +3272,7 @@ f64.eq if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 66 i32.const 1 call $~lib/builtins/abort @@ -593,7 +3284,7 @@ f64.eq if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 67 i32.const 1 call $~lib/builtins/abort @@ -605,7 +3296,7 @@ f64.eq if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 68 i32.const 1 call $~lib/builtins/abort @@ -616,7 +3307,7 @@ f64.eq if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 69 i32.const 1 call $~lib/builtins/abort @@ -626,4 +3317,421 @@ (func $~start call $start:portable-conversions ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35280 + i32.const 35328 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/portable-conversions.release.wat b/tests/compiler/portable-conversions.release.wat index 671881b0f2..dd59cfb444 100644 --- a/tests/compiler/portable-conversions.release.wat +++ b/tests/compiler/portable-conversions.release.wat @@ -1,6 +1,78 @@ (module + (type $0 (func)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 1036) "L") - (data $0.1 (i32.const 1048) "\02\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) "L") + (data $19.1 (i32.const 3416) "\02\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s") + (data $20 (i32.const 3488) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) + (start $~start) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36276 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + ) ) diff --git a/tests/compiler/possibly-null.debug.wat b/tests/compiler/possibly-null.debug.wat index f528abfabe..2efb25389e 100644 --- a/tests/compiler/possibly-null.debug.wat +++ b/tests/compiler/possibly-null.debug.wat @@ -2,12 +2,34 @@ (type $0 (func (param i32))) (type $1 (func (param i32 i32))) (type $2 (func (param i32) (result i32))) - (type $3 (func (param i32 i32 i32 i32))) - (type $4 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $~lib/memory/__data_end i32 (i32.const 8)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (memory $0 0) (table $0 1 1 funcref) (elem $0 (i32.const 1)) @@ -269,13 +291,2642 @@ drop end ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 33136 + i32.const 33200 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 33008 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32944 + i32.const 33280 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32944 + i32.const 33008 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 33580 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 33580 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 33580 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 33580 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 34000 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 34000 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 35056 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 35056 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~stack_check global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__data_end i32.lt_s if i32.const 32800 - i32.const 32848 + i32.const 35216 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -341,6 +2992,358 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 32912 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32848 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 32880 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 33344 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 33344 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 35152 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 33376 + i32.const 33504 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 33568 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $export:possibly-null/testTrue (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -649,4 +3652,59 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 33136 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32944 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 34000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 35056 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $possibly-null/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $possibly-null/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/possibly-null.release.wat b/tests/compiler/possibly-null.release.wat index b681c5b383..fb6b9669b5 100644 --- a/tests/compiler/possibly-null.release.wat +++ b/tests/compiler/possibly-null.release.wat @@ -1,9 +1,20 @@ (module (type $0 (func (param i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $2 (func)) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33792)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (memory $0 0) (export "memory" (memory $0)) (export "testTrue" (func $export:possibly-null/testTrue)) @@ -24,6 +35,1867 @@ (export "testLogicalOrMulti" (func $export:possibly-null/testLogicalAndMulti)) (export "testAssign" (func $export:possibly-null/testAssign)) (export "testNeverNull" (func $export:possibly-null/testTrue)) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 34160 + call $~lib/rt/itcms/__visit + i32.const 33968 + call $~lib/rt/itcms/__visit + i32.const 35024 + call $~lib/rt/itcms/__visit + i32.const 36080 + call $~lib/rt/itcms/__visit + i32.const 4 + i32.load + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 34032 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + 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 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 34032 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$157 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 33792 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34032 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$157 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 34032 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.load + i32.gt_u + if + i32.const 34160 + i32.const 34224 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.load offset=4 + i32.const 32 + i32.and + end + local.set $1 + i32.const 8 + i32.load + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $1 + select + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + i32.const 8 + local.get $0 + i32.store + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 34304 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 34304 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 34304 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 34304 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 34304 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 34304 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 33792 + i32.const 0 + i32.store + i32.const 35360 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 33792 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 33792 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 33792 + i32.const 35364 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 33792 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + i32.const 0 + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 33792 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + local.get $1 + global.set $~lib/rt/itcms/white + i32.const 4 + i32.load + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + 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 34032 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 33792 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 33792 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 34304 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + i32.const 4 + i32.const 0 + i32.store + i32.const 8 + i32.const 0 + i32.store + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 33968 + i32.const 34032 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$71 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$71 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 33968 + i32.const 34304 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 34304 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 34304 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + i32.const 8 + i32.load + local.set $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + i32.const 8 + local.get $1 + i32.store + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 1024 + i32.lt_s + if + i32.const 33824 + i32.const 36240 + 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$75 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 34592 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$75 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$162 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 33936 + local.set $0 + br $__inlined_func$~lib/string/String#concat$162 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 33824 + i32.const 36240 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 33824 + i32.const 36240 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 33872 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 33904 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 34368 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 34368 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 36176 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $export:possibly-null/testTrue (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -34,7 +1906,7 @@ i32.lt_s if i32.const 33824 - i32.const 33872 + i32.const 36240 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -58,7 +1930,7 @@ i32.lt_s if i32.const 33824 - i32.const 33872 + i32.const 36240 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -67,10 +1939,10 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $__inlined_func$possibly-null/testFalseContinuation$12 + block $__inlined_func$possibly-null/testFalseContinuation$88 local.get $0 i32.eqz - br_if $__inlined_func$possibly-null/testFalseContinuation$12 + br_if $__inlined_func$possibly-null/testFalseContinuation$88 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -87,7 +1959,7 @@ i32.lt_s if i32.const 33824 - i32.const 33872 + i32.const 36240 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -157,7 +2029,7 @@ return end i32.const 33824 - i32.const 33872 + i32.const 36240 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -215,7 +2087,7 @@ return end i32.const 33824 - i32.const 33872 + i32.const 36240 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -262,7 +2134,7 @@ return end i32.const 33824 - i32.const 33872 + i32.const 36240 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -278,7 +2150,7 @@ i32.lt_s if i32.const 33824 - i32.const 33872 + i32.const 36240 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -336,10 +2208,38 @@ return end i32.const 33824 - i32.const 33872 + i32.const 36240 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $possibly-null/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $possibly-null/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/reexport.debug.wat b/tests/compiler/reexport.debug.wat index 6343f7999e..e46bd7f65d 100644 --- a/tests/compiler/reexport.debug.wat +++ b/tests/compiler/reexport.debug.wat @@ -5,10 +5,12 @@ (type $3 (func (param i32))) (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) @@ -19,6 +21,9 @@ (global $exports/Car.TIRES i32 (i32.const 4)) (global $exports/vehicles.Car.TIRES i32 (i32.const 4)) (global $exports/outer.inner.a i32 (i32.const 42)) + (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)) @@ -27,28 +32,37 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $reexport/car (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 464)) - (global $~lib/memory/__data_end i32 (i32.const 488)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33256)) - (global $~lib/memory/__heap_base i32 (i32.const 33256)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2456)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35224)) + (global $~lib/memory/__heap_base i32 (i32.const 35224)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00\00\00\00\00") - (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 464) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00\00\00\00\00") + (data $20 (i32.const 2432) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "add" (func $export/add)) @@ -83,10 +97,18 @@ i32.add return ) - (func $exports/Car#set:doors (param $this i32) (param $doors i32) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) local.get $this - local.get $doors - i32.store + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this @@ -152,7 +174,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -222,7 +244,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -239,7 +261,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -269,8 +291,8 @@ i32.load i32.gt_u if - i32.const 272 - i32.const 336 + i32.const 320 + i32.const 384 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -338,7 +360,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 144 + i32.const 192 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -490,7 +512,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -510,7 +532,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -573,7 +595,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -726,7 +748,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -743,7 +765,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -832,7 +854,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -875,7 +897,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -893,7 +915,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -961,7 +983,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1078,7 +1100,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1124,7 +1146,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1156,7 +1178,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1400,7 +1422,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1620,7 +1642,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1728,8 +1750,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 80 - i32.const 416 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1831,7 +1853,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1902,7 +1924,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2059,7 +2081,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2174,7 +2196,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2194,7 +2216,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2242,8 +2264,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 80 - i32.const 144 + i32.const 128 + i32.const 192 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2288,6 +2310,427 @@ local.get $ptr return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $exports/Car#set:doors (param $this i32) (param $doors i32) + local.get $this + local.get $doors + i32.store + ) (func $exports/Car#get:doors (param $this i32) (result i32) local.get $this i32.load @@ -2300,62 +2743,6 @@ ) (func $export-default/theDefault ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $reexport/car - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 272 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 80 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $exports/Car - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - unreachable - ) (func $~start call $start:reexport ) @@ -2364,14 +2751,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33280 - i32.const 33328 + i32.const 35248 + i32.const 35296 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $exports/Car#constructor (param $this i32) (param $doors i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer @@ -2459,6 +3051,23 @@ call $export/mul i32.add drop + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 2 i32.const 2 call $exports/add @@ -2467,7 +3076,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 37 i32.const 1 call $~lib/builtins/abort @@ -2481,29 +3090,12 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 38 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 192 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 224 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 368 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace i32.const 0 i32.const 2 call $exports/Car#constructor @@ -2520,7 +3112,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -2531,4 +3123,213 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $reexport/car + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/reexport.release.wat b/tests/compiler/reexport.release.wat index 336ee88140..de2cb9a84d 100644 --- a/tests/compiler/reexport.release.wat +++ b/tests/compiler/reexport.release.wat @@ -1,13 +1,12 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32) (result i32))) + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func)) (type $2 (func (param i32))) (type $3 (func (param i32 i32))) - (type $4 (func (result i32))) - (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $4 (func (param i32 i32 i64))) + (type $5 (func (result i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (param i32 i32 i32 i32))) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) @@ -22,21 +21,42 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $reexport/car (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34280)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36248)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") - (data $1 (i32.const 1084) "<") - (data $1.1 (i32.const 1096) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $2 (i32.const 1148) "<") - (data $2.1 (i32.const 1160) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $5 (i32.const 1276) "<") - (data $5.1 (i32.const 1288) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $6 (i32.const 1340) ",") - (data $6.1 (i32.const 1352) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $8 (i32.const 1420) "<") - (data $8.1 (i32.const 1432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $9 (i32.const 1488) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (data $20 (i32.const 3456) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "add" (func $export/add)) (export "renamed_sub" (func $export/sub)) (export "renamed_mul" (func $export/mul)) @@ -70,9 +90,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1296 + i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1104 + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -93,7 +117,7 @@ i32.ne if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -141,7 +165,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -150,7 +174,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$119 + block $__inlined_func$~lib/rt/itcms/Object#unlink$132 local.get $1 i32.load offset=4 i32.const -4 @@ -162,19 +186,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34280 + i32.const 36248 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$119 + br $__inlined_func$~lib/rt/itcms/Object#unlink$132 end local.get $1 i32.load offset=8 @@ -182,7 +206,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -211,12 +235,12 @@ i32.const 1 else local.get $0 - i32.const 1488 + i32.const 3456 i32.load i32.gt_u if - i32.const 1296 - i32.const 1360 + i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -225,7 +249,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1492 + i32.const 3460 i32.add i32.load i32.const 32 @@ -277,7 +301,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -291,7 +315,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -337,7 +361,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -420,7 +444,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -434,7 +458,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -495,7 +519,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -528,7 +552,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -543,7 +567,7 @@ i32.ne if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -594,7 +618,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -666,7 +690,7 @@ i64.lt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -691,7 +715,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -718,7 +742,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -790,10 +814,10 @@ if unreachable end - i32.const 34288 + i32.const 36256 i32.const 0 i32.store - i32.const 35856 + i32.const 37824 i32.const 0 i32.store loop $for-loop|0 @@ -804,7 +828,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34288 + i32.const 36256 i32.add i32.const 0 i32.store offset=4 @@ -822,7 +846,7 @@ i32.add i32.const 2 i32.shl - i32.const 34288 + i32.const 36256 i32.add i32.const 0 i32.store offset=96 @@ -840,14 +864,14 @@ br $for-loop|0 end end - i32.const 34288 - i32.const 35860 + i32.const 36256 + i32.const 37828 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34288 + i32.const 36256 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -932,7 +956,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34280 + i32.const 36248 i32.lt_u if local.get $0 @@ -1021,14 +1045,14 @@ i32.ne if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34280 + i32.const 36248 i32.lt_u if local.get $0 @@ -1051,7 +1075,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34280 + i32.const 36248 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1080,7 +1104,7 @@ end if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1110,18 +1134,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1129,32 +1220,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1167,23 +1262,35 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 - local.set $0 + local.set $2 loop $do-loop|0 - local.get $0 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $0 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1197,9 +1304,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end - local.get $0 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1222,39 +1329,94 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $1 + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 call $~lib/rt/tlsf/searchBlock - local.tee $0 + local.tee $2 i32.eqz if memory.size - local.tee $0 + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end i32.const 4 - local.get $1 + local.get $4 i32.load offset=1568 - local.get $0 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.tee $2 - local.get $0 + local.tee $3 local.get $2 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1262,8 +1424,8 @@ unreachable end end - local.get $1 - local.get $0 + local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1271,119 +1433,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $1 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $0 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $0 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $0 + local.get $4 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $0 + local.get $2 i32.load - local.tee $2 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub local.tee $3 i32.const 16 i32.ge_u if - local.get $0 local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $0 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $2 + local.get $5 + i32.add + local.tee $5 local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $1 - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $0 local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $0 + local.get $2 i32.const 4 i32.add - local.get $0 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $0 - i32.const 4 + local.get $2 + local.get $1 i32.store offset=12 + local.get $2 local.get $0 - i32.const 4 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $0 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $0 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $0 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $0 + local.get $2 i32.load i32.const -4 i32.and @@ -1391,48 +1570,219 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $0 + local.get $2 i32.const 20 i32.add - local.tee $0 + local.tee $1 i32.const 0 - i32.store align=1 local.get $0 + memory.fill + local.get $1 ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - ) - (func $export-default/theDefault - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $exports/Car - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid - end - return - end - return - end - return + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3480 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add i32.load - call $~lib/rt/itcms/__visit - return + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 end - return + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end - unreachable + local.get $0 + ) + (func $export/sub (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $export-default/theDefault ) (func $~start (local $0 i32) @@ -1442,7 +1792,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1512 + i32.const 3480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1451,47 +1801,49 @@ memory.size i32.const 16 i32.shl - i32.const 34280 + i32.const 36248 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 + i32.const 1268 + i32.const 1264 i32.store - i32.const 1224 - i32.const 1216 + i32.const 1272 + i32.const 1264 i32.store - i32.const 1216 + i32.const 1264 global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 + i32.const 1300 + i32.const 1296 i32.store - i32.const 1256 - i32.const 1248 + i32.const 1304 + i32.const 1296 i32.store - i32.const 1248 + i32.const 1296 global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 + i32.const 1444 + i32.const 1440 i32.store - i32.const 1400 - i32.const 1392 + i32.const 1448 + i32.const 1440 i32.store - i32.const 1392 + 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 1512 + i32.const 3480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1522,7 +1874,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1512 + i32.const 3480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1541,7 +1893,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -1553,11 +1905,239 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34304 - i32.const 34352 + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$137 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$137 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36272 + i32.const 36320 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3480 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/rereexport.debug.wat b/tests/compiler/rereexport.debug.wat index 8d023dca80..05a2547e97 100644 --- a/tests/compiler/rereexport.debug.wat +++ b/tests/compiler/rereexport.debug.wat @@ -5,16 +5,21 @@ (type $3 (func (param i32))) (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) (global $exports/Car.TIRES i32 (i32.const 4)) (global $exports/vehicles.Car.TIRES i32 (i32.const 4)) (global $exports/outer.inner.a i32 (i32.const 42)) + (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)) @@ -23,31 +28,40 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $reexport/car (mut i32) (i32.const 0)) (global $rereexport/car (mut i32) (i32.const 0)) (global $rereexport/exportsNamespaceCar (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 512)) - (global $~lib/memory/__data_end i32 (i32.const 536)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33304)) - (global $~lib/memory/__heap_base i32 (i32.const 33304)) + (global $~lib/rt/__rtti_base i32 (i32.const 2480)) + (global $~lib/memory/__data_end i32 (i32.const 2504)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35272)) + (global $~lib/memory/__heap_base i32 (i32.const 35272)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00\00\00\00\00") - (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00") - (data $10 (i32.const 512) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00\00\00\00\00") + (data $20 (i32.const 2428) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00") + (data $21 (i32.const 2480) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "a" (global $export/a)) @@ -76,10 +90,18 @@ i32.add return ) - (func $exports/Car#set:doors (param $this i32) (param $doors i32) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) local.get $this - local.get $doors - i32.store + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this @@ -145,7 +167,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -215,7 +237,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -232,7 +254,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -262,8 +284,8 @@ i32.load i32.gt_u if - i32.const 272 - i32.const 336 + i32.const 320 + i32.const 384 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -331,7 +353,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 144 + i32.const 192 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -483,7 +505,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -503,7 +525,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -566,7 +588,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -719,7 +741,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -736,7 +758,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -825,7 +847,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -868,7 +890,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -886,7 +908,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -954,7 +976,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1071,7 +1093,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1117,7 +1139,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1149,7 +1171,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1393,7 +1415,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1613,7 +1635,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 192 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1721,8 +1743,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 80 - i32.const 416 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1824,7 +1846,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1895,7 +1917,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2052,7 +2074,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2167,7 +2189,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2187,7 +2209,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 464 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2235,8 +2257,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 80 - i32.const 144 + i32.const 128 + i32.const 192 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2281,81 +2303,432 @@ local.get $ptr return ) - (func $exports/Car#get:doors (param $this i32) (result i32) - local.get $this - i32.load + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable ) - (func $export-default/theDefault + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $rereexport/car - local.tee $1 + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 end - global.get $rereexport/exportsNamespaceCar - local.tee $1 if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return end - i32.const 272 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 80 - local.get $0 - call $~lib/rt/itcms/__visit - global.get $reexport/car - local.tee $1 + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end end ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + (func $exports/Car#set:doors (param $this i32) (param $doors i32) + local.get $this + local.get $doors + i32.store ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $exports/Car - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - unreachable + (func $exports/Car#get:doors (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $export-default/theDefault ) (func $~start call $start:rereexport @@ -2365,16 +2738,20 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33328 - i32.const 33376 + i32.const 35296 + i32.const 35344 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) - (func $exports/Car#constructor (param $this i32) (param $doors i32) (result i32) - (local $2 i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -2384,10 +2761,211 @@ i64.const 0 i64.store local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $exports/Car#constructor (param $this i32) (param $doors i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.const 4 call $~lib/rt/itcms/__new local.tee $this @@ -2460,6 +3038,23 @@ call $export/mul i32.add drop + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 2 i32.const 2 call $exports/add @@ -2468,7 +3063,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 37 i32.const 1 call $~lib/builtins/abort @@ -2482,29 +3077,12 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 38 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 192 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 224 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 368 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace i32.const 0 i32.const 2 call $exports/Car#constructor @@ -2521,7 +3099,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -2551,7 +3129,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -2565,7 +3143,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -2587,7 +3165,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -2601,7 +3179,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -2615,7 +3193,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -2637,7 +3215,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 2448 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -2648,4 +3226,227 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $rereexport/car + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rereexport/exportsNamespaceCar + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + global.get $reexport/car + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/rereexport.release.wat b/tests/compiler/rereexport.release.wat index ebef106da3..016ae75868 100644 --- a/tests/compiler/rereexport.release.wat +++ b/tests/compiler/rereexport.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) - (type $1 (func (result i32))) + (type $1 (func (param i32 i32) (result i32))) (type $2 (func (param i32))) (type $3 (func (param i32 i32))) - (type $4 (func (param i32) (result i32))) - (type $5 (func (param i32 i32 i32 i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32) (result i32))) (type $6 (func (param i32 i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -22,23 +22,44 @@ (global $reexport/car (mut i32) (i32.const 0)) (global $rereexport/car (mut i32) (i32.const 0)) (global $rereexport/exportsNamespaceCar (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34328)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36296)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") - (data $1 (i32.const 1084) "<") - (data $1.1 (i32.const 1096) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $2 (i32.const 1148) "<") - (data $2.1 (i32.const 1160) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $5 (i32.const 1276) "<") - (data $5.1 (i32.const 1288) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $6 (i32.const 1340) ",") - (data $6.1 (i32.const 1352) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $8 (i32.const 1420) "<") - (data $8.1 (i32.const 1432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $9 (i32.const 1484) ",") - (data $9.1 (i32.const 1496) "\02\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") - (data $10 (i32.const 1536) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (data $20 (i32.const 3452) ",") + (data $20.1 (i32.const 3464) "\02\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (data $21 (i32.const 3504) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "a" (global $export/a)) (export "renamed_a" (global $export/a)) (export "renamed_b" (global $export/b)) @@ -62,9 +83,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1296 + i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1104 + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 call $~lib/rt/itcms/__visit global.get $reexport/car local.tee $0 @@ -91,7 +116,7 @@ i32.ne if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -139,7 +164,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -148,7 +173,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$120 + block $__inlined_func$~lib/rt/itcms/Object#unlink$133 local.get $1 i32.load offset=4 i32.const -4 @@ -160,19 +185,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34328 + i32.const 36296 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$120 + br $__inlined_func$~lib/rt/itcms/Object#unlink$133 end local.get $1 i32.load offset=8 @@ -180,7 +205,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -209,12 +234,12 @@ i32.const 1 else local.get $0 - i32.const 1536 + i32.const 3504 i32.load i32.gt_u if - i32.const 1296 - i32.const 1360 + i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -223,7 +248,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1540 + i32.const 3508 i32.add i32.load i32.const 32 @@ -275,7 +300,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -289,7 +314,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -335,7 +360,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -418,7 +443,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -432,7 +457,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -493,7 +518,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -526,7 +551,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -541,7 +566,7 @@ i32.ne if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -592,7 +617,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -664,7 +689,7 @@ i64.lt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -689,7 +714,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -716,7 +741,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -788,10 +813,10 @@ if unreachable end - i32.const 34336 + i32.const 36304 i32.const 0 i32.store - i32.const 35904 + i32.const 37872 i32.const 0 i32.store loop $for-loop|0 @@ -802,7 +827,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34336 + i32.const 36304 i32.add i32.const 0 i32.store offset=4 @@ -820,7 +845,7 @@ i32.add i32.const 2 i32.shl - i32.const 34336 + i32.const 36304 i32.add i32.const 0 i32.store offset=96 @@ -838,14 +863,14 @@ br $for-loop|0 end end - i32.const 34336 - i32.const 35908 + i32.const 36304 + i32.const 37876 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34336 + i32.const 36304 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -930,7 +955,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34328 + i32.const 36296 i32.lt_u if local.get $0 @@ -1019,14 +1044,14 @@ i32.ne if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34328 + i32.const 36296 i32.lt_u if local.get $0 @@ -1049,7 +1074,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34328 + i32.const 36296 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1078,7 +1103,7 @@ end if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1108,18 +1133,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1127,32 +1219,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1165,23 +1261,35 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 - local.set $0 + local.set $2 loop $do-loop|0 - local.get $0 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $0 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1195,9 +1303,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end - local.get $0 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1220,39 +1328,94 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $1 + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 call $~lib/rt/tlsf/searchBlock - local.tee $0 + local.tee $2 i32.eqz if memory.size - local.tee $0 + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end i32.const 4 - local.get $1 + local.get $4 i32.load offset=1568 - local.get $0 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.tee $2 - local.get $0 + local.tee $3 local.get $2 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1260,8 +1423,8 @@ unreachable end end - local.get $1 - local.get $0 + local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1269,119 +1432,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $1 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $0 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $0 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $0 + local.get $4 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $0 + local.get $2 i32.load - local.tee $2 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub local.tee $3 i32.const 16 i32.ge_u if - local.get $0 local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $0 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $2 + local.get $5 + i32.add + local.tee $5 local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $1 - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $0 local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $0 + local.get $2 i32.const 4 i32.add - local.get $0 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $0 - i32.const 4 + local.get $2 + local.get $1 i32.store offset=12 + local.get $2 local.get $0 - i32.const 4 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $0 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $0 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $0 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $0 + local.get $2 i32.load i32.const -4 i32.and @@ -1389,43 +1569,214 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $0 + local.get $2 i32.const 20 i32.add - local.tee $0 + local.tee $1 i32.const 0 - i32.store align=1 local.get $0 + memory.fill + local.get $1 ) - (func $export-default/theDefault - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $exports/Car - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid - end - return - end - return - end - return - end + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3528 + i32.lt_s + if + i32.const 36320 + i32.const 36368 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add i32.load - call $~lib/rt/itcms/__visit - return + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 end - return + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end - unreachable + local.get $0 + ) + (func $export-default/theDefault ) (func $~start (local $0 i32) @@ -1435,7 +1786,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1560 + i32.const 3528 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1446,7 +1797,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1560 + i32.const 3528 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1455,34 +1806,34 @@ memory.size i32.const 16 i32.shl - i32.const 34328 + i32.const 36296 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 + i32.const 1268 + i32.const 1264 i32.store - i32.const 1224 - i32.const 1216 + i32.const 1272 + i32.const 1264 i32.store - i32.const 1216 + i32.const 1264 global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 + i32.const 1300 + i32.const 1296 i32.store - i32.const 1256 - i32.const 1248 + i32.const 1304 + i32.const 1296 i32.store - i32.const 1248 + i32.const 1296 global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 + i32.const 1444 + i32.const 1440 i32.store - i32.const 1400 - i32.const 1392 + i32.const 1448 + i32.const 1440 i32.store - i32.const 1392 + i32.const 1440 global.set $~lib/rt/itcms/fromSpace call $exports/Car#constructor global.set $reexport/car @@ -1496,7 +1847,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -1518,7 +1869,7 @@ i32.ne if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -1536,7 +1887,7 @@ i32.ne if i32.const 0 - i32.const 1504 + i32.const 3472 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -1548,13 +1899,213 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34352 - i32.const 34400 + i32.const 36320 + i32.const 36368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3528 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3528 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$141 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$141 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3528 + i32.lt_s + if + i32.const 36320 + i32.const 36368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $exports/Car#constructor (result i32) (local $0 i32) global.get $~lib/memory/__stack_pointer @@ -1562,11 +2113,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1560 + i32.const 3528 i32.lt_s if - i32.const 34352 - i32.const 34400 + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1576,6 +2127,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1603,11 +2156,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1560 + i32.const 3528 i32.lt_s if - i32.const 34352 - i32.const 34400 + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1626,4 +2179,32 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/resolve-access.debug.wat b/tests/compiler/resolve-access.debug.wat index 6dc9f58eb4..f46aaad387 100644 --- a/tests/compiler/resolve-access.debug.wat +++ b/tests/compiler/resolve-access.debug.wat @@ -1,26 +1,26 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) (type $4 (func (param i32 i32 i32))) (type $5 (func)) (type $6 (func (result i32))) (type $7 (func (param i64 i32) (result i32))) (type $8 (func (param i32 i64 i32))) - (type $9 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i64 i32 i32))) (type $10 (func (param i32 i32 i64) (result i32))) (type $11 (func (param i32 i32 i32) (result i32))) (type $12 (func (param i64) (result i32))) - (type $13 (func (param i32 i64 i32 i32))) - (type $14 (func (param i32 i64))) - (type $15 (func (param i32) (result i64))) + (type $13 (func (param i32 i64))) + (type $14 (func (param i32) (result i64))) + (type $15 (func (param i32 i32 i32 i32))) (type $16 (func (param i32 i32) (result i64))) (type $17 (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -33,29 +33,33 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) - (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 2272)) - (global $~lib/memory/__data_end i32 (i32.const 2304)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35072)) - (global $~lib/memory/__heap_base i32 (i32.const 35072)) + (global $~lib/rt/__rtti_base i32 (i32.const 2464)) + (global $~lib/memory/__data_end i32 (i32.const 2496)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35264)) + (global $~lib/memory/__heap_base i32 (i32.const 35264)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 444) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $10 (i32.const 492) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 620) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $12 (i32.const 684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 716) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data $14 (i32.const 1116) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 2172) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") - (data $16 (i32.const 2272) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\02\00\00\02\t\00\00 \00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 172) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 396) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $9 (i32.const 796) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 1852) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $11 (i32.const 1948) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 2012) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $13 (i32.const 2076) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $21 (i32.const 2464) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\02\00\00\02\t\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "arrayAccess" (func $resolve-access/arrayAccess)) @@ -63,160 +67,589 @@ (export "propertyAccess" (func $resolve-access/propertyAccess)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) - local.get $this - local.get $nextWithColor - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) - local.get $this - local.get $prev - i32.store offset=8 - ) - (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) - local.get $space - local.get $space - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $space - local.get $space - call $~lib/rt/itcms/Object#set:prev - local.get $space - return - ) - (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.const -1 - i32.xor - i32.and - return + i32.load offset=16 ) - (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + (func $~lib/string/String#get:length (param $this i32) (result i32) local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.and + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u return ) - (func $~lib/rt/itcms/visitRoots (param $cookie i32) - (local $pn i32) - (local $iter i32) - local.get $cookie - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.set $pn - local.get $pn - call $~lib/rt/itcms/Object#get:next - local.set $iter - loop $while-continue|0 - local.get $iter - local.get $pn - i32.ne + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u if i32.const 1 - drop - local.get $iter - call $~lib/rt/itcms/Object#get:color + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $iter - i32.const 20 + local.get $value + i32.const 10000 + i32.ge_u i32.add - local.get $cookie - call $~lib/rt/__visit_members - local.get $iter - call $~lib/rt/itcms/Object#get:next - local.set $iter - br $while-continue|0 + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return end - end - ) - (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) - local.get $this - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $color - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) - local.get $this - i32.load offset=8 - ) - (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) - local.get $this - local.get $obj - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.and - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#unlink (param $this i32) - (local $next i32) - (local $prev i32) - local.get $this - call $~lib/rt/itcms/Object#get:next - local.set $next - local.get $next - i32.const 0 - i32.eq - if - i32.const 1 - drop - local.get $this - call $~lib/rt/itcms/Object#get:prev - i32.const 0 - i32.eq - if (result i32) - local.get $this - global.get $~lib/memory/__heap_base - i32.lt_u + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return else - i32.const 0 + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return end - i32.eqz + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u if - i32.const 0 - i32.const 128 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 396 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 396 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end - return end - local.get $this - call $~lib/rt/itcms/Object#get:prev - local.set $prev - i32.const 1 - drop - local.get $prev - i32.eqz + local.get $num + i32.const 100 + i32.ge_u if - i32.const 0 - i32.const 128 - i32.const 132 - i32.const 16 + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 396 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 396 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 816 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 816 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1872 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1872 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2096 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2096 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 2096 + i32.const 132 + i32.const 16 call $~lib/builtins/abort unreachable end @@ -244,8 +677,8 @@ i32.load i32.gt_u if - i32.const 256 - i32.const 320 + i32.const 2224 + i32.const 2288 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -313,7 +746,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 128 + i32.const 2096 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -465,7 +898,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -485,7 +918,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -548,7 +981,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -701,7 +1134,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -718,7 +1151,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -807,7 +1240,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -850,7 +1283,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -868,7 +1301,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -936,7 +1369,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1053,7 +1486,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1099,7 +1532,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1131,7 +1564,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1375,7 +1808,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1595,7 +2028,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2096 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1703,8 +2136,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 64 - i32.const 400 + i32.const 2032 + i32.const 2368 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1806,7 +2239,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1877,7 +2310,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2034,7 +2467,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2149,7 +2582,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2169,7 +2602,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2368 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2217,8 +2650,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 64 - i32.const 128 + i32.const 2032 + i32.const 2096 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2294,262 +2727,67 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2096 i32.const 295 i32.const 14 call $~lib/builtins/abort - unreachable - end - local.get $childPtr - i32.const 20 - i32.sub - local.set $child - local.get $child - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $parentPtr - i32.const 20 - i32.sub - local.set $parent - local.get $parent - call $~lib/rt/itcms/Object#get:color - local.set $parentColor - local.get $parentColor - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $expectMultiple - if - local.get $parent - call $~lib/rt/itcms/Object#makeGray - else - local.get $child - call $~lib/rt/itcms/Object#makeGray - end - else - local.get $parentColor - i32.const 3 - i32.eq - if (result i32) - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - else - i32.const 0 - end - if - local.get $child - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $~lib/array/Array#get:length_ (param $this i32) (result i32) - local.get $this - i32.load offset=12 - ) - (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) - local.get $value - i32.const 100000 - i32.lt_u - if - local.get $value - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $value - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $value - i32.const 10000 - i32.ge_u - i32.add - local.get $value - i32.const 1000 - i32.ge_u - i32.add - return - end - unreachable - else - local.get $value - i32.const 10000000 - i32.lt_u - if - i32.const 6 - local.get $value - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $value - i32.const 1000000000 - i32.ge_u - i32.add - local.get $value - i32.const 100000000 - i32.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) - (local $t i32) - (local $r i32) - (local $d1 i32) - (local $d2 i32) - (local $digits1 i64) - (local $digits2 i64) - (local $t|9 i32) - (local $d1|10 i32) - (local $digits i32) - (local $digits|12 i32) - (local $digit i32) - loop $while-continue|0 - local.get $num - i32.const 10000 - i32.ge_u - if - local.get $num - i32.const 10000 - i32.div_u - local.set $t - local.get $num - i32.const 10000 - i32.rem_u - local.set $r - local.get $t - local.set $num - local.get $r - i32.const 100 - i32.div_u - local.set $d1 - local.get $r - i32.const 100 - i32.rem_u - local.set $d2 - i32.const 716 - local.get $d1 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits1 - i32.const 716 - local.get $d2 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits2 - local.get $offset - i32.const 4 - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits1 - local.get $digits2 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $num - i32.const 100 - i32.ge_u - if - local.get $num - i32.const 100 - i32.div_u - local.set $t|9 - local.get $num - i32.const 100 - i32.rem_u - local.set $d1|10 - local.get $t|9 - local.set $num - local.get $offset - i32.const 2 - i32.sub - local.set $offset - i32.const 716 - local.get $d1|10 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $digits - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits - i32.store - end - local.get $num - i32.const 10 - i32.ge_u + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq if - local.get $offset - i32.const 2 - i32.sub - local.set $offset - i32.const 716 - local.get $num - i32.const 2 - i32.shl - i32.add - i32.load - local.set $digits|12 - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits|12 - i32.store - else - local.get $offset - i32.const 1 + local.get $parentPtr + i32.const 20 i32.sub - local.set $offset - i32.const 48 - local.get $num - i32.add - local.set $digit - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digit - i32.store16 + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end end ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) (func $~lib/util/number/decimalCount64High (param $value i64) (result i32) local.get $value i64.const 1000000000000000 @@ -2644,244 +2882,40 @@ local.set $b local.get $r i32.const 10000 - i32.rem_u - local.set $c - local.get $b - i32.const 100 - i32.div_u - local.set $b1 - local.get $b - i32.const 100 - i32.rem_u - local.set $b2 - local.get $c - i32.const 100 - i32.div_u - local.set $c1 - local.get $c - i32.const 100 - i32.rem_u - local.set $c2 - i32.const 716 - local.get $c1 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits1 - i32.const 716 - local.get $c2 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits2 - local.get $offset - i32.const 4 - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits1 - local.get $digits2 - i64.const 32 - i64.shl - i64.or - i64.store - i32.const 716 - local.get $b1 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits1 - i32.const 716 - local.get $b2 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits2 - local.get $offset - i32.const 4 - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits1 - local.get $digits2 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $buffer - local.get $num - i32.wrap_i64 - local.get $offset - call $~lib/util/number/utoa32_dec_lut - ) - (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) - loop $while-continue|0 - local.get $offset - i32.const 2 - i32.ge_u - if - local.get $offset - i32.const 2 - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - i32.const 1136 - local.get $num - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $num - i64.const 8 - i64.shr_u - local.set $num - br $while-continue|0 - end - end - local.get $offset - i32.const 1 - i32.and - if - local.get $buffer - i32.const 1136 - local.get $num - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 - end - ) - (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) - (local $value i32) - (local $b64 i64) - (local $b i64) - (local $e i32) - block $~lib/util/number/isPowerOf2|inlined.0 (result i32) - local.get $base - local.set $value - local.get $value - i32.popcnt - i32.const 1 - i32.eq - br $~lib/util/number/isPowerOf2|inlined.0 - end - if - i32.const 63 - local.get $num - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $base - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - return - end - local.get $base - i64.extend_i32_s - local.set $b64 - local.get $b64 - local.set $b - i32.const 1 - local.set $e - loop $while-continue|0 - local.get $num - local.get $b - i64.ge_u - if - local.get $num - local.get $b - i64.div_u - local.set $num + i32.rem_u + local.set $c local.get $b + i32.const 100 + i32.div_u + local.set $b1 local.get $b - i64.mul - local.set $b - local.get $e - i32.const 1 + i32.const 100 + i32.rem_u + local.set $b2 + local.get $c + i32.const 100 + i32.div_u + local.set $c1 + local.get $c + i32.const 100 + i32.rem_u + local.set $c2 + i32.const 396 + local.get $c1 + i32.const 2 i32.shl - local.set $e - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $num - i64.const 1 - i64.ge_u - if - local.get $num - local.get $b64 - i64.div_u - local.set $num - local.get $e - i32.const 1 i32.add - local.set $e - br $while-continue|1 - end - end - local.get $e - i32.const 1 - i32.sub - return - ) - (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) - (local $base i64) - (local $shift i64) - (local $mask i64) - (local $q i64) - local.get $radix - i64.extend_i32_s - local.set $base - local.get $radix - local.get $radix - i32.const 1 - i32.sub - i32.and - i32.const 0 - i32.eq - if - local.get $radix - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s - local.set $shift - local.get $base - i64.const 1 - i64.sub - local.set $mask - loop $do-loop|0 + i64.load32_u + local.set $digits1 + i32.const 396 + local.get $c2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 local.get $offset - i32.const 1 + i32.const 4 i32.sub local.set $offset local.get $buffer @@ -2889,172 +2923,64 @@ i32.const 1 i32.shl i32.add - i32.const 2192 - local.get $num - local.get $mask - i64.and - i32.wrap_i64 - i32.const 1 + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + i32.const 396 + local.get $b1 + i32.const 2 i32.shl i32.add - i32.load16_u - i32.store16 - local.get $num - local.get $shift - i64.shr_u - local.set $num - local.get $num - i64.const 0 - i64.ne - br_if $do-loop|0 - end - else - loop $do-loop|1 + i64.load32_u + local.set $digits1 + i32.const 396 + local.get $b2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 local.get $offset - i32.const 1 + i32.const 4 i32.sub local.set $offset - local.get $num - local.get $base - i64.div_u - local.set $q local.get $buffer local.get $offset i32.const 1 i32.shl i32.add - i32.const 2192 - local.get $num - local.get $q - local.get $base - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $q - local.set $num - local.get $num - i64.const 0 - i64.ne - br_if $do-loop|1 - end - end - ) - (func $~lib/number/U64#toString (param $this i64) (param $radix i32) (result i32) - local.get $this - local.get $radix - call $~lib/util/number/utoa64 - return - ) - (func $resolve-access/Container#set:foo (param $this i32) (param $foo i64) - local.get $this - local.get $foo - i64.store - ) - (func $resolve-access/Container#get:foo (param $this i32) (result i64) - local.get $this - i64.load - ) - (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) - local.get $this - local.get $radix - call $~lib/util/number/utoa32 - return - ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 256 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 64 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 1136 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 2192 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $resolve-access/Container - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $resolve-access/Container $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end - return end - unreachable + local.get $buffer + local.get $num + i32.wrap_i64 + local.get $offset + call $~lib/util/number/utoa32_dec_lut + ) + (func $~lib/number/U64#toString (param $this i64) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa64 + return + ) + (func $resolve-access/Container#set:foo (param $this i32) (param $foo i64) + local.get $this + local.get $foo + i64.store + ) + (func $resolve-access/Container#get:foo (param $this i32) (result i64) + local.get $this + i64.load ) (func $~start memory.size @@ -3065,13 +2991,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 208 + i32.const 2176 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 352 + i32.const 2320 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace ) @@ -3080,14 +3006,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 35104 - i32.const 35152 + i32.const 35296 + i32.const 35344 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 128 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 160 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 160 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1968 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i64) (local $value i64) (local $3 i32) @@ -3110,8 +3241,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 256 - i32.const 464 + i32.const 2224 + i32.const 2432 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -3330,131 +3461,21 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) - (local $bufferSize i32) - (local $buffer i32) - (local $array i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $length - local.get $alignLog2 - i32.shl - local.set $bufferSize - global.get $~lib/memory/__stack_pointer - local.get $bufferSize - i32.const 1 - local.get $data - call $~lib/rt/__newBuffer - local.tee $buffer - i32.store - i32.const 16 - local.get $id - call $~lib/rt/itcms/__new - local.set $array - local.get $array - local.get $buffer - i32.store - local.get $array - local.get $buffer - i32.const 0 - call $~lib/rt/itcms/__link - local.get $array - local.get $buffer - i32.store offset=4 - local.get $array - local.get $bufferSize - i32.store offset=8 - local.get $array - local.get $length - i32.store offset=12 - local.get $array - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - ) - (func $~lib/util/number/utoa64 (param $value i64) (param $radix i32) (result i32) - (local $out i32) - (local $val32 i32) - (local $decimals i32) - (local $buffer i32) - (local $num i32) - (local $offset i32) - (local $decimals|8 i32) - (local $buffer|9 i32) - (local $num|10 i64) - (local $offset|11 i32) - (local $decimals|12 i32) - (local $buffer|13 i32) - (local $num|14 i64) - (local $offset|15 i32) - (local $decimals|16 i32) - (local $17 i32) + local.get $1 + return + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3474,25 +3495,23 @@ i32.gt_s end if - i32.const 512 - i32.const 640 - i32.const 401 + i32.const 192 + i32.const 320 + i32.const 350 i32.const 5 call $~lib/builtins/abort unreachable end local.get $value - i64.const 0 - i64.ne i32.eqz if - i32.const 704 - local.set $17 + i32.const 384 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $17 + local.get $12 return end local.get $radix @@ -3500,82 +3519,46 @@ i32.eq if local.get $value - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $value - i32.wrap_i64 - local.set $val32 - local.get $val32 - call $~lib/util/number/decimalCount32 - local.set $decimals - global.get $~lib/memory/__stack_pointer - local.get $decimals - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.set $buffer - local.get $val32 - local.set $num - local.get $decimals - local.set $offset - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer - local.get $num - local.get $offset - call $~lib/util/number/utoa32_dec_lut - else - local.get $value - call $~lib/util/number/decimalCount64High - local.set $decimals|8 - global.get $~lib/memory/__stack_pointer - local.get $decimals|8 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.set $buffer|9 - local.get $value - local.set $num|10 - local.get $decimals|8 - local.set $offset|11 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|9 - local.get $num|10 - local.get $offset|11 - call $~lib/util/number/utoa64_dec_lut - end + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut else local.get $radix i32.const 16 i32.eq if - i32.const 63 + i32.const 31 local.get $value - i64.clz - i32.wrap_i64 + i32.clz i32.sub i32.const 2 i32.shr_s i32.const 1 i32.add - local.set $decimals|12 + local.set $decimals|7 global.get $~lib/memory/__stack_pointer - local.get $decimals|12 + local.get $decimals|7 i32.const 1 i32.shl i32.const 2 @@ -3583,26 +3566,28 @@ local.tee $out i32.store local.get $out - local.set $buffer|13 + local.set $buffer|8 local.get $value - local.set $num|14 - local.get $decimals|12 - local.set $offset|15 + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 i32.const 0 i32.const 1 i32.ge_s drop - local.get $buffer|13 - local.get $num|14 - local.get $offset|15 + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 call $~lib/util/number/utoa_hex_lut else local.get $value + i64.extend_i32_u local.get $radix call $~lib/util/number/ulog_base - local.set $decimals|16 + local.set $decimals|11 global.get $~lib/memory/__stack_pointer - local.get $decimals|16 + local.get $decimals|11 i32.const 1 i32.shl i32.const 2 @@ -3611,22 +3596,26 @@ i32.store local.get $out local.get $value - local.get $decimals|16 + i64.extend_i32_u + local.get $decimals|11 local.get $radix call $~lib/util/number/utoa64_any_core end end local.get $out - local.set $17 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $17 + local.get $12 return ) - (func $~lib/object/Object#constructor (param $this i32) (result i32) - (local $1 i32) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3635,36 +3624,63 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $1 + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $7 + return ) - (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (func $~lib/util/number/utoa64 (param $value i64) (param $radix i32) (result i32) (local $out i32) + (local $val32 i32) (local $decimals i32) (local $buffer i32) (local $num i32) (local $offset i32) - (local $decimals|7 i32) - (local $buffer|8 i32) - (local $num|9 i32) - (local $offset|10 i32) - (local $decimals|11 i32) - (local $12 i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i64) + (local $offset|11 i32) + (local $decimals|12 i32) + (local $buffer|13 i32) + (local $num|14 i64) + (local $offset|15 i32) + (local $decimals|16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3684,23 +3700,25 @@ i32.gt_s end if - i32.const 512 - i32.const 640 - i32.const 350 + i32.const 192 + i32.const 320 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable end local.get $value + i64.const 0 + i64.ne i32.eqz if - i32.const 704 - local.set $12 + i32.const 384 + local.set $17 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $12 + local.get $17 return end local.get $radix @@ -3708,46 +3726,82 @@ i32.eq if local.get $value - call $~lib/util/number/decimalCount32 - local.set $decimals - global.get $~lib/memory/__stack_pointer - local.get $decimals - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.set $buffer - local.get $value - local.set $num - local.get $decimals - local.set $offset - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer - local.get $num - local.get $offset - call $~lib/util/number/utoa32_dec_lut + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $value + i32.wrap_i64 + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $value + call $~lib/util/number/decimalCount64High + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + local.get $offset|11 + call $~lib/util/number/utoa64_dec_lut + end else local.get $radix i32.const 16 i32.eq if - i32.const 31 + i32.const 63 local.get $value - i32.clz + i64.clz + i32.wrap_i64 i32.sub i32.const 2 i32.shr_s i32.const 1 i32.add - local.set $decimals|7 + local.set $decimals|12 global.get $~lib/memory/__stack_pointer - local.get $decimals|7 + local.get $decimals|12 i32.const 1 i32.shl i32.const 2 @@ -3755,28 +3809,26 @@ local.tee $out i32.store local.get $out - local.set $buffer|8 + local.set $buffer|13 local.get $value - local.set $num|9 - local.get $decimals|7 - local.set $offset|10 + local.set $num|14 + local.get $decimals|12 + local.set $offset|15 i32.const 0 i32.const 1 i32.ge_s drop - local.get $buffer|8 - local.get $num|9 - i64.extend_i32_u - local.get $offset|10 + local.get $buffer|13 + local.get $num|14 + local.get $offset|15 call $~lib/util/number/utoa_hex_lut else local.get $value - i64.extend_i32_u local.get $radix call $~lib/util/number/ulog_base - local.set $decimals|11 + local.set $decimals|16 global.get $~lib/memory/__stack_pointer - local.get $decimals|11 + local.get $decimals|16 i32.const 1 i32.shl i32.const 2 @@ -3785,19 +3837,189 @@ i32.store local.get $out local.get $value - i64.extend_i32_u - local.get $decimals|11 + local.get $decimals|16 local.get $radix call $~lib/util/number/utoa64_any_core end end local.get $out - local.set $12 + local.set $17 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $12 + local.get $17 return ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2032 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 816 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1872 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $resolve-access/Container + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $resolve-access/Container $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + unreachable + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/resolve-access.release.wat b/tests/compiler/resolve-access.release.wat index 7e043af3e4..8bef7f47dc 100644 --- a/tests/compiler/resolve-access.release.wat +++ b/tests/compiler/resolve-access.release.wat @@ -2,13 +2,13 @@ (type $0 (func (result i32))) (type $1 (func (param i32))) (type $2 (func)) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32) (result i32))) - (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (param i32 i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (param i32 i32 i64))) (type $8 (func (param i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $9 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -19,49 +19,261 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36096)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36288)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\01\00\00\00\08\00\00\00\01") - (data $1 (i32.const 1068) "<") - (data $1.1 (i32.const 1080) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $2 (i32.const 1132) "<") - (data $2.1 (i32.const 1144) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $5 (i32.const 1260) "<") - (data $5.1 (i32.const 1272) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $6 (i32.const 1324) ",") - (data $6.1 (i32.const 1336) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $8 (i32.const 1404) "<") - (data $8.1 (i32.const 1416) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $9 (i32.const 1468) ",") - (data $9.1 (i32.const 1480) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $10 (i32.const 1516) "|") - (data $10.1 (i32.const 1528) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data $11 (i32.const 1644) "<") - (data $11.1 (i32.const 1656) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data $12 (i32.const 1708) "\1c") - (data $12.1 (i32.const 1720) "\02\00\00\00\02\00\00\000") - (data $13 (i32.const 1740) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data $14 (i32.const 2140) "\1c\04") - (data $14.1 (i32.const 2152) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data $15 (i32.const 3196) "\\") - (data $15.1 (i32.const 3208) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data $16 (i32.const 3296) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\02\00\00\02\t\00\00 ") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02") + (data $4 (i32.const 1164) "\1c") + (data $4.1 (i32.const 1176) "\02\00\00\00\02\00\00\00:") + (data $5 (i32.const 1196) "|") + (data $5.1 (i32.const 1208) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $6 (i32.const 1324) "<") + (data $6.1 (i32.const 1336) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $7 (i32.const 1388) "\1c") + (data $7.1 (i32.const 1400) "\02\00\00\00\02\00\00\000") + (data $8 (i32.const 1420) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $9 (i32.const 1820) "\1c\04") + (data $9.1 (i32.const 1832) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $10 (i32.const 2876) "\\") + (data $10.1 (i32.const 2888) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $11 (i32.const 2972) "<") + (data $11.1 (i32.const 2984) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $12 (i32.const 3036) "<") + (data $12.1 (i32.const 3048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $13 (i32.const 3100) "<") + (data $13.1 (i32.const 3112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $16 (i32.const 3228) "<") + (data $16.1 (i32.const 3240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $17 (i32.const 3292) ",") + (data $17.1 (i32.const 3304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $19 (i32.const 3372) "<") + (data $19.1 (i32.const 3384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $20 (i32.const 3436) ",") + (data $20.1 (i32.const 3448) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $21 (i32.const 3488) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\02\00\00\02\t\00\00 ") (export "arrayAccess" (func $resolve-access/arrayAccess)) (export "fieldAccess" (func $resolve-access/fieldAccess)) (export "propertyAccess" (func $resolve-access/propertyAccess)) (export "memory" (memory $0)) (start $~start) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1420 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1420 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1420 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1420 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3520 + i32.lt_s + if + i32.const 36320 + i32.const 36368 + 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$1 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1408 + local.set $1 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $1 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1280 + i32.const 3248 call $~lib/rt/itcms/__visit - i32.const 1088 + i32.const 3056 call $~lib/rt/itcms/__visit - i32.const 2160 + i32.const 1840 call $~lib/rt/itcms/__visit - i32.const 3216 + i32.const 2896 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -82,7 +294,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3120 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -115,7 +327,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3120 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -124,7 +336,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$143 + block $__inlined_func$~lib/rt/itcms/Object#unlink$149 local.get $0 i32.load offset=4 i32.const -4 @@ -136,19 +348,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 36096 + i32.const 36288 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3120 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$143 + br $__inlined_func$~lib/rt/itcms/Object#unlink$149 end local.get $0 i32.load offset=8 @@ -156,7 +368,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3120 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -185,12 +397,12 @@ i32.const 1 else local.get $1 - i32.const 3296 + i32.const 3488 i32.load i32.gt_u if - i32.const 1280 - i32.const 1344 + i32.const 3248 + i32.const 3312 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -199,7 +411,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 3300 + i32.const 3492 i32.add i32.load i32.const 32 @@ -270,7 +482,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -284,7 +496,7 @@ i32.lt_u if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -330,7 +542,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -413,7 +625,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -427,7 +639,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -488,7 +700,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -521,7 +733,7 @@ i32.lt_u if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -536,7 +748,7 @@ i32.ne if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -587,7 +799,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -659,7 +871,7 @@ i64.lt_u if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -684,7 +896,7 @@ i32.gt_u if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -711,7 +923,7 @@ i32.gt_u if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -783,10 +995,10 @@ if unreachable end - i32.const 36096 + i32.const 36288 i32.const 0 i32.store - i32.const 37664 + i32.const 37856 i32.const 0 i32.store loop $for-loop|0 @@ -797,7 +1009,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 36096 + i32.const 36288 i32.add i32.const 0 i32.store offset=4 @@ -815,7 +1027,7 @@ i32.add i32.const 2 i32.shl - i32.const 36096 + i32.const 36288 i32.add i32.const 0 i32.store offset=96 @@ -833,14 +1045,14 @@ br $for-loop|0 end end - i32.const 36096 - i32.const 37668 + i32.const 36288 + i32.const 37860 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 36096 + i32.const 36288 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -925,7 +1137,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 36096 + i32.const 36288 i32.lt_u if local.get $0 @@ -1014,14 +1226,14 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3120 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 36096 + i32.const 36288 i32.lt_u if local.get $0 @@ -1044,7 +1256,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 36096 + i32.const 36288 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1073,7 +1285,7 @@ end if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1157,7 +1369,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1209,7 +1421,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1241,8 +1453,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1088 - i32.const 1152 + i32.const 3056 + i32.const 3120 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1252,7 +1464,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1273,7 +1485,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1306,8 +1518,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1088 - i32.const 1424 + i32.const 3056 + i32.const 3392 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1409,7 +1621,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1424,7 +1636,7 @@ i32.gt_u if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1443,7 +1655,7 @@ i32.and if i32.const 0 - i32.const 1424 + i32.const 3392 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1548,144 +1760,40 @@ memory.fill local.get $1 ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/number/U64#toString (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3520 + i32.lt_s + if + i32.const 36320 + i32.const 36368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa64$75 + local.get $0 + i64.eqz if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 - local.get $2 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1740 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1740 i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1740 - i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 1740 - i32.add - i32.load - i32.store - else - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 - end - ) - (func $~lib/number/U64#toString (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.lt_s - if - i32.const 36128 - i32.const 36176 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa64$73 - local.get $0 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1728 - local.set $2 - br $__inlined_func$~lib/util/number/utoa64$73 + global.set $~lib/memory/__stack_pointer + i32.const 1408 + local.set $2 + br $__inlined_func$~lib/util/number/utoa64$75 end local.get $0 i64.const 4294967295 @@ -1840,7 +1948,7 @@ i32.div_u i32.const 2 i32.shl - i32.const 1740 + i32.const 1420 i32.add i64.load32_u local.get $4 @@ -1848,7 +1956,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 1740 + i32.const 1420 i32.add i64.load32_u i64.const 32 @@ -1871,7 +1979,7 @@ i32.div_u i32.const 2 i32.shl - i32.const 1740 + i32.const 1420 i32.add i64.load32_u local.get $3 @@ -1879,7 +1987,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 1740 + i32.const 1420 i32.add i64.load32_u i64.const 32 @@ -1902,17 +2010,155 @@ end local.get $2 ) - (func $~lib/array/Array~visit (param $0 i32) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36288 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 3172 + i32.const 3168 + i32.store + i32.const 3176 + i32.const 3168 + i32.store + i32.const 3168 + global.set $~lib/rt/itcms/pinSpace + i32.const 3204 + i32.const 3200 + i32.store + i32.const 3208 + i32.const 3200 + i32.store + i32.const 3200 + global.set $~lib/rt/itcms/toSpace + i32.const 3348 + i32.const 3344 + i32.store + i32.const 3352 + i32.const 3344 + i32.store + i32.const 3344 + global.set $~lib/rt/itcms/fromSpace + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3520 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3520 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$154 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1152 + local.set $0 + br $__inlined_func$~lib/string/String#concat$154 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36320 + i32.const 36368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3328 + i32.const 3520 i32.lt_s if - i32.const 36128 - i32.const 36176 + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1920,90 +2166,84 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.const 40 + memory.fill global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.const 1088 local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $resolve-access/Container - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $resolve-access/Container $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - return + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1120 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1184 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1184 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store end + local.get $0 + i32.const 2992 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort unreachable ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 36096 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/pinSpace - i32.const 1236 - i32.const 1232 - i32.store - i32.const 1240 - i32.const 1232 - i32.store - i32.const 1232 - global.set $~lib/rt/itcms/toSpace - i32.const 1380 - i32.const 1376 - i32.store - i32.const 1384 - i32.const 1376 - i32.store - i32.const 1376 - global.set $~lib/rt/itcms/fromSpace - ) (func $resolve-access/arrayAccess (result i32) (local $0 i32) (local $1 i32) @@ -2017,7 +2257,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 3328 + i32.const 3520 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2029,7 +2269,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3328 + i32.const 3520 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2057,7 +2297,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3120 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2124,7 +2364,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3328 + i32.const 3520 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2137,8 +2377,8 @@ i32.load offset=12 i32.eqz if - i32.const 1280 - i32.const 1488 + i32.const 3248 + i32.const 3456 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2161,8 +2401,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 36128 - i32.const 36176 + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2177,7 +2417,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 3328 + i32.const 3520 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2198,7 +2438,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3328 + i32.const 3520 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2233,8 +2473,8 @@ local.get $0 return end - i32.const 36128 - i32.const 36176 + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2247,11 +2487,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3328 + i32.const 3520 i32.lt_s if - i32.const 36128 - i32.const 36176 + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2283,17 +2523,15 @@ ) (func $resolve-access/propertyAccess (result i32) (local $0 i32) - (local $1 i32) - (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 3328 + i32.const 3520 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -2315,9 +2553,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3328 + i32.const 3520 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -2327,109 +2565,90 @@ local.get $0 i64.load i32.wrap_i64 - local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa32$74 - 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 1728 - local.set $0 - br $__inlined_func$~lib/util/number/utoa32$74 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 100 - i32.lt_u - if (result i32) - local.get $2 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $2 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $2 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $2 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $2 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $2 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $1 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end + call $~lib/number/U32#toString global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end - i32.const 36128 - i32.const 36176 + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/array/Array~visit (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3520 + i32.lt_s + if + i32.const 36320 + i32.const 36368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-access/Container + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $resolve-access/Container $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/resolve-binary.debug.wat b/tests/compiler/resolve-binary.debug.wat index 4b6d25a00f..08f91a857b 100644 --- a/tests/compiler/resolve-binary.debug.wat +++ b/tests/compiler/resolve-binary.debug.wat @@ -1,30 +1,27 @@ (module - (type $0 (func (param i32) (result i32))) - (type $1 (func (param i32 i32) (result i32))) + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32) (result i32))) (type $2 (func (param i32 i32))) (type $3 (func (param i32))) (type $4 (func)) (type $5 (func (param i32 i32 i32))) (type $6 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (type $9 (func (result i32))) - (type $10 (func (param i32 i64 i32))) - (type $11 (func (param i64 i32) (result i32))) - (type $12 (func (param i32 i64 i32 i32))) - (type $13 (func (param f64 f64) (result f64))) - (type $14 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $15 (func (param i32 i32 i32) (result i32))) - (type $16 (func (param i32 f64 i32) (result i32))) - (type $17 (func (param f64 i32) (result i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param f64 f64) (result f64))) + (type $13 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $14 (func (param i32 i32 i32) (result i32))) + (type $15 (func (param i32 f64 i32) (result i32))) + (type $16 (func (param f64 i32) (result i32))) + (type $17 (func (param i32 i32 i32 i32))) (type $18 (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/native/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)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -36,6 +33,8 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $resolve-binary/a (mut i32) (i32.const 0)) + (global $resolve-binary/f (mut f64) (f64.const 0)) (global $~lib/util/math/log_tail (mut f64) (f64.const 0)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) @@ -47,57 +46,62 @@ (global $resolve-binary/bar (mut i32) (i32.const 0)) (global $resolve-binary/bar2 (mut i32) (i32.const 0)) (global $resolve-binary/baz (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 10192)) - (global $~lib/memory/__data_end i32 (i32.const 10224)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 42992)) - (global $~lib/memory/__heap_base i32 (i32.const 42992)) + (global $~lib/rt/__rtti_base i32 (i32.const 10384)) + (global $~lib/memory/__data_end i32 (i32.const 10416)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 43184)) + (global $~lib/memory/__heap_base i32 (i32.const 43184)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00r\00u\00e\00\00\00\00\00") (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00f\00a\00l\00s\00e\00\00\00") - (data $2 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00b\00i\00n\00a\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $5 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $7 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 496) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 528) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 556) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 620) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 672) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data $15 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") - (data $17 (i32.const 2316) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") - (data $18 (i32.const 2348) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") - (data $19 (i32.const 2384) "\00\00\00\00\00\a0\f6?\00\00\00\00\00\00\00\00\00\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?\00\00\00\00\00\00\00\00\00\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?\00\00\00\00\00\00\00\00\00XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?\00\00\00\00\00\00\00\00\00\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?\00\00\00\00\00\00\00\00\00xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?\00\00\00\00\00\00\00\00\00`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?\00\00\00\00\00\00\00\00\00\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?\00\00\00\00\00\00\00\00\00HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?\00\00\00\00\00\00\00\00\00\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?\00\00\00\00\00\00\00\00\00 \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?\00\00\00\00\00\00\00\00\00x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?\00\00\00\00\00\00\00\00\00\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?\00\00\00\00\00\00\00\00\00\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?\00\00\00\00\00\00\00\00\00H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?\00\00\00\00\00\00\00\00\00\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?\00\00\00\00\00\00\00\00\00@^m\18\b9\cf\bf\87<\99\ab*W\r=\00\00\00\00\00`\f4?\00\00\00\00\00\00\00\00\00`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?\00\00\00\00\00\00\00\00\00\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?\00\00\00\00\00\00\00\00\00\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?\00\00\00\00\00\00\00\00\00\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?\00\00\00\00\00\00\00\00\00\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?\00\00\00\00\00\00\00\00\00P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?\00\00\00\00\00\00\00\00\00\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?\00\00\00\00\00\00\00\00\00\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?\00\00\00\00\00\00\00\00\00\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?\00\00\00\00\00\00\00\00\00\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?\00\00\00\00\00\00\00\00\00`F\d1;\97\b1?\9b\9e\rV]2%\bd\00\00\00\00\00\a0\ed?\00\00\00\00\00\00\00\00\00\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?\00\00\00\00\00\00\00\00\00\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?\00\00\00\00\00\00\00\00\00\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?\00\00\00\00\00\00\00\00\00@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?\00\00\00\00\00\00\00\00\00`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?\00\00\00\00\00\00\00\00\00@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?\00\00\00\00\00\00\00\00\00 \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?\00\00\00\00\00\00\00\00\00\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?\00\00\00\00\00\00\00\00\00\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?\00\00\00\00\00\00\00\00\00\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?\00\00\00\00\00\00\00\00\00\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?\00\00\00\00\00\00\00\00\00\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?\00\00\00\00\00\00\00\00\00\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?\00\00\00\00\00\00\00\00\00\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?\00\00\00\00\00\00\00\00\00\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?\00\00\00\00\00\00\00\00\00pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?\00\00\00\00\00\00\00\00\00PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?\00\00\00\00\00\00\00\00\00\009\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?\00\00\00\00\00\00\00\00\00\00\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?\00\00\00\00\00\00\00\00\00\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?\00\00\00\00\00\00\00\00\00\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?\00\00\00\00\00\00\00\00\00\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?\00\00\00\00\00\00\00\00\00\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?\00\00\00\00\00\00\00\00\00\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?\00\00\00\00\00\00\00\00\00\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?\00\00\00\00\00\00\00\00\00\00\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?\00\00\00\00\00\00\00\00\00\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?\00\00\00\00\00\00\00\00\00XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?\00\00\00\00\00\00\00\00\00`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?\00\00\00\00\00\00\00\00\00\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?\00\00\00\00\00\00\00\00\00\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?\00\00\00\00\00\00\00\00\00hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?\00\00\00\00\00\00\00\00\00\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?\00\00\00\00\00\00\00\00\00\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?\00\00\00\00\00\00\00\00\00`\d3\e1\f1\14\d3?\b8\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\rG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") - (data $21 (i32.const 8540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") - (data $22 (i32.const 8572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") - (data $23 (i32.const 8604) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") - (data $24 (i32.const 8652) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $25 (i32.const 8704) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $26 (i32.const 8760) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8)\93i\1b\04\bd\00\00\00\00\00\00\f6?\00\00\00\00\00\00\00\00\00`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?\00\00\00\00\00\00\00\00\00\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?\00\00\00\00\00\00\00\00\00HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?\00\00\00\00\00\00\00\00\00\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?\00\00\00\00\00\00\00\00\00 \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?\00\00\00\00\00\00\00\00\00x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?\00\00\00\00\00\00\00\00\00\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?\00\00\00\00\00\00\00\00\00\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?\00\00\00\00\00\00\00\00\00H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?\00\00\00\00\00\00\00\00\00\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?\00\00\00\00\00\00\00\00\00@^m\18\b9\cf\bf\87<\99\ab*W\r=\00\00\00\00\00`\f4?\00\00\00\00\00\00\00\00\00`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?\00\00\00\00\00\00\00\00\00\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?\00\00\00\00\00\00\00\00\00\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?\00\00\00\00\00\00\00\00\00\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?\00\00\00\00\00\00\00\00\00\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?\00\00\00\00\00\00\00\00\00P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?\00\00\00\00\00\00\00\00\00\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?\00\00\00\00\00\00\00\00\00\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?\00\00\00\00\00\00\00\00\00\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?\00\00\00\00\00\00\00\00\00\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?\00\00\00\00\00\00\00\00\00`F\d1;\97\b1?\9b\9e\rV]2%\bd\00\00\00\00\00\a0\ed?\00\00\00\00\00\00\00\00\00\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?\00\00\00\00\00\00\00\00\00\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?\00\00\00\00\00\00\00\00\00\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?\00\00\00\00\00\00\00\00\00@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?\00\00\00\00\00\00\00\00\00`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?\00\00\00\00\00\00\00\00\00@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?\00\00\00\00\00\00\00\00\00 \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?\00\00\00\00\00\00\00\00\00\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?\00\00\00\00\00\00\00\00\00\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?\00\00\00\00\00\00\00\00\00\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?\00\00\00\00\00\00\00\00\00\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?\00\00\00\00\00\00\00\00\00\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?\00\00\00\00\00\00\00\00\00\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?\00\00\00\00\00\00\00\00\00\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?\00\00\00\00\00\00\00\00\00\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?\00\00\00\00\00\00\00\00\00pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?\00\00\00\00\00\00\00\00\00PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?\00\00\00\00\00\00\00\00\00\009\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?\00\00\00\00\00\00\00\00\00\00\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?\00\00\00\00\00\00\00\00\00\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?\00\00\00\00\00\00\00\00\00\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?\00\00\00\00\00\00\00\00\00\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?\00\00\00\00\00\00\00\00\00\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?\00\00\00\00\00\00\00\00\00\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?\00\00\00\00\00\00\00\00\00\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?\00\00\00\00\00\00\00\00\00\00\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?\00\00\00\00\00\00\00\00\00\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?\00\00\00\00\00\00\00\00\00XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?\00\00\00\00\00\00\00\00\00`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?\00\00\00\00\00\00\00\00\00\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?\00\00\00\00\00\00\00\00\00\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?\00\00\00\00\00\00\00\00\00hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?\00\00\00\00\00\00\00\00\00\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?\00\00\00\00\00\00\00\00\00\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?\00\00\00\00\00\00\00\00\00`\d3\e1\f1\14\d3?\b8\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\rG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") + (data $26 (i32.const 8732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") + (data $27 (i32.const 8764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") + (data $28 (i32.const 8796) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 8844) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 8896) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 8952) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8)\93i\1b\04\bd\00\00\00\00\00\00\f6?") - (data $19.6 (i32.const 3585) "`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?") - (data $19.7 (i32.const 3617) "\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?") - (data $19.8 (i32.const 3649) "HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?") - (data $19.9 (i32.const 3681) "\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?") - (data $19.10 (i32.const 3713) " \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?") - (data $19.11 (i32.const 3745) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?") - (data $19.12 (i32.const 3777) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?") - (data $19.13 (i32.const 3809) "x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?") - (data $19.14 (i32.const 3841) "\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?") - (data $19.15 (i32.const 3873) "\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?") - (data $19.16 (i32.const 3905) "H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?") - (data $19.17 (i32.const 3937) "\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?") - (data $19.18 (i32.const 3969) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?") - (data $19.19 (i32.const 4001) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?") - (data $19.20 (i32.const 4033) "@^m\18\b9\cf\bf\87<\99\ab*W\r=\00\00\00\00\00`\f4?") - (data $19.21 (i32.const 4065) "`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?") - (data $19.22 (i32.const 4097) "\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?") - (data $19.23 (i32.const 4129) "\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?") - (data $19.24 (i32.const 4161) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?") - (data $19.25 (i32.const 4193) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?") - (data $19.26 (i32.const 4225) "\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?") - (data $19.27 (i32.const 4257) "\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?") - (data $19.28 (i32.const 4289) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?") - (data $19.29 (i32.const 4321) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?") - (data $19.30 (i32.const 4353) "P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?") - (data $19.31 (i32.const 4385) "\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?") - (data $19.32 (i32.const 4417) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?") - (data $19.33 (i32.const 4449) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?") - (data $19.34 (i32.const 4481) "\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?") - (data $19.35 (i32.const 4513) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?") - (data $19.36 (i32.const 4545) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?") - (data $19.37 (i32.const 4577) "\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?") - (data $19.38 (i32.const 4609) "\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?") - (data $19.85 (i32.const 6113) "`F\d1;\97\b1?\9b\9e\rV]2%\bd\00\00\00\00\00\a0\ed?") - (data $19.86 (i32.const 6145) "\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?") - (data $19.87 (i32.const 6177) "\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?") - (data $19.88 (i32.const 6209) "\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?") - (data $19.89 (i32.const 6241) "@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?") - (data $19.90 (i32.const 6273) "`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?") - (data $19.91 (i32.const 6305) "@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?") - (data $19.92 (i32.const 6337) " \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?") - (data $19.93 (i32.const 6369) "\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?") - (data $19.94 (i32.const 6401) "\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?") - (data $19.95 (i32.const 6433) "\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?") - (data $19.96 (i32.const 6465) "\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?") - (data $19.97 (i32.const 6497) "\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?") - (data $19.98 (i32.const 6529) "\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?") - (data $19.99 (i32.const 6561) "\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?") - (data $19.100 (i32.const 6593) "\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?") - (data $19.101 (i32.const 6625) "pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?") - (data $19.102 (i32.const 6657) "PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?") - (data $19.103 (i32.const 6690) "9\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?") - (data $19.104 (i32.const 6722) "\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?") - (data $19.105 (i32.const 6753) "\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?") - (data $19.106 (i32.const 6785) "\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?") - (data $19.107 (i32.const 6817) "\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?") - (data $19.108 (i32.const 6849) "\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?") - (data $19.109 (i32.const 6881) "\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?") - (data $19.110 (i32.const 6913) "\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?") - (data $19.111 (i32.const 6946) "\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?") - (data $19.112 (i32.const 6977) "\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?") - (data $19.113 (i32.const 7009) "XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?") - (data $19.114 (i32.const 7041) "`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?") - (data $19.115 (i32.const 7073) "\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?") - (data $19.116 (i32.const 7105) "\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?") - (data $19.117 (i32.const 7137) "hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?") - (data $19.118 (i32.const 7169) "\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?") - (data $19.119 (i32.const 7201) "\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?") - (data $19.120 (i32.const 7233) "`\d3\e1\f1\14\d3?\b8\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\rG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") - (data $21 (i32.const 9564) "\1c") - (data $21.1 (i32.const 9576) "\02\00\00\00\06\00\00\000\00.\000") - (data $22 (i32.const 9596) "\1c") - (data $22.1 (i32.const 9608) "\02\00\00\00\06\00\00\00N\00a\00N") - (data $23 (i32.const 9628) ",") - (data $23.1 (i32.const 9640) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data $24 (i32.const 9676) ",") - (data $24.1 (i32.const 9688) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data $26 (i32.const 9784) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8)\93i\1b\04\bd\00\00\00\00\00\00\f6?") + (data $24.6 (i32.const 3777) "`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?") + (data $24.7 (i32.const 3809) "\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?") + (data $24.8 (i32.const 3841) "HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?") + (data $24.9 (i32.const 3873) "\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?") + (data $24.10 (i32.const 3905) " \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?") + (data $24.11 (i32.const 3937) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?") + (data $24.12 (i32.const 3969) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?") + (data $24.13 (i32.const 4001) "x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?") + (data $24.14 (i32.const 4033) "\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?") + (data $24.15 (i32.const 4065) "\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?") + (data $24.16 (i32.const 4097) "H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?") + (data $24.17 (i32.const 4129) "\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?") + (data $24.18 (i32.const 4161) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?") + (data $24.19 (i32.const 4193) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?") + (data $24.20 (i32.const 4225) "@^m\18\b9\cf\bf\87<\99\ab*W\r=\00\00\00\00\00`\f4?") + (data $24.21 (i32.const 4257) "`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?") + (data $24.22 (i32.const 4289) "\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?") + (data $24.23 (i32.const 4321) "\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?") + (data $24.24 (i32.const 4353) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?") + (data $24.25 (i32.const 4385) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?") + (data $24.26 (i32.const 4417) "\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?") + (data $24.27 (i32.const 4449) "\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?") + (data $24.28 (i32.const 4481) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?") + (data $24.29 (i32.const 4513) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?") + (data $24.30 (i32.const 4545) "P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?") + (data $24.31 (i32.const 4577) "\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?") + (data $24.32 (i32.const 4609) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?") + (data $24.33 (i32.const 4641) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?") + (data $24.34 (i32.const 4673) "\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?") + (data $24.35 (i32.const 4705) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?") + (data $24.36 (i32.const 4737) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?") + (data $24.37 (i32.const 4769) "\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?") + (data $24.38 (i32.const 4801) "\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?") + (data $24.85 (i32.const 6305) "`F\d1;\97\b1?\9b\9e\rV]2%\bd\00\00\00\00\00\a0\ed?") + (data $24.86 (i32.const 6337) "\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?") + (data $24.87 (i32.const 6369) "\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?") + (data $24.88 (i32.const 6401) "\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?") + (data $24.89 (i32.const 6433) "@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?") + (data $24.90 (i32.const 6465) "`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?") + (data $24.91 (i32.const 6497) "@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?") + (data $24.92 (i32.const 6529) " \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?") + (data $24.93 (i32.const 6561) "\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?") + (data $24.94 (i32.const 6593) "\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?") + (data $24.95 (i32.const 6625) "\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?") + (data $24.96 (i32.const 6657) "\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?") + (data $24.97 (i32.const 6689) "\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?") + (data $24.98 (i32.const 6721) "\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?") + (data $24.99 (i32.const 6753) "\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?") + (data $24.100 (i32.const 6785) "\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?") + (data $24.101 (i32.const 6817) "pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?") + (data $24.102 (i32.const 6849) "PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?") + (data $24.103 (i32.const 6882) "9\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?") + (data $24.104 (i32.const 6914) "\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?") + (data $24.105 (i32.const 6945) "\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?") + (data $24.106 (i32.const 6977) "\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?") + (data $24.107 (i32.const 7009) "\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?") + (data $24.108 (i32.const 7041) "\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?") + (data $24.109 (i32.const 7073) "\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?") + (data $24.110 (i32.const 7105) "\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?") + (data $24.111 (i32.const 7138) "\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?") + (data $24.112 (i32.const 7169) "\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?") + (data $24.113 (i32.const 7201) "XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?") + (data $24.114 (i32.const 7233) "`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?") + (data $24.115 (i32.const 7265) "\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?") + (data $24.116 (i32.const 7297) "\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?") + (data $24.117 (i32.const 7329) "hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?") + (data $24.118 (i32.const 7361) "\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?") + (data $24.119 (i32.const 7393) "\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?") + (data $24.120 (i32.const 7425) "`\d3\e1\f1\14\d3?\b8\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\rG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") + (data $26 (i32.const 9756) "\1c") + (data $26.1 (i32.const 9768) "\02\00\00\00\06\00\00\000\00.\000") + (data $27 (i32.const 9788) "\1c") + (data $27.1 (i32.const 9800) "\02\00\00\00\06\00\00\00N\00a\00N") + (data $28 (i32.const 9820) ",") + (data $28.1 (i32.const 9832) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data $29 (i32.const 9868) ",") + (data $29.1 (i32.const 9880) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data $31 (i32.const 9976) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/arraybuffer/ArrayBufferView#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/arraybuffer/ArrayBufferView#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/util/number/genDigits (param $buffer i32) (param $w_frc i64) (param $w_exp i32) (param $mp_frc i64) (param $mp_exp i32) (param $delta i64) (param $sign i32) (result i32) + (local $one_exp i32) + (local $one_frc i64) + (local $mask i64) + (local $wp_w_frc i64) + (local $p1 i32) + (local $p2 i64) + (local $kappa i32) + (local $len i32) + (local $d i32) + (local $16 i32) + (local $17 i32) + (local $tmp i64) + (local $buffer|19 i32) + (local $len|20 i32) + (local $delta|21 i64) + (local $rest i64) + (local $ten_kappa i64) + (local $wp_w i64) + (local $lastp i32) + (local $digit i32) + (local $d|27 i64) + (local $28 i32) + (local $buffer|29 i32) + (local $len|30 i32) + (local $delta|31 i64) + (local $rest|32 i64) + (local $ten_kappa|33 i64) + (local $wp_w|34 i64) + (local $lastp|35 i32) + (local $digit|36 i32) + i32.const 0 + local.get $mp_exp + i32.sub + local.set $one_exp + i64.const 1 + local.get $one_exp + i64.extend_i32_s + i64.shl + local.set $one_frc + local.get $one_frc + i64.const 1 + i64.sub + local.set $mask + local.get $mp_frc + local.get $w_frc + i64.sub + local.set $wp_w_frc + local.get $mp_frc + local.get $one_exp + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.set $p1 + local.get $mp_frc + local.get $mask + i64.and + local.set $p2 + local.get $p1 + call $~lib/util/number/decimalCount32 + local.set $kappa + local.get $sign + local.set $len + loop $while-continue|0 + local.get $kappa + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $kappa + local.set $16 + local.get $16 + i32.const 10 + i32.eq + br_if $case0|1 + local.get $16 + i32.const 9 + i32.eq + br_if $case1|1 + local.get $16 + i32.const 8 + i32.eq + br_if $case2|1 + local.get $16 + i32.const 7 + i32.eq + br_if $case3|1 + local.get $16 + i32.const 6 + i32.eq + br_if $case4|1 + local.get $16 + i32.const 5 + i32.eq + br_if $case5|1 + local.get $16 + i32.const 4 + i32.eq + br_if $case6|1 + local.get $16 + i32.const 3 + i32.eq + br_if $case7|1 + local.get $16 + i32.const 2 + i32.eq + br_if $case8|1 + local.get $16 + i32.const 1 + i32.eq + br_if $case9|1 + br $case10|1 + end + local.get $p1 + i32.const 1000000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100000000 i32.div_u local.set $d local.get $p1 @@ -2709,7 +3087,7 @@ local.set $delta|21 local.get $tmp local.set $rest - i32.const 1680 + i32.const 3648 local.get $kappa i32.const 2 i32.shl @@ -2846,7 +3224,7 @@ i32.add global.set $~lib/util/number/_K local.get $wp_w_frc - i32.const 1680 + i32.const 3648 i32.const 0 local.get $kappa i32.sub @@ -2920,162 +3298,22 @@ i32.sub local.set $digit|36 local.get $rest|32 - local.get $ten_kappa|33 - i64.add - local.set $rest|32 - br $while-continue|6 - end - end - local.get $lastp|35 - local.get $digit|36 - i32.store16 - local.get $len - return - end - br $while-continue|4 - end - end - unreachable - ) - (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) - (local $t i32) - (local $r i32) - (local $d1 i32) - (local $d2 i32) - (local $digits1 i64) - (local $digits2 i64) - (local $t|9 i32) - (local $d1|10 i32) - (local $digits i32) - (local $digits|12 i32) - (local $digit i32) - loop $while-continue|0 - local.get $num - i32.const 10000 - i32.ge_u - if - local.get $num - i32.const 10000 - i32.div_u - local.set $t - local.get $num - i32.const 10000 - i32.rem_u - local.set $r - local.get $t - local.set $num - local.get $r - i32.const 100 - i32.div_u - local.set $d1 - local.get $r - i32.const 100 - i32.rem_u - local.set $d2 - i32.const 1720 - local.get $d1 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits1 - i32.const 1720 - local.get $d2 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits2 - local.get $offset - i32.const 4 - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits1 - local.get $digits2 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $num - i32.const 100 - i32.ge_u - if - local.get $num - i32.const 100 - i32.div_u - local.set $t|9 - local.get $num - i32.const 100 - i32.rem_u - local.set $d1|10 - local.get $t|9 - local.set $num - local.get $offset - i32.const 2 - i32.sub - local.set $offset - i32.const 1720 - local.get $d1|10 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $digits - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits - i32.store - end - local.get $num - i32.const 10 - i32.ge_u - if - local.get $offset - i32.const 2 - i32.sub - local.set $offset - i32.const 1720 - local.get $num - i32.const 2 - i32.shl - i32.add - i32.load - local.set $digits|12 - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits|12 - i32.store - else - local.get $offset - i32.const 1 - i32.sub - local.set $offset - i32.const 48 - local.get $num - i32.add - local.set $digit - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digit - i32.store16 + local.get $ten_kappa|33 + i64.add + local.set $rest|32 + br $while-continue|6 + end + end + local.get $lastp|35 + local.get $digit|36 + i32.store16 + local.get $len + return + end + br $while-continue|4 + end end + unreachable ) (func $~lib/util/number/prettify (param $buffer i32) (param $length i32) (param $k i32) (result i32) (local $kk i32) @@ -3665,14 +3903,14 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 808 + i32.const 2776 local.get $index i32.const 3 i32.shl i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 1504 + i32.const 3472 local.get $index i32.const 1 i32.shl @@ -3951,19 +4189,6 @@ call $~lib/util/number/dtoa return ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u - return - ) (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) (local $ptr1 i32) (local $ptr2 i32) @@ -4030,258 +4255,43 @@ br_if $do-loop|0 end end - end - loop $while-continue|1 - local.get $len - local.tee $7 - i32.const 1 - i32.sub - local.set $len - local.get $7 - if - local.get $ptr1 - i32.load16_u - local.set $a - local.get $ptr2 - i32.load16_u - local.set $b - local.get $a - local.get $b - i32.ne - if - local.get $a - local.get $b - i32.sub - return - end - local.get $ptr1 - i32.const 2 - i32.add - local.set $ptr1 - local.get $ptr2 - i32.const 2 - i32.add - local.set $ptr2 - br $while-continue|1 - end - end - i32.const 0 - return - ) - (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) - loop $while-continue|0 - local.get $offset - i32.const 2 - i32.ge_u - if - local.get $offset - i32.const 2 - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - i32.const 2544 - local.get $num - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $num - i64.const 8 - i64.shr_u - local.set $num - br $while-continue|0 - end - end - local.get $offset - i32.const 1 - i32.and - if - local.get $buffer - i32.const 2544 - local.get $num - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 - end - ) - (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) - (local $value i32) - (local $b64 i64) - (local $b i64) - (local $e i32) - block $~lib/util/number/isPowerOf2|inlined.0 (result i32) - local.get $base - local.set $value - local.get $value - i32.popcnt - i32.const 1 - i32.eq - br $~lib/util/number/isPowerOf2|inlined.0 - end - if - i32.const 63 - local.get $num - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $base - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - return - end - local.get $base - i64.extend_i32_s - local.set $b64 - local.get $b64 - local.set $b - i32.const 1 - local.set $e - loop $while-continue|0 - local.get $num - local.get $b - i64.ge_u - if - local.get $num - local.get $b - i64.div_u - local.set $num - local.get $b - local.get $b - i64.mul - local.set $b - local.get $e - i32.const 1 - i32.shl - local.set $e - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $num - i64.const 1 - i64.ge_u - if - local.get $num - local.get $b64 - i64.div_u - local.set $num - local.get $e - i32.const 1 - i32.add - local.set $e - br $while-continue|1 - end - end - local.get $e - i32.const 1 - i32.sub - return - ) - (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) - (local $base i64) - (local $shift i64) - (local $mask i64) - (local $q i64) - local.get $radix - i64.extend_i32_s - local.set $base - local.get $radix - local.get $radix - i32.const 1 - i32.sub - i32.and - i32.const 0 - i32.eq - if - local.get $radix - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s - local.set $shift - local.get $base - i64.const 1 - i64.sub - local.set $mask - loop $do-loop|0 - local.get $offset - i32.const 1 - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - i32.const 3600 - local.get $num - local.get $mask - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $num - local.get $shift - i64.shr_u - local.set $num - local.get $num - i64.const 0 - i64.ne - br_if $do-loop|0 - end - else - loop $do-loop|1 - local.get $offset - i32.const 1 - i32.sub - local.set $offset - local.get $num - local.get $base - i64.div_u - local.set $q - local.get $buffer - local.get $offset - i32.const 1 - i32.shl + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 i32.add - i32.const 3600 - local.get $num - local.get $q - local.get $base - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl + local.set $ptr1 + local.get $ptr2 + i32.const 2 i32.add - i32.load16_u - i32.store16 - local.get $q - local.set $num - local.get $num - i64.const 0 - i64.ne - br_if $do-loop|1 + local.set $ptr2 + br $while-continue|1 end end + i32.const 0 + return ) (func $~lib/number/U8#toString (param $this i32) (param $radix i32) (result i32) local.get $this @@ -4291,108 +4301,6 @@ call $~lib/util/number/utoa32 return ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $resolve-elementaccess/arr - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $resolve-elementaccess/buf - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 336 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 144 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 2544 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 3600 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $resolve-elementaccess/Buffer~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8Array~visit - ) - (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/typedarray/Uint8Array - block $resolve-elementaccess/Buffer - block $~lib/typedarray/Float32Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Float32Array $resolve-elementaccess/Buffer $~lib/typedarray/Uint8Array $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Float32Array~visit - return - end - local.get $0 - local.get $1 - call $resolve-elementaccess/Buffer~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8Array~visit - return - end - unreachable - ) (func $~start call $start:resolve-elementaccess ) @@ -4401,14 +4309,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 36608 - i32.const 36656 + i32.const 36800 + i32.const 36848 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/arraybuffer/ArrayBufferView#constructor (param $this i32) (param $length i32) (param $alignLog2 i32) (result i32) (local $buffer i32) (local $4 i32) @@ -4463,8 +4576,8 @@ i32.shr_u i32.gt_u if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 19 i32.const 57 call $~lib/builtins/abort @@ -4582,8 +4695,8 @@ i32.shr_u i32.ge_u if - i32.const 336 - i32.const 544 + i32.const 320 + i32.const 2512 i32.const 1315 i32.const 64 call $~lib/builtins/abort @@ -4630,8 +4743,8 @@ i32.shr_u i32.ge_u if - i32.const 336 - i32.const 544 + i32.const 320 + i32.const 2512 i32.const 1304 i32.const 64 call $~lib/builtins/abort @@ -4852,8 +4965,8 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.ge_u if - i32.const 336 - i32.const 544 + i32.const 320 + i32.const 2512 i32.const 178 i32.const 45 call $~lib/builtins/abort @@ -4895,8 +5008,8 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.ge_u if - i32.const 336 - i32.const 544 + i32.const 320 + i32.const 2512 i32.const 167 i32.const 45 call $~lib/builtins/abort @@ -4943,13 +5056,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 256 + i32.const 240 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 288 + i32.const 272 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 432 + i32.const 416 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -4989,12 +5102,12 @@ local.get $4 i32.store local.get $4 - i32.const 2144 + i32.const 3712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2176 + i32.const 3744 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -5015,12 +5128,12 @@ local.get $4 i32.store local.get $4 - i32.const 2256 + i32.const 3824 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2176 + i32.const 3744 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -5064,12 +5177,12 @@ local.get $4 i32.store local.get $4 - i32.const 2288 + i32.const 3856 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2176 + i32.const 3744 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -5106,7 +5219,7 @@ i32.eqz if i32.const 0 - i32.const 2176 + i32.const 3744 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -5149,12 +5262,12 @@ local.get $4 i32.store local.get $4 - i32.const 3696 + i32.const 3888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2176 + i32.const 3744 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -5175,12 +5288,12 @@ local.get $4 i32.store local.get $4 - i32.const 3728 + i32.const 3920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2176 + i32.const 3744 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -5224,12 +5337,12 @@ local.get $4 i32.store local.get $4 - i32.const 3760 + i32.const 3952 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2176 + i32.const 3744 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -5266,7 +5379,7 @@ i32.eqz if i32.const 0 - i32.const 2176 + i32.const 3744 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -5277,83 +5390,6 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/dtoa (param $value f32) (result i32) - (local $value|1 f64) - (local $isSingle i32) - (local $size i32) - (local $result i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $~lib/util/number/dtoa_impl|inlined.0 (result i32) - local.get $value - f64.promote_f32 - local.set $value|1 - i32.const 1 - local.set $isSingle - local.get $value|1 - f64.const 0 - f64.eq - if - i32.const 608 - br $~lib/util/number/dtoa_impl|inlined.0 - end - local.get $value|1 - local.get $value|1 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - local.get $value|1 - local.get $value|1 - f64.ne - if - i32.const 640 - br $~lib/util/number/dtoa_impl|inlined.0 - end - i32.const 672 - i32.const 720 - local.get $value|1 - f64.const 0 - f64.lt - select - br $~lib/util/number/dtoa_impl|inlined.0 - end - i32.const 752 - local.get $value|1 - local.get $isSingle - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $size - global.get $~lib/memory/__stack_pointer - local.get $size - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store - local.get $result - i32.const 752 - local.get $size - memory.copy - local.get $result - br $~lib/util/number/dtoa_impl|inlined.0 - end - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - return - ) (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) (local $out i32) (local $decimals i32) @@ -5385,8 +5421,8 @@ i32.gt_s end if - i32.const 2320 - i32.const 2448 + i32.const 560 + i32.const 688 i32.const 350 i32.const 5 call $~lib/builtins/abort @@ -5395,7 +5431,7 @@ local.get $value i32.eqz if - i32.const 2512 + i32.const 752 local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -5501,4 +5537,183 @@ local.get $12 return ) + (func $~lib/util/number/dtoa (param $value f32) (result i32) + (local $value|1 f64) + (local $isSingle i32) + (local $size i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + local.get $value + f64.promote_f32 + local.set $value|1 + i32.const 1 + local.set $isSingle + local.get $value|1 + f64.const 0 + f64.eq + if + i32.const 2576 + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.get $value|1 + local.get $value|1 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|1 + local.get $value|1 + f64.ne + if + i32.const 2608 + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 2640 + i32.const 2688 + local.get $value|1 + f64.const 0 + f64.lt + select + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 2720 + local.get $value|1 + local.get $isSingle + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + i32.const 2720 + local.get $size + memory.copy + local.get $result + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $resolve-elementaccess/arr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-elementaccess/buf + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2400 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $resolve-elementaccess/Buffer~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + ) + (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/typedarray/Uint8Array + block $resolve-elementaccess/Buffer + block $~lib/typedarray/Float32Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Float32Array $resolve-elementaccess/Buffer $~lib/typedarray/Uint8Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float32Array~visit + return + end + local.get $0 + local.get $1 + call $resolve-elementaccess/Buffer~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/resolve-elementaccess.release.wat b/tests/compiler/resolve-elementaccess.release.wat index 5e4a644023..d66d3420bf 100644 --- a/tests/compiler/resolve-elementaccess.release.wat +++ b/tests/compiler/resolve-elementaccess.release.wat @@ -4,17 +4,16 @@ (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32))) - (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) - (type $8 (func (param i64 i64 i32 i64 i32) (result i32))) - (type $9 (func (param i32 i32 i32) (result i32))) - (type $10 (func (param f64) (result i32))) - (type $11 (func (param f32) (result i32))) - (type $12 (func (param i32) (result i32))) - (type $13 (func (param i32 i32 f32))) - (type $14 (func (param i32 i32) (result f32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i64 i64 i32 i64 i32) (result i32))) + (type $8 (func (param i32 i32 i32) (result i32))) + (type $9 (func (param f64) (result i32))) + (type $10 (func (param f32) (result i32))) + (type $11 (func (param i32 i32 i32 i32))) + (type $12 (func (param i32 i32 f32))) + (type $13 (func (param i32 i32) (result f32))) + (type $14 (func (param i32) (result i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -33,61 +32,71 @@ (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $resolve-elementaccess/buf (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37600)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37792)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $1 (i32.const 1084) "<") - (data $1.1 (i32.const 1096) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data $2 (i32.const 1148) "<") - (data $2.1 (i32.const 1160) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $3 (i32.const 1212) "<") - (data $3.1 (i32.const 1224) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $6 (i32.const 1340) "<") - (data $6.1 (i32.const 1352) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $7 (i32.const 1404) ",") - (data $7.1 (i32.const 1416) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $9 (i32.const 1484) "<") - (data $9.1 (i32.const 1496) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $10 (i32.const 1548) "<") - (data $10.1 (i32.const 1560) "\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data $11 (i32.const 1612) "\1c") - (data $11.1 (i32.const 1624) "\02\00\00\00\06\00\00\000\00.\000") - (data $12 (i32.const 1644) "\1c") - (data $12.1 (i32.const 1656) "\02\00\00\00\06\00\00\00N\00a\00N") - (data $13 (i32.const 1676) ",") - (data $13.1 (i32.const 1688) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data $14 (i32.const 1724) ",") - (data $14.1 (i32.const 1736) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data $16 (i32.const 1832) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%29=>i32>#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/function/Function<%28i32%29=>i32> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%29=>i32>~visit - return - end - unreachable - ) (func $~start call $start:resolve-function-expression ) @@ -2885,17 +2825,222 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 35216 - i32.const 35264 + i32.const 35408 + i32.const 35456 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) - (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) - (local $leftLength i32) - (local $3 i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 128 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2368 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -2999,6 +3144,23 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 304 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 448 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 2 i32.const 1 global.set $~argumentsLength @@ -3010,7 +3172,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3019,7 +3181,7 @@ i32.const 1 i32.const 1 global.set $~argumentsLength - i32.const 144 + i32.const 2512 i32.load call_indirect (type $0) i32.const 42 @@ -3027,33 +3189,16 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 6 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 544 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 576 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 720 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace i32.const 0 i32.const 1 global.set $~argumentsLength - i32.const 176 + i32.const 2544 i32.load call_indirect (type $0) i32.const 10 @@ -3063,12 +3208,12 @@ local.get $0 i32.store local.get $0 - i32.const 2384 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -3079,8 +3224,18 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/function/Function<%28i32%29=>i32>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3089,19 +3244,132 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28i32%29=>i32>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 592 + i32.const 720 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 784 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $12 + return ) (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) (local $sign i32) @@ -3136,8 +3404,8 @@ i32.gt_s end if - i32.const 208 - i32.const 336 + i32.const 592 + i32.const 720 i32.const 373 i32.const 5 call $~lib/builtins/abort @@ -3146,7 +3414,7 @@ local.get $value i32.eqz if - i32.const 400 + i32.const 784 local.set $14 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3285,4 +3553,98 @@ local.get $14 return ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 352 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 160 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1216 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2272 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>~visit + return + end + unreachable + ) + (func $~lib/function/Function<%28i32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/resolve-function-expression.release.wat b/tests/compiler/resolve-function-expression.release.wat index ad27a4cfac..2cd0259637 100644 --- a/tests/compiler/resolve-function-expression.release.wat +++ b/tests/compiler/resolve-function-expression.release.wat @@ -3,11 +3,11 @@ (type $1 (func)) (type $2 (func (param i32))) (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $4 (func (param i32 i32) (result i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i32))) + (type $8 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,40 +18,50 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36216)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36408)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") - (data $1 (i32.const 1068) "L") - (data $1.1 (i32.const 1080) "\02\00\00\00<\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") - (data $2 (i32.const 1148) "\1c") - (data $2.1 (i32.const 1160) "\04\00\00\00\08\00\00\00\02") - (data $3 (i32.const 1180) "\1c") - (data $3.1 (i32.const 1192) "\04\00\00\00\08\00\00\00\03") - (data $4 (i32.const 1212) "|") - (data $4.1 (i32.const 1224) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data $5 (i32.const 1340) "<") - (data $5.1 (i32.const 1352) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data $6 (i32.const 1404) "\1c") - (data $6.1 (i32.const 1416) "\02\00\00\00\02\00\00\000") - (data $7 (i32.const 1436) "<") - (data $7.1 (i32.const 1448) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $8 (i32.const 1500) "<") - (data $8.1 (i32.const 1512) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $11 (i32.const 1628) "<") - (data $11.1 (i32.const 1640) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $12 (i32.const 1692) ",") - (data $12.1 (i32.const 1704) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $14 (i32.const 1772) "<") - (data $14.1 (i32.const 1784) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $15 (i32.const 1836) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data $16 (i32.const 2236) "\1c\04") - (data $16.1 (i32.const 2248) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data $17 (i32.const 3292) "\\") - (data $17.1 (i32.const 3304) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data $18 (i32.const 3388) "\1c") - (data $18.1 (i32.const 3400) "\02\00\00\00\04\00\00\004\002") - (data $19 (i32.const 3424) "\05\00\00\00 \00\00\00 \00\00\00 ") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02") + (data $4 (i32.const 1164) "<") + (data $4.1 (i32.const 1176) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1228) "<") + (data $5.1 (i32.const 1240) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1356) "<") + (data $8.1 (i32.const 1368) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1420) ",") + (data $9.1 (i32.const 1432) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1500) "<") + (data $11.1 (i32.const 1512) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1564) "\1c") + (data $12.1 (i32.const 1576) "\02\00\00\00\02\00\00\00:") + (data $13 (i32.const 1596) "|") + (data $13.1 (i32.const 1608) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $14 (i32.const 1724) "<") + (data $14.1 (i32.const 1736) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $15 (i32.const 1788) "\1c") + (data $15.1 (i32.const 1800) "\02\00\00\00\02\00\00\000") + (data $16 (i32.const 1820) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $17 (i32.const 2220) "\1c\04") + (data $17.1 (i32.const 2232) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $18 (i32.const 3276) "\\") + (data $18.1 (i32.const 3288) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $19 (i32.const 3372) "<") + (data $19.1 (i32.const 3384) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $20 (i32.const 3436) "L") + (data $20.1 (i32.const 3448) "\02\00\00\00<\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") + (data $21 (i32.const 3516) "\1c") + (data $21.1 (i32.const 3528) "\04\00\00\00\08\00\00\00\02") + (data $22 (i32.const 3548) "\1c") + (data $22.1 (i32.const 3560) "\04\00\00\00\08\00\00\00\03") + (data $23 (i32.const 3580) "\1c") + (data $23.1 (i32.const 3592) "\02\00\00\00\04\00\00\004\002") + (data $24 (i32.const 3616) "\05\00\00\00 \00\00\00 \00\00\00 ") (table $0 4 4 funcref) (elem $0 (i32.const 1) $start:resolve-function-expression~anonymous|0 $start:resolve-function-expression~anonymous|1 $start:resolve-function-expression~anonymous|2) (export "memory" (memory $0)) @@ -61,26 +71,16 @@ i32.const 40 i32.add ) - (func $start:resolve-function-expression~anonymous|1 (param $0 i32) (result i32) - local.get $0 - i32.const 41 - i32.add - ) - (func $start:resolve-function-expression~anonymous|2 (param $0 i32) (result i32) - local.get $0 - i32.const 42 - i32.add - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1648 + i32.const 1376 call $~lib/rt/itcms/__visit - i32.const 1456 + i32.const 1184 call $~lib/rt/itcms/__visit - i32.const 2256 + i32.const 2240 call $~lib/rt/itcms/__visit - i32.const 3312 + i32.const 3296 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -101,7 +101,7 @@ i32.ne if i32.const 0 - i32.const 1520 + i32.const 1248 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -149,7 +149,7 @@ i32.eqz if i32.const 0 - i32.const 1520 + i32.const 1248 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -158,7 +158,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$124 + block $__inlined_func$~lib/rt/itcms/Object#unlink$132 local.get $1 i32.load offset=4 i32.const -4 @@ -170,19 +170,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 36216 + i32.const 36408 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1520 + i32.const 1248 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$124 + br $__inlined_func$~lib/rt/itcms/Object#unlink$132 end local.get $1 i32.load offset=8 @@ -190,7 +190,7 @@ i32.eqz if i32.const 0 - i32.const 1520 + i32.const 1248 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -219,12 +219,12 @@ i32.const 1 else local.get $0 - i32.const 3424 + i32.const 3616 i32.load i32.gt_u if - i32.const 1648 - i32.const 1712 + i32.const 1376 + i32.const 1440 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -233,7 +233,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 3428 + i32.const 3620 i32.add i32.load i32.const 32 @@ -285,7 +285,7 @@ i32.eqz if i32.const 0 - i32.const 1792 + i32.const 1520 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -299,7 +299,7 @@ i32.lt_u if i32.const 0 - i32.const 1792 + i32.const 1520 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -345,7 +345,7 @@ i32.eqz if i32.const 0 - i32.const 1792 + i32.const 1520 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -428,7 +428,7 @@ i32.eqz if i32.const 0 - i32.const 1792 + i32.const 1520 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -442,7 +442,7 @@ i32.eqz if i32.const 0 - i32.const 1792 + i32.const 1520 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -503,7 +503,7 @@ i32.eqz if i32.const 0 - i32.const 1792 + i32.const 1520 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -536,7 +536,7 @@ i32.lt_u if i32.const 0 - i32.const 1792 + i32.const 1520 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -551,7 +551,7 @@ i32.ne if i32.const 0 - i32.const 1792 + i32.const 1520 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -602,7 +602,7 @@ i32.eqz if i32.const 0 - i32.const 1792 + i32.const 1520 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -674,7 +674,7 @@ i64.lt_u if i32.const 0 - i32.const 1792 + i32.const 1520 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -699,7 +699,7 @@ i32.gt_u if i32.const 0 - i32.const 1792 + i32.const 1520 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -726,7 +726,7 @@ i32.gt_u if i32.const 0 - i32.const 1792 + i32.const 1520 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -798,10 +798,10 @@ if unreachable end - i32.const 36224 + i32.const 36416 i32.const 0 i32.store - i32.const 37792 + i32.const 37984 i32.const 0 i32.store loop $for-loop|0 @@ -812,7 +812,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 36224 + i32.const 36416 i32.add i32.const 0 i32.store offset=4 @@ -830,7 +830,7 @@ i32.add i32.const 2 i32.shl - i32.const 36224 + i32.const 36416 i32.add i32.const 0 i32.store offset=96 @@ -848,14 +848,14 @@ br $for-loop|0 end end - i32.const 36224 - i32.const 37796 + i32.const 36416 + i32.const 37988 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 36224 + i32.const 36416 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -940,7 +940,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 36216 + i32.const 36408 i32.lt_u if local.get $0 @@ -1029,14 +1029,14 @@ i32.ne if i32.const 0 - i32.const 1520 + i32.const 1248 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 36216 + i32.const 36408 i32.lt_u if local.get $0 @@ -1059,7 +1059,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 36216 + i32.const 36408 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1088,7 +1088,7 @@ end if i32.const 0 - i32.const 1792 + i32.const 1520 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1172,7 +1172,7 @@ i32.eqz if i32.const 0 - i32.const 1792 + i32.const 1520 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1224,7 +1224,7 @@ i32.eqz if i32.const 0 - i32.const 1792 + i32.const 1520 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1246,593 +1246,533 @@ end end ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3448 - i32.lt_s + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 36240 - i32.const 36288 - i32.const 1 - i32.const 1 + i32.const 1184 + i32.const 1248 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32$73 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + 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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1424 - local.set $2 - br $__inlined_func$~lib/util/number/itoa32$73 + global.set $~lib/rt/itcms/threshold end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1184 + i32.const 1520 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - i32.const 1 - i32.shl - local.tee $3 - select - local.tee $0 - i32.const 100000 - i32.lt_u + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u if (result i32) - local.get $0 - i32.const 100 + local.get $4 + i32.const 536870910 i32.lt_u if (result i32) - local.get $0 - i32.const 10 - i32.ge_u + local.get $4 i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl i32.add + i32.const 1 + i32.sub else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add + local.get $4 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 + local.get $4 end - local.tee $1 - i32.const 1 - i32.shl + i32.const 4 local.get $3 - i32.add - local.tee $6 - i32.const 1073741804 - i32.ge_u - if - i32.const 1456 - i32.const 1520 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - 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$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $7 - local.get $6 + i32.load offset=1568 + local.get $1 i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1792 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $7 + local.get $1 local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $8 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - memory.size - local.tee $2 - local.get $8 - i32.const 256 - i32.ge_u - if (result i32) - local.get $8 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $8 - i32.const 1 - i32.const 27 - local.get $8 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $8 - end - else - local.get $8 - end - i32.const 4 - local.get $7 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $4 local.get $2 - local.get $4 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $7 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $7 - local.get $8 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1792 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + unreachable end end - local.get $8 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1792 - i32.const 501 - i32.const 14 + i32.const 1520 + i32.const 499 + i32.const 16 call $~lib/builtins/abort unreachable end - local.get $7 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $9 - local.get $8 + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1520 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 i32.const 4 i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1792 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $9 - i32.const -4 - i32.and - local.get $8 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $8 - local.get $9 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $8 - i32.add - local.tee $8 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $7 - local.get $8 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $9 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $4 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $2 - i32.const 2 - i32.store offset=12 - local.get $2 - local.get $6 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $4 - i32.load offset=8 - local.set $7 - local.get $2 local.get $4 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $7 - i32.store offset=8 - local.get $7 + i32.add + local.tee $4 local.get $2 - local.get $7 - i32.load offset=4 - i32.const 3 - i32.and + i32.const 4 + i32.sub + i32.const 1 i32.or - i32.store offset=4 + i32.store + local.get $3 local.get $4 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 i32.and + i32.store + local.get $1 i32.const 4 i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 + local.get $1 + i32.load + i32.const -4 + i32.and i32.add local.tee $2 - i32.const 0 - local.get $6 - memory.fill local.get $2 + i32.load + i32.const -3 + i32.and i32.store - local.get $2 - local.get $3 - i32.add - local.set $4 - loop $while-continue|0 - local.get $0 - i32.const 10000 - i32.ge_u - if - local.get $0 - i32.const 10000 - i32.rem_u - local.set $5 - local.get $0 - i32.const 10000 - i32.div_u - local.set $0 - local.get $4 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1836 - i32.add - i64.load32_u - local.get $5 - 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 - local.get $0 - i32.const 100 + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 i32.ge_u if - local.get $4 local.get $1 - i32.const 2 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 i32.sub - local.tee $1 + local.tee $2 i32.const 1 i32.shl i32.add - local.get $0 + local.get $3 i32.const 100 - i32.rem_u + i32.div_u i32.const 2 i32.shl - i32.const 1836 + i32.const 1820 i32.add - i32.load - i32.store - local.get $0 + i64.load32_u + local.get $3 i32.const 100 - i32.div_u - local.set $0 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3640 + i32.lt_s + if + i32.const 36432 + i32.const 36480 + 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$74 local.get $0 - i32.const 10 - i32.ge_u + i32.eqz if - local.get $4 - local.get $1 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 2 - i32.shl - i32.const 1836 - i32.add - i32.load - i32.store - else - local.get $4 - local.get $1 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 48 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.store16 - end - local.get $3 - if - local.get $2 - i32.const 45 - i32.store16 + global.set $~lib/memory/__stack_pointer + i32.const 1808 + local.set $1 + br $__inlined_func$~lib/util/number/utoa32$74 end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $2 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/function/Function<%28i32%29=>i32> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid - end - return - end - return - end - return + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add end + else local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3448 - i32.lt_s - if - i32.const 36240 - i32.const 36288 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $1 i32.store + local.get $1 local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit + 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 - return end - unreachable + local.get $1 + ) + (func $start:resolve-function-expression~anonymous|1 (param $0 i32) (result i32) + local.get $0 + i32.const 41 + i32.add + ) + (func $start:resolve-function-expression~anonymous|2 (param $0 i32) (result i32) + local.get $0 + i32.const 42 + i32.add ) (func $~start (local $0 i32) @@ -1847,12 +1787,44 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 3448 + i32.const 3640 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + memory.size + i32.const 16 + i32.shl + i32.const 36408 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/pinSpace + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/toSpace + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + global.set $~lib/rt/itcms/fromSpace i32.const 2 i32.const 1056 i32.load @@ -1861,66 +1833,139 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 1168 + i32.const 3536 i32.load call_indirect (type $0) i32.const 42 i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 6 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - i32.const 36216 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1572 - i32.const 1568 - i32.store - i32.const 1576 - i32.const 1568 - i32.store - i32.const 1568 - global.set $~lib/rt/itcms/pinSpace - i32.const 1604 - i32.const 1600 - i32.store - i32.const 1608 - i32.const 1600 - i32.store - i32.const 1600 - global.set $~lib/rt/itcms/toSpace - i32.const 1748 - i32.const 1744 - i32.store - i32.const 1752 - i32.const 1744 - i32.store - i32.const 1744 - global.set $~lib/rt/itcms/fromSpace i32.const 0 - i32.const 1200 + i32.const 3568 i32.load call_indirect (type $0) - call $~lib/number/I32#toString - local.set $5 + 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 3640 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32$75 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1808 + local.set $0 + br $__inlined_func$~lib/util/number/itoa32$75 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $1 + select + local.tee $2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 100 + i32.lt_u + if (result i32) + local.get $2 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $2 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $2 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $2 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $2 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $2 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $3 + i32.const 1 + i32.shl + local.get $1 + i32.add + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $1 + i32.add + local.get $2 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $1 + if + local.get $0 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $0 i32.store block $__inlined_func$~lib/string/String.__eq$1 (result i32) global.get $~lib/memory/__stack_pointer @@ -1928,14 +1973,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3448 + i32.const 3640 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $5 - i32.const 3408 + local.get $0 + i32.const 3600 i32.eq if global.get $~lib/memory/__stack_pointer @@ -1946,97 +1991,99 @@ br $__inlined_func$~lib/string/String.__eq$1 end block $folding-inner0 - local.get $5 + local.get $0 i32.eqz br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $0 i32.store - local.get $5 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 3408 + i32.const 3600 i32.store - local.get $1 - i32.const 3404 + local.get $2 + i32.const 3596 i32.load i32.const 1 i32.shr_u i32.ne br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $0 i32.store - i32.const 3408 + i32.const 3600 local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 3408 + i32.const 3600 i32.store offset=4 i32.const 1 - local.get $5 + local.get $0 + local.tee $1 i32.const 7 i32.and - local.get $1 + local.get $2 + local.tee $0 i32.const 4 i32.lt_u select i32.eqz if loop $do-loop|0 - local.get $5 + local.get $1 i64.load local.get $3 i64.load i64.eq if - local.get $5 + local.get $1 i32.const 8 i32.add - local.set $5 + local.set $1 local.get $3 i32.const 8 i32.add local.set $3 - local.get $1 + local.get $0 i32.const 4 i32.sub - local.tee $1 + local.tee $0 i32.const 4 i32.ge_u br_if $do-loop|0 end end end - block $__inlined_func$~lib/util/string/compareImpl$80 + block $__inlined_func$~lib/util/string/compareImpl$81 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 $5 + local.get $1 i32.load16_u - local.tee $2 + local.tee $4 local.get $3 i32.load16_u - local.tee $0 + local.tee $5 i32.sub - local.set $4 - local.get $0 - local.get $2 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$80 + local.set $2 + local.get $4 local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$81 + local.get $1 i32.const 2 i32.add - local.set $5 + local.set $1 local.get $3 i32.const 2 i32.add @@ -2045,13 +2092,13 @@ end end i32.const 0 - local.set $4 + local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.eqz br $__inlined_func$~lib/string/String.__eq$1 end @@ -2064,7 +2111,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -2076,11 +2123,266 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 36240 - i32.const 36288 + i32.const 36432 + i32.const 36480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3640 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$137 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1152 + local.set $0 + br $__inlined_func$~lib/string/String#concat$137 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36432 + i32.const 36480 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3640 + i32.lt_s + if + i32.const 36432 + i32.const 36480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1088 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1120 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3392 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3640 + i32.lt_s + if + i32.const 36432 + i32.const 36480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) ) diff --git a/tests/compiler/resolve-localortype.debug.wat b/tests/compiler/resolve-localortype.debug.wat index c070663650..ba371961e4 100644 --- a/tests/compiler/resolve-localortype.debug.wat +++ b/tests/compiler/resolve-localortype.debug.wat @@ -1,11 +1,35 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $~lib/memory/__data_end i32 (i32.const 8)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (memory $0 0) (table $0 1 1 funcref) (elem $0 (i32.const 1)) @@ -15,13 +39,2642 @@ local.get $s return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 33136 + i32.const 33200 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 33008 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32944 + i32.const 33280 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32944 + i32.const 33008 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 33580 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 33580 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 33580 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 33580 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 34000 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 34000 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 35056 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 35056 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~stack_check global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__data_end i32.lt_s if i32.const 32800 - i32.const 32848 + i32.const 35216 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -53,6 +2706,358 @@ local.get $1 return ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 32912 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32848 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 32880 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 33344 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 33344 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 35152 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 33376 + i32.const 33504 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 33568 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $export:resolve-localortype/test (param $0 i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -72,4 +3077,56 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 33136 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32944 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 34000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 35056 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/resolve-localortype.release.wat b/tests/compiler/resolve-localortype.release.wat index 7fe06f9905..4e2e6c91aa 100644 --- a/tests/compiler/resolve-localortype.release.wat +++ b/tests/compiler/resolve-localortype.release.wat @@ -1,11 +1,1884 @@ (module - (type $0 (func (param i32 i32 i32 i32))) - (type $1 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33792)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (memory $0 0) (export "memory" (memory $0)) (export "test" (func $export:resolve-localortype/test)) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 34160 + call $~lib/rt/itcms/__visit + i32.const 33968 + call $~lib/rt/itcms/__visit + i32.const 35024 + call $~lib/rt/itcms/__visit + i32.const 36080 + call $~lib/rt/itcms/__visit + i32.const 4 + i32.load + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 34032 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + 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 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 34032 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$118 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 33792 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34032 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$118 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 34032 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.load + i32.gt_u + if + i32.const 34160 + i32.const 34224 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.load offset=4 + i32.const 32 + i32.and + end + local.set $1 + i32.const 8 + i32.load + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $1 + select + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + i32.const 8 + local.get $0 + i32.store + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 34304 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 34304 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 34304 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 34304 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 34304 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 34304 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 33792 + i32.const 0 + i32.store + i32.const 35360 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 33792 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 33792 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 33792 + i32.const 35364 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 33792 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + i32.const 0 + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 33792 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + local.get $1 + global.set $~lib/rt/itcms/white + i32.const 4 + i32.load + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + 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 34032 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 33792 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 33792 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 34304 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + i32.const 4 + i32.const 0 + i32.store + i32.const 8 + i32.const 0 + i32.store + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 33968 + i32.const 34032 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$68 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 33968 + i32.const 34304 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 34304 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 34304 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + i32.const 8 + i32.load + local.set $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + i32.const 8 + local.get $1 + i32.store + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 1024 + i32.lt_s + if + i32.const 33824 + i32.const 36240 + 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$72 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 34592 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$72 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$123 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 33936 + local.set $0 + br $__inlined_func$~lib/string/String#concat$123 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 33824 + i32.const 36240 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 33824 + i32.const 36240 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 33872 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 33904 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 34368 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 34368 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 36176 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $export:resolve-localortype/test (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -45,10 +1918,35 @@ return end i32.const 33824 - i32.const 33872 + i32.const 36240 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/resolve-nested.debug.wat b/tests/compiler/resolve-nested.debug.wat index 41ee1e9f62..126d7fc89b 100644 --- a/tests/compiler/resolve-nested.debug.wat +++ b/tests/compiler/resolve-nested.debug.wat @@ -1,8 +1,16 @@ (module - (type $0 (func (param i32 i32 i32))) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $resolve-nested/Outer.Inner.a (mut i32) (i32.const 0)) (global $resolve-nested/Outer.Inner.b (mut i32) (i32.const 0)) (global $resolve-nested/Outer.Inner.c (mut i32) (i32.const 0)) @@ -20,6 +28,22 @@ (global $~lib/memory/__data_end i32 (i32.const 8)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (memory $0 0) (table $0 1 1 funcref) (elem $0 (i32.const 1)) @@ -27,13 +51,2642 @@ (export "outer" (func $export:resolve-nested/outer)) (func $resolve-nested/outer (param $a i32) (param $b i32) (param $c i32) ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 33136 + i32.const 33200 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 33008 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32944 + i32.const 33280 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32944 + i32.const 33008 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 33580 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 33580 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 33580 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 33580 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 34000 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 34000 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 35056 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 35056 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~stack_check global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__data_end i32.lt_s if i32.const 32800 - i32.const 32848 + i32.const 35216 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -64,4 +2717,515 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $resolve-nested/Outer.Inner.a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-nested/Outer.Inner.b + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-nested/Outer.Inner.c + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-nested/Outer.Inner.d + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-nested/Outer.Inner.e + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-nested/Outer.Inner.f + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-nested/Outer.a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-nested/Outer.b + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-nested/Outer.c + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-nested/Outer.d + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-nested/Outer.e + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-nested/a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-nested/b + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-nested/c + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 33136 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32944 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 34000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 35056 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $resolve-nested/Outer.Inner.EvenInnerClass + block $resolve-nested/Outer.InnerClass + block $resolve-nested/OuterClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-nested/OuterClass $resolve-nested/Outer.InnerClass $resolve-nested/Outer.Inner.EvenInnerClass $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + unreachable + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 32912 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32848 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 32880 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 33344 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 33344 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 35152 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 33376 + i32.const 33504 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 33568 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) ) diff --git a/tests/compiler/resolve-nested.release.wat b/tests/compiler/resolve-nested.release.wat index 76459d8f80..01ba8db1bb 100644 --- a/tests/compiler/resolve-nested.release.wat +++ b/tests/compiler/resolve-nested.release.wat @@ -1,11 +1,1686 @@ (module - (type $0 (func (param i32 i32 i32 i32))) - (type $1 (func (param i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32))) + (type $8 (func (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33792)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (memory $0 0) (export "memory" (memory $0)) (export "outer" (func $export:resolve-nested/outer)) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 34160 + call $~lib/rt/itcms/__visit + i32.const 33968 + call $~lib/rt/itcms/__visit + i32.const 35024 + call $~lib/rt/itcms/__visit + i32.const 36080 + call $~lib/rt/itcms/__visit + i32.const 4 + i32.load + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 34032 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + 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 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 34032 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$116 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 33792 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34032 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$116 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 34032 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.load + i32.gt_u + if + i32.const 34160 + i32.const 34224 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.load offset=4 + i32.const 32 + i32.and + end + local.set $1 + i32.const 8 + i32.load + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $1 + select + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + i32.const 8 + local.get $0 + i32.store + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 34304 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 34304 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 34304 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 34304 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 34304 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 34304 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 33792 + i32.const 0 + i32.store + i32.const 35360 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 33792 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 33792 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 33792 + i32.const 35364 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 33792 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + i32.const 0 + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 33792 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + local.get $1 + global.set $~lib/rt/itcms/white + i32.const 4 + i32.load + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + 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 34032 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 33792 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 33792 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 34304 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + i32.const 4 + i32.const 0 + i32.store + i32.const 8 + i32.const 0 + i32.store + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 33968 + i32.const 34032 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$68 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 33968 + i32.const 34304 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 34304 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 34304 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + i32.const 8 + i32.load + local.set $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + i32.const 8 + local.get $1 + i32.store + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 1024 + i32.lt_s + if + i32.const 33824 + i32.const 36240 + 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$72 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 34592 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$72 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $export:resolve-nested/outer (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -16,7 +1691,7 @@ i32.lt_s if i32.const 33824 - i32.const 33872 + i32.const 36240 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -36,4 +1711,237 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-nested/Outer.Inner.EvenInnerClass + block $resolve-nested/Outer.InnerClass + block $resolve-nested/OuterClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-nested/OuterClass $resolve-nested/Outer.InnerClass $resolve-nested/Outer.Inner.EvenInnerClass $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + unreachable + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$121 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 33936 + local.set $0 + br $__inlined_func$~lib/string/String#concat$121 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 33824 + i32.const 36240 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 33824 + i32.const 36240 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 33872 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 33904 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 34368 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 34368 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 36176 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) ) diff --git a/tests/compiler/resolve-new.debug.wat b/tests/compiler/resolve-new.debug.wat index 0a56bb3df4..1fb69228d2 100644 --- a/tests/compiler/resolve-new.debug.wat +++ b/tests/compiler/resolve-new.debug.wat @@ -2,13 +2,19 @@ (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,31 +23,468 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $resolve-new/foo (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 416)) - (global $~lib/memory/__data_end i32 (i32.const 440)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33208)) - (global $~lib/memory/__heap_base i32 (i32.const 33208)) + (global $~lib/rt/__rtti_base i32 (i32.const 2384)) + (global $~lib/memory/__data_end i32 (i32.const 2408)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35176)) + (global $~lib/memory/__heap_base i32 (i32.const 35176)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 416) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2384) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -106,7 +549,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -176,7 +619,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -193,7 +636,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -223,8 +666,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -292,7 +735,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -444,7 +887,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -464,7 +907,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -527,7 +970,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -680,7 +1123,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -697,7 +1140,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -786,7 +1229,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -829,7 +1272,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -847,7 +1290,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -915,7 +1358,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1032,7 +1475,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1078,7 +1521,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1110,7 +1553,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1354,7 +1797,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1574,7 +2017,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1682,8 +2125,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1785,7 +2228,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1856,7 +2299,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2013,7 +2456,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2128,7 +2571,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2148,7 +2591,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2196,8 +2639,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2244,62 +2687,6 @@ ) (func $resolve-new/Foo#bar (param $this i32) ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $resolve-new/foo - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $resolve-new/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-new/Foo $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - unreachable - ) (func $~start call $start:resolve-new ) @@ -2308,14 +2695,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33232 - i32.const 33280 + i32.const 35200 + i32.const 35248 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $resolve-new/Foo#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2372,13 +2964,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -2397,6 +2989,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2425,4 +3164,66 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $resolve-new/foo + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $resolve-new/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-new/Foo $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/resolve-new.release.wat b/tests/compiler/resolve-new.release.wat index 96c78f0c84..f6adb3da11 100644 --- a/tests/compiler/resolve-new.release.wat +++ b/tests/compiler/resolve-new.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) - (type $4 (func (param i32) (result i32))) - (type $5 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32) (result i32))) (type $6 (func (param i32 i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,21 +18,240 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $resolve-new/foo (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34232)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36200)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1440) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3408) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3432 + i32.lt_s + if + i32.const 36224 + i32.const 36272 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -42,9 +261,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -65,7 +288,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -113,7 +336,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -122,7 +345,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$112 + block $__inlined_func$~lib/rt/itcms/Object#unlink$125 local.get $1 i32.load offset=4 i32.const -4 @@ -134,19 +357,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34232 + i32.const 36200 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$112 + br $__inlined_func$~lib/rt/itcms/Object#unlink$125 end local.get $1 i32.load offset=8 @@ -154,7 +377,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -183,12 +406,12 @@ i32.const 1 else local.get $0 - i32.const 1440 + i32.const 3408 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -197,7 +420,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1444 + i32.const 3412 i32.add i32.load i32.const 32 @@ -249,7 +472,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -263,7 +486,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -309,7 +532,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -392,7 +615,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -406,7 +629,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -467,7 +690,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -500,7 +723,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -515,7 +738,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -566,7 +789,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -638,7 +861,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -663,7 +886,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -690,7 +913,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -762,10 +985,10 @@ if unreachable end - i32.const 34240 + i32.const 36208 i32.const 0 i32.store - i32.const 35808 + i32.const 37776 i32.const 0 i32.store loop $for-loop|0 @@ -776,7 +999,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34240 + i32.const 36208 i32.add i32.const 0 i32.store offset=4 @@ -794,7 +1017,7 @@ i32.add i32.const 2 i32.shl - i32.const 34240 + i32.const 36208 i32.add i32.const 0 i32.store offset=96 @@ -812,14 +1035,14 @@ br $for-loop|0 end end - i32.const 34240 - i32.const 35812 + i32.const 36208 + i32.const 37780 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34240 + i32.const 36208 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -904,7 +1127,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34232 + i32.const 36200 i32.lt_u if local.get $0 @@ -993,14 +1216,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34232 + i32.const 36200 i32.lt_u if local.get $0 @@ -1023,7 +1246,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34232 + i32.const 36200 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1052,7 +1275,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1082,18 +1305,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1101,32 +1391,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1139,23 +1433,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 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 @@ -1169,9 +1475,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1194,31 +1500,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.const 1073741820 + i32.gt_u if - memory.size - local.tee $1 - i32.const 4 + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 local.get $2 - 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 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1234,8 +1595,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1243,119 +1604,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1363,42 +1741,14 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $resolve-new/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-new/Foo $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable + memory.fill + local.get $1 ) (func $~start (local $0 i32) @@ -1407,11 +1757,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1464 + i32.const 3432 i32.lt_s if - i32.const 34256 - i32.const 34304 + i32.const 36224 + i32.const 36272 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1423,34 +1773,34 @@ memory.size i32.const 16 i32.shl - i32.const 34232 + i32.const 36200 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace call $resolve-new/Foo#constructor global.set $resolve-new/foo @@ -1464,6 +1814,206 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3432 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3432 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$130 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$130 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36224 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3432 + i32.lt_s + if + i32.const 36224 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $resolve-new/Foo#constructor (result i32) (local $0 i32) (local $1 i32) @@ -1473,13 +2023,14 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1464 + i32.const 3432 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 @@ -1493,7 +2044,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1464 + i32.const 3432 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1504,6 +2055,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1521,11 +2073,39 @@ local.get $0 return end - i32.const 34256 - i32.const 34304 + i32.const 36224 + i32.const 36272 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-new/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-new/Foo $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/resolve-propertyaccess.debug.wat b/tests/compiler/resolve-propertyaccess.debug.wat index 88a40fd4ff..fa7edc99b8 100644 --- a/tests/compiler/resolve-propertyaccess.debug.wat +++ b/tests/compiler/resolve-propertyaccess.debug.wat @@ -1,19 +1,21 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) (type $4 (func)) (type $5 (func (param i32 i32 i32))) (type $6 (func (result i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (type $9 (func (param i32 i64 i32))) - (type $10 (func (param i64 i32) (result i32))) - (type $11 (func (param i32 i64 i32 i32))) - (type $12 (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $12 (func (param i32 i32 i32 i32))) (global $resolve-propertyaccess/Namespace.member 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/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,9 +24,6 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) @@ -37,97 +36,60 @@ (global $resolve-propertyaccess/Enum.VALUE i32 (i32.const 4)) (global $resolve-propertyaccess/Class.staticField (mut i32) (i32.const 5)) (global $resolve-propertyaccess/Class.lazyStaticField (mut i32) (i32.const 55)) - (global $~lib/rt/__rtti_base i32 (i32.const 2656)) - (global $~lib/memory/__data_end i32 (i32.const 2680)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35448)) - (global $~lib/memory/__heap_base i32 (i32.const 35448)) + (global $~lib/rt/__rtti_base i32 (i32.const 2848)) + (global $~lib/memory/__data_end i32 (i32.const 2872)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35640)) + (global $~lib/memory/__heap_base i32 (i32.const 35640)) (memory $0 1) - (data $0 (i32.const 12) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $2 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $4 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 544) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 572) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 636) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data $12 (i32.const 1036) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 2092) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") - (data $14 (i32.const 2188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 2220) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00p\00r\00o\00p\00e\00r\00t\00y\00a\00c\00c\00e\00s\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 2300) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\001\00\00\00\00\00\00\00\00\00") - (data $17 (i32.const 2332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") - (data $18 (i32.const 2364) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\002\002\00\00\00\00\00\00\00\00\00") - (data $19 (i32.const 2396) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\003\00\00\00\00\00\00\00\00\00\00\00") - (data $20 (i32.const 2428) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\003\003\00\00\00\00\00\00\00\00\00") - (data $21 (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\004\00\00\00\00\00\00\00\00\00\00\00") - (data $22 (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\005\00\00\00\00\00\00\00\00\00\00\00") - (data $23 (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\005\005\00\00\00\00\00\00\00\00\00") - (data $24 (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\007\00\00\00\00\00\00\00\00\00\00\00") - (data $25 (i32.const 2588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\006\00\00\00\00\00\00\00\00\00\00\00") - (data $26 (i32.const 2620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\008\00\00\00\00\00\00\00\00\00\00\00") - (data $27 (i32.const 2656) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00p\00r\00o\00p\00e\00r\00t\00y\00a\00c\00c\00e\00s\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\001\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\002\002\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\003\003\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 2652) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\005\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\005\005\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 2748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\007\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 2780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\006\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 2812) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\008\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 2848) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) - (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) - local.get $value - i32.const 100000 - i32.lt_u - if - local.get $value - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $value - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $value - i32.const 10000 - i32.ge_u - i32.add - local.get $value - i32.const 1000 - i32.ge_u - i32.add - return - end - unreachable - else - local.get $value - i32.const 10000000 - i32.lt_u - if - i32.const 6 - local.get $value - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $value - i32.const 1000000000 - i32.ge_u - i32.add - local.get $value - i32.const 100000000 - i32.ge_u - i32.add - return - end - unreachable - end - unreachable + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this @@ -193,7 +155,7 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 192 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -263,7 +225,7 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 192 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -280,7 +242,7 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 192 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -310,8 +272,8 @@ i32.load i32.gt_u if - i32.const 448 - i32.const 512 + i32.const 320 + i32.const 384 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -379,7 +341,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 320 + i32.const 192 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -531,7 +493,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -551,7 +513,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -614,7 +576,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -767,7 +729,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -784,7 +746,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -873,7 +835,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -916,7 +878,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -934,7 +896,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -1002,7 +964,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1119,7 +1081,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1165,7 +1127,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1197,7 +1159,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1441,7 +1403,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1661,7 +1623,7 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 192 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1769,8 +1731,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 256 - i32.const 592 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1872,7 +1834,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1943,7 +1905,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2100,7 +2062,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2215,7 +2177,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2235,7 +2197,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2283,8 +2245,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 256 - i32.const 320 + i32.const 128 + i32.const 192 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2329,6 +2291,61 @@ local.get $ptr return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) (local $t i32) (local $r i32) @@ -2364,14 +2381,14 @@ i32.const 100 i32.rem_u local.set $d2 - i32.const 636 + i32.const 764 local.get $d1 i32.const 2 i32.shl i32.add i64.load32_u local.set $digits1 - i32.const 636 + i32.const 764 local.get $d2 i32.const 2 i32.shl @@ -2414,7 +2431,7 @@ i32.const 2 i32.sub local.set $offset - i32.const 636 + i32.const 764 local.get $d1|10 i32.const 2 i32.shl @@ -2437,7 +2454,7 @@ i32.const 2 i32.sub local.set $offset - i32.const 636 + i32.const 764 local.get $num i32.const 2 i32.shl @@ -2484,7 +2501,7 @@ i32.const 1 i32.shl i32.add - i32.const 1056 + i32.const 1184 local.get $num i32.wrap_i64 i32.const 255 @@ -2506,7 +2523,7 @@ i32.and if local.get $buffer - i32.const 1056 + i32.const 1184 local.get $num i32.wrap_i64 i32.const 6 @@ -2629,7 +2646,7 @@ i32.const 1 i32.shl i32.add - i32.const 2112 + i32.const 2240 local.get $num local.get $mask i64.and @@ -2663,7 +2680,7 @@ i32.const 1 i32.shl i32.add - i32.const 2112 + i32.const 2240 local.get $num local.get $q local.get $base @@ -2684,23 +2701,16 @@ end end ) - (func $~lib/number/I32#toString (param $this i32) (param $radix i32) (result i32) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) local.get $this local.get $radix - call $~lib/util/number/itoa32 + call $~lib/util/number/utoa32 return ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) - (func $~lib/string/String#get:length (param $this i32) (result i32) + (func $~lib/number/I32#toString (param $this i32) (param $radix i32) (result i32) local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u + local.get $radix + call $~lib/util/number/itoa32 return ) (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) @@ -2824,61 +2834,6 @@ i32.const 8 return ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 448 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 256 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 1056 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 2112 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $resolve-propertyaccess/Class - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-propertyaccess/Class $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - unreachable - ) (func $~start call $start:resolve-propertyaccess ) @@ -2887,14 +2842,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 35472 - i32.const 35520 + i32.const 35664 + i32.const 35712 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) (local $leftLength i32) (local $3 i32) @@ -3059,13 +3219,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 368 + i32.const 240 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 400 + i32.const 272 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 544 + i32.const 416 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace global.get $resolve-propertyaccess/Namespace.member @@ -3076,12 +3236,12 @@ local.get $1 i32.store local.get $1 - i32.const 2208 + i32.const 2400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -3095,12 +3255,12 @@ local.get $1 i32.store local.get $1 - i32.const 2320 + i32.const 2512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -3114,12 +3274,12 @@ local.get $1 i32.store local.get $1 - i32.const 2352 + i32.const 2544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -3133,12 +3293,12 @@ local.get $1 i32.store local.get $1 - i32.const 2384 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -3152,12 +3312,12 @@ local.get $1 i32.store local.get $1 - i32.const 2416 + i32.const 2608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -3171,12 +3331,12 @@ local.get $1 i32.store local.get $1 - i32.const 2448 + i32.const 2640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 48 i32.const 1 call $~lib/builtins/abort @@ -3190,12 +3350,12 @@ local.get $1 i32.store local.get $1 - i32.const 2480 + i32.const 2672 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 58 i32.const 1 call $~lib/builtins/abort @@ -3209,12 +3369,12 @@ local.get $1 i32.store local.get $1 - i32.const 2512 + i32.const 2704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 72 i32.const 1 call $~lib/builtins/abort @@ -3228,12 +3388,12 @@ local.get $1 i32.store local.get $1 - i32.const 2544 + i32.const 2736 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 78 i32.const 1 call $~lib/builtins/abort @@ -3247,12 +3407,12 @@ local.get $1 i32.store local.get $1 - i32.const 2576 + i32.const 2768 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 84 i32.const 1 call $~lib/builtins/abort @@ -3277,12 +3437,12 @@ local.get $1 i32.store local.get $1 - i32.const 2608 + i32.const 2800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 92 i32.const 3 call $~lib/builtins/abort @@ -3302,12 +3462,12 @@ local.get $1 i32.store local.get $1 - i32.const 2640 + i32.const 2832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -3318,6 +3478,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) (local $sign i32) (local $out i32) @@ -3351,8 +3658,8 @@ i32.gt_s end if - i32.const 32 - i32.const 160 + i32.const 560 + i32.const 688 i32.const 373 i32.const 5 call $~lib/builtins/abort @@ -3361,7 +3668,7 @@ local.get $value i32.eqz if - i32.const 224 + i32.const 752 local.set $14 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3528,4 +3835,59 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $resolve-propertyaccess/Class + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-propertyaccess/Class $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/resolve-propertyaccess.release.wat b/tests/compiler/resolve-propertyaccess.release.wat index 9340b8dc98..8616c6393b 100644 --- a/tests/compiler/resolve-propertyaccess.release.wat +++ b/tests/compiler/resolve-propertyaccess.release.wat @@ -3,11 +3,11 @@ (type $1 (func (param i32 i32) (result i32))) (type $2 (func (param i32))) (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (type $7 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i32))) + (type $8 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,68 +18,78 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36472)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36664)) (memory $0 1) - (data $0 (i32.const 1036) "|") - (data $0.1 (i32.const 1048) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data $1 (i32.const 1164) "<") - (data $1.1 (i32.const 1176) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data $2 (i32.const 1228) "\1c") - (data $2.1 (i32.const 1240) "\02\00\00\00\02\00\00\000") - (data $3 (i32.const 1260) "<") - (data $3.1 (i32.const 1272) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $4 (i32.const 1324) "<") - (data $4.1 (i32.const 1336) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $7 (i32.const 1452) "<") - (data $7.1 (i32.const 1464) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $8 (i32.const 1516) ",") - (data $8.1 (i32.const 1528) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $10 (i32.const 1596) "<") - (data $10.1 (i32.const 1608) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $11 (i32.const 1660) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data $12 (i32.const 2060) "\1c\04") - (data $12.1 (i32.const 2072) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data $13 (i32.const 3116) "\\") - (data $13.1 (i32.const 3128) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data $14 (i32.const 3212) "\1c") - (data $14.1 (i32.const 3224) "\02\00\00\00\02\00\00\001") - (data $15 (i32.const 3244) "L") - (data $15.1 (i32.const 3256) "\02\00\00\002\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00p\00r\00o\00p\00e\00r\00t\00y\00a\00c\00c\00e\00s\00s\00.\00t\00s") - (data $16 (i32.const 3324) "\1c") - (data $16.1 (i32.const 3336) "\02\00\00\00\04\00\00\001\001") - (data $17 (i32.const 3356) "\1c") - (data $17.1 (i32.const 3368) "\02\00\00\00\02\00\00\002") - (data $18 (i32.const 3388) "\1c") - (data $18.1 (i32.const 3400) "\02\00\00\00\04\00\00\002\002") - (data $19 (i32.const 3420) "\1c") - (data $19.1 (i32.const 3432) "\02\00\00\00\02\00\00\003") - (data $20 (i32.const 3452) "\1c") - (data $20.1 (i32.const 3464) "\02\00\00\00\04\00\00\003\003") - (data $21 (i32.const 3484) "\1c") - (data $21.1 (i32.const 3496) "\02\00\00\00\02\00\00\004") - (data $22 (i32.const 3516) "\1c") - (data $22.1 (i32.const 3528) "\02\00\00\00\02\00\00\005") - (data $23 (i32.const 3548) "\1c") - (data $23.1 (i32.const 3560) "\02\00\00\00\04\00\00\005\005") - (data $24 (i32.const 3580) "\1c") - (data $24.1 (i32.const 3592) "\02\00\00\00\02\00\00\007") - (data $25 (i32.const 3612) "\1c") - (data $25.1 (i32.const 3624) "\02\00\00\00\02\00\00\006") - (data $26 (i32.const 3644) "\1c") - (data $26.1 (i32.const 3656) "\02\00\00\00\02\00\00\008") - (data $27 (i32.const 3680) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) "\1c") + (data $19.1 (i32.const 3416) "\02\00\00\00\02\00\00\001") + (data $20 (i32.const 3436) "L") + (data $20.1 (i32.const 3448) "\02\00\00\002\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00p\00r\00o\00p\00e\00r\00t\00y\00a\00c\00c\00e\00s\00s\00.\00t\00s") + (data $21 (i32.const 3516) "\1c") + (data $21.1 (i32.const 3528) "\02\00\00\00\04\00\00\001\001") + (data $22 (i32.const 3548) "\1c") + (data $22.1 (i32.const 3560) "\02\00\00\00\02\00\00\002") + (data $23 (i32.const 3580) "\1c") + (data $23.1 (i32.const 3592) "\02\00\00\00\04\00\00\002\002") + (data $24 (i32.const 3612) "\1c") + (data $24.1 (i32.const 3624) "\02\00\00\00\02\00\00\003") + (data $25 (i32.const 3644) "\1c") + (data $25.1 (i32.const 3656) "\02\00\00\00\04\00\00\003\003") + (data $26 (i32.const 3676) "\1c") + (data $26.1 (i32.const 3688) "\02\00\00\00\02\00\00\004") + (data $27 (i32.const 3708) "\1c") + (data $27.1 (i32.const 3720) "\02\00\00\00\02\00\00\005") + (data $28 (i32.const 3740) "\1c") + (data $28.1 (i32.const 3752) "\02\00\00\00\04\00\00\005\005") + (data $29 (i32.const 3772) "\1c") + (data $29.1 (i32.const 3784) "\02\00\00\00\02\00\00\007") + (data $30 (i32.const 3804) "\1c") + (data $30.1 (i32.const 3816) "\02\00\00\00\02\00\00\006") + (data $31 (i32.const 3836) "\1c") + (data $31.1 (i32.const 3848) "\02\00\00\00\02\00\00\008") + (data $32 (i32.const 3872) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1472 + i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1280 + i32.const 1152 call $~lib/rt/itcms/__visit - i32.const 2080 + i32.const 2208 call $~lib/rt/itcms/__visit - i32.const 3136 + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -100,7 +110,7 @@ i32.ne if i32.const 0 - i32.const 1344 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -148,7 +158,7 @@ i32.eqz if i32.const 0 - i32.const 1344 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -157,7 +167,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$126 + block $__inlined_func$~lib/rt/itcms/Object#unlink$134 local.get $1 i32.load offset=4 i32.const -4 @@ -169,19 +179,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 36472 + i32.const 36664 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1344 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$126 + br $__inlined_func$~lib/rt/itcms/Object#unlink$134 end local.get $1 i32.load offset=8 @@ -189,7 +199,7 @@ i32.eqz if i32.const 0 - i32.const 1344 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -218,12 +228,12 @@ i32.const 1 else local.get $0 - i32.const 3680 + i32.const 3872 i32.load i32.gt_u if - i32.const 1472 - i32.const 1536 + i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -232,7 +242,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 3684 + i32.const 3876 i32.add i32.load i32.const 32 @@ -284,7 +294,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -298,7 +308,7 @@ i32.lt_u if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -344,7 +354,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -427,7 +437,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -441,7 +451,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -502,7 +512,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -535,7 +545,7 @@ i32.lt_u if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -550,7 +560,7 @@ i32.ne if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -601,7 +611,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -673,7 +683,7 @@ i64.lt_u if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -698,7 +708,7 @@ i32.gt_u if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -725,7 +735,7 @@ i32.gt_u if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -797,10 +807,10 @@ if unreachable end - i32.const 36480 + i32.const 36672 i32.const 0 i32.store - i32.const 38048 + i32.const 38240 i32.const 0 i32.store loop $for-loop|0 @@ -811,7 +821,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 36480 + i32.const 36672 i32.add i32.const 0 i32.store offset=4 @@ -829,7 +839,7 @@ i32.add i32.const 2 i32.shl - i32.const 36480 + i32.const 36672 i32.add i32.const 0 i32.store offset=96 @@ -847,14 +857,14 @@ br $for-loop|0 end end - i32.const 36480 - i32.const 38052 + i32.const 36672 + i32.const 38244 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 36480 + i32.const 36672 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -939,7 +949,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 36472 + i32.const 36664 i32.lt_u if local.get $0 @@ -1028,14 +1038,14 @@ i32.ne if i32.const 0 - i32.const 1344 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 36472 + i32.const 36664 i32.lt_u if local.get $0 @@ -1058,7 +1068,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 36472 + i32.const 36664 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1087,7 +1097,7 @@ end if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1171,7 +1181,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1223,7 +1233,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1255,8 +1265,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1280 - i32.const 1344 + i32.const 1152 + i32.const 1216 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1266,7 +1276,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1287,7 +1297,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end local.get $2 i32.const 0 @@ -1320,8 +1330,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1280 - i32.const 1616 + i32.const 1152 + i32.const 1488 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1423,7 +1433,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1438,7 +1448,7 @@ i32.gt_u if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1457,7 +1467,7 @@ i32.and if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1562,22 +1572,123 @@ memory.fill local.get $1 ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3704 + i32.const 3896 i32.lt_s if - i32.const 36496 - i32.const 36544 + i32.const 36688 + i32.const 36736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1586,7 +1697,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/util/number/itoa32$73 + block $__inlined_func$~lib/util/number/utoa32$74 local.get $0 i32.eqz if @@ -1594,23 +1705,12 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1248 - local.set $2 - br $__inlined_func$~lib/util/number/itoa32$73 + i32.const 1776 + local.set $1 + br $__inlined_func$~lib/util/number/utoa32$74 end global.get $~lib/memory/__stack_pointer - i32.const 0 local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - i32.const 1 - i32.shl - local.tee $3 - select - local.tee $0 i32.const 100000 i32.lt_u if (result i32) @@ -1656,163 +1756,346 @@ i32.add end end - local.tee $1 + local.tee $2 i32.const 1 i32.shl - local.get $3 - i32.add i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store + local.get $1 + local.get $0 local.get $2 - local.get $3 + call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $5 - loop $while-continue|0 - local.get $0 - i32.const 10000 - i32.ge_u - if - local.get $0 - i32.const 10000 - i32.rem_u - local.set $4 - local.get $0 - i32.const 10000 - i32.div_u - local.set $0 - local.get $5 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 + global.set $~lib/memory/__stack_pointer + end + local.get $1 + ) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3896 + i32.lt_s + if + i32.const 36688 + i32.const 36736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32$75 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/itoa32$75 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $1 + select + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u i32.const 1 - i32.shl i32.add - local.get $4 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1660 + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 i32.add - i64.load32_u - local.get $4 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1660 + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 end end + local.tee $2 + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store local.get $0 - i32.const 100 - i32.ge_u + local.get $1 + i32.add + local.get $3 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + local.get $1 if - local.get $5 - local.get $1 - i32.const 2 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i32.load - i32.store local.get $0 - i32.const 100 - i32.div_u - local.set $0 + i32.const 45 + i32.store16 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~start + call $start:resolve-propertyaccess + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 10 - i32.ge_u - if - local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$139 local.get $1 - i32.const 2 + i32.const 20 i32.sub - i32.const 1 - i32.shl + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$139 + end + global.get $~lib/memory/__stack_pointer local.get $0 i32.const 2 - i32.shl - i32.const 1660 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 i32.add - i32.load - i32.store - else - local.get $5 local.get $1 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 48 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 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.const 8 i32.add global.set $~lib/memory/__stack_pointer - end - local.get $2 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $resolve-propertyaccess/Class - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-propertyaccess/Class $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end + local.get $0 return end + i32.const 36688 + i32.const 36736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) - (func $~start - call $start:resolve-propertyaccess + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3896 + i32.lt_s + if + i32.const 36688 + i32.const 36736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1824,11 +2107,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3704 + i32.const 3896 i32.lt_s if - i32.const 36496 - i32.const 36544 + i32.const 36688 + i32.const 36736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1927,7 +2210,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$77 + block $__inlined_func$~lib/util/string/compareImpl$80 loop $while-continue|1 local.get $0 local.tee $3 @@ -1947,7 +2230,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$77 + br_if $__inlined_func$~lib/util/string/compareImpl$80 local.get $2 i32.const 2 i32.add @@ -1986,7 +2269,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 3704 + i32.const 3896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1998,34 +2281,34 @@ memory.size i32.const 16 i32.shl - i32.const 36472 + i32.const 36664 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1396 - i32.const 1392 + i32.const 1268 + i32.const 1264 i32.store - i32.const 1400 - i32.const 1392 + i32.const 1272 + i32.const 1264 i32.store - i32.const 1392 + i32.const 1264 global.set $~lib/rt/itcms/pinSpace - i32.const 1428 - i32.const 1424 + i32.const 1300 + i32.const 1296 i32.store - i32.const 1432 - i32.const 1424 + i32.const 1304 + i32.const 1296 i32.store - i32.const 1424 + i32.const 1296 global.set $~lib/rt/itcms/toSpace - i32.const 1572 - i32.const 1568 + i32.const 1444 + i32.const 1440 i32.store - i32.const 1576 - i32.const 1568 + i32.const 1448 + i32.const 1440 i32.store - i32.const 1568 + i32.const 1440 global.set $~lib/rt/itcms/fromSpace i32.const 1 call $~lib/number/I32#toString @@ -2034,12 +2317,12 @@ local.get $0 i32.store local.get $0 - i32.const 3232 + i32.const 3424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -2052,12 +2335,12 @@ local.get $0 i32.store local.get $0 - i32.const 3344 + i32.const 3536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -2070,12 +2353,12 @@ local.get $0 i32.store local.get $0 - i32.const 3376 + i32.const 3568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -2088,12 +2371,12 @@ local.get $0 i32.store local.get $0 - i32.const 3408 + i32.const 3600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -2106,12 +2389,12 @@ local.get $0 i32.store local.get $0 - i32.const 3440 + i32.const 3632 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -2124,12 +2407,12 @@ local.get $0 i32.store local.get $0 - i32.const 3472 + i32.const 3664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 48 i32.const 1 call $~lib/builtins/abort @@ -2142,12 +2425,12 @@ local.get $0 i32.store local.get $0 - i32.const 3504 + i32.const 3696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 58 i32.const 1 call $~lib/builtins/abort @@ -2160,12 +2443,12 @@ local.get $0 i32.store local.get $0 - i32.const 3536 + i32.const 3728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 72 i32.const 1 call $~lib/builtins/abort @@ -2178,12 +2461,12 @@ local.get $0 i32.store local.get $0 - i32.const 3568 + i32.const 3760 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 78 i32.const 1 call $~lib/builtins/abort @@ -2196,12 +2479,12 @@ local.get $0 i32.store local.get $0 - i32.const 3600 + i32.const 3792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 84 i32.const 1 call $~lib/builtins/abort @@ -2213,7 +2496,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3704 + i32.const 3896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2234,7 +2517,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3704 + i32.const 3896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2279,12 +2562,12 @@ local.get $1 i32.store local.get $1 - i32.const 3632 + i32.const 3824 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 92 i32.const 3 call $~lib/builtins/abort @@ -2300,12 +2583,12 @@ local.get $0 i32.store local.get $0 - i32.const 3664 + i32.const 3856 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -2317,11 +2600,39 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 36496 - i32.const 36544 + i32.const 36688 + i32.const 36736 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-propertyaccess/Class + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-propertyaccess/Class $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/resolve-ternary.debug.wat b/tests/compiler/resolve-ternary.debug.wat index 20c870d9c4..e03b00608d 100644 --- a/tests/compiler/resolve-ternary.debug.wat +++ b/tests/compiler/resolve-ternary.debug.wat @@ -1,24 +1,26 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (type $9 (func (param i32 i64 i32))) - (type $10 (func (param i64 i32) (result i32))) - (type $11 (func (param i32 i64 i32 i32))) - (type $12 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $13 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $14 (func (param i32 i32 i32) (result i32))) - (type $15 (func (param i32 f64 i32) (result i32))) - (type $16 (func (param f64 i32) (result i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $12 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $13 (func (param i32 i32 i32) (result i32))) + (type $14 (func (param i32 f64 i32) (result i32))) + (type $15 (func (param f64 i32) (result i32))) + (type $16 (func (param i32 i32 i32 i32))) (type $17 (func (param f64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $resolve-ternary/b (mut 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/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)) @@ -27,9 +29,6 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) @@ -40,102 +39,65 @@ (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $resolve-ternary/f1 i32 (i32.const 3472)) - (global $resolve-ternary/f2 i32 (i32.const 3504)) + (global $resolve-ternary/f1 i32 (i32.const 3664)) + (global $resolve-ternary/f2 i32 (i32.const 3696)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 3584)) - (global $~lib/memory/__data_end i32 (i32.const 3608)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36376)) - (global $~lib/memory/__heap_base i32 (i32.const 36376)) + (global $~lib/rt/__rtti_base i32 (i32.const 3776)) + (global $~lib/memory/__data_end i32 (i32.const 3800)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36568)) + (global $~lib/memory/__heap_base i32 (i32.const 36568)) (memory $0 1) - (data $0 (i32.const 12) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $2 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $4 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 544) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 572) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 636) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data $12 (i32.const 1036) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 2092) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") - (data $14 (i32.const 2188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 2220) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00t\00e\00r\00n\00a\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 2284) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") - (data $17 (i32.const 2316) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") - (data $18 (i32.const 2348) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") - (data $19 (i32.const 2396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $20 (i32.const 2448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $21 (i32.const 2504) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%29=>i32>#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/function/Function<%28i32%29=>i32> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%29=>i32>~visit - return - end - unreachable - ) (func $~start call $start:resolve-ternary ) @@ -4290,17 +4230,20 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 36400 - i32.const 36448 + i32.const 36592 + i32.const 36640 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) - (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) - (local $leftLength i32) - (local $3 i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4309,35 +4252,237 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $left - local.get $right + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 i32.eq if - i32.const 1 - local.set $3 + i32.const 96 + local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $6 return end - local.get $left - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $right - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add global.set $~lib/memory/__stack_pointer local.get $3 return @@ -4412,13 +4557,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 368 + i32.const 240 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 400 + i32.const 272 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 544 + i32.const 416 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace global.get $resolve-ternary/b @@ -4434,12 +4579,12 @@ local.get $0 i32.store local.get $0 - i32.const 2208 + i32.const 2400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -4458,12 +4603,12 @@ local.get $0 i32.store local.get $0 - i32.const 3440 + i32.const 3632 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -4485,7 +4630,7 @@ i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -4496,9 +4641,9 @@ global.set $~argumentsLength global.get $resolve-ternary/b if (result i32) - i32.const 3536 + i32.const 3728 else - i32.const 3568 + i32.const 3760 end i32.load call_indirect (type $0) @@ -4507,7 +4652,7 @@ i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -4520,7 +4665,7 @@ if (result i32) global.get $resolve-ternary/f2 else - i32.const 3568 + i32.const 3760 end i32.load call_indirect (type $0) @@ -4529,7 +4674,7 @@ i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 43 i32.const 1 call $~lib/builtins/abort @@ -4540,8 +4685,18 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/function/Function<%28i32%29=>i32>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4550,19 +4705,132 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28i32%29=>i32>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $12 + return ) (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) (local $sign i32) @@ -4597,8 +4865,8 @@ i32.gt_s end if - i32.const 32 - i32.const 160 + i32.const 560 + i32.const 688 i32.const 373 i32.const 5 call $~lib/builtins/abort @@ -4607,7 +4875,7 @@ local.get $value i32.eqz if - i32.const 224 + i32.const 752 local.set $14 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -4769,7 +5037,7 @@ f64.const 0 f64.eq if - i32.const 2304 + i32.const 2496 br $~lib/util/number/dtoa_impl|inlined.0 end local.get $value|1 @@ -4783,18 +5051,18 @@ local.get $value|1 f64.ne if - i32.const 2336 + i32.const 2528 br $~lib/util/number/dtoa_impl|inlined.0 end - i32.const 2368 - i32.const 2416 + i32.const 2560 + i32.const 2608 local.get $value|1 f64.const 0 f64.lt select br $~lib/util/number/dtoa_impl|inlined.0 end - i32.const 2448 + i32.const 2640 local.get $value|1 local.get $isSingle call $~lib/util/number/dtoa_core @@ -4808,7 +5076,7 @@ local.tee $result i32.store local.get $result - i32.const 2448 + i32.const 2640 local.get $size memory.copy local.get $result @@ -4822,4 +5090,98 @@ local.get $5 return ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>~visit + return + end + unreachable + ) + (func $~lib/function/Function<%28i32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/resolve-ternary.release.wat b/tests/compiler/resolve-ternary.release.wat index 8fa84ef7ad..65b9206564 100644 --- a/tests/compiler/resolve-ternary.release.wat +++ b/tests/compiler/resolve-ternary.release.wat @@ -1,15 +1,14 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func)) - (type $2 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func)) (type $3 (func (param i32))) (type $4 (func (param i32 i32))) - (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) - (type $8 (func (param i32 i32 i32))) - (type $9 (func (param i64 i64 i32 i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32))) + (type $8 (func (param i64 i64 i32 i64) (result i32))) + (type $9 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -23,55 +22,65 @@ (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37400)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37592)) (memory $0 1) - (data $0 (i32.const 1036) "|") - (data $0.1 (i32.const 1048) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data $1 (i32.const 1164) "<") - (data $1.1 (i32.const 1176) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data $2 (i32.const 1228) "\1c") - (data $2.1 (i32.const 1240) "\02\00\00\00\02\00\00\000") - (data $3 (i32.const 1260) "<") - (data $3.1 (i32.const 1272) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $4 (i32.const 1324) "<") - (data $4.1 (i32.const 1336) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $7 (i32.const 1452) "<") - (data $7.1 (i32.const 1464) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $8 (i32.const 1516) ",") - (data $8.1 (i32.const 1528) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $10 (i32.const 1596) "<") - (data $10.1 (i32.const 1608) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $11 (i32.const 1660) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data $12 (i32.const 2060) "\1c\04") - (data $12.1 (i32.const 2072) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data $13 (i32.const 3116) "\\") - (data $13.1 (i32.const 3128) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data $14 (i32.const 3212) "\1c") - (data $14.1 (i32.const 3224) "\02\00\00\00\02\00\00\001") - (data $15 (i32.const 3244) "<") - (data $15.1 (i32.const 3256) "\02\00\00\00$\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00t\00e\00r\00n\00a\00r\00y\00.\00t\00s") - (data $16 (i32.const 3308) "\1c") - (data $16.1 (i32.const 3320) "\02\00\00\00\06\00\00\000\00.\000") - (data $17 (i32.const 3340) "\1c") - (data $17.1 (i32.const 3352) "\02\00\00\00\06\00\00\00N\00a\00N") - (data $18 (i32.const 3372) ",") - (data $18.1 (i32.const 3384) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data $19 (i32.const 3420) ",") - (data $19.1 (i32.const 3432) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data $21 (i32.const 3528) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8i32> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4632 - i32.lt_s - if - i32.const 37424 - i32.const 37472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - unreachable - ) (func $~start - (local $0 i32) - (local $1 i64) - (local $2 f64) + (local $0 i64) + (local $1 i32) + (local $2 i64) (local $3 i64) (local $4 i64) - (local $5 i64) - (local $6 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 4632 + i32.const 4824 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2506,41 +2555,41 @@ memory.size i32.const 16 i32.shl - i32.const 37400 + i32.const 37592 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1396 - i32.const 1392 + i32.const 1268 + i32.const 1264 i32.store - i32.const 1400 - i32.const 1392 + i32.const 1272 + i32.const 1264 i32.store - i32.const 1392 + i32.const 1264 global.set $~lib/rt/itcms/pinSpace - i32.const 1428 - i32.const 1424 + i32.const 1300 + i32.const 1296 i32.store - i32.const 1432 - i32.const 1424 + i32.const 1304 + i32.const 1296 i32.store - i32.const 1424 + i32.const 1296 global.set $~lib/rt/itcms/toSpace - i32.const 1572 - i32.const 1568 + i32.const 1444 + i32.const 1440 i32.store - i32.const 1576 - i32.const 1568 + i32.const 1448 + i32.const 1440 i32.store - i32.const 1568 + i32.const 1440 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4632 + i32.const 4824 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2549,9 +2598,9 @@ global.get $~lib/memory/__stack_pointer i32.const 2 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 1 i32.const 1 call $~lib/util/number/utoa32_dec_lut @@ -2560,15 +2609,15 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 - i32.const 3232 + local.get $1 + i32.const 3424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -2579,7 +2628,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4632 + i32.const 4824 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2587,40 +2636,40 @@ i32.store i32.const -4 global.set $~lib/util/number/_K - i32.const 3880 + i32.const 4072 i64.load global.set $~lib/util/number/_frc_pow - i32.const 4312 + i32.const 4504 i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $3 + local.tee $0 i64.const 4294967295 i64.and - local.tee $4 + local.tee $2 i64.const 31 i64.shl - local.get $4 + local.get $2 i64.const 10 i64.shl i64.const 32 i64.shr_u i64.add - local.set $1 - local.get $3 + local.set $3 + local.get $0 i64.const 32 i64.shr_u - local.tee $3 + local.tee $4 i64.const 31 i64.shl - local.get $4 + local.get $2 i64.const 31 i64.shl - local.tee $5 + local.tee $0 i64.const 32 i64.shr_u i64.add - local.get $5 + local.get $0 i64.const 4294967295 i64.and i64.const 2147483647 @@ -2628,17 +2677,17 @@ i64.const 32 i64.shr_u i64.add - local.get $3 + local.get $4 i64.const 31 i64.shl - local.get $1 + local.get $3 i64.const 32 i64.shr_u i64.add - local.get $1 + local.get $3 i64.const 4294967295 i64.and - local.get $3 + local.get $4 i64.const 10 i64.shl i64.add @@ -2649,31 +2698,31 @@ i64.add i64.const 1 i64.sub - local.tee $1 + local.tee $0 global.get $~lib/util/number/_exp_pow i32.const 1 i32.add - local.get $1 - local.get $3 + local.get $0 + local.get $4 i64.const 2147483647 i64.mul - local.get $4 + local.get $2 i64.const 2147483647 i64.mul - local.get $4 + local.get $2 i64.const 4294966784 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $1 + local.tee $0 i64.const 32 i64.shr_u i64.add - local.get $3 + local.get $4 i64.const 4294966784 i64.mul - local.get $1 + local.get $0 i64.const 4294967295 i64.and i64.add @@ -2690,72 +2739,72 @@ call $~lib/util/number/prettify i32.const 1 i32.shl - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 - i32.const 3472 - local.get $6 + local.get $1 + i32.const 3664 + local.get $5 memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 - i32.const 4464 + local.get $1 + i32.const 4656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 4496 + i32.const 4688 i32.load call_indirect (type $0) i32.const 2 i32.ne if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 4560 + i32.const 4752 i32.load call_indirect (type $0) i32.const 4 i32.ne if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 35 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 4528 + i32.const 4720 i32.load call_indirect (type $0) i32.const 3 i32.ne if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 43 i32.const 1 call $~lib/builtins/abort @@ -2767,13 +2816,212 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 37424 - i32.const 37472 + i32.const 37616 + i32.const 37664 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4824 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4824 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$143 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$143 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 37616 + i32.const 37664 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4824 + i32.lt_s + if + i32.const 37616 + i32.const 37664 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2784,11 +3032,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4632 + i32.const 4824 i32.lt_s if - i32.const 37424 - i32.const 37472 + i32.const 37616 + i32.const 37664 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2887,7 +3135,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$84 + block $__inlined_func$~lib/util/string/compareImpl$85 loop $while-continue|1 local.get $0 local.tee $3 @@ -2907,7 +3155,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$84 + br_if $__inlined_func$~lib/util/string/compareImpl$85 local.get $2 i32.const 2 i32.add @@ -2936,4 +3184,60 @@ global.set $~lib/memory/__stack_pointer i32.const 0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4824 + i32.lt_s + if + i32.const 37616 + i32.const 37664 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) ) diff --git a/tests/compiler/resolve-unary.debug.wat b/tests/compiler/resolve-unary.debug.wat index 9157dbee04..0a49dc6046 100644 --- a/tests/compiler/resolve-unary.debug.wat +++ b/tests/compiler/resolve-unary.debug.wat @@ -1,18 +1,20 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (type $9 (func (param i32 i64 i32))) - (type $10 (func (param i64 i32) (result i32))) - (type $11 (func (param i32 i64 i32 i32))) - (type $12 (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $12 (func (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,9 +23,6 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) @@ -32,102 +31,65 @@ (global $resolve-unary/b (mut i32) (i32.const 1)) (global $resolve-unary/foo (mut i32) (i32.const 0)) (global $resolve-unary/bar (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 2816)) - (global $~lib/memory/__data_end i32 (i32.const 2848)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35616)) - (global $~lib/memory/__heap_base i32 (i32.const 35616)) + (global $~lib/rt/__rtti_base i32 (i32.const 3008)) + (global $~lib/memory/__data_end i32 (i32.const 3040)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35808)) + (global $~lib/memory/__heap_base i32 (i32.const 35808)) (memory $0 1) - (data $0 (i32.const 12) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $2 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $4 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 544) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 572) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 636) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data $12 (i32.const 1036) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 2092) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") - (data $14 (i32.const 2188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00-\001\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 2220) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00r\00e\00s\00o\00l\00v\00e\00-\00u\00n\00a\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 2284) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") - (data $17 (i32.const 2316) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") - (data $18 (i32.const 2348) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00r\00u\00e\00\00\00\00\00") - (data $19 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00f\00a\00l\00s\00e\00\00\00") - (data $20 (i32.const 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00-\002\00\00\00\00\00\00\00\00\00") - (data $21 (i32.const 2444) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") - (data $22 (i32.const 2476) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") - (data $23 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00!\00\00\00\00\00\00\00\00\00\00\00") - (data $24 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00~\00\00\00\00\00\00\00\00\00\00\00") - (data $25 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00+\00+\00i\00\00\00\00\00\00\00") - (data $26 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00-\00-\00i\00\00\00\00\00\00\00") - (data $27 (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\00+\00+\00\00\00\00\00\00\00") - (data $28 (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\00-\00-\00\00\00\00\00\00\00") - (data $29 (i32.const 2700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r\00") - (data $30 (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $31 (i32.const 2764) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $32 (i32.const 2816) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00-\001\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00r\00e\00s\00o\00l\00v\00e\00-\00u\00n\00a\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2476) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00r\00u\00e\00\00\00\00\00") + (data $24 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00f\00a\00l\00s\00e\00\00\00") + (data $25 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00-\002\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00!\00\00\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00~\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 2764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00+\00+\00i\00\00\00\00\00\00\00") + (data $31 (i32.const 2796) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00-\00-\00i\00\00\00\00\00\00\00") + (data $32 (i32.const 2828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\00+\00+\00\00\00\00\00\00\00") + (data $33 (i32.const 2860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\00-\00-\00\00\00\00\00\00\00") + (data $34 (i32.const 2892) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r\00") + (data $35 (i32.const 2924) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 2956) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $37 (i32.const 3008) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 2 2 funcref) (elem $0 (i32.const 1) $start:resolve-unary~anonymous|0) (export "memory" (memory $0)) (start $~start) - (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) - local.get $value - i32.const 100000 - i32.lt_u - if - local.get $value - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $value - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $value - i32.const 10000 - i32.ge_u - i32.add - local.get $value - i32.const 1000 - i32.ge_u - i32.add - return - end - unreachable - else - local.get $value - i32.const 10000000 - i32.lt_u - if - i32.const 6 - local.get $value - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $value - i32.const 1000000000 - i32.ge_u - i32.add - local.get $value - i32.const 100000000 - i32.ge_u - i32.add - return - end - unreachable - end - unreachable + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this @@ -193,7 +155,7 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 192 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -263,7 +225,7 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 192 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -280,7 +242,7 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 192 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -310,8 +272,8 @@ i32.load i32.gt_u if - i32.const 448 - i32.const 512 + i32.const 320 + i32.const 384 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -379,7 +341,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 320 + i32.const 192 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -531,7 +493,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -551,7 +513,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -614,7 +576,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -767,7 +729,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -784,7 +746,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -873,7 +835,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -916,7 +878,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -934,7 +896,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -1002,7 +964,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1119,7 +1081,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1165,7 +1127,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1197,7 +1159,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1441,7 +1403,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1661,7 +1623,7 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 192 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1769,8 +1731,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 256 - i32.const 592 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1872,7 +1834,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1943,7 +1905,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2100,7 +2062,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2215,7 +2177,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2235,7 +2197,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 464 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2283,8 +2245,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 256 - i32.const 320 + i32.const 128 + i32.const 192 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2329,6 +2291,61 @@ local.get $ptr return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) (local $t i32) (local $r i32) @@ -2364,14 +2381,14 @@ i32.const 100 i32.rem_u local.set $d2 - i32.const 636 + i32.const 764 local.get $d1 i32.const 2 i32.shl i32.add i64.load32_u local.set $digits1 - i32.const 636 + i32.const 764 local.get $d2 i32.const 2 i32.shl @@ -2414,7 +2431,7 @@ i32.const 2 i32.sub local.set $offset - i32.const 636 + i32.const 764 local.get $d1|10 i32.const 2 i32.shl @@ -2437,7 +2454,7 @@ i32.const 2 i32.sub local.set $offset - i32.const 636 + i32.const 764 local.get $num i32.const 2 i32.shl @@ -2484,7 +2501,7 @@ i32.const 1 i32.shl i32.add - i32.const 1056 + i32.const 1184 local.get $num i32.wrap_i64 i32.const 255 @@ -2506,7 +2523,7 @@ i32.and if local.get $buffer - i32.const 1056 + i32.const 1184 local.get $num i32.wrap_i64 i32.const 6 @@ -2629,7 +2646,7 @@ i32.const 1 i32.shl i32.add - i32.const 2112 + i32.const 2240 local.get $num local.get $mask i64.and @@ -2663,7 +2680,7 @@ i32.const 1 i32.shl i32.add - i32.const 2112 + i32.const 2240 local.get $num local.get $q local.get $base @@ -2684,23 +2701,16 @@ end end ) - (func $~lib/number/I32#toString (param $this i32) (param $radix i32) (result i32) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) local.get $this local.get $radix - call $~lib/util/number/itoa32 + call $~lib/util/number/utoa32 return ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) - (func $~lib/string/String#get:length (param $this i32) (result i32) + (func $~lib/number/I32#toString (param $this i32) (param $radix i32) (result i32) local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u + local.get $radix + call $~lib/util/number/itoa32 return ) (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) @@ -2810,14 +2820,14 @@ (func $~lib/number/Bool#toString (param $this i32) (param $radix i32) (result i32) local.get $this if (result i32) - i32.const 2368 + i32.const 2560 else - i32.const 2400 + i32.const 2592 end return ) (func $resolve-unary/Foo#plus (param $this i32) (result i32) - i32.const 2464 + i32.const 2656 return ) (func $~lib/string/String#toString (param $this i32) (result i32) @@ -2825,7 +2835,7 @@ return ) (func $resolve-unary/Foo#minus (param $this i32) (result i32) - i32.const 2496 + i32.const 2688 return ) (func $resolve-unary/Foo#prefix_inc (param $this i32) (result i32) @@ -2841,11 +2851,11 @@ return ) (func $resolve-unary/Foo#not (param $this i32) (result i32) - i32.const 2528 + i32.const 2720 return ) (func $resolve-unary/Foo#bitwise_not (param $this i32) (result i32) - i32.const 2560 + i32.const 2752 return ) (func $resolve-unary/Foo#postfix_inc (param $this i32) (result i32) @@ -2857,115 +2867,25 @@ return ) (func $resolve-unary/Bar.prefix_inc (param $a i32) (result i32) - i32.const 2592 + i32.const 2784 return ) (func $resolve-unary/Bar.prefix_dec (param $a i32) (result i32) - i32.const 2624 + i32.const 2816 return ) (func $resolve-unary/Bar.postfix_inc (param $a i32) (result i32) - i32.const 2656 + i32.const 2848 return ) (func $resolve-unary/Bar.postfix_dec (param $a i32) (result i32) - i32.const 2688 + i32.const 2880 return ) (func $start:resolve-unary~anonymous|0 ) (func $resolve-unary/generic<~lib/string/String> (param $v i32) ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $resolve-unary/foo - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $resolve-unary/bar - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 448 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 256 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 1056 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 2112 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>void>#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/function/Function<%28%29=>void> - block $resolve-unary/Bar - block $resolve-unary/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-unary/Foo $resolve-unary/Bar $~lib/function/Function<%28%29=>void> $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>void>~visit - return - end - unreachable - ) (func $~start call $start:resolve-unary ) @@ -2974,17 +2894,20 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 35648 - i32.const 35696 + i32.const 35840 + i32.const 35888 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) - (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) - (local $leftLength i32) - (local $3 i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -2993,13 +2916,215 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $left - local.get $right - i32.eq - if - i32.const 1 - local.set $3 - global.get $~lib/memory/__stack_pointer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer @@ -3179,13 +3304,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 368 + i32.const 240 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 400 + i32.const 272 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 544 + i32.const 416 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const -1 @@ -3196,12 +3321,12 @@ local.get $6 i32.store local.get $6 - i32.const 2208 + i32.const 2400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 2 i32.const 1 call $~lib/builtins/abort @@ -3215,12 +3340,12 @@ local.get $6 i32.store local.get $6 - i32.const 2304 + i32.const 2496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -3238,12 +3363,12 @@ local.get $6 i32.store local.get $6 - i32.const 2336 + i32.const 2528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -3261,12 +3386,12 @@ local.get $6 i32.store local.get $6 - i32.const 2304 + i32.const 2496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -3281,12 +3406,12 @@ local.get $6 i32.store local.get $6 - i32.const 2400 + i32.const 2592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -3302,12 +3427,12 @@ local.get $6 i32.store local.get $6 - i32.const 2368 + i32.const 2560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -3323,12 +3448,12 @@ local.get $6 i32.store local.get $6 - i32.const 2432 + i32.const 2624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -3347,12 +3472,12 @@ local.get $6 i32.store local.get $6 - i32.const 2304 + i32.const 2496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -3371,12 +3496,12 @@ local.get $6 i32.store local.get $6 - i32.const 2336 + i32.const 2528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 46 i32.const 1 call $~lib/builtins/abort @@ -3403,12 +3528,12 @@ local.get $6 i32.store local.get $6 - i32.const 2464 + i32.const 2656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 91 i32.const 1 call $~lib/builtins/abort @@ -3432,12 +3557,12 @@ local.get $6 i32.store local.get $6 - i32.const 2496 + i32.const 2688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 96 i32.const 1 call $~lib/builtins/abort @@ -3463,7 +3588,7 @@ i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 101 i32.const 1 call $~lib/builtins/abort @@ -3489,7 +3614,7 @@ i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 106 i32.const 1 call $~lib/builtins/abort @@ -3513,12 +3638,12 @@ local.get $6 i32.store local.get $6 - i32.const 2528 + i32.const 2720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 111 i32.const 1 call $~lib/builtins/abort @@ -3542,12 +3667,12 @@ local.get $6 i32.store local.get $6 - i32.const 2560 + i32.const 2752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 116 i32.const 1 call $~lib/builtins/abort @@ -3577,7 +3702,7 @@ i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 121 i32.const 1 call $~lib/builtins/abort @@ -3607,7 +3732,7 @@ i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 126 i32.const 1 call $~lib/builtins/abort @@ -3634,12 +3759,12 @@ local.get $6 i32.store local.get $6 - i32.const 2592 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 151 i32.const 1 call $~lib/builtins/abort @@ -3663,12 +3788,12 @@ local.get $6 i32.store local.get $6 - i32.const 2624 + i32.const 2816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 156 i32.const 1 call $~lib/builtins/abort @@ -3692,12 +3817,12 @@ local.get $6 i32.store local.get $6 - i32.const 2656 + i32.const 2848 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 161 i32.const 1 call $~lib/builtins/abort @@ -3721,12 +3846,12 @@ local.get $6 i32.store local.get $6 - i32.const 2688 + i32.const 2880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2240 + i32.const 2432 i32.const 166 i32.const 1 call $~lib/builtins/abort @@ -3734,20 +3859,30 @@ end i32.const 1 drop - i32.const 2720 + i32.const 2912 call $~lib/string/String#get:length drop - i32.const 2752 + i32.const 2944 drop - i32.const 2784 + i32.const 2976 call $resolve-unary/generic<~lib/string/String> global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3756,19 +3891,132 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28%29=>void>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $12 + return ) (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) (local $sign i32) @@ -3803,8 +4051,8 @@ i32.gt_s end if - i32.const 32 - i32.const 160 + i32.const 560 + i32.const 688 i32.const 373 i32.const 5 call $~lib/builtins/abort @@ -3813,7 +4061,7 @@ local.get $value i32.eqz if - i32.const 224 + i32.const 752 local.set $14 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3980,4 +4228,118 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $resolve-unary/foo + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-unary/bar + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28%29=>void> + block $resolve-unary/Bar + block $resolve-unary/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-unary/Foo $resolve-unary/Bar $~lib/function/Function<%28%29=>void> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + unreachable + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/resolve-unary.release.wat b/tests/compiler/resolve-unary.release.wat index 05a765c4bf..8e71eac2e7 100644 --- a/tests/compiler/resolve-unary.release.wat +++ b/tests/compiler/resolve-unary.release.wat @@ -1,13 +1,13 @@ (module (type $0 (func)) (type $1 (func (param i32 i32) (result i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32) (result i32))) - (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32))) + (type $8 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -22,66 +22,76 @@ (global $resolve-unary/b (mut i32) (i32.const 1)) (global $resolve-unary/foo (mut i32) (i32.const 0)) (global $resolve-unary/bar (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36640)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36832)) (memory $0 1) - (data $0 (i32.const 1036) "|") - (data $0.1 (i32.const 1048) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data $1 (i32.const 1164) "<") - (data $1.1 (i32.const 1176) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data $2 (i32.const 1228) "\1c") - (data $2.1 (i32.const 1240) "\02\00\00\00\02\00\00\000") - (data $3 (i32.const 1260) "<") - (data $3.1 (i32.const 1272) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $4 (i32.const 1324) "<") - (data $4.1 (i32.const 1336) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $7 (i32.const 1452) "<") - (data $7.1 (i32.const 1464) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $8 (i32.const 1516) ",") - (data $8.1 (i32.const 1528) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $10 (i32.const 1596) "<") - (data $10.1 (i32.const 1608) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $11 (i32.const 1660) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data $12 (i32.const 2060) "\1c\04") - (data $12.1 (i32.const 2072) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data $13 (i32.const 3116) "\\") - (data $13.1 (i32.const 3128) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data $14 (i32.const 3212) "\1c") - (data $14.1 (i32.const 3224) "\02\00\00\00\04\00\00\00-\001") - (data $15 (i32.const 3244) "<") - (data $15.1 (i32.const 3256) "\02\00\00\00 \00\00\00r\00e\00s\00o\00l\00v\00e\00-\00u\00n\00a\00r\00y\00.\00t\00s") - (data $16 (i32.const 3308) "\1c") - (data $16.1 (i32.const 3320) "\02\00\00\00\02\00\00\001") - (data $17 (i32.const 3340) "\1c") - (data $17.1 (i32.const 3352) "\02\00\00\00\02\00\00\002") - (data $18 (i32.const 3372) "\1c") - (data $18.1 (i32.const 3384) "\02\00\00\00\08\00\00\00t\00r\00u\00e") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") (data $19 (i32.const 3404) "\1c") - (data $19.1 (i32.const 3416) "\02\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data $20 (i32.const 3436) "\1c") - (data $20.1 (i32.const 3448) "\02\00\00\00\04\00\00\00-\002") - (data $21 (i32.const 3468) "\1c") - (data $21.1 (i32.const 3480) "\02\00\00\00\02\00\00\00+") - (data $22 (i32.const 3500) "\1c") - (data $22.1 (i32.const 3512) "\02\00\00\00\02\00\00\00-") - (data $23 (i32.const 3532) "\1c") - (data $23.1 (i32.const 3544) "\02\00\00\00\02\00\00\00!") - (data $24 (i32.const 3564) "\1c") - (data $24.1 (i32.const 3576) "\02\00\00\00\02\00\00\00~") - (data $25 (i32.const 3596) "\1c") - (data $25.1 (i32.const 3608) "\02\00\00\00\06\00\00\00+\00+\00i") - (data $26 (i32.const 3628) "\1c") - (data $26.1 (i32.const 3640) "\02\00\00\00\06\00\00\00-\00-\00i") - (data $27 (i32.const 3660) "\1c") - (data $27.1 (i32.const 3672) "\02\00\00\00\06\00\00\00i\00+\00+") - (data $28 (i32.const 3692) "\1c") - (data $28.1 (i32.const 3704) "\02\00\00\00\06\00\00\00i\00-\00-") - (data $29 (i32.const 3724) "\1c") - (data $29.1 (i32.const 3736) "\02\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r") - (data $30 (i32.const 3756) "\1c") - (data $30.1 (i32.const 3768) "\06\00\00\00\08\00\00\00\01") - (data $31 (i32.const 3788) ",") - (data $31.1 (i32.const 3800) "\02\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n") - (data $32 (i32.const 3840) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") + (data $19.1 (i32.const 3416) "\02\00\00\00\04\00\00\00-\001") + (data $20 (i32.const 3436) "<") + (data $20.1 (i32.const 3448) "\02\00\00\00 \00\00\00r\00e\00s\00o\00l\00v\00e\00-\00u\00n\00a\00r\00y\00.\00t\00s") + (data $21 (i32.const 3500) "\1c") + (data $21.1 (i32.const 3512) "\02\00\00\00\02\00\00\001") + (data $22 (i32.const 3532) "\1c") + (data $22.1 (i32.const 3544) "\02\00\00\00\02\00\00\002") + (data $23 (i32.const 3564) "\1c") + (data $23.1 (i32.const 3576) "\02\00\00\00\08\00\00\00t\00r\00u\00e") + (data $24 (i32.const 3596) "\1c") + (data $24.1 (i32.const 3608) "\02\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data $25 (i32.const 3628) "\1c") + (data $25.1 (i32.const 3640) "\02\00\00\00\04\00\00\00-\002") + (data $26 (i32.const 3660) "\1c") + (data $26.1 (i32.const 3672) "\02\00\00\00\02\00\00\00+") + (data $27 (i32.const 3692) "\1c") + (data $27.1 (i32.const 3704) "\02\00\00\00\02\00\00\00-") + (data $28 (i32.const 3724) "\1c") + (data $28.1 (i32.const 3736) "\02\00\00\00\02\00\00\00!") + (data $29 (i32.const 3756) "\1c") + (data $29.1 (i32.const 3768) "\02\00\00\00\02\00\00\00~") + (data $30 (i32.const 3788) "\1c") + (data $30.1 (i32.const 3800) "\02\00\00\00\06\00\00\00+\00+\00i") + (data $31 (i32.const 3820) "\1c") + (data $31.1 (i32.const 3832) "\02\00\00\00\06\00\00\00-\00-\00i") + (data $32 (i32.const 3852) "\1c") + (data $32.1 (i32.const 3864) "\02\00\00\00\06\00\00\00i\00+\00+") + (data $33 (i32.const 3884) "\1c") + (data $33.1 (i32.const 3896) "\02\00\00\00\06\00\00\00i\00-\00-") + (data $34 (i32.const 3916) "\1c") + (data $34.1 (i32.const 3928) "\02\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r") + (data $35 (i32.const 3948) "\1c") + (data $35.1 (i32.const 3960) "\06\00\00\00\08\00\00\00\01") + (data $36 (i32.const 3980) ",") + (data $36.1 (i32.const 3992) "\02\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n") + (data $37 (i32.const 4032) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots @@ -99,13 +109,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1472 + i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1280 + i32.const 1152 call $~lib/rt/itcms/__visit - i32.const 2080 + i32.const 2208 call $~lib/rt/itcms/__visit - i32.const 3136 + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -126,7 +136,7 @@ i32.ne if i32.const 0 - i32.const 1344 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -174,7 +184,7 @@ i32.eqz if i32.const 0 - i32.const 1344 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -183,7 +193,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$156 + block $__inlined_func$~lib/rt/itcms/Object#unlink$164 local.get $1 i32.load offset=4 i32.const -4 @@ -195,19 +205,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 36640 + i32.const 36832 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1344 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$156 + br $__inlined_func$~lib/rt/itcms/Object#unlink$164 end local.get $1 i32.load offset=8 @@ -215,7 +225,7 @@ i32.eqz if i32.const 0 - i32.const 1344 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -244,12 +254,12 @@ i32.const 1 else local.get $0 - i32.const 3840 + i32.const 4032 i32.load i32.gt_u if - i32.const 1472 - i32.const 1536 + i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -258,7 +268,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 3844 + i32.const 4036 i32.add i32.load i32.const 32 @@ -310,7 +320,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -324,7 +334,7 @@ i32.lt_u if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -370,7 +380,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -453,7 +463,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -467,7 +477,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -528,7 +538,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -561,7 +571,7 @@ i32.lt_u if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -576,7 +586,7 @@ i32.ne if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -627,7 +637,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -699,7 +709,7 @@ i64.lt_u if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -724,7 +734,7 @@ i32.gt_u if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -751,7 +761,7 @@ i32.gt_u if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -823,10 +833,10 @@ if unreachable end - i32.const 36640 + i32.const 36832 i32.const 0 i32.store - i32.const 38208 + i32.const 38400 i32.const 0 i32.store loop $for-loop|0 @@ -837,7 +847,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 36640 + i32.const 36832 i32.add i32.const 0 i32.store offset=4 @@ -855,7 +865,7 @@ i32.add i32.const 2 i32.shl - i32.const 36640 + i32.const 36832 i32.add i32.const 0 i32.store offset=96 @@ -873,14 +883,14 @@ br $for-loop|0 end end - i32.const 36640 - i32.const 38212 + i32.const 36832 + i32.const 38404 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 36640 + i32.const 36832 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -965,7 +975,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 36640 + i32.const 36832 i32.lt_u if local.get $0 @@ -1054,14 +1064,14 @@ i32.ne if i32.const 0 - i32.const 1344 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 36640 + i32.const 36832 i32.lt_u if local.get $0 @@ -1084,7 +1094,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 36640 + i32.const 36832 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1113,7 +1123,7 @@ end if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1197,7 +1207,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1249,7 +1259,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1281,8 +1291,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1280 - i32.const 1344 + i32.const 1152 + i32.const 1216 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1292,7 +1302,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1313,7 +1323,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end local.get $2 i32.const 0 @@ -1346,8 +1356,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1280 - i32.const 1616 + i32.const 1152 + i32.const 1488 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1449,7 +1459,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1464,7 +1474,7 @@ i32.gt_u if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1483,7 +1493,7 @@ i32.and if i32.const 0 - i32.const 1616 + i32.const 1488 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1588,22 +1598,123 @@ memory.fill local.get $1 ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3872 + i32.const 4064 i32.lt_s if - i32.const 36672 - i32.const 36720 + i32.const 36864 + i32.const 36912 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1612,7 +1723,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/util/number/itoa32$73 + block $__inlined_func$~lib/util/number/utoa32$74 local.get $0 i32.eqz if @@ -1620,23 +1731,12 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1248 - local.set $2 - br $__inlined_func$~lib/util/number/itoa32$73 + i32.const 1776 + local.set $1 + br $__inlined_func$~lib/util/number/utoa32$74 end global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - i32.sub local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - i32.const 1 - i32.shl - local.tee $3 - select - local.tee $0 i32.const 100000 i32.lt_u if (result i32) @@ -1682,123 +1782,134 @@ i32.add end end - local.tee $1 + local.tee $2 i32.const 1 i32.shl - local.get $3 - i32.add i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store + local.get $1 + local.get $0 local.get $2 - local.get $3 + call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $5 - loop $while-continue|0 - local.get $0 - i32.const 10000 - i32.ge_u - if - local.get $0 - i32.const 10000 - i32.rem_u - local.set $4 - local.get $0 - i32.const 10000 - i32.div_u - local.set $0 - local.get $5 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 + global.set $~lib/memory/__stack_pointer + end + local.get $1 + ) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4064 + i32.lt_s + if + i32.const 36864 + i32.const 36912 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32$75 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/itoa32$75 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $1 + select + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u i32.const 1 - i32.shl i32.add - local.get $4 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1660 + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 i32.add - i64.load32_u - local.get $4 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1660 + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 end end + local.tee $2 + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store local.get $0 - i32.const 100 - i32.ge_u + local.get $1 + i32.add + local.get $3 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + local.get $1 if - local.get $5 - local.get $1 - i32.const 2 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i32.load - i32.store local.get $0 - i32.const 100 - i32.div_u - local.set $0 - end - local.get $0 - i32.const 10 - i32.ge_u - if - local.get $5 - local.get $1 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i32.load - i32.store - else - local.get $5 - local.get $1 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 48 - i32.add - i32.store16 - end - local.get $3 - if - local.get $2 i32.const 45 i32.store16 end @@ -1807,72 +1918,210 @@ i32.add global.set $~lib/memory/__stack_pointer end - local.get $2 + local.get $0 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/function/Function<%28%29=>void> - block $resolve-unary/Bar - block $resolve-unary/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-unary/Foo $resolve-unary/Bar $~lib/function/Function<%28%29=>void> $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end + (func $~start + call $start:resolve-unary + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 4064 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3872 + i32.const 4064 i32.lt_s - if - i32.const 36672 - i32.const 36720 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $2 i32.store local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$169 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$169 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 return end + i32.const 36864 + i32.const 36912 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) - (func $~start - call $start:resolve-unary + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4064 + i32.lt_s + if + i32.const 36864 + i32.const 36912 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1884,11 +2133,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3872 + i32.const 4064 i32.lt_s if - i32.const 36672 - i32.const 36720 + i32.const 36864 + i32.const 36912 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1987,7 +2236,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$79 + block $__inlined_func$~lib/util/string/compareImpl$80 loop $while-continue|1 local.get $0 local.tee $3 @@ -2007,7 +2256,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$79 + br_if $__inlined_func$~lib/util/string/compareImpl$80 local.get $2 i32.const 2 i32.add @@ -2044,7 +2293,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 3872 + i32.const 4064 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2054,34 +2303,34 @@ memory.size i32.const 16 i32.shl - i32.const 36640 + i32.const 36832 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1396 - i32.const 1392 + i32.const 1268 + i32.const 1264 i32.store - i32.const 1400 - i32.const 1392 + i32.const 1272 + i32.const 1264 i32.store - i32.const 1392 + i32.const 1264 global.set $~lib/rt/itcms/pinSpace - i32.const 1428 - i32.const 1424 + i32.const 1300 + i32.const 1296 i32.store - i32.const 1432 - i32.const 1424 + i32.const 1304 + i32.const 1296 i32.store - i32.const 1424 + i32.const 1296 global.set $~lib/rt/itcms/toSpace - i32.const 1572 - i32.const 1568 + i32.const 1444 + i32.const 1440 i32.store - i32.const 1576 - i32.const 1568 + i32.const 1448 + i32.const 1440 i32.store - i32.const 1568 + i32.const 1440 global.set $~lib/rt/itcms/fromSpace i32.const -1 call $~lib/number/I32#toString @@ -2090,12 +2339,12 @@ local.get $0 i32.store local.get $0 - i32.const 3232 + i32.const 3424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 2 i32.const 1 call $~lib/builtins/abort @@ -2108,12 +2357,12 @@ local.get $0 i32.store local.get $0 - i32.const 3328 + i32.const 3520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -2130,12 +2379,12 @@ local.get $0 i32.store local.get $0 - i32.const 3360 + i32.const 3552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -2152,50 +2401,50 @@ local.get $0 i32.store local.get $0 - i32.const 3328 + i32.const 3520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 3424 - i32.const 3392 + i32.const 3616 + i32.const 3584 global.get $resolve-unary/a select local.tee $0 i32.store local.get $0 - i32.const 3424 + i32.const 3616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 23 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 3392 - i32.const 3424 + i32.const 3584 + i32.const 3616 global.get $resolve-unary/a select local.tee $0 i32.store local.get $0 - i32.const 3392 + i32.const 3584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -2210,12 +2459,12 @@ local.get $0 i32.store local.get $0 - i32.const 3456 + i32.const 3648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -2233,12 +2482,12 @@ local.get $0 i32.store local.get $0 - i32.const 3328 + i32.const 3520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -2256,12 +2505,12 @@ local.get $0 i32.store local.get $0 - i32.const 3360 + i32.const 3552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 46 i32.const 1 call $~lib/builtins/abort @@ -2272,7 +2521,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3872 + i32.const 4064 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2302,18 +2551,18 @@ global.get $resolve-unary/foo i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 3488 + i32.const 3680 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3488 + i32.const 3680 i32.store - i32.const 3488 - i32.const 3488 + i32.const 3680 + i32.const 3680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 91 i32.const 1 call $~lib/builtins/abort @@ -2323,18 +2572,18 @@ global.get $resolve-unary/foo i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 3520 + i32.const 3712 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3520 + i32.const 3712 i32.store - i32.const 3520 - i32.const 3520 + i32.const 3712 + i32.const 3712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 96 i32.const 1 call $~lib/builtins/abort @@ -2355,7 +2604,7 @@ i32.ne if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 101 i32.const 1 call $~lib/builtins/abort @@ -2376,7 +2625,7 @@ i32.ne if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 106 i32.const 1 call $~lib/builtins/abort @@ -2386,18 +2635,18 @@ global.get $resolve-unary/foo i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 3552 + i32.const 3744 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3552 + i32.const 3744 i32.store - i32.const 3552 - i32.const 3552 + i32.const 3744 + i32.const 3744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 111 i32.const 1 call $~lib/builtins/abort @@ -2407,18 +2656,18 @@ global.get $resolve-unary/foo i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 3584 + i32.const 3776 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3584 + i32.const 3776 i32.store - i32.const 3584 - i32.const 3584 + i32.const 3776 + i32.const 3776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 116 i32.const 1 call $~lib/builtins/abort @@ -2441,7 +2690,7 @@ i32.ne if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 121 i32.const 1 call $~lib/builtins/abort @@ -2464,7 +2713,7 @@ i32.ne if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 126 i32.const 1 call $~lib/builtins/abort @@ -2475,7 +2724,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3872 + i32.const 4064 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2505,18 +2754,18 @@ global.get $resolve-unary/bar i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 3616 + i32.const 3808 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3616 + i32.const 3808 i32.store - i32.const 3616 - i32.const 3616 + i32.const 3808 + i32.const 3808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 151 i32.const 1 call $~lib/builtins/abort @@ -2526,18 +2775,18 @@ global.get $resolve-unary/bar i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 3648 + i32.const 3840 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3648 + i32.const 3840 i32.store - i32.const 3648 - i32.const 3648 + i32.const 3840 + i32.const 3840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 156 i32.const 1 call $~lib/builtins/abort @@ -2547,18 +2796,18 @@ global.get $resolve-unary/bar i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 3680 + i32.const 3872 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3680 + i32.const 3872 i32.store - i32.const 3680 - i32.const 3680 + i32.const 3872 + i32.const 3872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 161 i32.const 1 call $~lib/builtins/abort @@ -2568,24 +2817,24 @@ global.get $resolve-unary/bar i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 3712 + i32.const 3904 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3712 + i32.const 3904 i32.store - i32.const 3712 - i32.const 3712 + i32.const 3904 + i32.const 3904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 3264 + i32.const 3456 i32.const 166 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3740 + i32.const 3932 i32.load drop global.get $~lib/memory/__stack_pointer @@ -2594,8 +2843,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 36672 - i32.const 36720 + i32.const 36864 + i32.const 36912 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2607,11 +2856,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3872 + i32.const 4064 i32.lt_s if - i32.const 36672 - i32.const 36720 + i32.const 36864 + i32.const 36912 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2636,4 +2885,66 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28%29=>void> + block $resolve-unary/Bar + block $resolve-unary/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-unary/Foo $resolve-unary/Bar $~lib/function/Function<%28%29=>void> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4064 + i32.lt_s + if + i32.const 36864 + i32.const 36912 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) ) diff --git a/tests/compiler/retain-i32.debug.wat b/tests/compiler/retain-i32.debug.wat index 29864f2efa..7e1bd69e15 100644 --- a/tests/compiler/retain-i32.debug.wat +++ b/tests/compiler/retain-i32.debug.wat @@ -1,9 +1,32 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func (param i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $~lib/builtins/i8.MAX_VALUE i32 (i32.const 127)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/builtins/i8.MIN_VALUE i32 (i32.const -128)) (global $~lib/builtins/u8.MAX_VALUE i32 (i32.const 255)) (global $~lib/builtins/i16.MIN_VALUE i32 (i32.const -32768)) @@ -15,15 +38,2665 @@ (global $retain-i32/si (mut i32) (i32.const 0)) (global $retain-i32/ui (mut i32) (i32.const 0)) (global $retain-i32/ri (mut i32) (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 60)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) - (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2452)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35220)) + (global $~lib/memory/__heap_base i32 (i32.const 35220)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s\00\00\00") + (data $20 (i32.const 2432) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $retain-i32/test (param $a i32) (param $b i32) local.get $a local.get $b @@ -37,7 +2710,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4 i32.const 3 call $~lib/builtins/abort @@ -55,7 +2728,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 5 i32.const 3 call $~lib/builtins/abort @@ -73,7 +2746,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort @@ -91,7 +2764,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 7 i32.const 3 call $~lib/builtins/abort @@ -109,7 +2782,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 8 i32.const 3 call $~lib/builtins/abort @@ -127,7 +2800,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 9 i32.const 3 call $~lib/builtins/abort @@ -149,7 +2822,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -169,7 +2842,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 13 i32.const 3 call $~lib/builtins/abort @@ -189,7 +2862,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 14 i32.const 3 call $~lib/builtins/abort @@ -209,7 +2882,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 15 i32.const 3 call $~lib/builtins/abort @@ -229,7 +2902,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 16 i32.const 3 call $~lib/builtins/abort @@ -249,7 +2922,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 17 i32.const 3 call $~lib/builtins/abort @@ -269,7 +2942,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -293,7 +2966,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 19 i32.const 3 call $~lib/builtins/abort @@ -310,6 +2983,23 @@ ) (func $start:retain-i32 (local $i i32) + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 0 global.get $~lib/builtins/i8.MAX_VALUE call $retain-i32/test @@ -442,7 +3132,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 78 i32.const 1 call $~lib/builtins/abort @@ -461,7 +3151,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 81 i32.const 1 call $~lib/builtins/abort @@ -478,7 +3168,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 84 i32.const 1 call $~lib/builtins/abort @@ -495,7 +3185,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 87 i32.const 1 call $~lib/builtins/abort @@ -512,7 +3202,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 90 i32.const 1 call $~lib/builtins/abort @@ -529,7 +3219,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 93 i32.const 1 call $~lib/builtins/abort @@ -546,7 +3236,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 96 i32.const 1 call $~lib/builtins/abort @@ -562,7 +3252,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 99 i32.const 1 call $~lib/builtins/abort @@ -578,7 +3268,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 102 i32.const 1 call $~lib/builtins/abort @@ -594,7 +3284,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 105 i32.const 1 call $~lib/builtins/abort @@ -610,7 +3300,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 108 i32.const 1 call $~lib/builtins/abort @@ -630,7 +3320,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 113 i32.const 1 call $~lib/builtins/abort @@ -650,7 +3340,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 116 i32.const 1 call $~lib/builtins/abort @@ -668,7 +3358,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 119 i32.const 1 call $~lib/builtins/abort @@ -686,7 +3376,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 122 i32.const 1 call $~lib/builtins/abort @@ -702,7 +3392,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 125 i32.const 1 call $~lib/builtins/abort @@ -718,7 +3408,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 128 i32.const 1 call $~lib/builtins/abort @@ -734,7 +3424,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 131 i32.const 1 call $~lib/builtins/abort @@ -750,4 +3440,421 @@ (func $~start call $start:retain-i32 ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35248 + i32.const 35296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/retain-i32.release.wat b/tests/compiler/retain-i32.release.wat index 66ffaef6f3..cebd4cbf09 100644 --- a/tests/compiler/retain-i32.release.wat +++ b/tests/compiler/retain-i32.release.wat @@ -1,12 +1,80 @@ (module (type $0 (func)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s") + (data $20 (i32.const 3456) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) (func $~start (local $0 i32) + memory.size + i32.const 16 + i32.shl + i32.const 36244 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace i32.const -128 local.set $0 loop $for-loop|0 diff --git a/tests/compiler/return-unreachable.debug.wat b/tests/compiler/return-unreachable.debug.wat index f66ebe5b52..91b0b01b14 100644 --- a/tests/compiler/return-unreachable.debug.wat +++ b/tests/compiler/return-unreachable.debug.wat @@ -1,14 +1,16 @@ (module - (type $0 (func (param i32 i32))) - (type $1 (func (param i32) (result i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) - (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (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)) @@ -23,28 +25,53 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/rt/__rtti_base i32 (i32.const 512)) - (global $~lib/memory/__data_end i32 (i32.const 536)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33304)) - (global $~lib/memory/__heap_base i32 (i32.const 33304)) + (global $~lib/rt/__rtti_base i32 (i32.const 2480)) + (global $~lib/memory/__data_end i32 (i32.const 2504)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35272)) + (global $~lib/memory/__heap_base i32 (i32.const 35272)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $1 (i32.const 60) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $3 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 512) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $20 (i32.const 2428) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $21 (i32.const 2480) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "test" (func $return-unreachable/test)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -2245,6 +2272,422 @@ local.get $ptr return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) (local $child i32) (local $parent i32) @@ -2355,73 +2798,6 @@ i32.store unreachable ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 320 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 128 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - unreachable - ) (func $~start memory.size i32.const 16 @@ -2446,14 +2822,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33328 - i32.const 33376 + i32.const 35296 + i32.const 35344 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) (local $2 i32) (local $3 i32) @@ -2519,8 +3100,8 @@ i32.shr_u i32.gt_u if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -2592,6 +3173,226 @@ global.set $~lib/memory/__stack_pointer local.get $6 ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2400 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) (local $2 i32) global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/return-unreachable.release.wat b/tests/compiler/return-unreachable.release.wat index 3e068205cc..efcd61a18c 100644 --- a/tests/compiler/return-unreachable.release.wat +++ b/tests/compiler/return-unreachable.release.wat @@ -3,11 +3,10 @@ (type $1 (func (param i32))) (type $2 (func (param i32 i32))) (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (type $7 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,23 +17,44 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34328)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36296)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $1 (i32.const 1084) ",") - (data $1.1 (i32.const 1096) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $2 (i32.const 1132) "<") - (data $2.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $3 (i32.const 1196) "<") - (data $3.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $6 (i32.const 1324) "<") - (data $6.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $7 (i32.const 1388) ",") - (data $7.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $9 (i32.const 1468) "<") - (data $9.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $10 (i32.const 1536) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $20 (i32.const 3452) ",") + (data $20.1 (i32.const 3464) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $21 (i32.const 3504) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t") (export "test" (func $return-unreachable/test)) (export "memory" (memory $0)) (start $~start) @@ -43,10 +63,14 @@ (local $1 i32) i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3424 call $~lib/rt/itcms/__visit i32.const 1152 call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -108,7 +132,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$121 + block $__inlined_func$~lib/rt/itcms/Object#unlink$134 local.get $0 i32.load offset=4 i32.const -4 @@ -120,7 +144,7 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34328 + i32.const 36296 i32.lt_u i32.and i32.eqz @@ -132,7 +156,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$121 + br $__inlined_func$~lib/rt/itcms/Object#unlink$134 end local.get $0 i32.load offset=8 @@ -169,7 +193,7 @@ i32.const 1 else local.get $1 - i32.const 1536 + i32.const 3504 i32.load i32.gt_u if @@ -183,7 +207,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1540 + i32.const 3508 i32.add i32.load i32.const 32 @@ -767,10 +791,10 @@ if unreachable end - i32.const 34336 + i32.const 36304 i32.const 0 i32.store - i32.const 35904 + i32.const 37872 i32.const 0 i32.store loop $for-loop|0 @@ -781,7 +805,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34336 + i32.const 36304 i32.add i32.const 0 i32.store offset=4 @@ -799,7 +823,7 @@ i32.add i32.const 2 i32.shl - i32.const 34336 + i32.const 36304 i32.add i32.const 0 i32.store offset=96 @@ -817,14 +841,14 @@ br $for-loop|0 end end - i32.const 34336 - i32.const 35908 + i32.const 36304 + i32.const 37876 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34336 + i32.const 36304 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -909,7 +933,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34328 + i32.const 36296 i32.lt_u if local.get $0 @@ -1005,7 +1029,7 @@ unreachable end local.get $0 - i32.const 34328 + i32.const 36296 i32.lt_u if local.get $0 @@ -1028,7 +1052,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34328 + i32.const 36296 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1236,7 +1260,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1257,7 +1281,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end local.get $2 i32.const 0 @@ -1532,6 +1556,204 @@ memory.fill local.get $1 ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3528 + i32.lt_s + if + i32.const 36320 + i32.const 36368 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) local.get $0 local.get $1 @@ -1596,7 +1818,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1560 + i32.const 3528 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1608,7 +1830,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1560 + i32.const 3528 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1688,13 +1910,247 @@ i32.store unreachable end - i32.const 34352 - i32.const 34400 + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36296 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3528 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3528 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$139 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$139 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36320 + i32.const 36368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3528 + i32.lt_s + if + i32.const 36320 + i32.const 36368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid block $~lib/array/Array @@ -1724,11 +2180,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1560 + i32.const 3528 i32.lt_s if - i32.const 34352 - i32.const 34400 + i32.const 36320 + i32.const 36368 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1751,38 +2207,4 @@ end unreachable ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34328 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1268 - i32.const 1264 - i32.store - i32.const 1272 - i32.const 1264 - i32.store - i32.const 1264 - global.set $~lib/rt/itcms/pinSpace - i32.const 1300 - i32.const 1296 - i32.store - i32.const 1304 - i32.const 1296 - i32.store - i32.const 1296 - global.set $~lib/rt/itcms/toSpace - i32.const 1444 - i32.const 1440 - i32.store - i32.const 1448 - i32.const 1440 - i32.store - i32.const 1440 - global.set $~lib/rt/itcms/fromSpace - ) ) diff --git a/tests/compiler/return.debug.wat b/tests/compiler/return.debug.wat index 3a0fe739ab..af8e3ff051 100644 --- a/tests/compiler/return.debug.wat +++ b/tests/compiler/return.debug.wat @@ -1,13 +1,36 @@ (module - (type $0 (func)) + (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 44)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32812)) (global $~lib/memory/__heap_base i32 (i32.const 32812)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") (table $0 2 2 funcref) @@ -28,14 +51,14 @@ global.set $~argumentsLength local.get $fn i32.load - call_indirect (type $0) + call_indirect (type $2) return end i32.const 0 global.set $~argumentsLength local.get $fn i32.load - call_indirect (type $0) + call_indirect (type $2) return ) (func $return/testVoidReturn (param $cond i32) @@ -50,13 +73,2642 @@ (func $~start call $start:return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33040 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33040 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 33040 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 33168 + i32.const 33232 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 33040 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33040 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32976 + i32.const 33312 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32976 + i32.const 33040 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 33612 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 33612 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 33612 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 33612 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 34032 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 34032 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 35088 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 35088 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~stack_check global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__data_end i32.lt_s if i32.const 32832 - i32.const 32880 + i32.const 35248 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -86,6 +2738,358 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 32944 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32880 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 32912 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 33376 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 33376 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 35184 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 33408 + i32.const 33536 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 33600 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $export:return/testVoidReturnFunction (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -103,4 +3107,98 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 33168 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32976 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 34032 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 35088 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + unreachable + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/return.release.wat b/tests/compiler/return.release.wat index 4509ebf226..6360db8643 100644 --- a/tests/compiler/return.release.wat +++ b/tests/compiler/return.release.wat @@ -1,10 +1,20 @@ (module (type $0 (func)) (type $1 (func (param i32))) - (type $2 (func (param i32 i32 i32 i32))) - (type $3 (func (param i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33836)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") @@ -28,7 +38,7 @@ i32.lt_s if i32.const 33856 - i32.const 33904 + i32.const 36272 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -48,6 +58,1867 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 34192 + call $~lib/rt/itcms/__visit + i32.const 34000 + call $~lib/rt/itcms/__visit + i32.const 35056 + call $~lib/rt/itcms/__visit + i32.const 36112 + call $~lib/rt/itcms/__visit + i32.const 4 + i32.load + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 34064 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + 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 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 34064 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$126 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 33836 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34064 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$126 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 34064 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.load + i32.gt_u + if + i32.const 34192 + i32.const 34256 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.load offset=4 + i32.const 32 + i32.and + end + local.set $1 + i32.const 8 + i32.load + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $1 + select + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + i32.const 8 + local.get $0 + i32.store + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34336 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 34336 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34336 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 34336 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34336 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34336 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 34336 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 34336 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34336 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 34336 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 34336 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 34336 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 33840 + i32.const 0 + i32.store + i32.const 35408 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 33840 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 33840 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 33840 + i32.const 35412 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 33840 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + i32.const 0 + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 33836 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + local.get $1 + global.set $~lib/rt/itcms/white + i32.const 4 + i32.load + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + 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 34064 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 33836 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 33836 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 34336 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + i32.const 4 + i32.const 0 + i32.store + i32.const 8 + i32.const 0 + i32.store + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34336 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 34336 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 34000 + i32.const 34064 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$72 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$72 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 34000 + i32.const 34336 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 34336 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 34336 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 34336 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + i32.const 8 + i32.load + local.set $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + i32.const 8 + local.get $1 + i32.store + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 1068 + i32.lt_s + if + i32.const 33856 + i32.const 36272 + 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$76 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 34624 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$76 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 34636 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 34636 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 34636 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 34636 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$131 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 33968 + local.set $0 + br $__inlined_func$~lib/string/String#concat$131 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 33856 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + if + i32.const 33856 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 33904 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 33936 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 34400 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 34400 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 36208 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $export:return/testVoidReturnFunction (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -58,7 +1929,7 @@ i32.lt_s if i32.const 33856 - i32.const 33904 + i32.const 36272 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -75,4 +1946,60 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + if + i32.const 33856 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) ) diff --git a/tests/compiler/rt/alloc-large-memory.debug.wat b/tests/compiler/rt/alloc-large-memory.debug.wat index 9d12c607e6..ea81a0fa5d 100644 --- a/tests/compiler/rt/alloc-large-memory.debug.wat +++ b/tests/compiler/rt/alloc-large-memory.debug.wat @@ -1,20 +1,56 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func)) + (type $2 (func (param i32))) (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64) (result i32))) - (type $6 (func (param i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i64 i32))) + (type $8 (func (param i64 i32) (result i32))) + (type $9 (func (param i32 i64 i32 i32))) + (type $10 (func (param i32 i32 i64) (result i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 140)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32908)) - (global $~lib/memory/__heap_base i32 (i32.const 32908)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2384)) + (global $~lib/memory/__data_end i32 (i32.const 2404)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35172)) + (global $~lib/memory/__heap_base i32 (i32.const 35172)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2384) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -24,25 +60,398 @@ local.get $flMap i32.store ) - (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) local.get $this - i32.load + i32.load offset=16 ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + (func $~lib/string/String#get:length (param $this i32) (result i32) local.get $this - local.get $mmInfo - i32.store + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return ) - (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this - local.get $prev + local.get $nextWithColor i32.store offset=4 ) - (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) local.get $this - local.get $next + local.get $prev i32.store offset=8 ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) local.get $this i32.load offset=4 @@ -51,6 +460,16 @@ local.get $this i32.load offset=8 ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) local.get $this i32.load @@ -89,7 +508,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -109,7 +528,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -172,7 +591,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -325,7 +744,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -342,7 +761,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -431,7 +850,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -474,7 +893,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -492,7 +911,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -560,7 +979,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -598,62 +1017,834 @@ local.get $block call $~lib/rt/tlsf/Block#set:prev end - local.get $root - local.set $root|20 - local.get $fl - local.set $fl|21 - local.get $sl - local.set $sl|22 - local.get $block - local.set $head|23 - local.get $root|20 - local.get $fl|21 - i32.const 4 - i32.shl - local.get $sl|22 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $head|23 - i32.store offset=96 - local.get $root - local.get $root - call $~lib/rt/tlsf/Root#get:flMap + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset i32.const 1 - local.get $fl - i32.shl - i32.or - call $~lib/rt/tlsf/Root#set:flMap - local.get $root - local.set $root|26 - local.get $fl - local.set $fl|27 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $root - local.set $root|24 - local.get $fl - local.set $fl|25 - local.get $root|24 - local.get $fl|25 - i32.const 2 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 i32.shl i32.add - i32.load offset=4 - br $~lib/rt/tlsf/GETSL|inlined.1 + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b i32.const 1 - local.get $sl - i32.shl - i32.or - local.set $slMap - local.get $root|26 - local.get $fl|27 - i32.const 2 - i32.shl - i32.add - local.get $slMap - i32.store offset=4 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return ) (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) (local $end i32) @@ -677,7 +1868,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -723,7 +1914,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -755,7 +1946,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -996,8 +2187,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 96 - i32.const 32 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1099,7 +2290,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1170,7 +2361,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1327,7 +2518,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1442,7 +2633,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1462,7 +2653,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 464 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1500,6 +2691,23 @@ ) (func $start:rt/alloc-large-memory (local $i i32) + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace loop $while-continue|0 memory.size i32.const 128 @@ -1536,4 +2744,421 @@ (func $~start call $start:rt/alloc-large-memory ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35200 + i32.const 35248 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/rt/alloc-large-memory.release.wat b/tests/compiler/rt/alloc-large-memory.release.wat index 7430833f99..a08e3c7485 100644 --- a/tests/compiler/rt/alloc-large-memory.release.wat +++ b/tests/compiler/rt/alloc-large-memory.release.wat @@ -1,19 +1,259 @@ (module - (type $0 (func (param i32 i32))) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func (param i32 i32 i64))) - (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (param i32))) - (type $5 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func)) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (param i32 i32 i32 i32))) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36196)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3408) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$121 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36196 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$121 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3408 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3412 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -27,7 +267,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -41,7 +281,7 @@ i32.lt_u if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -87,7 +327,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -170,7 +410,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -184,7 +424,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -245,7 +485,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -278,7 +518,7 @@ i32.lt_u if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -293,7 +533,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -344,7 +584,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -406,42 +646,615 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36196 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36196 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36196 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1056 - i32.const 382 - i32.const 14 + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + block $__inlined_func$~lib/rt/itcms/interrupt$51 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$51 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 2 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3428 + i32.lt_s + if + i32.const 36224 + i32.const 36272 + 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$55 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$55 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -468,7 +1281,7 @@ i32.gt_u if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -520,6 +1333,86 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36208 + i32.const 0 + i32.store + i32.const 37776 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36208 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36208 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36208 + i32.const 37780 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36208 + global.set $~lib/rt/tlsf/ROOT + ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 @@ -574,7 +1467,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -626,7 +1519,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -648,112 +1541,29 @@ end end ) - (func $~lib/memory/heap.alloc (param $0 i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - memory.size - local.tee $2 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 33936 - i32.const 0 - i32.store - i32.const 35504 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $1 - i32.const 23 - i32.lt_u - if - local.get $1 - i32.const 2 - i32.shl - i32.const 33936 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.const 33936 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - i32.const 33936 - i32.const 35508 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 33936 - global.set $~lib/rt/tlsf/ROOT - end - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $0 + local.get $1 i32.const 1073741820 i32.gt_u if - i32.const 1120 - i32.const 1056 + i32.const 1152 + i32.const 1488 i32.const 461 i32.const 29 call $~lib/builtins/abort unreachable end - local.get $3 local.get $0 + local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $0 + local.get $1 i32.const 19 i32.add i32.const -16 @@ -761,25 +1571,25 @@ i32.const 4 i32.sub end - local.tee $0 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size local.tee $1 - local.get $0 + local.get $3 i32.const 256 i32.ge_u if (result i32) - local.get $0 + local.get $3 i32.const 536870910 i32.lt_u if (result i32) - local.get $0 + local.get $3 i32.const 1 i32.const 27 - local.get $0 + local.get $3 i32.clz i32.sub i32.shl @@ -787,13 +1597,13 @@ i32.const 1 i32.sub else - local.get $0 + local.get $3 end else - local.get $0 + local.get $3 end i32.const 4 - local.get $3 + local.get $0 i32.load offset=1568 local.get $1 i32.const 16 @@ -826,7 +1636,7 @@ unreachable end end - local.get $3 + local.get $0 local.get $1 i32.const 16 i32.shl @@ -835,21 +1645,21 @@ i64.const 16 i64.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 if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $0 + local.get $3 local.get $1 i32.load i32.const -4 @@ -857,43 +1667,43 @@ i32.gt_u if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 - local.get $0 + local.set $4 + local.get $3 i32.const 4 i32.add i32.const 15 i32.and if i32.const 0 - i32.const 1056 + i32.const 1488 i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $0 - local.get $2 + local.get $3 + local.get $4 i32.const 2 i32.and i32.or @@ -901,21 +1711,21 @@ local.get $1 i32.const 4 i32.add - local.get $0 + local.get $3 i32.add - local.tee $0 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -934,16 +1744,56 @@ i32.and i32.store end + local.get $1 ) (func $~start (local $0 i32) + memory.size + i32.const 16 + i32.shl + i32.const 36196 + 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 loop $while-continue|0 memory.size i32.const 128 i32.ne if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 32768 - call $~lib/memory/heap.alloc + call $~lib/rt/tlsf/allocateBlock + drop br $while-continue|0 end end @@ -952,8 +1802,15 @@ i32.const 32763 i32.lt_s if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 65536 - call $~lib/memory/heap.alloc + call $~lib/rt/tlsf/allocateBlock + drop local.get $0 i32.const 1 i32.add @@ -962,4 +1819,228 @@ end end ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3428 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3428 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$126 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$126 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36224 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3428 + i32.lt_s + if + i32.const 36224 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/rt/finalize.debug.wat b/tests/compiler/rt/finalize.debug.wat index 9f6475284f..23dcc2bb54 100644 --- a/tests/compiler/rt/finalize.debug.wat +++ b/tests/compiler/rt/finalize.debug.wat @@ -2,15 +2,21 @@ (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $rt/finalize/expect (mut i32) (i32.const 0)) (global $rt/finalize/ran (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -19,32 +25,469 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 464)) - (global $~lib/memory/__data_end i32 (i32.const 488)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33256)) - (global $~lib/memory/__heap_base i32 (i32.const 33256)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2456)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35224)) + (global $~lib/memory/__heap_base i32 (i32.const 35224)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00r\00t\00/\00f\00i\00n\00a\00l\00i\00z\00e\00.\00t\00s\00") - (data $8 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 464) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00r\00t\00/\00f\00i\00n\00a\00l\00i\00z\00e\00.\00t\00s\00") + (data $19 (i32.const 2364) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2432) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "_start" (func $~start)) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -109,7 +552,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -179,7 +622,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -196,7 +639,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -226,8 +669,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -295,7 +738,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -388,7 +831,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 6 i32.const 3 call $~lib/builtins/abort @@ -463,7 +906,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -483,7 +926,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -546,7 +989,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -699,7 +1142,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -716,7 +1159,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -805,7 +1248,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -848,7 +1291,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -866,7 +1309,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -934,7 +1377,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1051,7 +1494,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1097,7 +1540,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1129,7 +1572,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1373,7 +1816,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1597,7 +2040,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1705,8 +2148,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 416 + i32.const 2000 + i32.const 2384 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1808,7 +2251,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1879,7 +2322,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2036,7 +2479,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2151,7 +2594,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2171,7 +2614,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2219,8 +2662,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2320,13 +2763,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -2337,62 +2780,13 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $rt/finalize/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/finalize/Ref $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - unreachable - ) (func $~start global.get $~started if @@ -2407,14 +2801,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33280 - i32.const 33328 + i32.const 35248 + i32.const 35296 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $rt/finalize/Ref#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2453,6 +3052,153 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2481,4 +3227,59 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $rt/finalize/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/finalize/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/rt/finalize.release.wat b/tests/compiler/rt/finalize.release.wat index b61f14014d..fcdc8b2861 100644 --- a/tests/compiler/rt/finalize.release.wat +++ b/tests/compiler/rt/finalize.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) (global $rt/finalize/expect (mut i32) (i32.const 0)) (global $rt/finalize/ran (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -19,30 +19,253 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34280)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36248)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) ",") - (data $7.1 (i32.const 1384) "\02\00\00\00\1c\00\00\00r\00t\00/\00f\00i\00n\00a\00l\00i\00z\00e\00.\00t\00s") - (data $8 (i32.const 1420) "<") - (data $8.1 (i32.const 1432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $9 (i32.const 1488) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) ",") + (data $18.1 (i32.const 3352) "\02\00\00\00\1c\00\00\00r\00t\00/\00f\00i\00n\00a\00l\00i\00z\00e\00.\00t\00s") + (data $19 (i32.const 3388) "<") + (data $19.1 (i32.const 3400) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $20 (i32.const 3456) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (export "_start" (func $~start)) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3480 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -63,7 +286,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -111,7 +334,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -120,7 +343,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$112 + block $__inlined_func$~lib/rt/itcms/Object#unlink$125 local.get $1 i32.load offset=4 i32.const -4 @@ -132,19 +355,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34280 + i32.const 36248 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$112 + br $__inlined_func$~lib/rt/itcms/Object#unlink$125 end local.get $1 i32.load offset=8 @@ -152,7 +375,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -181,12 +404,12 @@ i32.const 1 else local.get $0 - i32.const 1488 + i32.const 3456 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -195,7 +418,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1492 + i32.const 3460 i32.add i32.load i32.const 32 @@ -247,7 +470,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -261,7 +484,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -307,7 +530,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -390,7 +613,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -404,7 +627,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -465,7 +688,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -498,7 +721,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -513,7 +736,7 @@ i32.ne if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -564,7 +787,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -636,7 +859,7 @@ i64.lt_u if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -661,7 +884,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -688,7 +911,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -760,10 +983,10 @@ if unreachable end - i32.const 34288 + i32.const 36256 i32.const 0 i32.store - i32.const 35856 + i32.const 37824 i32.const 0 i32.store loop $for-loop|0 @@ -774,7 +997,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34288 + i32.const 36256 i32.add i32.const 0 i32.store offset=4 @@ -792,7 +1015,7 @@ i32.add i32.const 2 i32.shl - i32.const 34288 + i32.const 36256 i32.add i32.const 0 i32.store offset=96 @@ -810,14 +1033,14 @@ br $for-loop|0 end end - i32.const 34288 - i32.const 35860 + i32.const 36256 + i32.const 37828 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34288 + i32.const 36256 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -902,7 +1125,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34280 + i32.const 36248 i32.lt_u if local.get $0 @@ -991,14 +1214,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34280 + i32.const 36248 i32.lt_u if local.get $0 @@ -1024,7 +1247,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 6 i32.const 3 call $~lib/builtins/abort @@ -1036,7 +1259,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34280 + i32.const 36248 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1065,7 +1288,7 @@ end if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1095,18 +1318,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3408 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1114,32 +1404,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1152,23 +1446,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$70 + block $__inlined_func$~lib/rt/itcms/interrupt$72 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 @@ -1182,9 +1488,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 + br $__inlined_func$~lib/rt/itcms/interrupt$72 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1207,31 +1513,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.const 1073741820 + i32.gt_u if - memory.size - local.tee $1 - i32.const 4 + i32.const 3024 + i32.const 3408 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else local.get $2 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1247,8 +1608,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1256,119 +1617,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3408 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1376,42 +1754,14 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $rt/finalize/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/finalize/Ref $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable + memory.fill + local.get $1 ) (func $~start (local $0 i32) @@ -1425,49 +1775,50 @@ memory.size i32.const 16 i32.shl - i32.const 34280 + i32.const 36248 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - block $__inlined_func$start:rt/finalize$1 + block $__inlined_func$start:rt/finalize block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1512 + i32.const 3480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 @@ -1481,7 +1832,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1512 + i32.const 3480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1492,6 +1843,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1545,20 +1897,248 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end - br $__inlined_func$start:rt/finalize$1 + br $__inlined_func$start:rt/finalize + end + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$130 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$130 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - i32.const 34304 - i32.const 34352 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3480 + i32.lt_s + if + i32.const 36272 + i32.const 36320 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $rt/finalize/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/finalize/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable ) ) diff --git a/tests/compiler/rt/flags.debug.wat b/tests/compiler/rt/flags.debug.wat index 7a20ca9635..1769df0b93 100644 --- a/tests/compiler/rt/flags.debug.wat +++ b/tests/compiler/rt/flags.debug.wat @@ -1,860 +1,3512 @@ (module - (type $0 (func (param i32))) - (type $1 (func (param i32) (result i32))) - (type $2 (func)) - (type $3 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (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)) - (global $~lib/memory/__data_end i32 (i32.const 392)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33160)) - (global $~lib/memory/__heap_base i32 (i32.const 33160)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2648)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35416)) + (global $~lib/memory/__heap_base i32 (i32.const 35416)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 124) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "5\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00B\08\00\00B\00\00\00\82\08\00\00\82\00\00\00\02\t\00\00\02\01\00\00\02\n\00\00\02\02\00\00\02\19\00\00\02\1a\00\00\02\04\00\00 \00\00\00\02A\00\00\02a\00\00H\08\00\00H\00\00\00\88\08\00\00\88\00\00\00\08\t\00\00\08\01\00\00\08\n\00\00\08\02\00\00\08\19\00\00\08\1a\00\00\08\04\00\00\08A\00\00\08a\00\00P\08\08\00\90\08\14\00\10\t\12\00\10\n\11\00\10\84\10\00P\08\82\00P\08\c2\00\10\c1\10\00\10\e1\10\00\10a\c2\00\10\t2\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 396) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 428) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 556) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $12 (i32.const 620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 652) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $14 (i32.const 1052) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2108) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $16 (i32.const 2204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2332) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s\00\00\00\00\00\00\00") + (data $20 (i32.const 2432) "5\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00B\08\00\00B\00\00\00\82\08\00\00\82\00\00\00\02\t\00\00\02\01\00\00\02\n\00\00\02\02\00\00\02\19\00\00\02\1a\00\00\02\04\00\00 \00\00\00\02A\00\00\02a\00\00H\08\00\00H\00\00\00\88\08\00\00\88\00\00\00\08\t\00\00\08\01\00\00\08\n\00\00\08\02\00\00\08\19\00\00\08\1a\00\00\08\04\00\00\08A\00\00\08a\00\00P\08\08\00\90\08\14\00\10\t\12\00\10\n\11\00\10\84\10\00P\08\82\00P\08\c2\00\10\c1\10\00\10\e1\10\00\10a\c2\00\10\t2\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) - (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) local.get $this - i32.load + i32.load offset=16 ) - (func $~lib/rt/__typeinfo (param $id i32) (result i32) - (local $ptr i32) - global.get $~lib/rt/__rtti_base - local.set $ptr - local.get $id - local.get $ptr - i32.load - i32.gt_u - if - i32.const 32 - i32.const 96 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $ptr - i32.const 4 - i32.add - local.get $id - i32.const 4 - i32.mul - i32.add - call $~lib/shared/typeinfo/Typeinfo#get:flags + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u return ) - (func $rt/flags/test<~lib/typedarray/Int8Array> (param $flags i32) - i32.const 4 - call $~lib/rt/__typeinfo - local.get $flags + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 i32.eq - i32.eqz if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return end - ) - (func $rt/flags/test<~lib/typedarray/Uint8Array> (param $flags i32) - i32.const 5 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev i32.eqz if i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 + i32.const 192 + i32.const 132 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next ) - (func $rt/flags/test<~lib/typedarray/Uint8ClampedArray> (param $flags i32) - i32.const 6 - call $~lib/rt/__typeinfo - local.get $flags + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter i32.eq - i32.eqz if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + call $~lib/rt/itcms/Object#linkTo ) - (func $rt/flags/test<~lib/typedarray/Int16Array> (param $flags i32) - i32.const 7 - call $~lib/rt/__typeinfo - local.get $flags + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and i32.eqz if i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 + i32.const 352 + i32.const 268 + i32.const 14 call $~lib/builtins/abort unreachable end - ) - (func $rt/flags/test<~lib/typedarray/Uint16Array> (param $flags i32) - i32.const 8 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u i32.eqz if i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 + i32.const 352 + i32.const 270 + i32.const 14 call $~lib/builtins/abort unreachable end - ) - (func $rt/flags/test<~lib/typedarray/Int32Array> (param $flags i32) - i32.const 9 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end i32.eqz if i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 + i32.const 352 + i32.const 284 + i32.const 14 call $~lib/builtins/abort unreachable end - ) - (func $rt/flags/test<~lib/typedarray/Uint32Array> (param $flags i32) - i32.const 10 - call $~lib/rt/__typeinfo - local.get $flags + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block i32.eqz if i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 + i32.const 352 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - ) - (func $rt/flags/test<~lib/typedarray/Int64Array> (param $flags i32) - i32.const 11 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and i32.eqz if i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 + i32.const 352 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end - ) - (func $rt/flags/test<~lib/typedarray/Uint64Array> (param $flags i32) + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size i32.const 12 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq + i32.ge_u i32.eqz if i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 + i32.const 352 + i32.const 233 + i32.const 14 call $~lib/builtins/abort unreachable end - ) - (func $rt/flags/test<~lib/typedarray/Float32Array> (param $flags i32) - i32.const 13 - call $~lib/rt/__typeinfo - local.get $flags + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right i32.eq i32.eqz if i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 + i32.const 352 + i32.const 234 + i32.const 14 call $~lib/builtins/abort unreachable end - ) - (func $rt/flags/test<~lib/typedarray/Float64Array> (param $flags i32) - i32.const 14 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq - i32.eqz + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u if i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 end - ) - (func $rt/flags/test<~lib/array/Array> (param $flags i32) - i32.const 15 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq i32.eqz if i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 + i32.const 352 + i32.const 251 + i32.const 14 call $~lib/builtins/abort unreachable end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 ) - (func $rt/flags/test<~lib/array/Array> (param $flags i32) - i32.const 16 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u i32.eqz if i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 + i32.const 352 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - ) - (func $rt/flags/test<~lib/array/Array> (param $flags i32) - i32.const 17 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq - i32.eqz + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u if i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return ) - (func $rt/flags/test<~lib/array/Array> (param $flags i32) - i32.const 18 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq - i32.eqz - if + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort + i32.lt_s + else + i32.const 0 + end + if unreachable end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT ) - (func $rt/flags/test<~lib/array/Array> (param $flags i32) - i32.const 19 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end i32.eqz if i32.const 0 - i32.const 144 - i32.const 6 + i32.const 352 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $block + return ) - (func $rt/flags/test<~lib/array/Array> (param $flags i32) - i32.const 20 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock ) - (func $rt/flags/test<~lib/array/Array> (param $flags i32) - i32.const 21 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq - i32.eqz + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u if + local.get $obj i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free end ) - (func $rt/flags/test<~lib/array/Array> (param $flags i32) - i32.const 22 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq - i32.eqz - if + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 352 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return ) - (func $rt/flags/test<~lib/array/Array> (param $flags i32) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl i32.const 23 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end i32.eqz if i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 + i32.const 352 + i32.const 334 + i32.const 14 call $~lib/builtins/abort unreachable end - ) - (func $rt/flags/test<~lib/array/Array> (param $flags i32) - i32.const 24 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap i32.eqz if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head end + local.get $head + return ) - (func $rt/flags/test<~lib/array/Array> (param $flags i32) - i32.const 25 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq - i32.eqz + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s if + local.get $pagesNeeded + memory.grow i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + if + unreachable + end end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop ) - (func $rt/flags/test<~lib/array/Array> (param $flags i32) - i32.const 27 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz i32.eqz if i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 + i32.const 352 + i32.const 361 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end ) - (func $rt/flags/test<~lib/array/Array> (param $flags i32) - i32.const 28 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block i32.eqz if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $rt/flags/test<~lib/set/Set> (param $flags i32) - i32.const 29 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u i32.eqz if i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 + i32.const 352 + i32.const 501 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return ) - (func $rt/flags/test<~lib/set/Set> (param $flags i32) - i32.const 30 - call $~lib/rt/__typeinfo - local.get $flags - i32.eq + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return ) - (func $rt/flags/test<~lib/set/Set> (param $flags i32) - i32.const 31 + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 652 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 652 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 652 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 652 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1072 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1072 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2128 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2128 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 2288 + i32.const 2352 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $rt/flags/test<~lib/typedarray/Int8Array> (param $flags i32) + i32.const 4 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $rt/flags/test<~lib/set/Set> (param $flags i32) - i32.const 32 + (func $rt/flags/test<~lib/typedarray/Uint8Array> (param $flags i32) + i32.const 5 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $rt/flags/test<~lib/set/Set> (param $flags i32) - i32.const 33 + (func $rt/flags/test<~lib/typedarray/Uint8ClampedArray> (param $flags i32) + i32.const 6 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $rt/flags/test<~lib/set/Set> (param $flags i32) - i32.const 34 + (func $rt/flags/test<~lib/typedarray/Int16Array> (param $flags i32) + i32.const 7 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $rt/flags/test<~lib/set/Set> (param $flags i32) - i32.const 35 + (func $rt/flags/test<~lib/typedarray/Uint16Array> (param $flags i32) + i32.const 8 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $rt/flags/test<~lib/set/Set> (param $flags i32) - i32.const 36 + (func $rt/flags/test<~lib/typedarray/Int32Array> (param $flags i32) + i32.const 9 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $rt/flags/test<~lib/set/Set> (param $flags i32) - i32.const 37 + (func $rt/flags/test<~lib/typedarray/Uint32Array> (param $flags i32) + i32.const 10 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $rt/flags/test<~lib/set/Set> (param $flags i32) - i32.const 38 + (func $rt/flags/test<~lib/typedarray/Int64Array> (param $flags i32) + i32.const 11 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $rt/flags/test<~lib/set/Set> (param $flags i32) - i32.const 39 + (func $rt/flags/test<~lib/typedarray/Uint64Array> (param $flags i32) + i32.const 12 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $rt/flags/test<~lib/set/Set> (param $flags i32) - i32.const 40 + (func $rt/flags/test<~lib/typedarray/Float32Array> (param $flags i32) + i32.const 13 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $rt/flags/test<~lib/set/Set> (param $flags i32) - i32.const 41 + (func $rt/flags/test<~lib/typedarray/Float64Array> (param $flags i32) + i32.const 14 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) - i32.const 42 + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 15 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) - i32.const 43 + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 16 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) - i32.const 44 + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 17 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) - i32.const 45 + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 18 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) - i32.const 46 + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 19 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) - i32.const 47 + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 20 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) - i32.const 48 + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 21 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) - i32.const 49 + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 22 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) - i32.const 50 + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 23 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) - i32.const 51 + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 24 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) - i32.const 52 + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 25 call $~lib/rt/__typeinfo local.get $flags i32.eq i32.eqz if i32.const 0 - i32.const 144 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end ) - (func $start:rt/flags - i32.const 1 - i32.const 64 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/typedarray/Int8Array> - i32.const 1 - i32.const 64 - i32.or - call $rt/flags/test<~lib/typedarray/Uint8Array> - i32.const 1 - i32.const 64 - i32.or - call $rt/flags/test<~lib/typedarray/Uint8ClampedArray> - i32.const 1 - i32.const 128 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/typedarray/Int16Array> - i32.const 1 - i32.const 128 - i32.or - call $rt/flags/test<~lib/typedarray/Uint16Array> - i32.const 1 - i32.const 256 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/typedarray/Int32Array> - i32.const 1 - i32.const 256 - i32.or - call $rt/flags/test<~lib/typedarray/Uint32Array> - i32.const 1 - i32.const 512 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/typedarray/Int64Array> - i32.const 1 - i32.const 512 - i32.or - call $rt/flags/test<~lib/typedarray/Uint64Array> - i32.const 1 - i32.const 256 - i32.or - i32.const 2048 - i32.or - i32.const 4096 - i32.or - call $rt/flags/test<~lib/typedarray/Float32Array> - i32.const 1 - i32.const 512 - i32.or - i32.const 2048 - i32.or - i32.const 4096 - i32.or - call $rt/flags/test<~lib/typedarray/Float64Array> - i32.const 2 - i32.const 64 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/array/Array> - i32.const 2 - i32.const 64 - i32.or - call $rt/flags/test<~lib/array/Array> - i32.const 2 - i32.const 128 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/array/Array> - i32.const 2 - i32.const 128 - i32.or - call $rt/flags/test<~lib/array/Array> - i32.const 2 - i32.const 256 + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 27 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 28 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 29 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 30 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 31 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 32 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 33 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 34 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 35 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 36 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 37 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 38 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 39 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 40 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 41 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 42 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 43 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 44 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 45 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 46 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 47 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 48 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 49 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 50 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 51 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 52 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:rt/flags + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 304 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 1 + i32.const 64 + i32.or + i32.const 2048 + i32.or + call $rt/flags/test<~lib/typedarray/Int8Array> + i32.const 1 + i32.const 64 + i32.or + call $rt/flags/test<~lib/typedarray/Uint8Array> + i32.const 1 + i32.const 64 + i32.or + call $rt/flags/test<~lib/typedarray/Uint8ClampedArray> + i32.const 1 + i32.const 128 + i32.or + i32.const 2048 + i32.or + call $rt/flags/test<~lib/typedarray/Int16Array> + i32.const 1 + i32.const 128 + i32.or + call $rt/flags/test<~lib/typedarray/Uint16Array> + i32.const 1 + i32.const 256 + i32.or + i32.const 2048 + i32.or + call $rt/flags/test<~lib/typedarray/Int32Array> + i32.const 1 + i32.const 256 + i32.or + call $rt/flags/test<~lib/typedarray/Uint32Array> + i32.const 1 + i32.const 512 + i32.or + i32.const 2048 + i32.or + call $rt/flags/test<~lib/typedarray/Int64Array> + i32.const 1 + i32.const 512 + i32.or + call $rt/flags/test<~lib/typedarray/Uint64Array> + i32.const 1 + i32.const 256 + i32.or + i32.const 2048 + i32.or + i32.const 4096 + i32.or + call $rt/flags/test<~lib/typedarray/Float32Array> + i32.const 1 + i32.const 512 + i32.or + i32.const 2048 + i32.or + i32.const 4096 + i32.or + call $rt/flags/test<~lib/typedarray/Float64Array> + i32.const 2 + i32.const 64 + i32.or + i32.const 2048 + i32.or + call $rt/flags/test<~lib/array/Array> + i32.const 2 + i32.const 64 + i32.or + call $rt/flags/test<~lib/array/Array> + i32.const 2 + i32.const 128 + i32.or + i32.const 2048 + i32.or + call $rt/flags/test<~lib/array/Array> + i32.const 2 + i32.const 128 + i32.or + call $rt/flags/test<~lib/array/Array> + i32.const 2 + i32.const 256 i32.or i32.const 2048 i32.or @@ -1098,7 +3750,3167 @@ i32.or call $"rt/flags/test<~lib/map/Map>" ) - (func $~start - call $start:rt/flags + (func $~start + call $start:rt/flags + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35440 + i32.const 35488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 416 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 416 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2224 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 448 + i32.const 576 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 640 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2288 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1072 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2128 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/typedarray/Int8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint8ClampedArray~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint16Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Float64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/Set#get:entriesOffset (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/set/SetEntry#get:taggedNext (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:key (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/Set#get:entriesOffset (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/set/SetEntry#get:taggedNext (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:key (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $"~lib/map/Map" + block $"~lib/map/Map" + block $"~lib/map/Map" + block $"~lib/map/Map" + block $"~lib/map/Map" + block $"~lib/map/Map" + block $"~lib/map/Map" + block $"~lib/map/Map" + block $"~lib/map/Map" + block $"~lib/map/Map" + block $"~lib/map/Map" + block $~lib/set/Set + block $~lib/set/Set + block $~lib/set/Set + block $~lib/set/Set + block $~lib/set/Set + block $~lib/set/Set + block $~lib/set/Set + block $~lib/set/Set + block $~lib/set/Set + block $~lib/set/Set + block $~lib/set/Set + block $~lib/set/Set + block $~lib/set/Set + block $~lib/array/Array + block $~lib/array/Array + block $rt/flags/Ref + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/typedarray/Float64Array + block $~lib/typedarray/Float32Array + block $~lib/typedarray/Uint64Array + block $~lib/typedarray/Int64Array + block $~lib/typedarray/Uint32Array + block $~lib/typedarray/Int32Array + block $~lib/typedarray/Uint16Array + block $~lib/typedarray/Int16Array + block $~lib/typedarray/Uint8ClampedArray + block $~lib/typedarray/Uint8Array + block $~lib/typedarray/Int8Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Int8Array $~lib/typedarray/Uint8Array $~lib/typedarray/Uint8ClampedArray $~lib/typedarray/Int16Array $~lib/typedarray/Uint16Array $~lib/typedarray/Int32Array $~lib/typedarray/Uint32Array $~lib/typedarray/Int64Array $~lib/typedarray/Uint64Array $~lib/typedarray/Float32Array $~lib/typedarray/Float64Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $rt/flags/Ref $~lib/array/Array $~lib/array/Array $~lib/set/Set $~lib/set/Set $~lib/set/Set $~lib/set/Set $~lib/set/Set $~lib/set/Set $~lib/set/Set $~lib/set/Set $~lib/set/Set $~lib/set/Set $~lib/set/Set $~lib/set/Set $~lib/set/Set $"~lib/map/Map" $"~lib/map/Map" $"~lib/map/Map" $"~lib/map/Map" $"~lib/map/Map" $"~lib/map/Map" $"~lib/map/Map" $"~lib/map/Map" $"~lib/map/Map" $"~lib/map/Map" $"~lib/map/Map" $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int16Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint16Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + unreachable + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $cur i32) + (local $end i32) + (local $entry i32) + (local $val i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 1 + drop + local.get $entries + local.set $cur + local.get $cur + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/set/Set#get:entriesOffset + block $~lib/set/ENTRY_SIZE|inlined.0 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.0 + end + i32.mul + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + local.set $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $entry + call $~lib/set/SetEntry#get:key + local.set $val + i32.const 0 + drop + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.1 + end + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $cur i32) + (local $end i32) + (local $entry i32) + (local $val i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 1 + drop + local.get $entries + local.set $cur + local.get $cur + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/set/Set#get:entriesOffset + block $~lib/set/ENTRY_SIZE|inlined.0 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.0 + end + i32.mul + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + local.set $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $entry + call $~lib/set/SetEntry#get:key + local.set $val + i32.const 1 + drop + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + end + local.get $cur + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.1 + end + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $cur i32) + (local $end i32) + (local $entry i32) + (local $val i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 1 + drop + local.get $entries + local.set $cur + local.get $cur + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + i32.const 1 + drop + local.get $entry + call $"~lib/map/MapEntry#get:key" + local.set $val + i32.const 0 + drop + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + i32.const 0 + drop + end + local.get $cur + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $cur i32) + (local $end i32) + (local $entry i32) + (local $val i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 1 + drop + local.get $entries + local.set $cur + local.get $cur + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + i32.const 1 + drop + local.get $entry + call $"~lib/map/MapEntry#get:key" + local.set $val + i32.const 1 + drop + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + i32.const 0 + drop + end + local.get $cur + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $cur i32) + (local $end i32) + (local $entry i32) + (local $val i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 1 + drop + local.get $entries + local.set $cur + local.get $cur + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + drop + i32.const 1 + drop + local.get $entry + call $"~lib/map/MapEntry#get:value" + local.set $val + i32.const 0 + drop + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $cur i32) + (local $end i32) + (local $entry i32) + (local $val i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 1 + drop + local.get $entries + local.set $cur + local.get $cur + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + drop + i32.const 1 + drop + local.get $entry + call $"~lib/map/MapEntry#get:value" + local.set $val + i32.const 1 + drop + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + end + local.get $cur + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $cur i32) + (local $end i32) + (local $entry i32) + (local $val i32) + (local $val|7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 1 + drop + local.get $entries + local.set $cur + local.get $cur + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + i32.const 1 + drop + local.get $entry + call $"~lib/map/MapEntry#get:key" + local.set $val + i32.const 1 + drop + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + i32.const 1 + drop + local.get $entry + call $"~lib/map/MapEntry#get:value" + local.set $val|7 + i32.const 1 + drop + local.get $val|7 + if + local.get $val|7 + local.get $cookie + call $~lib/rt/itcms/__visit + end + end + local.get $cur + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/rt/flags.release.wat b/tests/compiler/rt/flags.release.wat index c0b2f9cf66..1d5352b8d5 100644 --- a/tests/compiler/rt/flags.release.wat +++ b/tests/compiler/rt/flags.release.wat @@ -1,26 +1,1741 @@ (module (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32))) (type $2 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36440)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $1 (i32.const 1100) ",") - (data $1.1 (i32.const 1112) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $2 (i32.const 1148) ",") - (data $2.1 (i32.const 1160) "\02\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s") - (data $3 (i32.const 1200) "5\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00B\08\00\00B\00\00\00\82\08\00\00\82\00\00\00\02\t\00\00\02\01\00\00\02\n\00\00\02\02\00\00\02\19\00\00\02\1a\00\00\02\04\00\00 \00\00\00\02A\00\00\02a\00\00H\08\00\00H\00\00\00\88\08\00\00\88\00\00\00\08\t\00\00\08\01\00\00\08\n\00\00\08\02\00\00\08\19\00\00\08\1a\00\00\08\04\00\00\08A\00\00\08a\00\00P\08\08\00\90\08\14\00\10\t\12\00\10\n\11\00\10\84\10\00P\08\82\00P\08\c2\00\10\c1\10\00\10\e1\10\00\10a\c2\00\10\t2") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1356) "<") + (data $8.1 (i32.const 1368) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1420) "\1c") + (data $9.1 (i32.const 1432) "\02\00\00\00\02\00\00\00:") + (data $10 (i32.const 1452) "|") + (data $10.1 (i32.const 1464) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $11 (i32.const 1580) "<") + (data $11.1 (i32.const 1592) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $12 (i32.const 1644) "\1c") + (data $12.1 (i32.const 1656) "\02\00\00\00\02\00\00\000") + (data $13 (i32.const 1676) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $14 (i32.const 2076) "\1c\04") + (data $14.1 (i32.const 2088) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $15 (i32.const 3132) "\\") + (data $15.1 (i32.const 3144) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $16 (i32.const 3228) "<") + (data $16.1 (i32.const 3240) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $17 (i32.const 3292) "<") + (data $17.1 (i32.const 3304) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $18 (i32.const 3356) ",") + (data $18.1 (i32.const 3368) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s") + (data $20 (i32.const 3456) "5\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00B\08\00\00B\00\00\00\82\08\00\00\82\00\00\00\02\t\00\00\02\01\00\00\02\n\00\00\02\02\00\00\02\19\00\00\02\1a\00\00\02\04\00\00 \00\00\00\02A\00\00\02a\00\00H\08\00\00H\00\00\00\88\08\00\00\88\00\00\00\08\t\00\00\08\01\00\00\08\n\00\00\08\02\00\00\08\19\00\00\08\1a\00\00\08\04\00\00\08A\00\00\08a\00\00P\08\08\00\90\08\14\00\10\t\12\00\10\n\11\00\10\84\10\00P\08\82\00P\08\c2\00\10\c1\10\00\10\e1\10\00\10a\c2\00\10\t2") (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 3312 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2096 + call $~lib/rt/itcms/__visit + i32.const 3152 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (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 + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$260 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 36440 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$260 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1376 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1376 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1376 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1376 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1376 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1376 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1376 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1376 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1376 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1376 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1376 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1376 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36448 + i32.const 0 + i32.store + i32.const 38016 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36448 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36448 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36448 + i32.const 38020 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36448 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36440 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36440 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36440 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1376 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1376 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1376 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1376 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1376 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1376 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1376 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3672 + i32.lt_s + if + i32.const 36464 + i32.const 36512 + 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$73 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1664 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$73 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1676 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1676 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1676 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1676 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/__typeinfo (param $0 i32) (result i32) local.get $0 - i32.const 1200 + i32.const 3456 i32.load i32.gt_u if - i32.const 1056 - i32.const 1120 + i32.const 3312 + i32.const 3376 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -29,11 +1744,43 @@ local.get $0 i32.const 2 i32.shl - i32.const 1204 + i32.const 3460 i32.add i32.load ) (func $start:rt/flags + memory.size + i32.const 16 + i32.shl + i32.const 36440 + 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 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/fromSpace block $folding-inner0 i32.const 4 call $~lib/rt/__typeinfo @@ -278,7 +2025,7 @@ return end i32.const 0 - i32.const 1168 + i32.const 3424 i32.const 6 i32.const 3 call $~lib/builtins/abort @@ -287,4 +2034,820 @@ (func $~start call $start:rt/flags ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3672 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3672 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$264 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$264 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36464 + i32.const 36512 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3672 + i32.lt_s + if + i32.const 36464 + i32.const 36512 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1440 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1440 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3248 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array~visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3672 + i32.lt_s + if + i32.const 36464 + i32.const 36512 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner5 + block $folding-inner4 + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $invalid + block $"~lib/map/Map" + block $"~lib/map/Map" + block $"~lib/map/Map" + block $"~lib/map/Map" + block $"~lib/map/Map" + block $~lib/set/Set + block $~lib/set/Set + block $~lib/array/Array + block $~lib/array/Array + block $rt/flags/Ref + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-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-inner2 $folding-inner2 $folding-inner2 $rt/flags/Ref $~lib/array/Array $~lib/array/Array $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $~lib/set/Set $~lib/set/Set $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $"~lib/map/Map" $"~lib/map/Map" $"~lib/map/Map" $"~lib/map/Map" $"~lib/map/Map" $folding-inner3 $invalid + end + return + end + return + end + return + end + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3672 + i32.lt_s + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.tee $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $1 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + i32.load + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3672 + i32.lt_s + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.tee $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $0 + loop $while-continue|01 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $1 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + end + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|01 + end + end + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3672 + i32.lt_s + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.tee $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $0 + loop $while-continue|03 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $1 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + i32.load + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 12 + i32.add + local.set $1 + br $while-continue|03 + end + end + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3672 + i32.lt_s + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.tee $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $0 + loop $while-continue|05 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $1 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + end + local.get $1 + i32.const 12 + i32.add + local.set $1 + br $while-continue|05 + end + end + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3672 + i32.lt_s + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.tee $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $0 + loop $while-continue|07 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $1 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + i32.load offset=4 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 12 + i32.add + local.set $1 + br $while-continue|07 + end + end + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3672 + i32.lt_s + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.tee $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $0 + loop $while-continue|09 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $1 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + i32.load offset=4 + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + end + local.get $1 + i32.const 12 + i32.add + local.set $1 + br $while-continue|09 + end + end + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3672 + i32.lt_s + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.tee $2 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $1 + loop $while-continue|011 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $0 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=4 + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + end + local.get $0 + i32.const 12 + i32.add + local.set $0 + br $while-continue|011 + end + end + br $folding-inner4 + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3672 + i32.lt_s + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3672 + i32.lt_s + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $2 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36464 + i32.const 36512 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) ) diff --git a/tests/compiler/rt/issue-2719.debug.wat b/tests/compiler/rt/issue-2719.debug.wat index 2c202baebd..ba71576698 100644 --- a/tests/compiler/rt/issue-2719.debug.wat +++ b/tests/compiler/rt/issue-2719.debug.wat @@ -1,14 +1,20 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32 i32))) - (type $5 (func (param i32 i32) (result i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,31 +23,468 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 480)) - (global $~lib/memory/__data_end i32 (i32.const 504)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33272)) - (global $~lib/memory/__heap_base i32 (i32.const 33272)) + (global $~lib/rt/__rtti_base i32 (i32.const 2448)) + (global $~lib/memory/__data_end i32 (i32.const 2472)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35240)) + (global $~lib/memory/__heap_base i32 (i32.const 35240)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00r\00t\00/\00i\00s\00s\00u\00e\00-\002\007\001\009\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 480) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00r\00t\00/\00i\00s\00s\00u\00e\00-\002\007\001\009\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2448) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -106,7 +549,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -176,7 +619,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -193,7 +636,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -223,8 +666,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -292,7 +735,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -444,7 +887,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -464,7 +907,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -527,7 +970,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -680,7 +1123,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -697,7 +1140,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -786,7 +1229,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -829,7 +1272,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -847,7 +1290,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -915,7 +1358,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1032,7 +1475,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1078,7 +1521,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1110,7 +1553,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1354,7 +1797,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1574,7 +2017,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1682,8 +2125,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1785,7 +2228,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1856,7 +2299,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2013,7 +2456,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2128,7 +2571,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2148,7 +2591,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2196,8 +2639,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2297,55 +2740,6 @@ local.get $this i32.load ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $rt/issue-2719/issue2719_T - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/issue-2719/issue2719_T $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - unreachable - ) (func $~start call $start:rt/issue-2719 ) @@ -2354,14 +2748,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33296 - i32.const 33344 + i32.const 35264 + i32.const 35312 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $rt/issue-2719/issue2719_T#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2464,7 +3063,7 @@ i32.eqz if i32.const 0 - i32.const 432 + i32.const 2400 i32.const 6 i32.const 3 call $~lib/builtins/abort @@ -2493,13 +3092,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 1 @@ -2524,6 +3123,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2552,4 +3298,59 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $rt/issue-2719/issue2719_T + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/issue-2719/issue2719_T $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/rt/issue-2719.release.wat b/tests/compiler/rt/issue-2719.release.wat index 376cd994e9..8f5c038f72 100644 --- a/tests/compiler/rt/issue-2719.release.wat +++ b/tests/compiler/rt/issue-2719.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) - (type $4 (func (param i32 i32) (result i32))) - (type $5 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32) (result i32))) (type $6 (func (param i32 i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,29 +17,252 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34296)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36264)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) "<") - (data $8.1 (i32.const 1448) "\02\00\00\00 \00\00\00r\00t\00/\00i\00s\00s\00u\00e\00-\002\007\001\009\00.\00t\00s") - (data $9 (i32.const 1504) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "<") + (data $19.1 (i32.const 3416) "\02\00\00\00 \00\00\00r\00t\00/\00i\00s\00s\00u\00e\00-\002\007\001\009\00.\00t\00s") + (data $20 (i32.const 3472) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3496 + i32.lt_s + if + i32.const 36288 + i32.const 36336 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -60,7 +283,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -108,7 +331,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -117,7 +340,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$119 + block $__inlined_func$~lib/rt/itcms/Object#unlink$132 local.get $1 i32.load offset=4 i32.const -4 @@ -129,19 +352,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34296 + i32.const 36264 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$119 + br $__inlined_func$~lib/rt/itcms/Object#unlink$132 end local.get $1 i32.load offset=8 @@ -149,7 +372,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -178,12 +401,12 @@ i32.const 1 else local.get $0 - i32.const 1504 + i32.const 3472 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -192,7 +415,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1508 + i32.const 3476 i32.add i32.load i32.const 32 @@ -244,7 +467,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -258,7 +481,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -304,7 +527,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -387,7 +610,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -401,7 +624,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -462,7 +685,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -495,7 +718,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -510,7 +733,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -561,7 +784,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -633,7 +856,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -658,7 +881,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -685,7 +908,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -757,10 +980,10 @@ if unreachable end - i32.const 34304 + i32.const 36272 i32.const 0 i32.store - i32.const 35872 + i32.const 37840 i32.const 0 i32.store loop $for-loop|0 @@ -771,7 +994,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34304 + i32.const 36272 i32.add i32.const 0 i32.store offset=4 @@ -789,7 +1012,7 @@ i32.add i32.const 2 i32.shl - i32.const 34304 + i32.const 36272 i32.add i32.const 0 i32.store offset=96 @@ -807,14 +1030,14 @@ br $for-loop|0 end end - i32.const 34304 - i32.const 35876 + i32.const 36272 + i32.const 37844 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34304 + i32.const 36272 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -899,7 +1122,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34296 + i32.const 36264 i32.lt_u if local.get $0 @@ -988,14 +1211,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34296 + i32.const 36264 i32.lt_u if local.get $0 @@ -1018,7 +1241,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34296 + i32.const 36264 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1047,7 +1270,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1131,7 +1354,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1183,7 +1406,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1215,8 +1438,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1056 - i32.const 1120 + i32.const 3024 + i32.const 3088 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1226,7 +1449,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1247,7 +1470,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1280,8 +1503,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1056 - i32.const 1392 + i32.const 3024 + i32.const 3360 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1383,7 +1606,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1398,7 +1621,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1417,7 +1640,7 @@ i32.and if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1522,34 +1745,6 @@ memory.fill local.get $1 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $rt/issue-2719/issue2719_T - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/issue-2719/issue2719_T $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) (func $~start (local $0 i32) (local $1 i32) @@ -1559,7 +1754,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1528 + i32.const 3496 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1568,34 +1763,34 @@ memory.size i32.const 16 i32.shl - i32.const 34296 + i32.const 36264 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace call $rt/issue-2719/issue2719_T#constructor local.set $0 @@ -1612,7 +1807,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1528 + i32.const 3496 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1670,7 +1865,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1528 + i32.const 3496 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1683,7 +1878,7 @@ i32.load if i32.const 0 - i32.const 1456 + i32.const 3424 i32.const 6 i32.const 3 call $~lib/builtins/abort @@ -1699,13 +1894,213 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34320 - i32.const 34368 + i32.const 36288 + i32.const 36336 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3496 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3496 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$137 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$137 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36288 + i32.const 36336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3496 + i32.lt_s + if + i32.const 36288 + i32.const 36336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $rt/issue-2719/issue2719_T#constructor (result i32) (local $0 i32) (local $1 i32) @@ -1715,7 +2110,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1528 + i32.const 3496 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1736,7 +2131,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1528 + i32.const 3496 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1771,11 +2166,39 @@ local.get $0 return end - i32.const 34320 - i32.const 34368 + i32.const 36288 + i32.const 36336 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $rt/issue-2719/issue2719_T + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/issue-2719/issue2719_T $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/rt/runtime-incremental-export.debug.wat b/tests/compiler/rt/runtime-incremental-export.debug.wat index 7dfec531fb..8afc94d207 100644 --- a/tests/compiler/rt/runtime-incremental-export.debug.wat +++ b/tests/compiler/rt/runtime-incremental-export.debug.wat @@ -2,13 +2,19 @@ (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,28 +23,36 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 544)) - (global $~lib/memory/__data_end i32 (i32.const 564)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33332)) - (global $~lib/memory/__heap_base i32 (i32.const 33332)) + (global $~lib/rt/__rtti_base i32 (i32.const 2512)) + (global $~lib/memory/__data_end i32 (i32.const 2532)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35300)) + (global $~lib/memory/__heap_base i32 (i32.const 35300)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") - (data $9 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") - (data $10 (i32.const 544) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") + (data $20 (i32.const 2444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") + (data $21 (i32.const 2512) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "__new" (func $~lib/rt/itcms/__new)) @@ -48,6 +62,435 @@ (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -112,7 +555,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -182,7 +625,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -199,7 +642,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -229,8 +672,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -298,7 +741,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -450,7 +893,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -470,7 +913,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -533,7 +976,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -686,7 +1129,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -703,7 +1146,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -792,7 +1235,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -835,7 +1278,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -853,7 +1296,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -921,7 +1364,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1038,7 +1481,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1084,7 +1527,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1116,7 +1559,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1360,7 +1803,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1580,7 +2023,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1688,8 +2131,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1791,7 +2234,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1862,7 +2305,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2019,7 +2462,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2134,7 +2577,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2154,7 +2597,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2202,8 +2645,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2261,8 +2704,8 @@ i32.const 3 i32.eq if - i32.const 432 - i32.const 96 + i32.const 2400 + i32.const 2064 i32.const 338 i32.const 7 call $~lib/builtins/abort @@ -2294,8 +2737,8 @@ i32.const 3 i32.ne if - i32.const 496 - i32.const 96 + i32.const 2464 + i32.const 2064 i32.const 352 i32.const 5 call $~lib/builtins/abort @@ -2362,18 +2805,408 @@ i32.const 0 drop ) + (func $~start + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 2112 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 2144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 2288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35328 + i32.const 35376 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) - i32.const 224 + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2400 local.get $0 call $~lib/rt/itcms/__visit - i32.const 32 + i32.const 2464 local.get $0 call $~lib/rt/itcms/__visit - i32.const 432 + i32.const 784 local.get $0 call $~lib/rt/itcms/__visit - i32.const 496 + i32.const 1840 local.get $0 call $~lib/rt/itcms/__visit ) @@ -2414,23 +3247,4 @@ end unreachable ) - (func $~start - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 144 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 176 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 320 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - ) ) diff --git a/tests/compiler/rt/runtime-incremental-export.release.wat b/tests/compiler/rt/runtime-incremental-export.release.wat index 5d32a49a36..fb78598c5f 100644 --- a/tests/compiler/rt/runtime-incremental-export.release.wat +++ b/tests/compiler/rt/runtime-incremental-export.release.wat @@ -1,13 +1,12 @@ (module (type $0 (func (param i32))) (type $1 (func)) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (type $7 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,23 +17,45 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1568)) + (global $~lib/rt/__rtti_base i32 (i32.const 3536)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36324)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) "<") - (data $8.1 (i32.const 1448) "\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") - (data $9 (i32.const 1500) "<") - (data $9.1 (i32.const 1512) "\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") - (data $10 (i32.const 1568) "\04\00\00\00 \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "<") + (data $19.1 (i32.const 3416) "\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") + (data $20 (i32.const 3468) "<") + (data $20.1 (i32.const 3480) "\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") + (data $21 (i32.const 3536) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "__new" (func $~lib/rt/itcms/__new)) (export "__pin" (func $~lib/rt/itcms/__pin)) (export "__unpin" (func $~lib/rt/itcms/__unpin)) @@ -42,16 +63,218 @@ (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3556 + i32.lt_s + if + i32.const 36352 + i32.const 36400 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 call $~lib/rt/itcms/__visit - i32.const 1456 + i32.const 3424 call $~lib/rt/itcms/__visit - i32.const 1520 + i32.const 3488 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -72,7 +295,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -104,13 +327,13 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34356 + i32.const 36324 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -124,7 +347,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -156,7 +379,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -178,12 +401,12 @@ i32.const 1 else local.get $2 - i32.const 1568 + i32.const 3536 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -192,7 +415,7 @@ local.get $2 i32.const 2 i32.shl - i32.const 1572 + i32.const 3540 i32.add i32.load i32.const 32 @@ -263,7 +486,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -277,7 +500,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -323,7 +546,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -406,7 +629,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -420,7 +643,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -481,7 +704,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -514,7 +737,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -529,7 +752,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -580,7 +803,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -652,7 +875,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -677,7 +900,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -704,7 +927,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -776,10 +999,10 @@ if unreachable end - i32.const 34368 + i32.const 36336 i32.const 0 i32.store - i32.const 35936 + i32.const 37904 i32.const 0 i32.store loop $for-loop|0 @@ -790,7 +1013,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34368 + i32.const 36336 i32.add i32.const 0 i32.store offset=4 @@ -808,7 +1031,7 @@ i32.add i32.const 2 i32.shl - i32.const 34368 + i32.const 36336 i32.add i32.const 0 i32.store offset=96 @@ -826,14 +1049,14 @@ br $for-loop|0 end end - i32.const 34368 - i32.const 35940 + i32.const 36336 + i32.const 37908 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34368 + i32.const 36336 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -914,11 +1137,11 @@ i32.and i32.eq if - i32.const 34356 + global.get $~lib/memory/__stack_pointer local.set $0 loop $while-continue|0 local.get $0 - i32.const 34356 + i32.const 36324 i32.lt_u if local.get $0 @@ -1007,14 +1230,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34356 + i32.const 36324 i32.lt_u if local.get $0 @@ -1037,7 +1260,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34356 + i32.const 36324 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1066,7 +1289,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1150,7 +1373,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1202,7 +1425,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1234,8 +1457,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1056 - i32.const 1120 + i32.const 3024 + i32.const 3088 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1245,7 +1468,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1266,7 +1489,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1299,8 +1522,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1056 - i32.const 1392 + i32.const 3024 + i32.const 3360 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1402,7 +1625,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1417,7 +1640,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1436,7 +1659,7 @@ i32.and if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1557,8 +1780,8 @@ i32.const 3 i32.eq if - i32.const 1456 - i32.const 1120 + i32.const 3424 + i32.const 3088 i32.const 338 i32.const 7 call $~lib/builtins/abort @@ -1610,8 +1833,8 @@ i32.const 3 i32.ne if - i32.const 1520 - i32.const 1120 + i32.const 3488 + i32.const 3088 i32.const 352 i32.const 5 call $~lib/builtins/abort @@ -1686,6 +1909,240 @@ i32.add global.set $~lib/rt/itcms/threshold ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36324 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 3140 + i32.const 3136 + i32.store + i32.const 3144 + i32.const 3136 + i32.store + i32.const 3136 + global.set $~lib/rt/itcms/pinSpace + i32.const 3172 + i32.const 3168 + i32.store + i32.const 3176 + i32.const 3168 + i32.store + i32.const 3168 + global.set $~lib/rt/itcms/toSpace + i32.const 3316 + i32.const 3312 + i32.store + i32.const 3320 + i32.const 3312 + i32.store + i32.const 3312 + global.set $~lib/rt/itcms/fromSpace + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$126 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$126 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36352 + i32.const 36400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3556 + i32.lt_s + if + i32.const 36352 + i32.const 36400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid block $~lib/arraybuffer/ArrayBufferView @@ -1711,38 +2168,4 @@ end unreachable ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34356 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - ) ) diff --git a/tests/compiler/rt/runtime-minimal-export.debug.wat b/tests/compiler/rt/runtime-minimal-export.debug.wat index 95a809eadd..c2f8b2cd7d 100644 --- a/tests/compiler/rt/runtime-minimal-export.debug.wat +++ b/tests/compiler/rt/runtime-minimal-export.debug.wat @@ -1,13 +1,19 @@ (module - (type $0 (func (param i32 i32))) - (type $1 (func (param i32) (result i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) - (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func)) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i32 i32))) + (type $10 (func (param i32 i32 i64) (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 $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/rt/tcms/fromSpace (mut i32) (i32.const 0)) @@ -15,18 +21,29 @@ (global $~lib/rt/tcms/total (mut i32) (i32.const 0)) (global $~lib/rt/tcms/pinSpace (mut i32) (i32.const 0)) (global $~lib/rt/tcms/toSpace (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 432)) - (global $~lib/memory/__heap_base i32 (i32.const 452)) + (global $~lib/rt/__rtti_base i32 (i32.const 2400)) + (global $~lib/memory/__heap_base i32 (i32.const 2420)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") - (data $5 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") - (data $7 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 432) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") + (data $16 (i32.const 2272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") + (data $18 (i32.const 2368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2400) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "__new" (func $~lib/rt/tcms/__new)) @@ -36,6 +53,643 @@ (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + local.get $this + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + return + end + local.get $outSize + i32.const 2 + call $~lib/rt/tcms/__new + local.set $out + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + local.get $left + local.get $right + call $~lib/string/String#concat + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/tcms/__new + local.set $out + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/tcms/__new + local.set $out + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/tcms/__new + local.set $out + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + return + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + i32.const 1 + drop + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.set $fullMessage + local.get $fileName + if + local.get $fullMessage + i32.const 64 + local.get $fileName + call $~lib/string/String.__concat + i32.const 128 + call $~lib/string/String.__concat + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + call $~lib/string/String.__concat + i32.const 128 + call $~lib/string/String.__concat + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + call $~lib/string/String.__concat + call $~lib/string/String.__concat + local.set $fullMessage + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) local.get $this local.get $flMap @@ -106,7 +760,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 2128 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -126,7 +780,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 2128 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -189,7 +843,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 2128 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -342,7 +996,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 2128 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -359,7 +1013,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 2128 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -448,7 +1102,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 2128 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -491,7 +1145,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 2128 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -509,7 +1163,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 2128 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -577,7 +1231,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 2128 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -694,7 +1348,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 2128 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -740,7 +1394,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 2128 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -772,7 +1426,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 2128 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1013,8 +1667,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 160 + i32.const 2000 + i32.const 2128 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1116,7 +1770,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 2128 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1187,7 +1841,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 2128 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1344,7 +1998,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 2128 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1459,7 +2113,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 2128 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1479,7 +2133,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 2128 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1595,8 +2249,8 @@ i32.const 1073741804 i32.gt_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 125 i32.const 30 call $~lib/builtins/abort @@ -1671,7 +2325,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 101 i32.const 18 call $~lib/builtins/abort @@ -1688,7 +2342,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 105 i32.const 16 call $~lib/builtins/abort @@ -1714,8 +2368,8 @@ i32.const 3 i32.eq if - i32.const 256 - i32.const 96 + i32.const 2224 + i32.const 2064 i32.const 181 i32.const 7 call $~lib/builtins/abort @@ -1747,8 +2401,8 @@ i32.const 3 i32.ne if - i32.const 352 - i32.const 96 + i32.const 2320 + i32.const 2064 i32.const 195 i32.const 5 call $~lib/builtins/abort @@ -1790,7 +2444,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 2128 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1859,7 +2513,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 213 i32.const 16 call $~lib/builtins/abort @@ -1898,7 +2552,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 223 i32.const 16 call $~lib/builtins/abort @@ -1934,7 +2588,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 232 i32.const 16 call $~lib/builtins/abort @@ -1988,6 +2642,17 @@ i32.const 0 drop ) + (func $~start + i32.const 2176 + call $~lib/rt/tcms/initLazy + global.set $~lib/rt/tcms/fromSpace + i32.const 2272 + call $~lib/rt/tcms/initLazy + global.set $~lib/rt/tcms/pinSpace + i32.const 2368 + call $~lib/rt/tcms/initLazy + global.set $~lib/rt/tcms/toSpace + ) (func $~lib/rt/tcms/__visit (param $ptr i32) (param $cookie i32) (local $obj i32) local.get $ptr @@ -2017,13 +2682,19 @@ ) (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) - i32.const 32 + i32.const 2000 local.get $0 call $~lib/rt/tcms/__visit - i32.const 256 + i32.const 2224 + local.get $0 + call $~lib/rt/tcms/__visit + i32.const 2320 + local.get $0 + call $~lib/rt/tcms/__visit + i32.const 784 local.get $0 call $~lib/rt/tcms/__visit - i32.const 352 + i32.const 1840 local.get $0 call $~lib/rt/tcms/__visit ) @@ -2064,15 +2735,4 @@ end unreachable ) - (func $~start - i32.const 208 - call $~lib/rt/tcms/initLazy - global.set $~lib/rt/tcms/fromSpace - i32.const 304 - call $~lib/rt/tcms/initLazy - global.set $~lib/rt/tcms/pinSpace - i32.const 400 - call $~lib/rt/tcms/initLazy - global.set $~lib/rt/tcms/toSpace - ) ) diff --git a/tests/compiler/rt/runtime-minimal-export.release.wat b/tests/compiler/rt/runtime-minimal-export.release.wat index bbaf5cc296..e41b5e1a7a 100644 --- a/tests/compiler/rt/runtime-minimal-export.release.wat +++ b/tests/compiler/rt/runtime-minimal-export.release.wat @@ -1,31 +1,51 @@ (module (type $0 (func (param i32))) - (type $1 (func)) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func)) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/tcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tcms/white (mut i32) (i32.const 0)) (global $~lib/rt/tcms/total (mut i32) (i32.const 0)) (global $~lib/rt/tcms/pinSpace (mut i32) (i32.const 0)) (global $~lib/rt/tcms/toSpace (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1456)) + (global $~lib/rt/__rtti_base i32 (i32.const 3424)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00c\00m\00s\00.\00t\00s") - (data $2 (i32.const 1164) "<") - (data $2.1 (i32.const 1176) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $4 (i32.const 1260) "<") - (data $4.1 (i32.const 1272) "\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") - (data $6 (i32.const 1356) "<") - (data $6.1 (i32.const 1368) "\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") - (data $8 (i32.const 1456) "\04\00\00\00 \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00c\00m\00s\00.\00t\00s") + (data $13 (i32.const 3132) "<") + (data $13.1 (i32.const 3144) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $15 (i32.const 3228) "<") + (data $15.1 (i32.const 3240) "\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") + (data $17 (i32.const 3324) "<") + (data $17.1 (i32.const 3336) "\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") + (data $19 (i32.const 3424) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "__new" (func $~lib/rt/tcms/__new)) (export "__pin" (func $~lib/rt/tcms/__pin)) (export "__unpin" (func $~lib/rt/tcms/__unpin)) @@ -33,6 +53,244 @@ (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (start $~start) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1120 + local.set $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + i32.add + local.tee $5 + if + local.get $5 + i32.const 2 + call $~lib/rt/tcms/__new + local.tee $2 + local.get $0 + local.get $3 + memory.copy + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + end + local.get $2 + ) + (func $~lib/util/number/utoa32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 1376 + return + end + local.get $0 + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $0 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/tcms/__new + local.set $2 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $2 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $2 + local.get $0 + i32.const 2 + i32.sub + local.tee $0 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $2 + local.get $0 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $2 + local.get $0 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + local.get $2 + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + local.get $0 + i32.const 1056 + local.get $0 + select + local.set $0 + local.get $1 + if (result i32) + local.get $0 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + i32.const 1152 + call $~lib/string/String.__concat + local.get $2 + call $~lib/util/number/utoa32 + call $~lib/string/String.__concat + i32.const 1152 + call $~lib/string/String.__concat + local.get $3 + call $~lib/util/number/utoa32 + call $~lib/string/String.__concat + call $~lib/string/String.__concat + else + local.get $0 + end + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -46,7 +304,7 @@ i32.eqz if i32.const 0 - i32.const 1184 + i32.const 3152 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -60,7 +318,7 @@ i32.lt_u if i32.const 0 - i32.const 1184 + i32.const 3152 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -106,7 +364,7 @@ i32.eqz if i32.const 0 - i32.const 1184 + i32.const 3152 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -189,7 +447,7 @@ i32.eqz if i32.const 0 - i32.const 1184 + i32.const 3152 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -203,7 +461,7 @@ i32.eqz if i32.const 0 - i32.const 1184 + i32.const 3152 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -264,7 +522,7 @@ i32.eqz if i32.const 0 - i32.const 1184 + i32.const 3152 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -297,7 +555,7 @@ i32.lt_u if i32.const 0 - i32.const 1184 + i32.const 3152 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -312,7 +570,7 @@ i32.ne if i32.const 0 - i32.const 1184 + i32.const 3152 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -363,7 +621,7 @@ i32.eqz if i32.const 0 - i32.const 1184 + i32.const 3152 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -435,7 +693,7 @@ i64.lt_u if i32.const 0 - i32.const 1184 + i32.const 3152 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -460,7 +718,7 @@ i32.gt_u if i32.const 0 - i32.const 1184 + i32.const 3152 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -487,7 +745,7 @@ i32.gt_u if i32.const 0 - i32.const 1184 + i32.const 3152 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -559,10 +817,10 @@ if unreachable end - i32.const 1488 + i32.const 3456 i32.const 0 i32.store - i32.const 3056 + i32.const 5024 i32.const 0 i32.store loop $for-loop|0 @@ -573,7 +831,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1488 + i32.const 3456 i32.add i32.const 0 i32.store offset=4 @@ -591,7 +849,7 @@ i32.add i32.const 2 i32.shl - i32.const 1488 + i32.const 3456 i32.add i32.const 0 i32.store offset=96 @@ -609,14 +867,14 @@ br $for-loop|0 end end - i32.const 1488 - i32.const 3060 + i32.const 3456 + i32.const 5028 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 1488 + i32.const 3456 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) @@ -673,7 +931,7 @@ i32.eqz if i32.const 0 - i32.const 1184 + i32.const 3152 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -725,7 +983,7 @@ i32.eqz if i32.const 0 - i32.const 1184 + i32.const 3152 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -757,8 +1015,8 @@ i32.const 1073741804 i32.gt_u if - i32.const 1056 - i32.const 1120 + i32.const 3024 + i32.const 3088 i32.const 125 i32.const 30 call $~lib/builtins/abort @@ -778,8 +1036,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1056 - i32.const 1184 + i32.const 3024 + i32.const 3152 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -881,7 +1139,7 @@ i32.eqz if i32.const 0 - i32.const 1184 + i32.const 3152 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -896,7 +1154,7 @@ i32.gt_u if i32.const 0 - i32.const 1184 + i32.const 3152 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -915,7 +1173,7 @@ i32.and if i32.const 0 - i32.const 1184 + i32.const 3152 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1028,13 +1286,13 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 1476 + i32.const 3444 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 101 i32.const 18 call $~lib/builtins/abort @@ -1048,7 +1306,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 105 i32.const 16 call $~lib/builtins/abort @@ -1082,8 +1340,8 @@ i32.const 3 i32.eq if - i32.const 1280 - i32.const 1120 + i32.const 3248 + i32.const 3088 i32.const 181 i32.const 7 call $~lib/builtins/abort @@ -1135,8 +1393,8 @@ i32.const 3 i32.ne if - i32.const 1376 - i32.const 1120 + i32.const 3344 + i32.const 3088 i32.const 195 i32.const 5 call $~lib/builtins/abort @@ -1176,11 +1434,15 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 1056 + i32.const 3024 + call $~lib/rt/tcms/__visit + i32.const 3248 call $~lib/rt/tcms/__visit - i32.const 1280 + i32.const 3344 call $~lib/rt/tcms/__visit - i32.const 1376 + i32.const 1808 + call $~lib/rt/tcms/__visit + i32.const 2864 call $~lib/rt/tcms/__visit global.get $~lib/rt/tcms/pinSpace local.tee $1 @@ -1201,7 +1463,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 213 i32.const 16 call $~lib/builtins/abort @@ -1241,7 +1503,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 223 i32.const 16 call $~lib/builtins/abort @@ -1278,7 +1540,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 232 i32.const 16 call $~lib/builtins/abort @@ -1289,7 +1551,7 @@ i32.const -4 i32.and local.get $0 - i32.const 1476 + i32.const 3444 i32.lt_u if local.get $0 @@ -1312,7 +1574,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 1476 + i32.const 3444 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1341,7 +1603,7 @@ end if i32.const 0 - i32.const 1184 + i32.const 3152 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1374,6 +1636,32 @@ local.get $3 global.set $~lib/rt/tcms/white ) + (func $~start + i32.const 3204 + i32.const 3200 + i32.store + i32.const 3208 + i32.const 3200 + i32.store + i32.const 3200 + global.set $~lib/rt/tcms/fromSpace + i32.const 3300 + i32.const 3296 + i32.store + i32.const 3304 + i32.const 3296 + i32.store + i32.const 3296 + global.set $~lib/rt/tcms/pinSpace + i32.const 3396 + i32.const 3392 + i32.store + i32.const 3400 + i32.const 3392 + i32.store + i32.const 3392 + global.set $~lib/rt/tcms/toSpace + ) (func $~lib/rt/tcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -1445,30 +1733,4 @@ end unreachable ) - (func $~start - i32.const 1236 - i32.const 1232 - i32.store - i32.const 1240 - i32.const 1232 - i32.store - i32.const 1232 - global.set $~lib/rt/tcms/fromSpace - i32.const 1332 - i32.const 1328 - i32.store - i32.const 1336 - i32.const 1328 - i32.store - i32.const 1328 - global.set $~lib/rt/tcms/pinSpace - i32.const 1428 - i32.const 1424 - i32.store - i32.const 1432 - i32.const 1424 - i32.store - i32.const 1424 - global.set $~lib/rt/tcms/toSpace - ) ) diff --git a/tests/compiler/rt/runtime-stub-export.debug.wat b/tests/compiler/rt/runtime-stub-export.debug.wat index da03f96897..d60af4a6e5 100644 --- a/tests/compiler/rt/runtime-stub-export.debug.wat +++ b/tests/compiler/rt/runtime-stub-export.debug.wat @@ -1,19 +1,37 @@ (module - (type $0 (func (param i32 i32))) - (type $1 (func (param i32))) - (type $2 (func (param i32) (result i32))) - (type $3 (func)) - (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (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/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 144)) - (global $~lib/memory/__heap_base i32 (i32.const 164)) + (global $~lib/rt/__rtti_base i32 (i32.const 2112)) + (global $~lib/memory/__heap_base i32 (i32.const 2132)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "__new" (func $~lib/rt/stub/__new)) @@ -23,6 +41,643 @@ (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + local.get $this + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + return + end + local.get $outSize + i32.const 2 + call $~lib/rt/stub/__new + local.set $out + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + local.get $left + local.get $right + call $~lib/string/String#concat + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/stub/__new + local.set $out + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/stub/__new + local.set $out + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/stub/__new + local.set $out + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + return + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + i32.const 1 + drop + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.set $fullMessage + local.get $fileName + if + local.get $fullMessage + i32.const 64 + local.get $fileName + call $~lib/string/String.__concat + i32.const 128 + call $~lib/string/String.__concat + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + call $~lib/string/String.__concat + i32.const 128 + call $~lib/string/String.__concat + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + call $~lib/string/String.__concat + call $~lib/string/String.__concat + local.set $fullMessage + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/rt/stub/maybeGrowMemory (param $newOffset i32) (local $pagesBefore i32) (local $maxOffset i32) @@ -98,8 +753,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 33 i32.const 29 call $~lib/builtins/abort @@ -165,8 +820,8 @@ i32.const 1073741804 i32.gt_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 86 i32.const 30 call $~lib/builtins/abort diff --git a/tests/compiler/rt/runtime-stub-export.release.wat b/tests/compiler/rt/runtime-stub-export.release.wat index 49d2915a10..1dd771c334 100644 --- a/tests/compiler/rt/runtime-stub-export.release.wat +++ b/tests/compiler/rt/runtime-stub-export.release.wat @@ -1,18 +1,38 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func (param i32 i32) (result i32))) - (type $3 (func (param i32) (result i32))) + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func)) + (type $3 (func (param i32 i32 i32 i32))) (type $4 (func (param i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1168)) + (global $~lib/rt/__rtti_base i32 (i32.const 3136)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") - (data $2 (i32.const 1168) "\04\00\00\00 \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") + (data $13 (i32.const 3136) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "__new" (func $~lib/rt/stub/__new)) (export "__pin" (func $~lib/rt/stub/__pin)) (export "__unpin" (func $~lib/rt/stub/__unpin)) @@ -20,6 +40,244 @@ (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (start $~start) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1120 + local.set $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + i32.add + local.tee $5 + if + local.get $5 + i32.const 2 + call $~lib/rt/stub/__new + local.tee $2 + local.get $0 + local.get $3 + memory.copy + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + end + local.get $2 + ) + (func $~lib/util/number/utoa32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 1376 + return + end + local.get $0 + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $0 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/stub/__new + local.set $2 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $2 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $2 + local.get $0 + i32.const 2 + i32.sub + local.tee $0 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $2 + local.get $0 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $2 + local.get $0 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + local.get $2 + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + local.get $0 + i32.const 1056 + local.get $0 + select + local.set $0 + local.get $1 + if (result i32) + local.get $0 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + i32.const 1152 + call $~lib/string/String.__concat + local.get $2 + call $~lib/util/number/utoa32 + call $~lib/string/String.__concat + i32.const 1152 + call $~lib/string/String.__concat + local.get $3 + call $~lib/util/number/utoa32 + call $~lib/string/String.__concat + call $~lib/string/String.__concat + else + local.get $0 + end + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -31,8 +289,8 @@ i32.const 1073741804 i32.gt_u if - i32.const 1056 - i32.const 1120 + i32.const 3024 + i32.const 3088 i32.const 86 i32.const 30 call $~lib/builtins/abort @@ -45,8 +303,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1056 - i32.const 1120 + i32.const 3024 + i32.const 3088 i32.const 33 i32.const 29 call $~lib/builtins/abort @@ -137,7 +395,7 @@ (func $~lib/rt/stub/__collect ) (func $~start - i32.const 1196 + i32.const 3164 global.set $~lib/rt/stub/offset ) ) diff --git a/tests/compiler/simd.debug.wat b/tests/compiler/simd.debug.wat index 03792d9a1d..02ff7837a8 100644 --- a/tests/compiler/simd.debug.wat +++ b/tests/compiler/simd.debug.wat @@ -2,31 +2,34 @@ (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) (type $2 (func)) - (type $3 (func (param i32))) - (type $4 (func (param i32 i32 i32))) - (type $5 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func (param i32 i32 i32))) (type $6 (func (param i32 i32 i32) (result v128))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (type $9 (func (result i32))) - (type $10 (func (param i32 i32 i32) (result i32))) - (type $11 (func (result v128))) - (type $12 (func (param v128) (result v128))) - (type $13 (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) - (type $14 (func (param i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) - (type $15 (func (param i32 i32 i32 i32) (result v128))) - (type $16 (func (param i64) (result v128))) - (type $17 (func (param i64 i64) (result v128))) - (type $18 (func (param f32 f32 f32) (result v128))) - (type $19 (func (param f32 f32 f32 f32) (result v128))) - (type $20 (func (param f64) (result v128))) - (type $21 (func (param f64 f64) (result v128))) - (type $22 (func (param i32 i32) (result v128))) - (type $23 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i64 i32))) + (type $8 (func (param i64 i32) (result i32))) + (type $9 (func (param i32 i64 i32 i32))) + (type $10 (func (param i32 i32 i64) (result i32))) + (type $11 (func (result i32))) + (type $12 (func (param i32 i32 i32) (result i32))) + (type $13 (func (result v128))) + (type $14 (func (param v128) (result v128))) + (type $15 (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) + (type $16 (func (param i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) + (type $17 (func (param i32 i32 i32 i32) (result v128))) + (type $18 (func (param i64) (result v128))) + (type $19 (func (param i64 i64) (result v128))) + (type $20 (func (param f32 f32 f32) (result v128))) + (type $21 (func (param f32 f32 f32 f32) (result v128))) + (type $22 (func (param f64) (result v128))) + (type $23 (func (param f64 f64) (result v128))) + (type $24 (func (param i32 i32 i32 i32))) + (type $25 (func (param i32 i32) (result v128))) + (type $26 (func (param i32 i32 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 $~lib/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -46,23 +49,34 @@ (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) - (global $~lib/rt/__rtti_base i32 (i32.const 560)) - (global $~lib/memory/__data_end i32 (i32.const 588)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33356)) - (global $~lib/memory/__heap_base i32 (i32.const 33356)) + (global $~lib/rt/__rtti_base i32 (i32.const 2528)) + (global $~lib/memory/__data_end i32 (i32.const 2556)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35324)) + (global $~lib/memory/__heap_base i32 (i32.const 35324)) (memory $0 1) (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $10 (i32.const 508) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00s\00i\00m\00d\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 560) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\04\00\00\02\t\00\00") + (data $1 (i32.const 60) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 124) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 156) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 188) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $7 (i32.const 380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $9 (i32.const 812) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 1868) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $11 (i32.const 1964) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 2028) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $13 (i32.const 2092) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2160) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2220) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2284) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2336) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2364) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2428) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $21 (i32.const 2476) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00s\00i\00m\00d\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2528) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\04\00\00\02\t\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "reexport" (func $simd/reexport)) @@ -81,6 +95,435 @@ (export "vec" (global $simd/vec)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 412 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 412 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 412 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 412 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 832 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 832 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1888 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1888 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -145,7 +588,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 2112 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -215,7 +658,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 2112 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -232,7 +675,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 2112 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -262,8 +705,8 @@ i32.load i32.gt_u if - i32.const 272 - i32.const 336 + i32.const 2240 + i32.const 2304 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -331,7 +774,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 144 + i32.const 2112 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -483,7 +926,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -503,7 +946,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -566,7 +1009,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -719,7 +1162,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -736,7 +1179,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -825,7 +1268,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -868,7 +1311,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -886,7 +1329,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -954,7 +1397,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1071,7 +1514,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1117,7 +1560,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1149,7 +1592,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1393,7 +1836,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1613,7 +2056,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 2112 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1721,8 +2164,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 80 - i32.const 416 + i32.const 2048 + i32.const 2384 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1824,7 +2267,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1895,7 +2338,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2052,7 +2495,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2167,7 +2610,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2187,7 +2630,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 2384 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2235,8 +2678,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 80 - i32.const 144 + i32.const 2048 + i32.const 2112 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2312,7 +2755,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 2112 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2496,7 +2939,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 71 i32.const 5 call $~lib/builtins/abort @@ -2520,7 +2963,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 81 i32.const 5 call $~lib/builtins/abort @@ -2544,7 +2987,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 91 i32.const 5 call $~lib/builtins/abort @@ -2568,7 +3011,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 101 i32.const 5 call $~lib/builtins/abort @@ -2592,7 +3035,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 111 i32.const 5 call $~lib/builtins/abort @@ -2616,7 +3059,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 121 i32.const 5 call $~lib/builtins/abort @@ -2697,7 +3140,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 177 i32.const 5 call $~lib/builtins/abort @@ -2715,7 +3158,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 179 i32.const 5 call $~lib/builtins/abort @@ -2733,7 +3176,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 183 i32.const 5 call $~lib/builtins/abort @@ -2751,7 +3194,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 185 i32.const 5 call $~lib/builtins/abort @@ -2778,7 +3221,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 192 i32.const 5 call $~lib/builtins/abort @@ -2807,7 +3250,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 200 i32.const 5 call $~lib/builtins/abort @@ -2826,7 +3269,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 202 i32.const 5 call $~lib/builtins/abort @@ -2845,7 +3288,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 204 i32.const 5 call $~lib/builtins/abort @@ -2864,7 +3307,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 206 i32.const 5 call $~lib/builtins/abort @@ -2883,7 +3326,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 208 i32.const 5 call $~lib/builtins/abort @@ -2906,7 +3349,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 215 i32.const 5 call $~lib/builtins/abort @@ -2922,7 +3365,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 217 i32.const 5 call $~lib/builtins/abort @@ -2938,7 +3381,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 219 i32.const 5 call $~lib/builtins/abort @@ -2954,7 +3397,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 221 i32.const 5 call $~lib/builtins/abort @@ -2970,7 +3413,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 223 i32.const 5 call $~lib/builtins/abort @@ -2990,7 +3433,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 228 i32.const 5 call $~lib/builtins/abort @@ -3008,7 +3451,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 232 i32.const 5 call $~lib/builtins/abort @@ -3082,7 +3525,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 302 i32.const 3 call $~lib/builtins/abort @@ -3100,7 +3543,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 304 i32.const 3 call $~lib/builtins/abort @@ -3119,7 +3562,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 306 i32.const 3 call $~lib/builtins/abort @@ -3136,7 +3579,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 307 i32.const 3 call $~lib/builtins/abort @@ -3197,7 +3640,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 348 i32.const 3 call $~lib/builtins/abort @@ -3211,7 +3654,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 353 i32.const 3 call $~lib/builtins/abort @@ -3225,7 +3668,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 354 i32.const 3 call $~lib/builtins/abort @@ -3240,7 +3683,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 355 i32.const 3 call $~lib/builtins/abort @@ -3257,7 +3700,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 356 i32.const 3 call $~lib/builtins/abort @@ -3274,7 +3717,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 361 i32.const 3 call $~lib/builtins/abort @@ -3398,7 +3841,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 399 i32.const 3 call $~lib/builtins/abort @@ -3415,7 +3858,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 400 i32.const 3 call $~lib/builtins/abort @@ -3432,7 +3875,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 401 i32.const 3 call $~lib/builtins/abort @@ -3449,7 +3892,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 402 i32.const 3 call $~lib/builtins/abort @@ -3466,7 +3909,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 403 i32.const 3 call $~lib/builtins/abort @@ -3483,7 +3926,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 404 i32.const 3 call $~lib/builtins/abort @@ -3500,7 +3943,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 405 i32.const 3 call $~lib/builtins/abort @@ -3517,7 +3960,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 406 i32.const 3 call $~lib/builtins/abort @@ -3534,7 +3977,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 407 i32.const 3 call $~lib/builtins/abort @@ -3551,7 +3994,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 408 i32.const 3 call $~lib/builtins/abort @@ -3596,7 +4039,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 414 i32.const 5 call $~lib/builtins/abort @@ -3615,7 +4058,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 420 i32.const 5 call $~lib/builtins/abort @@ -3631,7 +4074,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 425 i32.const 5 call $~lib/builtins/abort @@ -3700,7 +4143,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 480 i32.const 3 call $~lib/builtins/abort @@ -3718,7 +4161,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 482 i32.const 3 call $~lib/builtins/abort @@ -3737,7 +4180,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 484 i32.const 3 call $~lib/builtins/abort @@ -3754,7 +4197,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 485 i32.const 3 call $~lib/builtins/abort @@ -3771,7 +4214,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 486 i32.const 3 call $~lib/builtins/abort @@ -3832,7 +4275,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 527 i32.const 3 call $~lib/builtins/abort @@ -3846,7 +4289,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 532 i32.const 3 call $~lib/builtins/abort @@ -3860,7 +4303,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 533 i32.const 3 call $~lib/builtins/abort @@ -3875,7 +4318,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 534 i32.const 3 call $~lib/builtins/abort @@ -3892,7 +4335,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 535 i32.const 3 call $~lib/builtins/abort @@ -3909,7 +4352,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 540 i32.const 3 call $~lib/builtins/abort @@ -4033,7 +4476,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -4050,7 +4493,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 579 i32.const 3 call $~lib/builtins/abort @@ -4067,7 +4510,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -4084,7 +4527,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 581 i32.const 3 call $~lib/builtins/abort @@ -4101,7 +4544,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 582 i32.const 3 call $~lib/builtins/abort @@ -4118,7 +4561,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 583 i32.const 3 call $~lib/builtins/abort @@ -4135,7 +4578,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -4152,7 +4595,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -4169,7 +4612,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -4186,7 +4629,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -4277,7 +4720,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 594 i32.const 3 call $~lib/builtins/abort @@ -4320,7 +4763,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 609 i32.const 5 call $~lib/builtins/abort @@ -4336,7 +4779,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 614 i32.const 5 call $~lib/builtins/abort @@ -4438,7 +4881,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 682 i32.const 3 call $~lib/builtins/abort @@ -4456,7 +4899,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 684 i32.const 3 call $~lib/builtins/abort @@ -4475,7 +4918,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 686 i32.const 3 call $~lib/builtins/abort @@ -4492,7 +4935,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 687 i32.const 3 call $~lib/builtins/abort @@ -4509,7 +4952,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 688 i32.const 3 call $~lib/builtins/abort @@ -4570,7 +5013,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 729 i32.const 3 call $~lib/builtins/abort @@ -4583,7 +5026,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 734 i32.const 3 call $~lib/builtins/abort @@ -4596,7 +5039,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 735 i32.const 3 call $~lib/builtins/abort @@ -4613,7 +5056,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 736 i32.const 3 call $~lib/builtins/abort @@ -4630,7 +5073,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 741 i32.const 3 call $~lib/builtins/abort @@ -4710,7 +5153,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 755 i32.const 3 call $~lib/builtins/abort @@ -4727,7 +5170,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 756 i32.const 3 call $~lib/builtins/abort @@ -4744,7 +5187,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 757 i32.const 3 call $~lib/builtins/abort @@ -4761,7 +5204,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -4778,7 +5221,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 759 i32.const 3 call $~lib/builtins/abort @@ -4795,7 +5238,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 760 i32.const 3 call $~lib/builtins/abort @@ -4812,7 +5255,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 761 i32.const 3 call $~lib/builtins/abort @@ -4829,7 +5272,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 762 i32.const 3 call $~lib/builtins/abort @@ -4846,7 +5289,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 763 i32.const 3 call $~lib/builtins/abort @@ -4863,7 +5306,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 764 i32.const 3 call $~lib/builtins/abort @@ -4950,7 +5393,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 779 i32.const 3 call $~lib/builtins/abort @@ -4981,7 +5424,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 790 i32.const 5 call $~lib/builtins/abort @@ -4997,7 +5440,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 795 i32.const 5 call $~lib/builtins/abort @@ -5097,7 +5540,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 829 i32.const 3 call $~lib/builtins/abort @@ -5115,7 +5558,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 831 i32.const 3 call $~lib/builtins/abort @@ -5134,7 +5577,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 833 i32.const 3 call $~lib/builtins/abort @@ -5151,7 +5594,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 834 i32.const 3 call $~lib/builtins/abort @@ -5168,7 +5611,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 835 i32.const 3 call $~lib/builtins/abort @@ -5184,7 +5627,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 836 i32.const 3 call $~lib/builtins/abort @@ -5197,7 +5640,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 841 i32.const 3 call $~lib/builtins/abort @@ -5210,7 +5653,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 842 i32.const 3 call $~lib/builtins/abort @@ -5227,7 +5670,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 843 i32.const 3 call $~lib/builtins/abort @@ -5244,7 +5687,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 848 i32.const 3 call $~lib/builtins/abort @@ -5317,7 +5760,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 862 i32.const 5 call $~lib/builtins/abort @@ -5333,7 +5776,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 867 i32.const 5 call $~lib/builtins/abort @@ -5714,7 +6157,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 940 i32.const 3 call $~lib/builtins/abort @@ -5732,7 +6175,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 942 i32.const 3 call $~lib/builtins/abort @@ -5751,7 +6194,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 944 i32.const 3 call $~lib/builtins/abort @@ -5768,7 +6211,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 945 i32.const 3 call $~lib/builtins/abort @@ -5785,7 +6228,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 946 i32.const 3 call $~lib/builtins/abort @@ -5806,7 +6249,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 948 i32.const 3 call $~lib/builtins/abort @@ -5823,7 +6266,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 949 i32.const 3 call $~lib/builtins/abort @@ -5839,7 +6282,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 950 i32.const 3 call $~lib/builtins/abort @@ -5852,7 +6295,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 951 i32.const 3 call $~lib/builtins/abort @@ -5865,7 +6308,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 952 i32.const 3 call $~lib/builtins/abort @@ -5882,7 +6325,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 953 i32.const 3 call $~lib/builtins/abort @@ -5899,7 +6342,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 958 i32.const 3 call $~lib/builtins/abort @@ -5930,7 +6373,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 967 i32.const 3 call $~lib/builtins/abort @@ -5947,7 +6390,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 968 i32.const 3 call $~lib/builtins/abort @@ -5964,7 +6407,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 969 i32.const 3 call $~lib/builtins/abort @@ -5981,7 +6424,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 970 i32.const 3 call $~lib/builtins/abort @@ -5998,7 +6441,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 971 i32.const 3 call $~lib/builtins/abort @@ -6015,7 +6458,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 972 i32.const 3 call $~lib/builtins/abort @@ -6032,7 +6475,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 973 i32.const 3 call $~lib/builtins/abort @@ -6049,7 +6492,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 974 i32.const 3 call $~lib/builtins/abort @@ -6065,7 +6508,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 975 i32.const 3 call $~lib/builtins/abort @@ -6132,7 +6575,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1002 i32.const 5 call $~lib/builtins/abort @@ -6150,7 +6593,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1006 i32.const 5 call $~lib/builtins/abort @@ -6195,7 +6638,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1022 i32.const 3 call $~lib/builtins/abort @@ -6213,7 +6656,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1024 i32.const 3 call $~lib/builtins/abort @@ -6232,7 +6675,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1026 i32.const 3 call $~lib/builtins/abort @@ -6249,7 +6692,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1027 i32.const 3 call $~lib/builtins/abort @@ -6266,7 +6709,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1028 i32.const 3 call $~lib/builtins/abort @@ -6287,7 +6730,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1030 i32.const 3 call $~lib/builtins/abort @@ -6304,7 +6747,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1031 i32.const 3 call $~lib/builtins/abort @@ -6320,7 +6763,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1032 i32.const 3 call $~lib/builtins/abort @@ -6333,7 +6776,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1033 i32.const 3 call $~lib/builtins/abort @@ -6346,7 +6789,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1034 i32.const 3 call $~lib/builtins/abort @@ -6363,7 +6806,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1035 i32.const 3 call $~lib/builtins/abort @@ -6380,7 +6823,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1040 i32.const 3 call $~lib/builtins/abort @@ -6411,7 +6854,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1049 i32.const 3 call $~lib/builtins/abort @@ -6428,7 +6871,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1050 i32.const 3 call $~lib/builtins/abort @@ -6445,7 +6888,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1051 i32.const 3 call $~lib/builtins/abort @@ -6462,7 +6905,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1052 i32.const 3 call $~lib/builtins/abort @@ -6479,7 +6922,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1053 i32.const 3 call $~lib/builtins/abort @@ -6496,7 +6939,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1054 i32.const 3 call $~lib/builtins/abort @@ -6513,7 +6956,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1055 i32.const 3 call $~lib/builtins/abort @@ -6530,7 +6973,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1056 i32.const 3 call $~lib/builtins/abort @@ -6546,7 +6989,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1057 i32.const 3 call $~lib/builtins/abort @@ -6599,7 +7042,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1076 i32.const 5 call $~lib/builtins/abort @@ -6617,7 +7060,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1080 i32.const 5 call $~lib/builtins/abort @@ -6795,103 +7238,226 @@ f64x2.replace_lane 1 return ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 272 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 80 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load + (func $~start + call $start:simd ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35344 + i32.const 35392 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 144 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - unreachable + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~start - call $start:simd + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 33376 - i32.const 33424 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 80 end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 112 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 176 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 176 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1984 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result v128) (local $value v128) @@ -6915,8 +7481,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 272 - i32.const 480 + i32.const 2240 + i32.const 2448 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -6966,13 +7532,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 192 + i32.const 2160 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 224 + i32.const 2192 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 368 + i32.const 2336 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer @@ -6997,7 +7563,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 5 i32.const 3 call $~lib/builtins/abort @@ -7030,34 +7596,18 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7066,21 +7616,132 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 208 + i32.const 336 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 400 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $12 + return ) (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) (local $bufferSize i32) @@ -7135,4 +7796,144 @@ local.get $7 return ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2048 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 832 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1888 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/simd.release.wat b/tests/compiler/simd.release.wat index df1c762f6a..77749d72f0 100644 --- a/tests/compiler/simd.release.wat +++ b/tests/compiler/simd.release.wat @@ -1,24 +1,23 @@ (module (type $0 (func (param i32))) (type $1 (func)) - (type $2 (func (param i32 i32 i32) (result v128))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32) (result i32))) - (type $5 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32 i32) (result v128))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32) (result i32))) (type $6 (func (param i32 i32 i64))) (type $7 (func (result i32))) - (type $8 (func (param i32) (result i32))) - (type $9 (func (param v128) (result v128))) - (type $10 (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) - (type $11 (func (param i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) - (type $12 (func (param i32 i32 i32 i32) (result v128))) - (type $13 (func (param i64) (result v128))) - (type $14 (func (param i64 i64) (result v128))) - (type $15 (func (param f32 f32 f32) (result v128))) - (type $16 (func (param f32 f32 f32 f32) (result v128))) - (type $17 (func (param f64) (result v128))) - (type $18 (func (param f64 f64) (result v128))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $8 (func (param v128) (result v128))) + (type $9 (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) + (type $10 (func (param i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) + (type $11 (func (param i32 i32 i32 i32) (result v128))) + (type $12 (func (param i64) (result v128))) + (type $13 (func (param i64 i64) (result v128))) + (type $14 (func (param f32 f32 f32) (result v128))) + (type $15 (func (param f32 f32 f32 f32) (result v128))) + (type $16 (func (param f64) (result v128))) + (type $17 (func (param f64 f64) (result v128))) + (type $18 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -30,25 +29,46 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $simd/vec (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34380)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36348)) (memory $0 1) (data $0 (i32.const 1036) ",") (data $0.1 (i32.const 1048) "\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") - (data $1 (i32.const 1084) "<") - (data $1.1 (i32.const 1096) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $2 (i32.const 1148) "<") - (data $2.1 (i32.const 1160) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $5 (i32.const 1276) "<") - (data $5.1 (i32.const 1288) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $6 (i32.const 1340) ",") - (data $6.1 (i32.const 1352) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $8 (i32.const 1420) "<") - (data $8.1 (i32.const 1432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $9 (i32.const 1484) ",") - (data $9.1 (i32.const 1496) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $10 (i32.const 1532) ",") - (data $10.1 (i32.const 1544) "\02\00\00\00\0e\00\00\00s\00i\00m\00d\00.\00t\00s") - (data $11 (i32.const 1584) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\04\00\00\02\t") + (data $1 (i32.const 1084) "\1c") + (data $1.1 (i32.const 1096) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1116) "\1c") + (data $2.1 (i32.const 1128) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1148) "\1c") + (data $3.1 (i32.const 1160) "\02") + (data $4 (i32.const 1180) "\1c") + (data $4.1 (i32.const 1192) "\02\00\00\00\02\00\00\00:") + (data $5 (i32.const 1212) "|") + (data $5.1 (i32.const 1224) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $6 (i32.const 1340) "<") + (data $6.1 (i32.const 1352) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $7 (i32.const 1404) "\1c") + (data $7.1 (i32.const 1416) "\02\00\00\00\02\00\00\000") + (data $8 (i32.const 1436) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $9 (i32.const 1836) "\1c\04") + (data $9.1 (i32.const 1848) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $10 (i32.const 2892) "\\") + (data $10.1 (i32.const 2904) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $11 (i32.const 2988) "<") + (data $11.1 (i32.const 3000) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $12 (i32.const 3052) "<") + (data $12.1 (i32.const 3064) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $13 (i32.const 3116) "<") + (data $13.1 (i32.const 3128) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $16 (i32.const 3244) "<") + (data $16.1 (i32.const 3256) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $17 (i32.const 3308) ",") + (data $17.1 (i32.const 3320) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $19 (i32.const 3388) "<") + (data $19.1 (i32.const 3400) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $20 (i32.const 3452) ",") + (data $20.1 (i32.const 3464) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $21 (i32.const 3500) ",") + (data $21.1 (i32.const 3512) "\02\00\00\00\0e\00\00\00s\00i\00m\00d\00.\00t\00s") + (data $22 (i32.const 3552) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\04\00\00\02\t") (export "reexport" (func $simd/reexport)) (export "test_vars_i8x16_partial" (func $simd/test_vars_i8x16_partial)) (export "test_vars_i8x16_full" (func $simd/test_vars_i8x16_full)) @@ -65,12 +85,214 @@ (export "vec" (global $simd/vec)) (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3580 + i32.lt_s + if + i32.const 36368 + i32.const 36416 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1424 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1436 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1436 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1436 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1436 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1296 + i32.const 3264 call $~lib/rt/itcms/__visit - i32.const 1104 + i32.const 3072 + call $~lib/rt/itcms/__visit + i32.const 1856 + call $~lib/rt/itcms/__visit + i32.const 2912 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -91,7 +313,7 @@ i32.ne if i32.const 0 - i32.const 1168 + i32.const 3136 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -124,7 +346,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 3136 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -133,7 +355,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$132 + block $__inlined_func$~lib/rt/itcms/Object#unlink$145 local.get $0 i32.load offset=4 i32.const -4 @@ -145,19 +367,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34380 + i32.const 36348 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1168 + i32.const 3136 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$132 + br $__inlined_func$~lib/rt/itcms/Object#unlink$145 end local.get $0 i32.load offset=8 @@ -165,7 +387,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 3136 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -194,12 +416,12 @@ i32.const 1 else local.get $1 - i32.const 1584 + i32.const 3552 i32.load i32.gt_u if - i32.const 1296 - i32.const 1360 + i32.const 3264 + i32.const 3328 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -208,7 +430,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1588 + i32.const 3556 i32.add i32.load i32.const 32 @@ -279,7 +501,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -293,7 +515,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -339,7 +561,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -422,7 +644,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -436,7 +658,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -497,7 +719,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -530,7 +752,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -545,7 +767,7 @@ i32.ne if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -596,7 +818,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -668,7 +890,7 @@ i64.lt_u if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -693,7 +915,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -720,7 +942,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -792,10 +1014,10 @@ if unreachable end - i32.const 34384 + i32.const 36352 i32.const 0 i32.store - i32.const 35952 + i32.const 37920 i32.const 0 i32.store loop $for-loop|0 @@ -806,7 +1028,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34384 + i32.const 36352 i32.add i32.const 0 i32.store offset=4 @@ -824,7 +1046,7 @@ i32.add i32.const 2 i32.shl - i32.const 34384 + i32.const 36352 i32.add i32.const 0 i32.store offset=96 @@ -842,21 +1064,21 @@ br $for-loop|0 end end - i32.const 34384 - i32.const 35956 + i32.const 36352 + i32.const 37924 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34384 + i32.const 36352 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 - i32.const 34380 + i32.const 36348 i32.lt_u if return @@ -887,7 +1109,7 @@ end if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -984,7 +1206,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34380 + i32.const 36348 i32.lt_u if local.get $0 @@ -1073,14 +1295,14 @@ i32.ne if i32.const 0 - i32.const 1168 + i32.const 3136 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34380 + i32.const 36348 i32.lt_u if local.get $0 @@ -1172,7 +1394,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1224,7 +1446,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1254,8 +1476,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1104 - i32.const 1440 + i32.const 3072 + i32.const 3408 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1357,7 +1579,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1372,7 +1594,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1391,7 +1613,7 @@ i32.and if i32.const 0 - i32.const 1440 + i32.const 3408 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1451,21 +1673,32 @@ end local.get $1 ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3072 + i32.const 3136 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$68 + block $__inlined_func$~lib/rt/itcms/interrupt$70 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 @@ -1479,9 +1712,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$68 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1504,39 +1737,41 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 32 - call $~lib/rt/tlsf/allocateBlock - local.tee $1 local.get $0 - i32.store offset=12 - local.get $1 i32.const 16 + i32.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 $2 + local.tee $1 i32.load offset=8 - local.set $0 - local.get $1 + local.set $3 local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 - local.get $0 + local.get $2 + local.get $3 i32.store offset=8 - local.get $0 - local.get $1 - local.get $0 + local.get $3 + local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1544,13 +1779,14 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 - v128.store align=1 + local.tee $1 + i32.const 0 local.get $0 + memory.fill + local.get $1 ) (func $simd/test_v128 (local $0 i32) @@ -1592,7 +1828,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 71 i32.const 5 call $~lib/builtins/abort @@ -1621,7 +1857,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 81 i32.const 5 call $~lib/builtins/abort @@ -1650,7 +1886,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 91 i32.const 5 call $~lib/builtins/abort @@ -1679,7 +1915,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 101 i32.const 5 call $~lib/builtins/abort @@ -1708,7 +1944,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 111 i32.const 5 call $~lib/builtins/abort @@ -1737,7 +1973,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 121 i32.const 5 call $~lib/builtins/abort @@ -1767,7 +2003,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 192 i32.const 5 call $~lib/builtins/abort @@ -1798,7 +2034,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 200 i32.const 5 call $~lib/builtins/abort @@ -1814,7 +2050,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 202 i32.const 5 call $~lib/builtins/abort @@ -1830,7 +2066,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 204 i32.const 5 call $~lib/builtins/abort @@ -1846,7 +2082,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 206 i32.const 5 call $~lib/builtins/abort @@ -1861,7 +2097,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 208 i32.const 5 call $~lib/builtins/abort @@ -1888,7 +2124,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 215 i32.const 5 call $~lib/builtins/abort @@ -1903,7 +2139,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 217 i32.const 5 call $~lib/builtins/abort @@ -1918,7 +2154,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 219 i32.const 5 call $~lib/builtins/abort @@ -1933,7 +2169,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 221 i32.const 5 call $~lib/builtins/abort @@ -1948,7 +2184,7 @@ i64.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 223 i32.const 5 call $~lib/builtins/abort @@ -2092,71 +2328,6 @@ local.get $1 f64x2.replace_lane 1 ) - (func $~lib/array/Array~visit (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1612 - i32.lt_s - if - i32.const 34400 - i32.const 34448 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - unreachable - ) (func $~start (local $0 i32) (local $1 i32) @@ -2170,7 +2341,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1612 + i32.const 3580 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2179,34 +2350,34 @@ memory.size i32.const 16 i32.shl - i32.const 34380 + i32.const 36348 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 + i32.const 3188 + i32.const 3184 i32.store - i32.const 1224 - i32.const 1216 + i32.const 3192 + i32.const 3184 i32.store - i32.const 1216 + i32.const 3184 global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 + i32.const 3220 + i32.const 3216 i32.store - i32.const 1256 - i32.const 1248 + i32.const 3224 + i32.const 3216 i32.store - i32.const 1248 + i32.const 3216 global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 + i32.const 3364 + i32.const 3360 i32.store - i32.const 1400 - i32.const 1392 + i32.const 3368 + i32.const 3360 i32.store - i32.const 1392 + i32.const 3360 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2214,13 +2385,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1612 + i32.const 3580 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer + i32.const 16 i32.const 1 call $~lib/rt/itcms/__new local.tee $3 @@ -2229,6 +2401,7 @@ v128.store align=1 local.get $3 i32.store + i32.const 16 i32.const 4 call $~lib/rt/itcms/__new local.tee $4 @@ -2240,7 +2413,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 3136 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2307,7 +2480,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1612 + i32.const 3580 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2320,8 +2493,8 @@ i32.load offset=12 i32.eqz if - i32.const 1296 - i32.const 1504 + i32.const 3264 + i32.const 3472 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2342,7 +2515,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 5 i32.const 3 call $~lib/builtins/abort @@ -2393,7 +2566,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 609 i32.const 5 call $~lib/builtins/abort @@ -2407,7 +2580,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 614 i32.const 5 call $~lib/builtins/abort @@ -2445,7 +2618,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 790 i32.const 5 call $~lib/builtins/abort @@ -2459,7 +2632,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 795 i32.const 5 call $~lib/builtins/abort @@ -2491,7 +2664,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 862 i32.const 5 call $~lib/builtins/abort @@ -2505,7 +2678,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 867 i32.const 5 call $~lib/builtins/abort @@ -2519,11 +2692,276 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34400 - i32.const 34448 + i32.const 36368 + i32.const 36416 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3580 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3580 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$152 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1168 + local.set $0 + br $__inlined_func$~lib/string/String#concat$152 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36368 + i32.const 36416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3580 + i32.lt_s + if + i32.const 36368 + i32.const 36416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1104 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1136 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1200 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1200 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3008 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array~visit (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3580 + i32.lt_s + if + i32.const 36368 + i32.const 36416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/static-this.debug.wat b/tests/compiler/static-this.debug.wat index 4b335cf70f..da5088be2f 100644 --- a/tests/compiler/static-this.debug.wat +++ b/tests/compiler/static-this.debug.wat @@ -1,14 +1,58 @@ (module - (type $0 (func)) - (type $1 (func (result i32))) - (type $2 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $static-this/Foo.bar (mut i32) (i32.const 42)) - (global $~lib/memory/__data_end i32 (i32.const 60)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) - (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2452)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35220)) + (global $~lib/memory/__heap_base i32 (i32.const 35220)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s\00") + (data $20 (i32.const 2432) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -17,14 +61,2660 @@ global.get $static-this/Foo.bar return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $start:static-this + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $static-this/Foo.getBar i32.const 42 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -34,4 +2724,421 @@ (func $~start call $start:static-this ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35248 + i32.const 35296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/static-this.release.wat b/tests/compiler/static-this.release.wat index 0f18b92259..6d1c8b8f04 100644 --- a/tests/compiler/static-this.release.wat +++ b/tests/compiler/static-this.release.wat @@ -1,6 +1,78 @@ (module + (type $0 (func)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s") + (data $20 (i32.const 3456) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) + (start $~start) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36244 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + ) ) diff --git a/tests/compiler/std/array-access.debug.wat b/tests/compiler/std/array-access.debug.wat index 951850584d..fc797d8a93 100644 --- a/tests/compiler/std/array-access.debug.wat +++ b/tests/compiler/std/array-access.debug.wat @@ -1,24 +1,61 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func (param i32 i32) (result i32))) - (type $2 (func (param i32 i32 i32 i32))) - (type $3 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) (type $4 (func)) - (type $5 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $12 (func (param i32 i32 i32 i32))) + (type $13 (func (param i32 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 $~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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 284)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33052)) - (global $~lib/memory/__heap_base i32 (i32.const 33052)) + (global $~lib/rt/__rtti_base i32 (i32.const 2560)) + (global $~lib/memory/__data_end i32 (i32.const 2600)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35368)) + (global $~lib/memory/__heap_base i32 (i32.const 35368)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $2 (i32.const 124) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $20 (i32.const 2428) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2560) "\t\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02A\00\00\02A\00\00\02A\00\00\02A\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -28,10 +65,2640 @@ (export "stringArrayArrayPropertyAccess" (func $export:std/array-access/stringArrayArrayPropertyAccess)) (export "stringArrayArrayMethodCall" (func $export:std/array-access/stringArrayArrayMethodCall)) (export "functionArrayElementCall" (func $export:std/array-access/functionArrayElementCall)) + (start $~start) (func $~lib/array/Array<~lib/array/Array>#get:length_ (param $this i32) (result i32) local.get $this i32.load offset=12 ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/array/Array<~lib/array/Array>#get:dataStart (param $this i32) (result i32) local.get $this i32.load offset=4 @@ -52,19 +2719,6 @@ local.get $this i32.load offset=4 ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u - return - ) (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) (local $ptr1 i32) (local $ptr2 i32) @@ -185,19 +2839,243 @@ local.get $this i32.load offset=4 ) + (func $~start + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) (func $~stack_check global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33072 - i32.const 33120 + i32.const 35392 + i32.const 35440 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/array/Array<~lib/array/Array>#__get (param $this i32) (param $index i32) (result i32) (local $value i32) (local $3 i32) @@ -219,8 +3097,8 @@ call $~lib/array/Array<~lib/array/Array>#get:length_ i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 320 + i32.const 2400 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -249,8 +3127,8 @@ local.get $value i32.eqz if - i32.const 144 - i32.const 96 + i32.const 2448 + i32.const 2400 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -286,8 +3164,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 320 + i32.const 2400 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -371,8 +3249,8 @@ call $~lib/array/Array<~lib/string/String>#get:length_ i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 320 + i32.const 2400 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -401,8 +3279,8 @@ local.get $value i32.eqz if - i32.const 144 - i32.const 96 + i32.const 2448 + i32.const 2400 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -561,7 +3439,7 @@ local.get $1 i32.store local.get $1 - i32.const 272 + i32.const 96 i32.const 0 call $~lib/string/String#startsWith local.set $1 @@ -593,8 +3471,8 @@ call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:length_ i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 320 + i32.const 2400 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -623,8 +3501,8 @@ local.get $value i32.eqz if - i32.const 144 - i32.const 96 + i32.const 2448 + i32.const 2400 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -714,7 +3592,7 @@ local.get $1 i32.store local.get $1 - i32.const 272 + i32.const 96 i32.const 0 call $~lib/string/String#startsWith local.set $1 @@ -746,8 +3624,8 @@ call $~lib/array/Array<%28i32%29=>i32>#get:length_ i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 320 + i32.const 2400 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -776,8 +3654,8 @@ local.get $value i32.eqz if - i32.const 144 - i32.const 96 + i32.const 2448 + i32.const 2400 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -820,7 +3698,154 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $1 + return + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 return ) (func $export:std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) @@ -937,4 +3962,455 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2448 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array<~lib/array/Array>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__visit + ) + (func $~lib/array/Array<%28i32%29=>i32>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<%28i32%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array<%28i32%29=>i32> + block $~lib/array/Array<~lib/array/Array<~lib/string/String>> + block $~lib/array/Array<~lib/string/String> + block $~lib/array/Array<~lib/array/Array> + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array<~lib/array/Array> $~lib/array/Array<~lib/string/String> $~lib/array/Array<~lib/array/Array<~lib/string/String>> $~lib/array/Array<%28i32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<%28i32%29=>i32>~visit + return + end + unreachable + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28i32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28i32%29=>i32>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28i32%29=>i32>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28i32%29=>i32>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/std/array-access.release.wat b/tests/compiler/std/array-access.release.wat index d9ec8e7386..6f18b32459 100644 --- a/tests/compiler/std/array-access.release.wat +++ b/tests/compiler/std/array-access.release.wat @@ -1,18 +1,60 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func (param i32 i32 i32 i32))) + (type $1 (func)) (type $2 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34076)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36392)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $1 (i32.const 1100) ",") - (data $1.1 (i32.const 1112) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $2 (i32.const 1148) "|") - (data $2.1 (i32.const 1160) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data $3 (i32.const 1276) "\1c") - (data $3.1 (i32.const 1288) "\02") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $20 (i32.const 3452) "|") + (data $20.1 (i32.const 3464) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $21 (i32.const 3584) "\t\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02A\00\00\02A\00\00\02A\00\00\02A") (table $0 1 1 funcref) (export "memory" (memory $0)) (export "i32ArrayArrayElementAccess" (func $export:std/array-access/i32ArrayArrayElementAccess)) @@ -21,17 +63,1942 @@ (export "stringArrayArrayPropertyAccess" (func $export:std/array-access/stringArrayArrayPropertyAccess)) (export "stringArrayArrayMethodCall" (func $export:std/array-access/stringArrayArrayMethodCall)) (export "functionArrayElementCall" (func $export:std/array-access/functionArrayElementCall)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 3472 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$157 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36392 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$157 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3584 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3588 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36400 + i32.const 0 + i32.store + i32.const 37968 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36400 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36400 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36400 + i32.const 37972 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36400 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36392 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36392 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36392 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3624 + i32.lt_s + if + i32.const 36416 + i32.const 36464 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36392 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3624 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3624 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$162 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$162 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36416 + i32.const 36464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3624 + i32.lt_s + if + i32.const 36416 + i32.const 36464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/array/Array<~lib/array/Array>#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1308 + i32.const 3624 i32.lt_s if - i32.const 34096 - i32.const 34144 + i32.const 36416 + i32.const 36464 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -48,8 +2015,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1056 - i32.const 1120 + i32.const 1344 + i32.const 3424 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -71,8 +2038,8 @@ local.get $0 i32.eqz if - i32.const 1168 - i32.const 1120 + i32.const 3472 + i32.const 3424 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -95,11 +2062,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1308 + i32.const 3624 i32.lt_s if - i32.const 34096 - i32.const 34144 + i32.const 36416 + i32.const 36464 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -118,9 +2085,9 @@ i32.const 1 i32.shr_u global.get $~lib/memory/__stack_pointer - i32.const 1296 + i32.const 1120 i32.store - i32.const 1292 + i32.const 1116 i32.load i32.const 1 i32.shr_u @@ -137,10 +2104,10 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - i32.const 1296 + i32.const 1120 local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 1296 + i32.const 1120 i32.store offset=4 i32.const 1 local.get $0 @@ -179,7 +2146,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$10 + block $__inlined_func$~lib/util/string/compareImpl$87 loop $while-continue|1 local.get $0 local.tee $2 @@ -199,7 +2166,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$10 + br_if $__inlined_func$~lib/util/string/compareImpl$87 local.get $1 i32.const 2 i32.add @@ -228,7 +2195,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1308 + i32.const 3624 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -239,7 +2206,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1308 + i32.const 3624 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -260,7 +2227,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1308 + i32.const 3624 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -274,8 +2241,8 @@ i32.const 1 i32.le_u if - i32.const 1056 - i32.const 1120 + i32.const 1344 + i32.const 3424 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -301,8 +2268,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34096 - i32.const 34144 + i32.const 36416 + i32.const 36464 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -315,7 +2282,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1308 + i32.const 3624 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -326,7 +2293,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1308 + i32.const 3624 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -358,8 +2325,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34096 - i32.const 34144 + i32.const 36416 + i32.const 36464 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -372,7 +2339,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1308 + i32.const 3624 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -383,7 +2350,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1308 + i32.const 3624 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -411,8 +2378,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34096 - i32.const 34144 + i32.const 36416 + i32.const 36464 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -425,7 +2392,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1308 + i32.const 3624 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -436,7 +2403,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1308 + i32.const 3624 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -478,8 +2445,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34096 - i32.const 34144 + i32.const 36416 + i32.const 36464 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -492,7 +2459,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1308 + i32.const 3624 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -503,7 +2470,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1308 + i32.const 3624 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -541,8 +2508,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34096 - i32.const 34144 + i32.const 36416 + i32.const 36464 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -555,7 +2522,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1308 + i32.const 3624 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -566,7 +2533,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1308 + i32.const 3624 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -583,8 +2550,127 @@ call_indirect (type $0) unreachable end - i32.const 34096 - i32.const 34144 + i32.const 36416 + i32.const 36464 + 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) + (local $3 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3624 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + 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 3624 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36416 + i32.const 36464 i32.const 1 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/std/array-literal.debug.wat b/tests/compiler/std/array-literal.debug.wat index b6f795367b..ecd7b3b711 100644 --- a/tests/compiler/std/array-literal.debug.wat +++ b/tests/compiler/std/array-literal.debug.wat @@ -1,23 +1,22 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32 i32))) - (type $4 (func)) - (type $5 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func)) (type $6 (func (param i32 i32 i32 i32))) (type $7 (func (param i32 i32 i64) (result i32))) (type $8 (func (result i32))) - (type $9 (func (param i32 i32 i32) (result i32))) - (type $10 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param i32 i32 i32) (result i32))) + (type $13 (func (param i32 i32 i32 i32) (result 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)) (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,34 +28,49 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $std/array-literal/staticArrayI32 i32 (i32.const 2624)) + (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 2704)) + (global $std/array-literal/i (mut i32) (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $std/array-literal/dynamicArrayI8 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 816)) - (global $~lib/memory/__data_end i32 (i32.const 860)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33628)) - (global $~lib/memory/__heap_base i32 (i32.const 33628)) + (global $~lib/rt/__rtti_base i32 (i32.const 2784)) + (global $~lib/memory/__data_end i32 (i32.const 2828)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35596)) + (global $~lib/memory/__heap_base i32 (i32.const 35596)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\00\01\02\00\00\00\00\00\00\00\00\00") (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00 \00\00\00 \00\00\00\03\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 92) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00\00\00\00\00") - (data $3 (i32.const 156) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 220) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $5 (i32.const 268) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") - (data $6 (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\10\00\00\00 \01\00\00 \01\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 380) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\10\00\00\00p\01\00\00p\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $10 (i32.const 492) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 560) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 592) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 620) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 672) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 764) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $17 (i32.const 816) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00B\08\00\00\02\t\00\00 \00\00\00\02A\00\00 \00\00\00\02A\00\00") + (data $2 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $3 (i32.const 124) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $4 (i32.const 156) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 188) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $6 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 496) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 524) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 620) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 748) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $16 (i32.const 812) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 844) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $18 (i32.const 1244) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2300) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $20 (i32.const 2396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2460) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00\00\00\00\00") + (data $22 (i32.const 2524) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $23 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") + (data $24 (i32.const 2604) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\10\00\00\00 \n\00\00 \n\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 2684) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\10\00\00\00p\n\00\00p\n\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2732) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $28 (i32.const 2784) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00B\08\00\00\02\t\00\00 \00\00\00\02A\00\00 \00\00\00\02A\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -65,17 +79,18 @@ local.get $this i32.load offset=12 ) - (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) local.get $this - i32.load offset=12 + i32.load offset=16 ) - (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + (func $~lib/string/String#get:length (param $this i32) (result i32) local.get $this - i32.load offset=4 + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this @@ -141,7 +156,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 272 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -211,7 +226,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 272 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -228,7 +243,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 272 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -258,8 +273,8 @@ i32.load i32.gt_u if - i32.const 176 - i32.const 640 + i32.const 400 + i32.const 464 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -327,7 +342,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 512 + i32.const 272 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -479,7 +494,7 @@ i32.eqz if i32.const 0 - i32.const 720 + i32.const 544 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -499,7 +514,7 @@ i32.eqz if i32.const 0 - i32.const 720 + i32.const 544 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -562,7 +577,7 @@ i32.eqz if i32.const 0 - i32.const 720 + i32.const 544 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -715,7 +730,7 @@ i32.eqz if i32.const 0 - i32.const 720 + i32.const 544 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -732,7 +747,7 @@ i32.eqz if i32.const 0 - i32.const 720 + i32.const 544 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -821,7 +836,7 @@ i32.eqz if i32.const 0 - i32.const 720 + i32.const 544 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -864,7 +879,7 @@ i32.eqz if i32.const 0 - i32.const 720 + i32.const 544 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -882,7 +897,7 @@ i32.eqz if i32.const 0 - i32.const 720 + i32.const 544 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -950,7 +965,7 @@ i32.eqz if i32.const 0 - i32.const 720 + i32.const 544 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1067,7 +1082,7 @@ i32.eqz if i32.const 0 - i32.const 720 + i32.const 544 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1113,7 +1128,7 @@ i32.eqz if i32.const 0 - i32.const 720 + i32.const 544 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1145,7 +1160,7 @@ i32.eqz if i32.const 0 - i32.const 720 + i32.const 544 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1389,7 +1404,7 @@ i32.eqz if i32.const 0 - i32.const 720 + i32.const 544 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1609,7 +1624,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 272 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1717,8 +1732,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 448 - i32.const 720 + i32.const 208 + i32.const 544 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1820,7 +1835,7 @@ i32.eqz if i32.const 0 - i32.const 720 + i32.const 544 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1891,7 +1906,7 @@ i32.eqz if i32.const 0 - i32.const 720 + i32.const 544 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2048,7 +2063,7 @@ i32.eqz if i32.const 0 - i32.const 720 + i32.const 544 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2163,7 +2178,7 @@ i32.eqz if i32.const 0 - i32.const 720 + i32.const 544 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2183,7 +2198,7 @@ i32.eqz if i32.const 0 - i32.const 720 + i32.const 544 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2231,8 +2246,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 448 - i32.const 512 + i32.const 208 + i32.const 272 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2277,6 +2292,434 @@ local.get $ptr return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 844 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 844 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 844 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 844 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1264 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1264 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2320 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2320 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) (local $buffer i32) local.get $size @@ -2308,7 +2751,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 272 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2503,196 +2946,20 @@ i32.const 0 drop ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $std/array-literal/staticArrayI8 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/array-literal/staticArrayI32 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/array-literal/emptyArrayI32 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/array-literal/dynamicArrayI8 - local.tee $1 + (func $~start + call $start:std/array-literal + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/array-literal/dynamicArrayI32 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/array-literal/dynamicArrayRef - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/array-literal/dynamicArrayRefWithCtor - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 176 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 784 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 448 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 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 - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $std/array-literal/Ref $~lib/array/Array $std/array-literal/RefWithCtor $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - unreachable - ) - (func $~start - call $start:std/array-literal - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 33648 - i32.const 33696 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 35616 + i32.const 35664 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end ) (func $~lib/array/Array#get:length (param $this i32) (result i32) @@ -2720,106 +2987,311 @@ local.get $1 return ) - (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) - (local $value i32) - (local $3 i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $index + i64.const 0 + i64.store local.get $this - local.set $3 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $6 i32.store - local.get $3 - call $~lib/array/Array#get:length_ - i32.ge_u - if - i32.const 176 - i32.const 240 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $this - local.set $3 + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $6 i32.store - local.get $3 - call $~lib/array/Array#get:dataStart - local.get $index - i32.const 0 + local.get $6 + call $~lib/string/String#get:length + i32.const 1 i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize i32.add - i32.load8_s - local.set $value + local.set $outSize + local.get $outSize i32.const 0 - drop - local.get $value - local.set $3 + i32.eq + if + i32.const 176 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $6 return ) - (func $~lib/array/Array#get:length (param $this i32) (result i32) - (local $1 i32) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 + i64.const 0 + i64.store + local.get $left + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store - local.get $1 - call $~lib/array/Array#get:length_ - local.set $1 + local.get $2 + local.get $right + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 return ) - (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) - (local $value i32) - (local $3 i32) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 40 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - local.get $index - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 112 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 144 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 608 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 608 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2416 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 400 + i32.const 2544 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.store local.get $3 call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 176 - i32.const 240 + i32.const 400 + i32.const 2544 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2889,8 +3361,8 @@ i32.shr_u i32.gt_u if - i32.const 784 - i32.const 240 + i32.const 2752 + i32.const 2544 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -2992,8 +3464,8 @@ i32.const 0 i32.lt_s if - i32.const 176 - i32.const 240 + i32.const 400 + i32.const 2544 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -3061,8 +3533,8 @@ i32.const 0 i32.lt_s if - i32.const 176 - i32.const 240 + i32.const 400 + i32.const 2544 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -3168,8 +3640,8 @@ i32.const 0 i32.lt_s if - i32.const 176 - i32.const 240 + i32.const 400 + i32.const 2544 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -3266,8 +3738,8 @@ i32.const 0 i32.lt_s if - i32.const 176 - i32.const 240 + i32.const 400 + i32.const 2544 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -3359,6 +3831,23 @@ i32.const 0 i32.const 24 memory.fill + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 496 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $std/array-literal/staticArrayI8 local.set $8 global.get $~lib/memory/__stack_pointer @@ -3371,7 +3860,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 2 i32.const 1 call $~lib/builtins/abort @@ -3390,7 +3879,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 3 i32.const 1 call $~lib/builtins/abort @@ -3409,7 +3898,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 4 i32.const 1 call $~lib/builtins/abort @@ -3428,7 +3917,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -3446,7 +3935,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -3465,7 +3954,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -3484,7 +3973,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -3503,7 +3992,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -3521,29 +4010,12 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 560 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 592 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 672 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 0 @@ -3586,7 +4058,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -3605,7 +4077,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -3624,7 +4096,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -3643,7 +4115,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -3693,7 +4165,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -3712,7 +4184,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -3731,7 +4203,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -3750,7 +4222,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -3793,7 +4265,7 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -3836,49 +4308,487 @@ i32.eqz if i32.const 0 - i32.const 112 + i32.const 2480 i32.const 38 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - global.set $std/array-literal/emptyArrayI32 - i32.const 0 - global.set $std/array-literal/dynamicArrayI8 - i32.const 0 - global.set $std/array-literal/dynamicArrayI32 - i32.const 0 - global.set $std/array-literal/dynamicArrayRef - i32.const 0 - global.set $std/array-literal/dynamicArrayRefWithCtor - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 2 - i32.const 7 - i32.const 0 - call $~lib/rt/__newArray - local.tee $7 - i32.store offset=20 - local.get $7 - i32.const 0 - i32.const 0 - call $std/array-literal/Ref#constructor - call $~lib/array/Array#__set - local.get $7 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - call $std/array-literal/doesntLeak - global.get $~lib/memory/__heap_base - global.set $~lib/memory/__stack_pointer - call $~lib/rt/itcms/__collect - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 0 + global.set $std/array-literal/emptyArrayI32 + i32.const 0 + global.set $std/array-literal/dynamicArrayI8 + i32.const 0 + global.set $std/array-literal/dynamicArrayI32 + i32.const 0 + global.set $std/array-literal/dynamicArrayRef + i32.const 0 + global.set $std/array-literal/dynamicArrayRefWithCtor + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 7 + i32.const 0 + call $~lib/rt/__newArray + local.tee $7 + i32.store offset=20 + local.get $7 + i32.const 0 + i32.const 0 + call $std/array-literal/Ref#constructor + call $~lib/array/Array#__set + local.get $7 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $std/array-literal/doesntLeak + global.get $~lib/memory/__heap_base + global.set $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__collect + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 640 + i32.const 768 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 832 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/array-literal/RefWithCtor#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/array-literal/staticArrayI8 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/staticArrayI32 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/emptyArrayI32 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayI8 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayI32 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayRef + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayRefWithCtor + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 400 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2752 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 208 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1264 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2320 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 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 + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $std/array-literal/Ref $~lib/array/Array $std/array-literal/RefWithCtor $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable ) (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) (local $2 i32) @@ -4072,113 +4982,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) - (local $bufferSize i32) - (local $buffer i32) - (local $array i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $length - local.get $alignLog2 - i32.shl - local.set $bufferSize - global.get $~lib/memory/__stack_pointer - local.get $bufferSize - i32.const 1 - local.get $data - call $~lib/rt/__newBuffer - local.tee $buffer - i32.store - i32.const 16 - local.get $id - call $~lib/rt/itcms/__new - local.set $array - local.get $array - local.get $buffer - i32.store - local.get $array - local.get $buffer - i32.const 0 - call $~lib/rt/itcms/__link - local.get $array - local.get $buffer - i32.store offset=4 - local.get $array - local.get $bufferSize - i32.store offset=8 - local.get $array - local.get $length - i32.store offset=12 - local.get $array - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - ) - (func $~lib/object/Object#constructor (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $std/array-literal/RefWithCtor#constructor (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) ) diff --git a/tests/compiler/std/array-literal.release.wat b/tests/compiler/std/array-literal.release.wat index 0fa3c9f108..72d39d57d7 100644 --- a/tests/compiler/std/array-literal.release.wat +++ b/tests/compiler/std/array-literal.release.wat @@ -1,17 +1,14 @@ (module (type $0 (func (param i32))) - (type $1 (func (param i32 i32 i32))) - (type $2 (func)) - (type $3 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32 i32))) + (type $3 (func)) (type $4 (func (result i32))) (type $5 (func (param i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32) (result i32))) (type $7 (func (param i32 i32 i64))) - (type $8 (func (param i32) (result i32))) + (type $8 (func (param i32 i32 i32 i32))) (type $9 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 1424)) - (global $std/array-literal/i (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -22,41 +19,64 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 3728)) + (global $std/array-literal/i (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayI8 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34652)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36620)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\01\00\00\00\03\00\00\00\00\01\02") (data $1 (i32.const 1068) ",") (data $1.1 (i32.const 1080) "\04\00\00\00\10\00\00\00 \04\00\00 \04\00\00\03\00\00\00\03") - (data $2 (i32.const 1116) "<") - (data $2.1 (i32.const 1128) "\02\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") - (data $3 (i32.const 1180) "<") - (data $3.1 (i32.const 1192) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $4 (i32.const 1244) ",") - (data $4.1 (i32.const 1256) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $5 (i32.const 1292) "\1c") - (data $5.1 (i32.const 1304) "\01\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02") - (data $6 (i32.const 1324) ",") - (data $6.1 (i32.const 1336) "\05\00\00\00\10\00\00\00 \05\00\00 \05\00\00\0c\00\00\00\03") - (data $7 (i32.const 1372) "\1c") - (data $7.1 (i32.const 1384) "\01") - (data $8 (i32.const 1404) ",") - (data $8.1 (i32.const 1416) "\05\00\00\00\10\00\00\00p\05\00\00p\05") - (data $9 (i32.const 1452) "<") - (data $9.1 (i32.const 1464) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $10 (i32.const 1516) "<") - (data $10.1 (i32.const 1528) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $13 (i32.const 1644) ",") - (data $13.1 (i32.const 1656) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $15 (i32.const 1724) "<") - (data $15.1 (i32.const 1736) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $16 (i32.const 1788) ",") - (data $16.1 (i32.const 1800) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $17 (i32.const 1840) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00B\08\00\00\02\t\00\00 \00\00\00\02A\00\00 \00\00\00\02A") + (data $2 (i32.const 1116) "\1c") + (data $2.1 (i32.const 1128) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $3 (i32.const 1148) "\1c") + (data $3.1 (i32.const 1160) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $4 (i32.const 1180) "\1c") + (data $4.1 (i32.const 1192) "\02") + (data $5 (i32.const 1212) "<") + (data $5.1 (i32.const 1224) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $6 (i32.const 1276) "<") + (data $6.1 (i32.const 1288) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $9 (i32.const 1404) "<") + (data $9.1 (i32.const 1416) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $10 (i32.const 1468) ",") + (data $10.1 (i32.const 1480) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $12 (i32.const 1548) "<") + (data $12.1 (i32.const 1560) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $13 (i32.const 1612) "\1c") + (data $13.1 (i32.const 1624) "\02\00\00\00\02\00\00\00:") + (data $14 (i32.const 1644) "|") + (data $14.1 (i32.const 1656) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $15 (i32.const 1772) "<") + (data $15.1 (i32.const 1784) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $16 (i32.const 1836) "\1c") + (data $16.1 (i32.const 1848) "\02\00\00\00\02\00\00\000") + (data $17 (i32.const 1868) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $18 (i32.const 2268) "\1c\04") + (data $18.1 (i32.const 2280) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $19 (i32.const 3324) "\\") + (data $19.1 (i32.const 3336) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $20 (i32.const 3420) "<") + (data $20.1 (i32.const 3432) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $21 (i32.const 3484) "<") + (data $21.1 (i32.const 3496) "\02\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") + (data $22 (i32.const 3548) ",") + (data $22.1 (i32.const 3560) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $23 (i32.const 3596) "\1c") + (data $23.1 (i32.const 3608) "\01\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02") + (data $24 (i32.const 3628) ",") + (data $24.1 (i32.const 3640) "\05\00\00\00\10\00\00\00 \0e\00\00 \0e\00\00\0c\00\00\00\03") + (data $25 (i32.const 3676) "\1c") + (data $25.1 (i32.const 3688) "\01") + (data $26 (i32.const 3708) ",") + (data $26.1 (i32.const 3720) "\05\00\00\00\10\00\00\00p\0e\00\00p\0e") + (data $27 (i32.const 3756) ",") + (data $27.1 (i32.const 3768) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $28 (i32.const 3808) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00B\08\00\00\02\t\00\00 \00\00\00\02A\00\00 \00\00\00\02A") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots @@ -64,7 +84,7 @@ (local $1 i32) i32.const 1088 call $~lib/rt/itcms/__visit - i32.const 1344 + i32.const 3648 call $~lib/rt/itcms/__visit global.get $std/array-literal/emptyArrayI32 local.tee $0 @@ -96,11 +116,15 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1200 + i32.const 1424 + call $~lib/rt/itcms/__visit + i32.const 3776 call $~lib/rt/itcms/__visit - i32.const 1808 + i32.const 1232 call $~lib/rt/itcms/__visit - i32.const 1472 + i32.const 2288 + call $~lib/rt/itcms/__visit + i32.const 3344 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -121,7 +145,7 @@ i32.ne if i32.const 0 - i32.const 1536 + i32.const 1296 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -154,7 +178,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1296 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -163,7 +187,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$154 + block $__inlined_func$~lib/rt/itcms/Object#unlink$167 local.get $0 i32.load offset=4 i32.const -4 @@ -175,19 +199,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34652 + i32.const 36620 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1296 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$154 + br $__inlined_func$~lib/rt/itcms/Object#unlink$167 end local.get $0 i32.load offset=8 @@ -195,7 +219,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1296 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -224,12 +248,12 @@ i32.const 1 else local.get $1 - i32.const 1840 + i32.const 3808 i32.load i32.gt_u if - i32.const 1200 - i32.const 1664 + i32.const 1424 + i32.const 1488 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -238,7 +262,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1844 + i32.const 3812 i32.add i32.load i32.const 32 @@ -309,7 +333,7 @@ i32.eqz if i32.const 0 - i32.const 1744 + i32.const 1568 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -323,7 +347,7 @@ i32.lt_u if i32.const 0 - i32.const 1744 + i32.const 1568 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -369,7 +393,7 @@ i32.eqz if i32.const 0 - i32.const 1744 + i32.const 1568 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -452,7 +476,7 @@ i32.eqz if i32.const 0 - i32.const 1744 + i32.const 1568 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -466,7 +490,7 @@ i32.eqz if i32.const 0 - i32.const 1744 + i32.const 1568 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -527,7 +551,7 @@ i32.eqz if i32.const 0 - i32.const 1744 + i32.const 1568 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -560,7 +584,7 @@ i32.lt_u if i32.const 0 - i32.const 1744 + i32.const 1568 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -575,7 +599,7 @@ i32.ne if i32.const 0 - i32.const 1744 + i32.const 1568 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -626,7 +650,7 @@ i32.eqz if i32.const 0 - i32.const 1744 + i32.const 1568 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -698,7 +722,7 @@ i64.lt_u if i32.const 0 - i32.const 1744 + i32.const 1568 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -723,7 +747,7 @@ i32.gt_u if i32.const 0 - i32.const 1744 + i32.const 1568 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -750,7 +774,7 @@ i32.gt_u if i32.const 0 - i32.const 1744 + i32.const 1568 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -822,10 +846,10 @@ if unreachable end - i32.const 34656 + i32.const 36624 i32.const 0 i32.store - i32.const 36224 + i32.const 38192 i32.const 0 i32.store loop $for-loop|0 @@ -836,7 +860,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34656 + i32.const 36624 i32.add i32.const 0 i32.store offset=4 @@ -854,7 +878,7 @@ i32.add i32.const 2 i32.shl - i32.const 34656 + i32.const 36624 i32.add i32.const 0 i32.store offset=96 @@ -872,14 +896,14 @@ br $for-loop|0 end end - i32.const 34656 - i32.const 36228 + i32.const 36624 + i32.const 38196 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34656 + i32.const 36624 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -964,7 +988,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34652 + i32.const 36620 i32.lt_u if local.get $0 @@ -1053,14 +1077,14 @@ i32.ne if i32.const 0 - i32.const 1536 + i32.const 1296 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34652 + i32.const 36620 i32.lt_u if local.get $0 @@ -1083,7 +1107,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34652 + i32.const 36620 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1112,7 +1136,7 @@ end if i32.const 0 - i32.const 1744 + i32.const 1568 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1196,7 +1220,7 @@ i32.eqz if i32.const 0 - i32.const 1744 + i32.const 1568 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1248,7 +1272,7 @@ i32.eqz if i32.const 0 - i32.const 1744 + i32.const 1568 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1280,8 +1304,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1472 - i32.const 1536 + i32.const 1232 + i32.const 1296 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1291,7 +1315,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1312,7 +1336,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end local.get $2 i32.const 0 @@ -1345,8 +1369,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1472 - i32.const 1744 + i32.const 1232 + i32.const 1568 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1448,7 +1472,7 @@ i32.eqz if i32.const 0 - i32.const 1744 + i32.const 1568 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1463,7 +1487,7 @@ i32.gt_u if i32.const 0 - i32.const 1744 + i32.const 1568 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1482,7 +1506,7 @@ i32.and if i32.const 0 - i32.const 1744 + i32.const 1568 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1587,6 +1611,204 @@ memory.fill local.get $1 ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3852 + i32.lt_s + if + i32.const 36640 + i32.const 36688 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1856 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1868 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1868 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1868 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1868 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 @@ -1598,7 +1820,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1296 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1646,17 +1868,20 @@ end end ) - (func $~lib/array/Array~visit (param $0 i32) + (func $~start + call $start:std/array-literal + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1884 + i32.const 3852 i32.lt_s if - i32.const 34672 - i32.const 34720 + i32.const 36640 + i32.const 36688 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1669,27 +1894,127 @@ local.get $0 i32.store local.get $0 - i32.load - call $~lib/rt/itcms/__visit + i32.load offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array~visit (param $0 i32) - (local $1 i32) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3852 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3852 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$172 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1200 + local.set $0 + br $__inlined_func$~lib/string/String#concat$172 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36640 + i32.const 36688 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1884 + i32.const 3852 i32.lt_s if - i32.const 34672 - i32.const 34720 + i32.const 36640 + i32.const 36688 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1697,135 +2022,83 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.const 40 + memory.fill global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer + i32.const 1136 local.get $0 + select + local.tee $0 i32.store local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store offset=36 + i32.const 1168 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1632 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $std/array-literal/Ref $~lib/array/Array $std/array-literal/RefWithCtor $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - return - end + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1632 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 local.get $0 - call $~lib/array/Array~visit - return - end - unreachable - ) - (func $~start - call $start:std/array-literal - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1884 - i32.lt_s - if - i32.const 34672 - i32.const 34720 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 3440 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -1833,11 +2106,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1884 + i32.const 3852 i32.lt_s if - i32.const 34672 - i32.const 34720 + i32.const 36640 + i32.const 36688 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1854,8 +2127,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1200 - i32.const 1264 + i32.const 1424 + i32.const 3568 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -1880,11 +2153,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1884 + i32.const 3852 i32.lt_s if - i32.const 34672 - i32.const 34720 + i32.const 36640 + i32.const 36688 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1901,8 +2174,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1200 - i32.const 1264 + i32.const 1424 + i32.const 3568 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -1931,11 +2204,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1884 + i32.const 3852 i32.lt_s if - i32.const 34672 - i32.const 34720 + i32.const 36640 + i32.const 36688 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1961,8 +2234,8 @@ i32.shr_u i32.gt_u if - i32.const 1808 - i32.const 1264 + i32.const 3776 + i32.const 3568 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -1971,7 +2244,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $__inlined_func$~lib/rt/itcms/__renew$149 + block $__inlined_func$~lib/rt/itcms/__renew$155 i32.const 1073741820 local.get $3 i32.const 1 @@ -2014,7 +2287,7 @@ i32.store offset=16 local.get $2 local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew$149 + br $__inlined_func$~lib/rt/itcms/__renew$155 end local.get $3 local.get $4 @@ -2063,11 +2336,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1884 + i32.const 3852 i32.lt_s if - i32.const 34672 - i32.const 34720 + i32.const 36640 + i32.const 36688 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2088,8 +2361,8 @@ i32.const 0 i32.lt_s if - i32.const 1200 - i32.const 1264 + i32.const 1424 + i32.const 3568 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -2130,11 +2403,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1884 + i32.const 3852 i32.lt_s if - i32.const 34672 - i32.const 34720 + i32.const 36640 + i32.const 36688 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2155,8 +2428,8 @@ i32.const 0 i32.lt_s if - i32.const 1200 - i32.const 1264 + i32.const 1424 + i32.const 3568 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -2201,7 +2474,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1884 + i32.const 3852 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2222,7 +2495,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1884 + i32.const 3852 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2251,8 +2524,8 @@ local.get $0 return end - i32.const 34672 - i32.const 34720 + i32.const 36640 + i32.const 36688 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2265,11 +2538,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1884 + i32.const 3852 i32.lt_s if - i32.const 34672 - i32.const 34720 + i32.const 36640 + i32.const 36688 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2290,8 +2563,8 @@ i32.const 0 i32.lt_s if - i32.const 1200 - i32.const 1264 + i32.const 1424 + i32.const 3568 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -2338,11 +2611,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1884 + i32.const 3852 i32.lt_s if - i32.const 34672 - i32.const 34720 + i32.const 36640 + i32.const 36688 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2352,6 +2625,38 @@ i32.const 0 i32.const 24 memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 36620 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/pinSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/toSpace + i32.const 1524 + i32.const 1520 + i32.store + i32.const 1528 + i32.const 1520 + i32.store + i32.const 1520 + global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 1088 i32.store @@ -2361,7 +2666,7 @@ i32.ne if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 2 i32.const 1 call $~lib/builtins/abort @@ -2375,7 +2680,7 @@ call $~lib/array/Array#__get if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 3 i32.const 1 call $~lib/builtins/abort @@ -2391,7 +2696,7 @@ i32.ne if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 4 i32.const 1 call $~lib/builtins/abort @@ -2407,68 +2712,68 @@ i32.ne if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 5 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1344 + i32.const 3648 i32.store - i32.const 1344 + i32.const 3648 call $~lib/array/Array#get:length i32.const 3 i32.ne if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 8 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1344 + i32.const 3648 i32.store - i32.const 1344 + i32.const 3648 i32.const 0 call $~lib/array/Array#__get if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 9 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1344 + i32.const 3648 i32.store - i32.const 1344 + i32.const 3648 i32.const 1 call $~lib/array/Array#__get i32.const 1 i32.ne if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1344 + i32.const 3648 i32.store - i32.const 1344 + i32.const 3648 i32.const 2 call $~lib/array/Array#__get i32.const 2 i32.ne if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -2482,44 +2787,12 @@ call $~lib/array/Array#get:length if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - i32.const 34652 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1588 - i32.const 1584 - i32.store - i32.const 1592 - i32.const 1584 - i32.store - i32.const 1584 - global.set $~lib/rt/itcms/pinSpace - i32.const 1620 - i32.const 1616 - i32.store - i32.const 1624 - i32.const 1616 - i32.store - i32.const 1616 - global.set $~lib/rt/itcms/toSpace - i32.const 1700 - i32.const 1696 - i32.store - i32.const 1704 - i32.const 1696 - i32.store - i32.const 1696 - global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 0 @@ -2559,7 +2832,7 @@ i32.ne if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -2574,7 +2847,7 @@ call $~lib/array/Array#__get if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -2591,7 +2864,7 @@ i32.ne if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -2608,7 +2881,7 @@ i32.ne if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -2655,7 +2928,7 @@ i32.ne if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -2670,7 +2943,7 @@ call $~lib/array/Array#__get if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -2687,7 +2960,7 @@ i32.ne if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -2704,7 +2977,7 @@ i32.ne if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -2741,7 +3014,7 @@ i32.ne if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -2778,7 +3051,7 @@ i32.ne if i32.const 0 - i32.const 1136 + i32.const 3504 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -2808,7 +3081,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - i32.const 34652 + i32.const 36620 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 @@ -2855,11 +3128,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1884 + i32.const 3852 i32.lt_s if - i32.const 34672 - i32.const 34720 + i32.const 36640 + i32.const 36688 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2909,11 +3182,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1884 + i32.const 3852 i32.lt_s if - i32.const 34672 - i32.const 34720 + i32.const 36640 + i32.const 36688 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2934,4 +3207,153 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/array/Array~visit (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3852 + i32.lt_s + if + i32.const 36640 + i32.const 36688 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array~visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3852 + i32.lt_s + if + i32.const 36640 + i32.const 36688 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $std/array-literal/Ref $~lib/array/Array $std/array-literal/RefWithCtor $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/std/array.debug.wat b/tests/compiler/std/array.debug.wat index 76974815e0..0c6dd353aa 100644 --- a/tests/compiler/std/array.debug.wat +++ b/tests/compiler/std/array.debug.wat @@ -14,18 +14,18 @@ (type $12 (func (param i64 i32) (result i32))) (type $13 (func (result f64))) (type $14 (func (param i32 f64 i32) (result i32))) - (type $15 (func (param i32 i32 i32 i32))) + (type $15 (func (param i32 i64 i32))) (type $16 (func (param i64) (result i64))) - (type $17 (func (param i32 i64 i32))) - (type $18 (func (param i32 i32 i32) (result f32))) - (type $19 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $20 (func (param i32 i64) (result i32))) + (type $17 (func (param i32 i32 i32) (result f32))) + (type $18 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $19 (func (param i32 i64) (result i32))) + (type $20 (func (param i32 i32 i32 i32))) (type $21 (func (param i32 f32 i32 i32) (result i32))) (type $22 (func (param i32 f32 i32) (result i32))) (type $23 (func (param i32 i32 i64) (result i32))) (type $24 (func (result i32))) - (type $25 (func (param i32 i32 f32 i32 i32))) - (type $26 (func (param i32 i64 i32 i32))) + (type $25 (func (param i32 i64 i32 i32))) + (type $26 (func (param i32 i32 f32 i32 i32))) (type $27 (func (param i64))) (type $28 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $29 (func (param i32 f64) (result i32))) @@ -33,7 +33,6 @@ (type $31 (func (param i32 i32) (result f32))) (type $32 (func (param i32 i32) (result f64))) (type $33 (func (param f64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "Math.random" (func $~lib/bindings/dom/Math.random (result f64))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) @@ -50,18 +49,18 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/native/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 $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $std/array/i (mut i32) (i32.const 0)) (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) (global $~lib/math/random_seeded (mut i32) (i32.const 0)) - (global $std/array/charset i32 (i32.const 9008)) + (global $std/array/charset i32 (i32.const 9200)) (global $std/array/inputStabArr (mut i32) (i32.const 0)) (global $std/array/outputStabArr (mut i32) (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) @@ -74,318 +73,335 @@ (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~lib/builtins/i64.MIN_VALUE i64 (i64.const -9223372036854775808)) (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) - (global $~lib/rt/__rtti_base i32 (i32.const 14976)) - (global $~lib/memory/__data_end i32 (i32.const 15168)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 47936)) - (global $~lib/memory/__heap_base i32 (i32.const 47936)) + (global $~lib/rt/__rtti_base i32 (i32.const 15136)) + (global $~lib/memory/__data_end i32 (i32.const 15328)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 48096)) + (global $~lib/memory/__heap_base i32 (i32.const 48096)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $1 (i32.const 60) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $3 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 508) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00") - (data $11 (i32.const 556) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $12 (i32.const 620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00b\00c\00\00\00\00\00\00\00") - (data $13 (i32.const 652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\02\03\04\05\00\00\00\00\00\00\00") - (data $14 (i32.const 684) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\01\04\05\00\00\00\00\00\00\00") - (data $15 (i32.const 716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\00\00\00\00\00\00\00\00\00\00") - (data $17 (i32.const 780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\00\02\02\00\00\00\00\00\00\00") - (data $18 (i32.const 812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\00\02\02\00\00\00\00\00\00\00") - (data $19 (i32.const 844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\ff\ff\ff\ff\ff\00\00\00\00\00\00\00") - (data $20 (i32.const 876) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $21 (i32.const 924) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $22 (i32.const 972) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $23 (i32.const 1020) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $24 (i32.const 1068) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data $25 (i32.const 1116) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data $26 (i32.const 1164) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00") - (data $27 (i32.const 1212) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00?\00\00\80?\00\00\c0?\00\00 @\00\00@@\00\00\00\00\00\00\00\00") - (data $28 (i32.const 1260) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00?\00\00\80?\00\00\80?\00\00 @\00\00@@\00\00\00\00\00\00\00\00") - (data $29 (i32.const 1308) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $30 (i32.const 1356) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\80?\00\00\80?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $31 (i32.const 1404) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\80?\00\00\80?\00\00\00\00\00\00\00@\00\00\00@\00\00\00\00\00\00\00\00") - (data $32 (i32.const 1452) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\80?\00\00\80?\00\00\00\00\00\00\00@\00\00\00@\00\00\00\00\00\00\00\00") - (data $33 (i32.const 1500) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\80\bf\00\00\80\bf\00\00\80\bf\00\00\80\bf\00\00\80\bf\00\00\00\00\00\00\00\00") - (data $34 (i32.const 1548) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00\80\00\00\00\80\00\00\00\80\00\00\00\80\00\00\00\80\00\00\00\00\00\00\00\00") - (data $35 (i32.const 1596) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") - (data $36 (i32.const 1644) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $37 (i32.const 1692) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $38 (i32.const 1724) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $39 (i32.const 1756) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $40 (i32.const 1804) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $41 (i32.const 1852) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $42 (i32.const 1900) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $43 (i32.const 1948) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $44 (i32.const 1996) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $45 (i32.const 2044) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $46 (i32.const 2092) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $47 (i32.const 2140) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $48 (i32.const 2188) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $49 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $50 (i32.const 2284) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $51 (i32.const 2332) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $52 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $53 (i32.const 2428) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $54 (i32.const 2476) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $55 (i32.const 2524) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $56 (i32.const 2572) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $57 (i32.const 2620) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $58 (i32.const 2668) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $59 (i32.const 2716) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $60 (i32.const 2764) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $61 (i32.const 2812) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $62 (i32.const 2860) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $63 (i32.const 2908) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\03\00\00\00\05\00\00\00\07\00\00\00\t\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") - (data $64 (i32.const 2956) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\07\00\00\00\t\00\00\00\0b\00\00\00") - (data $65 (i32.const 2988) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\07\00\00\00\t\00\00\00\00\00\00\00") - (data $66 (i32.const 3020) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\05\00\00\00\07\00\00\00\t\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $67 (i32.const 3068) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\t\00\00\00\0b\00\00\00\00\00\00\00") - (data $68 (i32.const 3100) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\07\00\00\00\t\00\00\00\00\00\00\00") - (data $69 (i32.const 3132) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\07\00\00\00\t\00\00\00\00\00\00\00") - (data $70 (i32.const 3164) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\01\02\03\00\00\00\00\00\00\00\00") - (data $71 (i32.const 3196) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\01\02\03\04\05\06\07\00\00\00\00") - (data $72 (i32.const 3228) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\11\00\00\00\00\01\02\03\04\05\06\07\08\t\n\0b\0c\r\0e\0f\10\00\00\00\00\00\00\00\00\00\00\00") - (data $73 (i32.const 3276) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $74 (i32.const 3324) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $75 (i32.const 3372) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\00\00\00\00\00\00\00\00\00\00") - (data $76 (i32.const 3420) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\00\c0\7f\00\00\00\00\00\00\00\00") - (data $77 (i32.const 3452) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\00\00\00\f8\7f\00\00\00\00") - (data $78 (i32.const 3484) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $79 (i32.const 3532) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\00\c0\7f\00\00\00\00\00\00\00\00") - (data $80 (i32.const 3564) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\00\00\00\f8\7f\00\00\00\00") - (data $81 (i32.const 3596) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $82 (i32.const 3644) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $83 (i32.const 3692) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $84 (i32.const 3724) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $85 (i32.const 3772) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $86 (i32.const 3804) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $87 (i32.const 3852) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $88 (i32.const 3900) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data $89 (i32.const 3932) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") - (data $90 (i32.const 3964) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $91 (i32.const 4012) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00") - (data $92 (i32.const 4044) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05\00\00\00") - (data $93 (i32.const 4076) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $94 (i32.const 4124) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $95 (i32.const 4156) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $96 (i32.const 4204) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $97 (i32.const 4252) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $98 (i32.const 4284) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $99 (i32.const 4332) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $100 (i32.const 4380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00") - (data $101 (i32.const 4412) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data $102 (i32.const 4444) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $103 (i32.const 4492) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") - (data $104 (i32.const 4524) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $105 (i32.const 4572) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $106 (i32.const 4620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $107 (i32.const 4652) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $108 (i32.const 4700) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $109 (i32.const 4748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $110 (i32.const 4780) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $111 (i32.const 4828) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $112 (i32.const 4876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $113 (i32.const 4908) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $114 (i32.const 4956) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $115 (i32.const 5004) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $116 (i32.const 5036) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $117 (i32.const 5084) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $118 (i32.const 5132) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $119 (i32.const 5164) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $120 (i32.const 5212) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $121 (i32.const 5260) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $122 (i32.const 5292) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $123 (i32.const 5340) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $124 (i32.const 5372) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $125 (i32.const 5500) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $126 (i32.const 5628) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $127 (i32.const 5660) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data $128 (i32.const 5692) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") - (data $129 (i32.const 5724) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") - (data $130 (i32.const 5756) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $131 (i32.const 5788) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") - (data $132 (i32.const 5820) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $133 (i32.const 5868) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") - (data $134 (i32.const 5900) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") - (data $135 (i32.const 5932) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $136 (i32.const 5964) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") - (data $137 (i32.const 5996) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") - (data $138 (i32.const 6028) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") - (data $139 (i32.const 6060) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\r\00\00\00\00\00\00\00\00\00\00\00") - (data $140 (i32.const 6092) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") - (data $141 (i32.const 6124) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") - (data $142 (i32.const 6156) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") - (data $143 (i32.const 6188) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") - (data $144 (i32.const 6220) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00") - (data $145 (i32.const 6252) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00\00\00\00\00") - (data $146 (i32.const 6284) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00") - (data $147 (i32.const 6316) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00\00\00\00\00") - (data $148 (i32.const 6348) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00") - (data $149 (i32.const 6380) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00\00\00\00\00") - (data $150 (i32.const 6412) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00") - (data $151 (i32.const 6444) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00\00\00\00\00") - (data $152 (i32.const 6476) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") - (data $153 (i32.const 6604) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $154 (i32.const 6668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data $155 (i32.const 6700) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data $156 (i32.const 7100) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $157 (i32.const 8156) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") - (data $158 (i32.const 8252) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00") - (data $159 (i32.const 8284) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00") - (data $160 (i32.const 8316) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00") - (data $161 (i32.const 8348) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00\00\00\00\00") - (data $162 (i32.const 8380) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00") - (data $163 (i32.const 8412) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00") - (data $164 (i32.const 8444) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") - (data $165 (i32.const 8476) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00!\00\00\00\00\00\00\00\00\00\00\00") - (data $166 (i32.const 8508) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00") - (data $167 (i32.const 8540) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00#\00\00\00\00\00\00\00\00\00\00\00") - (data $168 (i32.const 8572) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00$\00\00\00\00\00\00\00\00\00\00\00") - (data $169 (i32.const 8604) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00%\00\00\00\00\00\00\00\00\00\00\00") - (data $170 (i32.const 8636) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00&\00\00\00\00\00\00\00\00\00\00\00") - (data $171 (i32.const 8668) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00\00\00\00\00") - (data $172 (i32.const 8700) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00(\00\00\00\00\00\00\00\00\00\00\00") - (data $173 (i32.const 8732) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00)\00\00\00\00\00\00\00\00\00\00\00") - (data $174 (i32.const 8764) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00*\00\00\00\00\00\00\00\00\00\00\00") - (data $175 (i32.const 8796) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") - (data $176 (i32.const 8828) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") - (data $177 (i32.const 8860) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") - (data $178 (i32.const 8892) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") - (data $179 (i32.const 8924) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00/\00\00\00\00\00\00\00\00\00\00\00") - (data $180 (i32.const 8956) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data $181 (i32.const 8988) "\bc\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\ac\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?\00") - (data $182 (i32.const 9180) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\00@\00\00\80\bf\00\00\00\00") - (data $183 (i32.const 9212) "\1c\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\08\00\00\001\00\00\00\00\00\00\00\00\00\00\00") - (data $184 (i32.const 9244) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\80\bf\00\00\00\00\00\00\00@") - (data $185 (i32.const 9276) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f\00\00\00\00\00\00\00\00\00\00\00\00") - (data $186 (i32.const 9340) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f\00\00\00\00\00\00\00\00\00\00\00\00") - (data $187 (i32.const 9404) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00@\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\00\00\00\00\00\00") - (data $188 (i32.const 9500) "\1c\00\00\00\00\00\00\00\00\00\00\00\19\00\00\00\08\00\00\002\00\00\00\00\00\00\00\00\00\00\00") - (data $189 (i32.const 9532) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00@\00\00\00\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\00\00\00\00\00\00") - (data $190 (i32.const 9628) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data $191 (i32.const 9676) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\003\00\00\00\00\00\00\00\00\00\00\00") - (data $192 (i32.const 9708) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data $193 (i32.const 9756) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data $194 (i32.const 9804) "\1c\00\00\00\00\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\004\00\00\00\00\00\00\00\00\00\00\00") - (data $195 (i32.const 9836) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00") - (data $196 (i32.const 9884) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $197 (i32.const 9916) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $198 (i32.const 9948) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00") - (data $199 (i32.const 9980) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $200 (i32.const 10028) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $201 (i32.const 10076) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\005\00\00\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $20 (i32.const 2428) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $21 (i32.const 2476) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00") + (data $22 (i32.const 2524) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $23 (i32.const 2588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00b\00c\00\00\00\00\00\00\00") + (data $24 (i32.const 2620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\02\03\04\05\00\00\00\00\00\00\00") + (data $25 (i32.const 2652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\01\04\05\00\00\00\00\00\00\00") + (data $26 (i32.const 2684) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\00\02\02\00\00\00\00\00\00\00") + (data $29 (i32.const 2780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\00\02\02\00\00\00\00\00\00\00") + (data $30 (i32.const 2812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\ff\ff\ff\ff\ff\00\00\00\00\00\00\00") + (data $31 (i32.const 2844) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 2892) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 2940) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $34 (i32.const 2988) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $35 (i32.const 3036) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 3084) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $37 (i32.const 3132) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00") + (data $38 (i32.const 3180) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00?\00\00\80?\00\00\c0?\00\00 @\00\00@@\00\00\00\00\00\00\00\00") + (data $39 (i32.const 3228) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00?\00\00\80?\00\00\80?\00\00 @\00\00@@\00\00\00\00\00\00\00\00") + (data $40 (i32.const 3276) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $41 (i32.const 3324) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\80?\00\00\80?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $42 (i32.const 3372) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\80?\00\00\80?\00\00\00\00\00\00\00@\00\00\00@\00\00\00\00\00\00\00\00") + (data $43 (i32.const 3420) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\80?\00\00\80?\00\00\00\00\00\00\00@\00\00\00@\00\00\00\00\00\00\00\00") + (data $44 (i32.const 3468) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\80\bf\00\00\80\bf\00\00\80\bf\00\00\80\bf\00\00\80\bf\00\00\00\00\00\00\00\00") + (data $45 (i32.const 3516) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00\80\00\00\00\80\00\00\00\80\00\00\00\80\00\00\00\80\00\00\00\00\00\00\00\00") + (data $46 (i32.const 3564) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") + (data $47 (i32.const 3612) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $48 (i32.const 3660) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $49 (i32.const 3692) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $50 (i32.const 3724) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $51 (i32.const 3772) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $52 (i32.const 3820) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $53 (i32.const 3868) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $54 (i32.const 3916) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $55 (i32.const 3964) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $56 (i32.const 4012) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $57 (i32.const 4060) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $58 (i32.const 4108) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $59 (i32.const 4156) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $60 (i32.const 4204) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $61 (i32.const 4252) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $62 (i32.const 4300) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $63 (i32.const 4348) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $64 (i32.const 4396) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $65 (i32.const 4444) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $66 (i32.const 4492) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $67 (i32.const 4540) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $68 (i32.const 4588) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $69 (i32.const 4636) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $70 (i32.const 4684) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $71 (i32.const 4732) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $72 (i32.const 4780) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $73 (i32.const 4828) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $74 (i32.const 4876) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\03\00\00\00\05\00\00\00\07\00\00\00\t\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data $75 (i32.const 4924) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\07\00\00\00\t\00\00\00\0b\00\00\00") + (data $76 (i32.const 4956) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\07\00\00\00\t\00\00\00\00\00\00\00") + (data $77 (i32.const 4988) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\05\00\00\00\07\00\00\00\t\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $78 (i32.const 5036) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\t\00\00\00\0b\00\00\00\00\00\00\00") + (data $79 (i32.const 5068) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\07\00\00\00\t\00\00\00\00\00\00\00") + (data $80 (i32.const 5100) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\07\00\00\00\t\00\00\00\00\00\00\00") + (data $81 (i32.const 5132) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\01\02\03\00\00\00\00\00\00\00\00") + (data $82 (i32.const 5164) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\01\02\03\04\05\06\07\00\00\00\00") + (data $83 (i32.const 5196) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\11\00\00\00\00\01\02\03\04\05\06\07\08\t\n\0b\0c\r\0e\0f\10\00\00\00\00\00\00\00\00\00\00\00") + (data $84 (i32.const 5244) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $85 (i32.const 5292) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $86 (i32.const 5340) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $87 (i32.const 5388) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\00\c0\7f\00\00\00\00\00\00\00\00") + (data $88 (i32.const 5420) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\00\00\00\f8\7f\00\00\00\00") + (data $89 (i32.const 5452) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $90 (i32.const 5500) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\00\c0\7f\00\00\00\00\00\00\00\00") + (data $91 (i32.const 5532) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\00\00\00\f8\7f\00\00\00\00") + (data $92 (i32.const 5564) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $93 (i32.const 5612) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $94 (i32.const 5660) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $95 (i32.const 5692) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $96 (i32.const 5740) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $97 (i32.const 5772) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $98 (i32.const 5820) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $99 (i32.const 5868) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data $100 (i32.const 5900) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data $101 (i32.const 5932) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $102 (i32.const 5980) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00") + (data $103 (i32.const 6012) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05\00\00\00") + (data $104 (i32.const 6044) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $105 (i32.const 6092) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $106 (i32.const 6124) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $107 (i32.const 6172) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $108 (i32.const 6220) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $109 (i32.const 6252) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $110 (i32.const 6300) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $111 (i32.const 6348) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00") + (data $112 (i32.const 6380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $113 (i32.const 6412) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $114 (i32.const 6460) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $115 (i32.const 6492) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $116 (i32.const 6540) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $117 (i32.const 6588) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $118 (i32.const 6620) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $119 (i32.const 6668) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $120 (i32.const 6716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $121 (i32.const 6748) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $122 (i32.const 6796) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $123 (i32.const 6844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $124 (i32.const 6876) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $125 (i32.const 6924) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $126 (i32.const 6972) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $127 (i32.const 7004) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $128 (i32.const 7052) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $129 (i32.const 7100) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $130 (i32.const 7132) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $131 (i32.const 7180) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $132 (i32.const 7228) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $133 (i32.const 7260) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $134 (i32.const 7308) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $135 (i32.const 7340) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $136 (i32.const 7468) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $137 (i32.const 7596) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $138 (i32.const 7628) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $139 (i32.const 7660) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $140 (i32.const 7692) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $141 (i32.const 7724) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $142 (i32.const 7756) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data $143 (i32.const 7788) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $144 (i32.const 7836) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data $145 (i32.const 7868) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $146 (i32.const 7900) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $147 (i32.const 7932) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data $148 (i32.const 7964) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data $149 (i32.const 7996) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data $150 (i32.const 8028) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\r\00\00\00\00\00\00\00\00\00\00\00") + (data $151 (i32.const 8060) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") + (data $152 (i32.const 8092) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") + (data $153 (i32.const 8124) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") + (data $154 (i32.const 8156) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") + (data $155 (i32.const 8188) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00") + (data $156 (i32.const 8220) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00\00\00\00\00") + (data $157 (i32.const 8252) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00") + (data $158 (i32.const 8284) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00\00\00\00\00") + (data $159 (i32.const 8316) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00") + (data $160 (i32.const 8348) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00\00\00\00\00") + (data $161 (i32.const 8380) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00") + (data $162 (i32.const 8412) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00\00\00\00\00") + (data $163 (i32.const 8444) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00") + (data $164 (i32.const 8476) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00") + (data $165 (i32.const 8508) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00") + (data $166 (i32.const 8540) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00\00\00\00\00") + (data $167 (i32.const 8572) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00") + (data $168 (i32.const 8604) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00") + (data $169 (i32.const 8636) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $170 (i32.const 8668) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00!\00\00\00\00\00\00\00\00\00\00\00") + (data $171 (i32.const 8700) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00") + (data $172 (i32.const 8732) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00#\00\00\00\00\00\00\00\00\00\00\00") + (data $173 (i32.const 8764) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00$\00\00\00\00\00\00\00\00\00\00\00") + (data $174 (i32.const 8796) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00%\00\00\00\00\00\00\00\00\00\00\00") + (data $175 (i32.const 8828) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00&\00\00\00\00\00\00\00\00\00\00\00") + (data $176 (i32.const 8860) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00\00\00\00\00") + (data $177 (i32.const 8892) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00(\00\00\00\00\00\00\00\00\00\00\00") + (data $178 (i32.const 8924) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00)\00\00\00\00\00\00\00\00\00\00\00") + (data $179 (i32.const 8956) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00*\00\00\00\00\00\00\00\00\00\00\00") + (data $180 (i32.const 8988) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") + (data $181 (i32.const 9020) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data $182 (i32.const 9052) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data $183 (i32.const 9084) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") + (data $184 (i32.const 9116) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00/\00\00\00\00\00\00\00\00\00\00\00") + (data $185 (i32.const 9148) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $186 (i32.const 9180) "\bc\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\ac\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?\00") + (data $187 (i32.const 9372) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\00@\00\00\80\bf\00\00\00\00") + (data $188 (i32.const 9404) "\1c\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\08\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $189 (i32.const 9436) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\80\bf\00\00\00\00\00\00\00@") + (data $190 (i32.const 9468) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f\00\00\00\00\00\00\00\00\00\00\00\00") + (data $191 (i32.const 9532) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f\00\00\00\00\00\00\00\00\00\00\00\00") + (data $192 (i32.const 9596) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00@\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\00\00\00\00\00\00") + (data $193 (i32.const 9692) "\1c\00\00\00\00\00\00\00\00\00\00\00\19\00\00\00\08\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $194 (i32.const 9724) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00@\00\00\00\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\00\00\00\00\00\00") + (data $195 (i32.const 9820) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $196 (i32.const 9868) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data $197 (i32.const 9900) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $198 (i32.const 9948) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $199 (i32.const 9996) "\1c\00\00\00\00\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data $200 (i32.const 10028) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00") + (data $201 (i32.const 10076) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data $202 (i32.const 10108) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $203 (i32.const 10140) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") - (data $204 (i32.const 10172) "\1c\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\006\00\00\00\00\00\00\00\00\00\00\00") - (data $205 (i32.const 10204) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\007\00\00\00\00\00\00\00\00\00\00\00") - (data $206 (i32.const 10236) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\008\00\00\00\00\00\00\00\00\00\00\00") - (data $207 (i32.const 10268) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\009\00\00\00\00\00\00\00\00\00\00\00") - (data $208 (i32.const 10300) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") - (data $209 (i32.const 10332) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00;\00\00\00\00\00\00\00\00\00\00\00") - (data $210 (i32.const 10364) "\1c\00\00\00\00\00\00\00\00\00\00\00!\00\00\00\08\00\00\00<\00\00\00\00\00\00\00\00\00\00\00") - (data $211 (i32.const 10396) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") - (data $212 (i32.const 10428) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") - (data $213 (i32.const 10460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") - (data $214 (i32.const 10492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00b\00a\00\00\00\00\00\00\00\00\00") - (data $215 (i32.const 10524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $216 (i32.const 10556) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00\b0(\00\00\d0(\00\00\b0(\00\00\f0(\00\00\10)\00\000)\00\00\00\00\00\00") - (data $217 (i32.const 10604) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\000)\00\00\b0(\00\00\b0(\00\00\f0(\00\00\d0(\00\00\10)\00\00\00\00\00\00") - (data $218 (i32.const 10652) "\1c\00\00\00\00\00\00\00\00\00\00\00#\00\00\00\08\00\00\00=\00\00\00\00\00\00\00\00\00\00\00") - (data $219 (i32.const 10684) "\1c\00\00\00\00\00\00\00\00\00\00\00$\00\00\00\08\00\00\00>\00\00\00\00\00\00\00\00\00\00\00") - (data $220 (i32.const 10716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $221 (i32.const 10748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00r\00u\00e\00\00\00\00\00") - (data $222 (i32.const 10780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00f\00a\00l\00s\00e\00\00\00") - (data $223 (i32.const 10812) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") - (data $224 (i32.const 10844) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00\00\00\00\00\00\00\00\00") - (data $225 (i32.const 10892) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data $226 (i32.const 10924) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00-\002\00-\003\00\00\00") - (data $227 (i32.const 10956) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data $228 (i32.const 10988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") - (data $229 (i32.const 11020) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80\00\00\00\00") - (data $230 (i32.const 11052) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00_\00_\00\00\00\00\00\00\00\00\00") - (data $231 (i32.const 11084) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $232 (i32.const 11164) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\00\00\00\00\00\00") - (data $233 (i32.const 11244) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00,\00 \00\00\00\00\00\00\00\00\00") - (data $234 (i32.const 11276) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") - (data $235 (i32.const 11308) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") - (data $236 (i32.const 11340) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") - (data $237 (i32.const 11388) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $238 (i32.const 11440) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $239 (i32.const 11496) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $248 (i32.const 12844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $249 (i32.const 12876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $250 (i32.const 12908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") - (data $251 (i32.const 12940) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $252 (i32.const 12988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00,\002\00\00\00\00\00\00\00") - (data $253 (i32.const 13020) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $254 (i32.const 13068) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\01\ff\00\00\00\00\00\00\00\00\00\00") - (data $255 (i32.const 13100) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00,\00-\001\00,\000\00") - (data $256 (i32.const 13132) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\80\81\80\00\00\00\00\00\00\00\00\00") - (data $257 (i32.const 13164) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00-\001\002\008\00,\00-\001\002\007\00,\00-\001\002\008\00") - (data $258 (i32.const 13212) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\01\00\ff\ff\00\00\00\00\00\00\00\00") - (data $259 (i32.const 13244) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000\00\00\00\00\00\00\00\00\00\00\00") - (data $260 (i32.const 13292) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\80\01\ff\00\00\00\00\00\00\00\00") - (data $261 (i32.const 13324) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00-\003\002\007\006\008\00,\00-\002\005\005\00\00\00\00\00\00\00") - (data $262 (i32.const 13372) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\80\80\ff\ff\ff\00\00\00\00") - (data $263 (i32.const 13404) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00-\002\001\004\007\004\008\003\006\004\008\00,\00-\001\002\008\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $264 (i32.const 13468) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") - (data $265 (i32.const 13516) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $266 (i32.const 13596) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f\00\00\00\00") - (data $267 (i32.const 13660) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00~\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $268 (i32.const 13820) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\000)\00\00\b0(\00\00\b0(\00\00\f0(\00\00\d0(\00\00\10)\00\00\00\00\00\00") - (data $269 (i32.const 13868) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,\00\00\00") - (data $270 (i32.const 13916) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") - (data $271 (i32.const 13948) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\004\00\00\00\00\00\00\00\00\00\00\00") - (data $272 (i32.const 13980) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\001\00\00p6\00\00\00\00\00\00\906\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $273 (i32.const 14028) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00,\002\00,\00,\004\00") - (data $274 (i32.const 14060) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") - (data $275 (i32.const 14092) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00") - (data $276 (i32.const 14124) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $277 (i32.const 14172) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\01\02\00\00\00\00\00\00\00\00\00\00") - (data $278 (i32.const 14204) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\04\00\00\00\00\00\00\00\00\00\00") - (data $279 (i32.const 14236) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $280 (i32.const 14268) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $281 (i32.const 14300) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data $282 (i32.const 14332) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00") - (data $283 (i32.const 14364) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") - (data $284 (i32.const 14396) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00o\00n\00e\00\00\00\00\00\00\00") - (data $285 (i32.const 14428) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00P8\00\00\00\00\00\00\00\00\00\00") - (data $286 (i32.const 14460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00t\00w\00o\00\00\00\00\00\00\00") - (data $287 (i32.const 14492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00t\00h\00r\00e\00e\00\00\00") - (data $288 (i32.const 14524) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\908\00\00\00\00\00\00\b08\00\00") - (data $289 (i32.const 14556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00f\00o\00u\00r\00\00\00\00\00") - (data $290 (i32.const 14588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00f\00i\00v\00e\00\00\00\00\00") - (data $291 (i32.const 14620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00s\00i\00x\00\00\00\00\00\00\00") - (data $292 (i32.const 14652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\f08\00\00\109\00\0009\00\00") - (data $293 (i32.const 14684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00s\00e\00v\00e\00n\00\00\00") - (data $294 (i32.const 14716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00p9\00\00\00\00\00\00\00\00\00\00") - (data $295 (i32.const 14748) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00P8\00\00\908\00\00\00\00\00\00\b08\00\00\f08\00\00\109\00\0009\00\00p9\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $296 (i32.const 14812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $297 (i32.const 14844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $298 (i32.const 14876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $299 (i32.const 14908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data $300 (i32.const 14940) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00?\00\00\00\00\00\00\00\00\00\00\00") - (data $301 (i32.const 14976) "/\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00 \00\00\00A\00\00\00B\00\00\00\02\01\00\00\02\19\00\00\02A\00\00\82\00\00\00\02\1a\00\00\02a\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00 \00\00\00\02A\00\00\00\00\00\00\02a\00\00\00\00\00\00\00\00\00\00B\00\00\00B\08\00\00\82\08\00\00\02\02\00\00\02\n\00\00\02A\00\00\02A\00\00\02A\00\00\02A\00\00\00\00\00\00") + (data $203 (i32.const 10140) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00") + (data $204 (i32.const 10172) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $205 (i32.const 10220) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $206 (i32.const 10268) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\005\00\00\00\00\00\00\00\00\00\00\00") + (data $207 (i32.const 10300) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $208 (i32.const 10332) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data $209 (i32.const 10364) "\1c\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\006\00\00\00\00\00\00\00\00\00\00\00") + (data $210 (i32.const 10396) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\007\00\00\00\00\00\00\00\00\00\00\00") + (data $211 (i32.const 10428) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\008\00\00\00\00\00\00\00\00\00\00\00") + (data $212 (i32.const 10460) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\009\00\00\00\00\00\00\00\00\00\00\00") + (data $213 (i32.const 10492) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $214 (i32.const 10524) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00;\00\00\00\00\00\00\00\00\00\00\00") + (data $215 (i32.const 10556) "\1c\00\00\00\00\00\00\00\00\00\00\00!\00\00\00\08\00\00\00<\00\00\00\00\00\00\00\00\00\00\00") + (data $216 (i32.const 10588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $217 (i32.const 10620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data $218 (i32.const 10652) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") + (data $219 (i32.const 10684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00b\00a\00\00\00\00\00\00\00\00\00") + (data $220 (i32.const 10716) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00p)\00\00\90)\00\00p)\00\00\b0)\00\00\d0)\00\00`\00\00\00\00\00\00\00") + (data $221 (i32.const 10764) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00`\00\00\00p)\00\00p)\00\00\b0)\00\00\90)\00\00\d0)\00\00\00\00\00\00") + (data $222 (i32.const 10812) "\1c\00\00\00\00\00\00\00\00\00\00\00#\00\00\00\08\00\00\00=\00\00\00\00\00\00\00\00\00\00\00") + (data $223 (i32.const 10844) "\1c\00\00\00\00\00\00\00\00\00\00\00$\00\00\00\08\00\00\00>\00\00\00\00\00\00\00\00\00\00\00") + (data $224 (i32.const 10876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $225 (i32.const 10908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00r\00u\00e\00\00\00\00\00") + (data $226 (i32.const 10940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00f\00a\00l\00s\00e\00\00\00") + (data $227 (i32.const 10972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data $228 (i32.const 11004) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00\00\00\00\00\00\00\00\00") + (data $229 (i32.const 11052) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") + (data $230 (i32.const 11084) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00-\002\00-\003\00\00\00") + (data $231 (i32.const 11116) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $232 (i32.const 11148) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data $233 (i32.const 11180) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80\00\00\00\00") + (data $234 (i32.const 11212) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00_\00_\00\00\00\00\00\00\00\00\00") + (data $235 (i32.const 11244) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $236 (i32.const 11324) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\00\00\00\00\00\00") + (data $237 (i32.const 11404) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00,\00 \00\00\00\00\00\00\00\00\00") + (data $238 (i32.const 11436) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") + (data $239 (i32.const 11468) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") + (data $240 (i32.const 11500) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $241 (i32.const 11548) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $242 (i32.const 11600) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $243 (i32.const 11656) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $252 (i32.const 13004) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $253 (i32.const 13036) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $254 (i32.const 13068) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data $255 (i32.const 13100) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $256 (i32.const 13148) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00,\002\00\00\00\00\00\00\00") + (data $257 (i32.const 13180) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $258 (i32.const 13228) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\01\ff\00\00\00\00\00\00\00\00\00\00") + (data $259 (i32.const 13260) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00,\00-\001\00,\000\00") + (data $260 (i32.const 13292) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\80\81\80\00\00\00\00\00\00\00\00\00") + (data $261 (i32.const 13324) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00-\001\002\008\00,\00-\001\002\007\00,\00-\001\002\008\00") + (data $262 (i32.const 13372) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\01\00\ff\ff\00\00\00\00\00\00\00\00") + (data $263 (i32.const 13404) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000\00\00\00\00\00\00\00\00\00\00\00") + (data $264 (i32.const 13452) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\80\01\ff\00\00\00\00\00\00\00\00") + (data $265 (i32.const 13484) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00-\003\002\007\006\008\00,\00-\002\005\005\00\00\00\00\00\00\00") + (data $266 (i32.const 13532) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\80\80\ff\ff\ff\00\00\00\00") + (data $267 (i32.const 13564) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00-\002\001\004\007\004\008\003\006\004\008\00,\00-\001\002\008\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $268 (i32.const 13628) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") + (data $269 (i32.const 13676) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $270 (i32.const 13756) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f\00\00\00\00") + (data $271 (i32.const 13820) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00~\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $272 (i32.const 13980) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00`\00\00\00p)\00\00p)\00\00\b0)\00\00\90)\00\00\d0)\00\00\00\00\00\00") + (data $273 (i32.const 14028) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,\00\00\00") + (data $274 (i32.const 14076) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $275 (i32.const 14108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data $276 (i32.const 14140) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\a01\00\00\107\00\00\00\00\00\0007\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $277 (i32.const 14188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00,\002\00,\00,\004\00") + (data $278 (i32.const 14220) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data $279 (i32.const 14252) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00") + (data $280 (i32.const 14284) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $281 (i32.const 14332) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\01\02\00\00\00\00\00\00\00\00\00\00") + (data $282 (i32.const 14364) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\04\00\00\00\00\00\00\00\00\00\00") + (data $283 (i32.const 14396) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $284 (i32.const 14428) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $285 (i32.const 14460) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $286 (i32.const 14492) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00") + (data $287 (i32.const 14524) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") + (data $288 (i32.const 14556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00o\00n\00e\00\00\00\00\00\00\00") + (data $289 (i32.const 14588) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\f08\00\00\00\00\00\00\00\00\00\00") + (data $290 (i32.const 14620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00t\00w\00o\00\00\00\00\00\00\00") + (data $291 (i32.const 14652) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00t\00h\00r\00e\00e\00\00\00") + (data $292 (i32.const 14684) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\0009\00\00\00\00\00\00P9\00\00") + (data $293 (i32.const 14716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00f\00o\00u\00r\00\00\00\00\00") + (data $294 (i32.const 14748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00f\00i\00v\00e\00\00\00\00\00") + (data $295 (i32.const 14780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00s\00i\00x\00\00\00\00\00\00\00") + (data $296 (i32.const 14812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\909\00\00\b09\00\00\d09\00\00") + (data $297 (i32.const 14844) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00s\00e\00v\00e\00n\00\00\00") + (data $298 (i32.const 14876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\10:\00\00\00\00\00\00\00\00\00\00") + (data $299 (i32.const 14908) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00\f08\00\0009\00\00\00\00\00\00P9\00\00\909\00\00\b09\00\00\d09\00\00\10:\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $300 (i32.const 14972) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $301 (i32.const 15004) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $302 (i32.const 15036) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $303 (i32.const 15068) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $304 (i32.const 15100) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00?\00\00\00\00\00\00\00\00\00\00\00") + (data $305 (i32.const 15136) "/\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00 \00\00\00A\00\00\00B\00\00\00\02\01\00\00\02\19\00\00\02A\00\00\82\00\00\00\02\1a\00\00\02a\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00 \00\00\00\02A\00\00\00\00\00\00\02a\00\00\00\00\00\00\00\00\00\00B\00\00\00B\08\00\00\82\08\00\00\02\02\00\00\02\n\00\00\02A\00\00\02A\00\00\02A\00\00\02A\00\00\00\00\00\00") (table $0 64 64 funcref) (elem $0 (i32.const 1) $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|4 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|18 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|30 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|34 $start:std/array~anonymous|35 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|39 $start:std/array~anonymous|40 $start:std/array~anonymous|41 $start:std/array~anonymous|42 $start:std/array~anonymous|43 $start:std/array~anonymous|44 $start:std/array~anonymous|45 $start:std/array~anonymous|46 $start:std/array~anonymous|47 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|1 $std/array/assertStableSortedForComplexObjects~anonymous|0 $start:std/array~anonymous|48 $start:std/array~anonymous|49 $start:std/array~anonymous|50 $start:std/array~anonymous|51 $start:std/array~anonymous|52 $start:std/array~anonymous|53 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 $start:std/array~anonymous|54) (export "memory" (memory $0)) (export "_start" (func $~start)) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -2586,6 +2602,422 @@ local.get $ptr return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) (local $child i32) (local $parent i32) @@ -3124,10 +3556,6 @@ local.get $this i32.load ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $this i32) (result i32) local.get $this i32.const 20 @@ -3682,416 +4110,6 @@ i32.add global.set $std/array/i ) - (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) - local.get $value - i32.const 100000 - i32.lt_u - if - local.get $value - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $value - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $value - i32.const 10000 - i32.ge_u - i32.add - local.get $value - i32.const 1000 - i32.ge_u - i32.add - return - end - unreachable - else - local.get $value - i32.const 10000000 - i32.lt_u - if - i32.const 6 - local.get $value - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $value - i32.const 1000000000 - i32.ge_u - i32.add - local.get $value - i32.const 100000000 - i32.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) - (local $t i32) - (local $r i32) - (local $d1 i32) - (local $d2 i32) - (local $digits1 i64) - (local $digits2 i64) - (local $t|9 i32) - (local $d1|10 i32) - (local $digits i32) - (local $digits|12 i32) - (local $digit i32) - loop $while-continue|0 - local.get $num - i32.const 10000 - i32.ge_u - if - local.get $num - i32.const 10000 - i32.div_u - local.set $t - local.get $num - i32.const 10000 - i32.rem_u - local.set $r - local.get $t - local.set $num - local.get $r - i32.const 100 - i32.div_u - local.set $d1 - local.get $r - i32.const 100 - i32.rem_u - local.set $d2 - i32.const 6700 - local.get $d1 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits1 - i32.const 6700 - local.get $d2 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits2 - local.get $offset - i32.const 4 - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits1 - local.get $digits2 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $num - i32.const 100 - i32.ge_u - if - local.get $num - i32.const 100 - i32.div_u - local.set $t|9 - local.get $num - i32.const 100 - i32.rem_u - local.set $d1|10 - local.get $t|9 - local.set $num - local.get $offset - i32.const 2 - i32.sub - local.set $offset - i32.const 6700 - local.get $d1|10 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $digits - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits - i32.store - end - local.get $num - i32.const 10 - i32.ge_u - if - local.get $offset - i32.const 2 - i32.sub - local.set $offset - i32.const 6700 - local.get $num - i32.const 2 - i32.shl - i32.add - i32.load - local.set $digits|12 - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits|12 - i32.store - else - local.get $offset - i32.const 1 - i32.sub - local.set $offset - i32.const 48 - local.get $num - i32.add - local.set $digit - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digit - i32.store16 - end - ) - (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) - loop $while-continue|0 - local.get $offset - i32.const 2 - i32.ge_u - if - local.get $offset - i32.const 2 - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - i32.const 7120 - local.get $num - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $num - i64.const 8 - i64.shr_u - local.set $num - br $while-continue|0 - end - end - local.get $offset - i32.const 1 - i32.and - if - local.get $buffer - i32.const 7120 - local.get $num - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 - end - ) - (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) - (local $value i32) - (local $b64 i64) - (local $b i64) - (local $e i32) - block $~lib/util/number/isPowerOf2|inlined.0 (result i32) - local.get $base - local.set $value - local.get $value - i32.popcnt - i32.const 1 - i32.eq - br $~lib/util/number/isPowerOf2|inlined.0 - end - if - i32.const 63 - local.get $num - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $base - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - return - end - local.get $base - i64.extend_i32_s - local.set $b64 - local.get $b64 - local.set $b - i32.const 1 - local.set $e - loop $while-continue|0 - local.get $num - local.get $b - i64.ge_u - if - local.get $num - local.get $b - i64.div_u - local.set $num - local.get $b - local.get $b - i64.mul - local.set $b - local.get $e - i32.const 1 - i32.shl - local.set $e - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $num - i64.const 1 - i64.ge_u - if - local.get $num - local.get $b64 - i64.div_u - local.set $num - local.get $e - i32.const 1 - i32.add - local.set $e - br $while-continue|1 - end - end - local.get $e - i32.const 1 - i32.sub - return - ) - (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) - (local $base i64) - (local $shift i64) - (local $mask i64) - (local $q i64) - local.get $radix - i64.extend_i32_s - local.set $base - local.get $radix - local.get $radix - i32.const 1 - i32.sub - i32.and - i32.const 0 - i32.eq - if - local.get $radix - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s - local.set $shift - local.get $base - i64.const 1 - i64.sub - local.set $mask - loop $do-loop|0 - local.get $offset - i32.const 1 - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - i32.const 8176 - local.get $num - local.get $mask - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $num - local.get $shift - i64.shr_u - local.set $num - local.get $num - i64.const 0 - i64.ne - br_if $do-loop|0 - end - else - loop $do-loop|1 - local.get $offset - i32.const 1 - i32.sub - local.set $offset - local.get $num - local.get $base - i64.div_u - local.set $q - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - i32.const 8176 - local.get $num - local.get $q - local.get $base - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $q - local.set $num - local.get $num - i64.const 0 - i64.ne - br_if $do-loop|1 - end - end - ) (func $~lib/number/I32#toString (param $this i32) (param $radix i32) (result i32) local.get $this local.get $radix @@ -6515,15 +6533,6 @@ local.get $this i32.load offset=12 ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u - return - ) (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) (local $ptr1 i32) (local $ptr2 i32) @@ -7097,7 +7106,7 @@ local.set $delta|21 local.get $tmp local.set $rest - i32.const 12368 + i32.const 12528 local.get $kappa i32.const 2 i32.shl @@ -7234,7 +7243,7 @@ i32.add global.set $~lib/util/number/_K local.get $wp_w_frc - i32.const 12368 + i32.const 12528 i32.const 0 local.get $kappa i32.sub @@ -7913,14 +7922,14 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 11496 + i32.const 11656 local.get $index i32.const 3 i32.shl i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 12192 + i32.const 12352 local.get $index i32.const 1 i32.shl @@ -8281,7 +8290,7 @@ return ) (func $std/array/Ref#toString (param $this i32) (result i32) - i32.const 12608 + i32.const 12768 return ) (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) @@ -8769,14 +8778,14 @@ i32.const 100 i32.rem_u local.set $c2 - i32.const 6700 + i32.const 764 local.get $c1 i32.const 2 i32.shl i32.add i64.load32_u local.set $digits1 - i32.const 6700 + i32.const 764 local.get $c2 i32.const 2 i32.shl @@ -8798,14 +8807,14 @@ i64.shl i64.or i64.store - i32.const 6700 + i32.const 764 local.get $b1 i32.const 2 i32.shl i32.add i64.load32_u local.set $digits1 - i32.const 6700 + i32.const 764 local.get $b2 i32.const 2 i32.shl @@ -9238,1121 +9247,1475 @@ i32.const 0 drop ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $std/array/arr - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/array/charset - local.tee $1 + (func $~start + global.get $~started if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + return end - global.get $std/array/inputStabArr - local.tee $1 + i32.const 1 + global.set $~started + call $start:std/array + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 48128 + i32.const 48176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $std/array/outputStabArr - local.tee $1 + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - i32.const 320 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 1616 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 5392 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 128 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 7120 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 8176 - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 2400 + i32.const 2448 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>#get:_env (param $this i32) (result i32) + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>#get:_env (param $this i32) (result i32) + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>#__visit - ) - (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ local.get $this - i32.load - ) - (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String>#get:_env (param $this i32) (result i32) + (func $std/array/Ref#constructor (param $this i32) (param $v i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>#__visit - ) - (func $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>#get:_env (param $this i32) (result i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $v + call $std/array/Ref#set:v local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/function/Function<%28f32%2Cf32%29=>i32>#get:_env (param $this i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $this i32) (param $length i32) (param $alignLog2 i32) (result i32) + (local $buffer i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28f32%2Cf32%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit - ) - (func $~lib/function/Function<%28f64%2Cf64%29=>i32>#get:_env (param $this i32) (result i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit - ) - (func $~lib/function/Function<%28u32%2Cu32%29=>i32>#get:_env (param $this i32) (result i32) + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u32%2Cu32%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Cu32%29=>i32>#__visit - ) - (func $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>#get:_env (param $this i32) (result i32) + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $length + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 2400 + i32.const 2544 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + local.get $alignLog2 + i32.shl + local.tee $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>#__visit - ) - (func $~lib/array/Array<~lib/array/Array>#get:buffer (param $this i32) (result i32) + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#set:buffer local.get $this - i32.load - ) - (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit - ) - (func $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>#get:_env (param $this i32) (result i32) + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + call $~lib/arraybuffer/ArrayBufferView#set:dataStart local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>#__visit - ) - (func $~lib/array/Array>#get:buffer (param $this i32) (result i32) + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $length + call $~lib/arraybuffer/ArrayBufferView#set:byteLength local.get $this - i32.load - ) - (func $~lib/array/Array>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array>#__visit + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>#get:_env (param $this i32) (result i32) + (func $~lib/typedarray/Uint8Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>#__visit - ) - (func $~lib/array/Array<~lib/string/String|null>#get:buffer (param $this i32) (result i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer local.get $this - i32.load - ) - (func $~lib/array/Array<~lib/string/String|null>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String|null>#__visit - ) - (func $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>#get:_env (param $this i32) (result i32) + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>#__visit + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>#get:_env (param $this i32) (result i32) + (func $~lib/array/Array#fill (param $this i32) (param $value i32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.get $value + local.get $start + local.get $end + call $~lib/util/bytes/FILL local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.store local.get $1 - call $~lib/object/Object~visit - local.get $0 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/array/Array#__visit + return ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array<~lib/array/Array>#get:buffer (param $this i32) (result i32) + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 2448 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end local.get $this - i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return ) - (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit + (func $std/array/isArraysEqual (param $a i32) (param $b i32) (param $len i32) (result i32) + (local $i i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.eqz + if + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + local.set $len + local.get $len + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $a + local.get $b + i32.eq + if + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + i32.const 0 + drop + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array#__get + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return ) - (func $~lib/array/Array<~lib/array/Array>#get:buffer (param $this i32) (result i32) + (func $~lib/array/Array#fill@varargs (param $this i32) (param $value i32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $start + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end local.get $this - i32.load - ) - (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $value + local.get $start + local.get $end + call $~lib/array/Array#fill + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:buffer (param $this i32) (result i32) + (func $~lib/array/Array#fill (param $this i32) (param $value i32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop local.get $this - i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.get $value + local.get $start + local.get $end + call $~lib/util/bytes/FILL + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>~visit (param $0 i32) (param $1 i32) - local.get $0 + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#get:buffer (param $this i32) (result i32) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 2448 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__visit + (func $std/array/isArraysEqual (param $a i32) (param $b i32) (param $len i32) (result i32) + (local $i i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.eqz + if + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + local.set $len + local.get $len + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $a + local.get $b + i32.eq + if + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + i32.const 0 + drop + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array#__get + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return ) - (func $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>#get:_env (param $this i32) (result i32) + (func $~lib/array/Array#fill@varargs (param $this i32) (param $value i32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $start + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end local.get $this - i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $value + local.get $start + local.get $end + call $~lib/array/Array#fill + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>~visit (param $0 i32) (param $1 i32) - local.get $0 + (func $~lib/array/Array#fill (param $this i32) (param $value f32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.get $value + local.get $start + local.get $end + call $~lib/util/bytes/FILL + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store local.get $1 - call $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>#__visit + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array> - block $~lib/array/Array<~lib/array/Array<~lib/string/String|null>> - block $~lib/array/Array<~lib/array/Array<~lib/array/Array>> - block $~lib/array/Array<~lib/array/Array> - block $~lib/array/Array<~lib/array/Array> - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32> - block $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32> - block $~lib/array/Array<~lib/string/String|null> - block $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32> - block $~lib/array/Array> - block $std/array/Proxy - block $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32> - block $~lib/array/Array<~lib/array/Array> - block $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32> - block $~lib/function/Function<%28u32%2Cu32%29=>i32> - block $~lib/function/Function<%28i32%2Ci32%29=>i32> - block $~lib/function/Function<%28f64%2Cf64%29=>i32> - block $~lib/function/Function<%28f32%2Cf32%29=>i32> - block $~lib/array/Array - block $std/array/Dim - block $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool> - block $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32> - block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32> - block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32> - block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String> - block $~lib/array/Array<~lib/string/String> - block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void> - block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool> - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/typedarray/Uint8Array - block $std/array/Ref - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $std/array/Ref $~lib/typedarray/Uint8Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool> $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void> $~lib/array/Array<~lib/string/String> $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String> $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32> $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32> $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32> $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool> $std/array/Dim $~lib/array/Array $~lib/function/Function<%28f32%2Cf32%29=>i32> $~lib/function/Function<%28f64%2Cf64%29=>i32> $~lib/function/Function<%28i32%2Ci32%29=>i32> $~lib/function/Function<%28u32%2Cu32%29=>i32> $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32> $~lib/array/Array<~lib/array/Array> $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32> $std/array/Proxy $~lib/array/Array> $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32> $~lib/array/Array<~lib/string/String|null> $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32> $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32> $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array<~lib/array/Array> $~lib/array/Array<~lib/array/Array> $~lib/array/Array<~lib/array/Array<~lib/array/Array>> $~lib/array/Array<~lib/array/Array<~lib/string/String|null>> $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array> $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>~visit - return - end - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Cf32%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Cu32%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>~visit - return - end - return - end - local.get $0 - local.get $1 - call $~lib/array/Array>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String|null>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>~visit - return - end - unreachable - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:std/array - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 47968 - i32.const 48016 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result f32) + (local $value f32) (local $3 i32) - (local $bufferSize i32) - (local $buffer i32) - (local $6 i32) + (local $4 f32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - call $~lib/array/Array#set:buffer - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - call $~lib/array/Array#set:dataStart - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 i32.const 0 - call $~lib/array/Array#set:byteLength + i32.store + local.get $index local.get $this - local.set $6 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - call $~lib/array/Array#set:length_ - local.get $length - i32.const 1073741820 - i32.const 2 - i32.shr_u - i32.gt_u + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u if - i32.const 32 - i32.const 80 - i32.const 70 - i32.const 60 + i32.const 320 + i32.const 2448 + i32.const 114 + i32.const 42 call $~lib/builtins/abort unreachable end - local.get $length - local.tee $2 - i32.const 8 - local.tee $3 - local.get $2 + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.gt_u - select + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index i32.const 2 i32.shl - local.set $bufferSize - global.get $~lib/memory/__stack_pointer - local.get $bufferSize - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $buffer - i32.store offset=8 - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne + i32.add + f32.load + local.set $value + i32.const 0 drop - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $buffer - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $6 - call $~lib/array/Array#set:buffer - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $buffer - call $~lib/array/Array#set:dataStart - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $bufferSize - call $~lib/array/Array#set:byteLength - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $length - call $~lib/array/Array#set:length_ - local.get $this - local.set $6 + local.get $value + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $4 + return ) - (func $std/array/Ref#constructor (param $this i32) (param $v i32) (result i32) - (local $2 i32) + (func $std/array/isArraysEqual (param $a i32) (param $b i32) (param $len i32) (result i32) + (local $i i32) + (local $4 f32) + (local $5 f32) + (local $x f64) + (local $x|7 f64) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this + i32.const 0 + i32.store + local.get $len i32.eqz if + local.get $a + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $this + local.get $8 i32.store - end - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $v - call $std/array/Ref#set:v - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (param $this i32) (param $length i32) (param $alignLog2 i32) (result i32) - (local $buffer i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $this - i32.eqz - if + local.get $8 + call $~lib/array/Array#get:length + local.set $len + local.get $len + local.get $b + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $this + local.get $8 i32.store - end - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 + local.get $8 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $a + local.get $b + i32.eq + if + i32.const 1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + end i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:dataStart - local.get $this - local.set $4 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + block $for-continue|0 + i32.const 1 + drop + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + local.tee $4 + local.get $4 + f32.ne + if (result i32) + local.get $b + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + local.tee $5 + local.get $5 + f32.ne + else + i32.const 0 + end + if + br $for-continue|0 + end + block $~lib/math/NativeMath.signbit|inlined.0 (result i32) + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + f64.promote_f32 + local.set $x + local.get $x + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + br $~lib/math/NativeMath.signbit|inlined.0 + end + i32.const 0 + i32.ne + block $~lib/math/NativeMath.signbit|inlined.1 (result i32) + local.get $b + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + f64.promote_f32 + local.set $x|7 + local.get $x|7 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + br $~lib/math/NativeMath.signbit|inlined.1 + end + i32.const 0 + i32.ne + i32.ne + if + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + local.get $b + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + f32.ne + if + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#fill@varargs (param $this i32) (param $value f32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:byteLength - local.get $length - i32.const 1073741820 - local.get $alignLog2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 576 - i32.const 19 - i32.const 57 - call $~lib/builtins/abort - unreachable + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $start + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end end - global.get $~lib/memory/__stack_pointer - local.get $length - local.get $alignLog2 - i32.shl - local.tee $length - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $buffer - i32.store offset=8 - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop local.get $this local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 - i32.store offset=4 + i32.store local.get $4 - local.get $buffer + local.get $value + local.get $start + local.get $end + call $~lib/array/Array#fill local.set $4 global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 - i32.store offset=12 - local.get $4 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - local.get $this - local.set $4 + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $buffer - call $~lib/arraybuffer/ArrayBufferView#set:dataStart - local.get $this - local.set $4 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $length - call $~lib/arraybuffer/ArrayBufferView#set:byteLength + i32.const 0 + i32.store local.get $this - local.set $4 + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $1 + return ) - (func $~lib/typedarray/Uint8Array#constructor (param $this i32) (param $length i32) (result i32) + (func $std/array/internalCapacity (param $array i32) (result i32) + (local $buffer i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -10362,38 +10725,45 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end global.get $~lib/memory/__stack_pointer - local.get $this + local.get $array local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.tee $buffer i32.store offset=4 + local.get $buffer + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $length - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $this i32.store - local.get $this + local.get $2 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 2 + i32.shr_s local.set $2 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $2 + return ) - (func $~lib/array/Array#fill (param $this i32) (param $value i32) (param $start i32) (param $end i32) (result i32) - (local $4 i32) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -10402,61 +10772,167 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 2400 + i32.const 2448 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#push (param $this i32) (param $value i32) (result i32) + (local $oldLen i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - drop + i32.store local.get $this local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:dataStart + call $~lib/array/Array#get:length_ + local.set $oldLen + local.get $oldLen + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 0 + drop local.get $this local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:length_ + call $~lib/array/Array#get:dataStart + local.get $oldLen + i32.const 2 + i32.shl + i32.add local.get $value - local.get $start - local.get $end - call $~lib/util/bytes/FILL + i32.store local.get $this local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $4 - return - ) - (func $~lib/array/Array#get:length (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 i32.store - local.get $1 - call $~lib/array/Array#get:length_ - local.set $1 + local.get $4 + local.get $len + call $~lib/array/Array#set:length_ + local.get $len + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $4 return ) - (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) (local $value i32) (local $3 i32) global.get $~lib/memory/__stack_pointer @@ -10474,11 +10950,11 @@ local.get $3 i32.store local.get $3 - call $~lib/array/Array#get:length_ + call $~lib/array/Array#get:length_ i32.ge_u if i32.const 320 - i32.const 80 + i32.const 2448 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -10490,12 +10966,12 @@ local.get $3 i32.store local.get $3 - call $~lib/array/Array#get:dataStart + call $~lib/array/Array#get:dataStart local.get $index - i32.const 0 + i32.const 2 i32.shl i32.add - i32.load8_u + i32.load local.set $value i32.const 0 drop @@ -10508,9 +10984,10 @@ local.get $3 return ) - (func $std/array/isArraysEqual (param $a i32) (param $b i32) (param $len i32) (result i32) - (local $i i32) - (local $4 i32) + (func $~lib/array/Array#pop (param $this i32) (result i32) + (local $len i32) + (local $val i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -10519,212 +10996,59 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + local.set $len local.get $len - i32.eqz + i32.const 1 + i32.lt_s if - local.get $a - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#get:length - local.set $len - local.get $len - local.get $b - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - end - local.get $a - local.get $b - i32.eq - if - i32.const 1 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - end - end - i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i - local.get $len - i32.lt_s - if - i32.const 0 - drop - local.get $a - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - local.get $i - call $~lib/array/Array#__get - local.get $b - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - local.get $i - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - end - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 - end - end - i32.const 1 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - ) - (func $~lib/array/Array#fill@varargs (param $this i32) (param $value i32) (param $start i32) (param $end i32) (result i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $start - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $end + i32.const 3584 + i32.const 2448 + i32.const 271 + i32.const 18 + call $~lib/builtins/abort + unreachable end local.get $this - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store - local.get $4 - local.get $value - local.get $start - local.get $end - call $~lib/array/Array#fill - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/array/Array#fill (param $this i32) (param $value i32) (param $start i32) (param $end i32) (result i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $len + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - drop - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#get:dataStart - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#get:length_ - local.get $value - local.get $start - local.get $end - call $~lib/util/bytes/FILL - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.tee $len + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - ) - (func $~lib/array/Array#get:length (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i32.load + local.set $val local.get $this - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store - local.get $1 - call $~lib/array/Array#get:length_ - local.set $1 + local.get $3 + local.get $len + call $~lib/array/Array#set:length_ + local.get $val + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $3 return ) - (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) - (local $value i32) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -10741,15 +11065,37 @@ local.get $3 i32.store local.get $3 - call $~lib/array/Array#get:length_ + call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 2448 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ end local.get $this local.set $3 @@ -10757,177 +11103,26 @@ local.get $3 i32.store local.get $3 - call $~lib/array/Array#get:dataStart + call $~lib/array/Array#get:dataStart local.get $index i32.const 2 i32.shl i32.add - i32.load - local.set $value - i32.const 0 - drop local.get $value - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $std/array/isArraysEqual (param $a i32) (param $b i32) (param $len i32) (result i32) - (local $i i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 i32.store - local.get $len - i32.eqz - if - local.get $a - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#get:length - local.set $len - local.get $len - local.get $b - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - end - local.get $a - local.get $b - i32.eq - if - i32.const 1 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - end - end - i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i - local.get $len - i32.lt_s - if - i32.const 0 - drop - local.get $a - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - local.get $i - call $~lib/array/Array#__get - local.get $b - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - local.get $i - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - end - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 - end - end i32.const 1 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - ) - (func $~lib/array/Array#fill@varargs (param $this i32) (param $value i32) (param $start i32) (param $end i32) (result i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $start - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $end - end + drop local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 local.get $value - local.get $start - local.get $end - call $~lib/array/Array#fill - local.set $4 + i32.const 1 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 ) - (func $~lib/array/Array#fill (param $this i32) (param $value f32) (param $start i32) (param $end i32) (result i32) - (local $4 i32) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -10936,36 +11131,25 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 - drop local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#get:dataStart + local.get $newLength + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity local.get $this - local.set $4 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.store - local.get $4 - call $~lib/array/Array#get:length_ - local.get $value - local.get $start - local.get $end - call $~lib/util/bytes/FILL - local.get $this - local.set $4 + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - return ) - (func $~lib/array/Array#get:length (param $this i32) (result i32) + (func $~lib/array/Array#get:length (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -10981,7 +11165,7 @@ local.get $1 i32.store local.get $1 - call $~lib/array/Array#get:length_ + call $~lib/array/Array#get:length_ local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -10990,10 +11174,10 @@ local.get $1 return ) - (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result f32) - (local $value f32) - (local $3 i32) - (local $4 f32) + (func $~lib/array/Array#at (param $this i32) (param $index i32) (result i32) + (local $len i32) + (local $value i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -11002,35 +11186,46 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $index local.get $this - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store - local.get $3 - call $~lib/array/Array#get:length_ + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + local.get $index + i32.const 0 + local.get $len + local.get $index + i32.const 0 + i32.ge_s + select + i32.add + local.set $index + local.get $index + local.get $len i32.ge_u if i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 + i32.const 2448 + i32.const 143 + i32.const 33 call $~lib/builtins/abort unreachable end local.get $this - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store - local.get $3 - call $~lib/array/Array#get:dataStart + local.get $4 + call $~lib/array/Array#get:dataStart local.get $index i32.const 2 i32.shl i32.add - f32.load + i32.load local.set $value i32.const 0 drop @@ -11043,49 +11238,357 @@ local.get $4 return ) - (func $std/array/isArraysEqual (param $a i32) (param $b i32) (param $len i32) (result i32) - (local $i i32) - (local $4 f32) - (local $5 f32) - (local $x f64) - (local $x|7 f64) + (func $~lib/array/Array#concat (param $this i32) (param $other i32) (result i32) + (local $thisLen i32) + (local $otherLen i32) + (local $outLen i32) + (local $out i32) + (local $outStart i32) + (local $thisSize i32) (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 i32.store - local.get $len - i32.eqz - if - local.get $a - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - call $~lib/array/Array#get:length - local.set $len - local.get $len + local.get $8 + call $~lib/array/Array#get:length_ + local.set $thisLen + local.get $other + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length_ + local.set $otherLen + local.get $thisLen + local.get $otherLen + i32.add + local.set $outLen + local.get $outLen + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 2400 + i32.const 2448 + i32.const 224 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $outLen + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $out + i32.store offset=4 + local.get $out + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:dataStart + local.set $outStart + local.get $thisLen + i32.const 2 + i32.shl + local.set $thisSize + i32.const 0 + drop + local.get $outStart + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:dataStart + local.get $thisSize + memory.copy + local.get $outStart + local.get $thisSize + i32.add + local.get $other + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:dataStart + local.get $otherLen + i32.const 2 + i32.shl + memory.copy + local.get $out + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#copyWithin (param $this i32) (param $target i32) (param $start i32) (param $end i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $to i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $from i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $last i32) + (local $23 i32) + (local $24 i32) + (local $count i32) + (local $26 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store + local.get $26 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store + local.get $26 + call $~lib/array/Array#get:length_ + local.set $len + local.get $end + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $end + local.get $target + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $target + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + else + local.get $target + local.tee $10 + local.get $len + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $to + local.get $start + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $start + i32.add + local.tee $13 + i32.const 0 + local.tee $14 + local.get $13 + local.get $14 + i32.gt_s + select + else + local.get $start + local.tee $15 + local.get $len + local.tee $16 + local.get $15 + local.get $16 + i32.lt_s + select + end + local.set $from + local.get $end + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end + i32.add + local.tee $18 + i32.const 0 + local.tee $19 + local.get $18 + local.get $19 + i32.gt_s + select + else + local.get $end + local.tee $20 + local.get $len + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + end + local.set $last + local.get $last + local.get $from + i32.sub + local.tee $23 + local.get $len + local.get $to + i32.sub + local.tee $24 + local.get $23 + local.get $24 + i32.lt_s + select + local.set $count + local.get $ptr + local.get $to + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $from + i32.const 2 + i32.shl + i32.add + local.get $count + i32.const 2 + i32.shl + memory.copy + local.get $this + local.set $26 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $26 + return + ) + (func $~lib/array/Array#copyWithin@varargs (param $this i32) (param $target i32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 2 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $target + local.get $start + local.get $end + call $~lib/array/Array#copyWithin + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $std/array/isArraysEqual (param $a i32) (param $b i32) (param $len i32) (result i32) + (local $i i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.eqz + if + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + local.set $len + local.get $len local.get $b - local.set $8 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $4 i32.store - local.get $8 - call $~lib/array/Array#get:length + local.get $4 + call $~lib/array/Array#get:length i32.ne if i32.const 0 - local.set $8 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $4 return end local.get $a @@ -11093,12 +11596,12 @@ i32.eq if i32.const 1 - local.set $8 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $4 return end end @@ -11109,118 +11612,34 @@ local.get $len i32.lt_s if - block $for-continue|0 - i32.const 1 - drop - local.get $a - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $i - call $~lib/array/Array#__get - local.tee $4 - local.get $4 - f32.ne - if (result i32) - local.get $b - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $i - call $~lib/array/Array#__get - local.tee $5 - local.get $5 - f32.ne - else - i32.const 0 - end - if - br $for-continue|0 - end - block $~lib/math/NativeMath.signbit|inlined.0 (result i32) - local.get $a - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $i - call $~lib/array/Array#__get - f64.promote_f32 - local.set $x - local.get $x - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - br $~lib/math/NativeMath.signbit|inlined.0 - end - i32.const 0 - i32.ne - block $~lib/math/NativeMath.signbit|inlined.1 (result i32) - local.get $b - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $i - call $~lib/array/Array#__get - f64.promote_f32 - local.set $x|7 - local.get $x|7 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - br $~lib/math/NativeMath.signbit|inlined.1 - end + i32.const 0 + drop + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array#__get + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array#__get + i32.ne + if i32.const 0 - i32.ne - i32.ne - if - i32.const 0 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - end - local.get $a - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $i - call $~lib/array/Array#__get - local.get $b - local.set $8 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $i - call $~lib/array/Array#__get - f32.ne - if - i32.const 0 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - end + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return end local.get $i i32.const 1 @@ -11230,15 +11649,17 @@ end end i32.const 1 - local.set $8 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $4 return ) - (func $~lib/array/Array#fill@varargs (param $this i32) (param $value f32) (param $start i32) (param $end i32) (result i32) + (func $~lib/array/Array#unshift (param $this i32) (param $value i32) (result i32) + (local $len i32) + (local $ptr i32) (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -11248,42 +11669,67 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $start - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $end - end local.get $this local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 i32.store local.get $4 - local.get $value - local.get $start - local.get $end - call $~lib/array/Array#fill + call $~lib/array/Array#get:length_ + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this local.set $4 global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $ptr i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/array/Array#get:length (param $this i32) (result i32) - (local $1 i32) + local.get $ptr + local.get $len + i32.const 1 + i32.sub + i32.const 2 + i32.shl + memory.copy + local.get $ptr + local.get $value + i32.store + i32.const 0 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $len + call $~lib/array/Array#set:length_ + local.get $len + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#shift (param $this i32) (result i32) + (local $len i32) + (local $base i32) + (local $element i32) + (local $lastIndex i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -11293,23 +11739,89 @@ i32.const 0 i32.store local.get $this - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store - local.get $1 + local.get $5 call $~lib/array/Array#get:length_ - local.set $1 + local.set $len + local.get $len + i32.const 1 + i32.lt_s + if + i32.const 3584 + i32.const 2448 + i32.const 330 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $base + local.get $base + i32.load + local.set $element + local.get $len + i32.const 1 + i32.sub + local.set $lastIndex + local.get $base + local.get $base + i32.const 4 + i32.add + local.get $lastIndex + i32.const 2 + i32.shl + memory.copy + i32.const 0 + drop + local.get $base + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $lastIndex + call $~lib/array/Array#set:length_ + local.get $element + local.set $5 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $5 return ) - (func $std/array/internalCapacity (param $array i32) (result i32) - (local $buffer i32) - (local $2 i32) + (func $~lib/array/Array#slice (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $slice i32) + (local $sliceBase i32) + (local $thisBase i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -11318,45 +11830,122 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + local.get $this + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $array - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $17 i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.tee $buffer + local.get $17 + call $~lib/array/Array#get:length_ + local.set $len + local.get $start + i32.const 0 + i32.lt_s + if (result i32) + local.get $start + local.get $len + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $start + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + end + local.set $start + local.get $end + i32.const 0 + i32.lt_s + if (result i32) + local.get $end + local.get $len + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + else + local.get $end + local.tee $10 + local.get $len + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $end + local.get $end + local.get $start + i32.sub + local.tee $12 + i32.const 0 + local.tee $13 + local.get $12 + local.get $13 + i32.gt_s + select + local.set $len + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $slice i32.store offset=4 - local.get $buffer - local.set $2 + local.get $slice + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $17 i32.store - local.get $2 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.get $17 + call $~lib/array/Array#get:dataStart + local.set $sliceBase + local.get $this + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/array/Array#get:dataStart + local.get $start i32.const 2 - i32.shr_s - local.set $2 + i32.shl + i32.add + local.set $thisBase + i32.const 0 + drop + local.get $sliceBase + local.get $thisBase + local.get $len + i32.const 2 + i32.shl + memory.copy + local.get $slice + local.set $17 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $17 return ) - (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) - (local $oldCapacity i32) - (local $oldData i32) - (local $6 i32) - (local $7 i32) - (local $newCapacity i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $newData i32) - (local $14 i32) + (func $~lib/array/Array#slice@varargs (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -11365,109 +11954,39 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $array - local.set $14 - global.get $~lib/memory/__stack_pointer - local.get $14 - i32.store - local.get $14 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - local.set $oldCapacity - local.get $newSize - local.get $oldCapacity - local.get $alignLog2 - i32.shr_u - i32.gt_u - if - local.get $newSize - i32.const 1073741820 - local.get $alignLog2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $array - local.set $14 - global.get $~lib/memory/__stack_pointer - local.get $14 - i32.store - local.get $14 - call $~lib/arraybuffer/ArrayBufferView#get:buffer - local.set $oldData - local.get $newSize - local.tee $6 - i32.const 8 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_u - select - local.get $alignLog2 - i32.shl - local.set $newCapacity - local.get $canGrow - if - local.get $oldCapacity - i32.const 1 - i32.shl - local.tee $9 - i32.const 1073741820 - local.tee $10 - local.get $9 - local.get $10 - i32.lt_u - select - local.tee $11 - local.get $newCapacity - local.tee $12 - local.get $11 - local.get $12 - i32.gt_u - select - local.set $newCapacity - end - local.get $oldData - local.get $newCapacity - call $~lib/rt/itcms/__renew - local.set $newData - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $newData - local.get $oldData - i32.ne - if - local.get $array - local.get $newData - i32.store - local.get $array - local.get $newData - i32.store offset=4 - local.get $array - local.get $newData + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end i32.const 0 - call $~lib/rt/itcms/__link + local.set $start end - local.get $array - local.get $newCapacity - i32.store offset=8 + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $start + local.get $end + call $~lib/array/Array#slice + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/array/Array#push (param $this i32) (param $value i32) (result i32) - (local $oldLen i32) - (local $len i32) - (local $4 i32) + (func $~lib/array/Array#reverse (param $this i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -11477,55 +11996,123 @@ i32.const 0 i32.store local.get $this - local.set $4 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store - local.get $4 + local.get $1 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 call $~lib/array/Array#get:length_ - local.set $oldLen - local.get $oldLen - i32.const 1 + call $~lib/util/bytes/REVERSE + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $len + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#reverse (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $this - local.get $len - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + call $~lib/util/bytes/REVERSE + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#reverse (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - drop + i32.store local.get $this - local.set $4 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store - local.get $4 - call $~lib/array/Array#get:dataStart - local.get $oldLen - i32.const 2 - i32.shl + local.get $1 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + call $~lib/util/bytes/REVERSE + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $value + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store local.get $this - local.set $4 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store - local.get $4 - local.get $len - call $~lib/array/Array#set:length_ - local.get $len - local.set $4 + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $1 return ) - (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) (local $value i32) (local $3 i32) global.get $~lib/memory/__stack_pointer @@ -11543,11 +12130,11 @@ local.get $3 i32.store local.get $3 - call $~lib/array/Array#get:length_ + call $~lib/array/Array#get:length_ i32.ge_u if i32.const 320 - i32.const 80 + i32.const 2448 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -11559,12 +12146,12 @@ local.get $3 i32.store local.get $3 - call $~lib/array/Array#get:dataStart + call $~lib/array/Array#get:dataStart local.get $index - i32.const 2 + i32.const 1 i32.shl i32.add - i32.load + i32.load16_u local.set $value i32.const 0 drop @@ -11577,10 +12164,12 @@ local.get $3 return ) - (func $~lib/array/Array#pop (param $this i32) (result i32) + (func $~lib/array/Array#indexOf (param $this i32) (param $value i32) (param $fromIndex i32) (result i32) (local $len i32) - (local $val i32) - (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $ptr i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -11590,59 +12179,102 @@ i32.const 0 i32.store local.get $this - local.set $3 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 i32.store - local.get $3 + local.get $7 call $~lib/array/Array#get:length_ local.set $len local.get $len - i32.const 1 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $fromIndex + local.get $len + i32.ge_s + end + if + i32.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $fromIndex + i32.const 0 i32.lt_s if - i32.const 1616 - i32.const 80 - i32.const 271 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $len + local.get $fromIndex + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $fromIndex end local.get $this - local.set $3 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 i32.store - local.get $3 + local.get $7 call $~lib/array/Array#get:dataStart - local.get $len - i32.const 1 - i32.sub - local.tee $len - i32.const 2 - i32.shl - i32.add - i32.load - local.set $val - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - local.get $len - call $~lib/array/Array#set:length_ - local.get $val - local.set $3 + local.set $ptr + loop $while-continue|0 + local.get $fromIndex + local.get $len + i32.lt_s + if + local.get $ptr + local.get $fromIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.get $value + i32.eq + if + local.get $fromIndex + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $fromIndex + i32.const 1 + i32.add + local.set $fromIndex + br $while-continue|0 + end + end + i32.const -1 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $7 return ) - (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) - (local $3 i32) + (func $~lib/array/Array#indexOf (param $this i32) (param $value f32) (param $fromIndex i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $ptr i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -11651,71 +12283,103 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $index local.get $this - local.set $3 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 i32.store - local.get $3 - call $~lib/array/Array#get:length_ - i32.ge_u - if - local.get $index - i32.const 0 - i32.lt_s - if - i32.const 320 - i32.const 80 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $this - local.get $index - i32.const 1 - i32.add - i32.const 2 + local.get $7 + call $~lib/array/Array#get:length_ + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) i32.const 1 - call $~lib/array/ensureCapacity - local.get $this - local.set $3 + else + local.get $fromIndex + local.get $len + i32.ge_s + end + if + i32.const -1 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - local.get $index - i32.const 1 + i32.const 4 i32.add - call $~lib/array/Array#set:length_ + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $fromIndex + i32.const 0 + i32.lt_s + if + local.get $len + local.get $fromIndex + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $fromIndex end local.get $this - local.set $3 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#get:dataStart - local.get $index - i32.const 2 - i32.shl - i32.add - local.get $value + local.get $7 i32.store - i32.const 1 - drop - local.get $this - local.get $value - i32.const 1 - call $~lib/rt/itcms/__link + local.get $7 + call $~lib/array/Array#get:dataStart + local.set $ptr + loop $while-continue|0 + local.get $fromIndex + local.get $len + i32.lt_s + if + local.get $ptr + local.get $fromIndex + i32.const 2 + i32.shl + i32.add + f32.load + local.get $value + f32.eq + if + local.get $fromIndex + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $fromIndex + i32.const 1 + i32.add + local.set $fromIndex + br $while-continue|0 + end + end + i32.const -1 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $7 + return ) - (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) - (local $2 i32) + (func $~lib/array/Array#indexOf (param $this i32) (param $value f64) (param $fromIndex i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $ptr i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -11725,25 +12389,100 @@ i32.const 0 i32.store local.get $this - local.get $newLength - i32.const 2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:length_ + local.set $len + local.get $len i32.const 0 - call $~lib/array/ensureCapacity + i32.eq + if (result i32) + i32.const 1 + else + local.get $fromIndex + local.get $len + i32.ge_s + end + if + i32.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $fromIndex + i32.const 0 + i32.lt_s + if + local.get $len + local.get $fromIndex + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $fromIndex + end local.get $this - local.set $2 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $7 i32.store - local.get $2 - local.get $newLength - call $~lib/array/Array#set:length_ + local.get $7 + call $~lib/array/Array#get:dataStart + local.set $ptr + loop $while-continue|0 + local.get $fromIndex + local.get $len + i32.lt_s + if + local.get $ptr + local.get $fromIndex + i32.const 3 + i32.shl + i32.add + f64.load + local.get $value + f64.eq + if + local.get $fromIndex + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $fromIndex + i32.const 1 + i32.add + local.set $fromIndex + br $while-continue|0 + end + end + i32.const -1 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $7 + return ) - (func $~lib/array/Array#get:length (param $this i32) (result i32) - (local $1 i32) + (func $~lib/array/Array#lastIndexOf (param $this i32) (param $value i32) (param $fromIndex i32) (result i32) + (local $len i32) + (local $ptr i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -11753,24 +12492,94 @@ i32.const 0 i32.store local.get $this - local.set $1 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store - local.get $1 - call $~lib/array/Array#get:length_ - local.set $1 + local.get $5 + call $~lib/array/Array#get:length_ + local.set $len + local.get $len + i32.const 0 + i32.eq + if + i32.const -1 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $fromIndex + i32.const 0 + i32.lt_s + if + local.get $len + local.get $fromIndex + i32.add + local.set $fromIndex + else + local.get $fromIndex + local.get $len + i32.ge_s + if + local.get $len + i32.const 1 + i32.sub + local.set $fromIndex + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $ptr + loop $while-continue|0 + local.get $fromIndex + i32.const 0 + i32.ge_s + if + local.get $ptr + local.get $fromIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.get $value + i32.eq + if + local.get $fromIndex + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $fromIndex + i32.const 1 + i32.sub + local.set $fromIndex + br $while-continue|0 + end + end + i32.const -1 + local.set $5 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $5 return ) - (func $~lib/array/Array#at (param $this i32) (param $index i32) (result i32) - (local $len i32) - (local $value i32) - (local $4 i32) + (func $~lib/array/Array#lastIndexOf@varargs (param $this i32) (param $value i32) (param $fromIndex i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -11779,186 +12588,200 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#get:length_ - local.set $len - local.get $index - i32.const 0 - local.get $len - local.get $index - i32.const 0 - i32.ge_s - select - i32.add - local.set $index - local.get $index - local.get $len - i32.ge_u - if - i32.const 320 - i32.const 80 - i32.const 143 - i32.const 33 - call $~lib/builtins/abort - unreachable + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + local.set $fromIndex end local.get $this - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store - local.get $4 - call $~lib/array/Array#get:dataStart - local.get $index - i32.const 2 - i32.shl - i32.add - i32.load - local.set $value - i32.const 0 - drop + local.get $3 local.get $value - local.set $4 + local.get $fromIndex + call $~lib/array/Array#lastIndexOf + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - return + local.get $3 ) - (func $~lib/array/Array#concat (param $this i32) (param $other i32) (result i32) - (local $thisLen i32) - (local $otherLen i32) - (local $outLen i32) - (local $out i32) - (local $outStart i32) - (local $thisSize i32) - (local $8 i32) + (func $~lib/array/Array#includes (param $this i32) (param $value i32) (param $fromIndex i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store + i32.const 0 + drop local.get $this - local.set $8 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $3 i32.store - local.get $8 - call $~lib/array/Array#get:length_ - local.set $thisLen - local.get $other - local.set $8 + local.get $3 + local.get $value + local.get $fromIndex + call $~lib/array/Array#indexOf + i32.const 0 + i32.ge_s + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - call $~lib/array/Array#get:length_ - local.set $otherLen - local.get $thisLen - local.get $otherLen + i32.const 4 i32.add - local.set $outLen - local.get $outLen - i32.const 1073741820 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 224 - i32.const 60 - call $~lib/builtins/abort - unreachable - end + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#includes (param $this i32) (param $value f32) (param $fromIndex i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $ptr i32) + (local $elem f32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - local.get $outLen - i32.const 2 i32.const 4 - i32.const 0 - call $~lib/rt/__newArray - local.tee $out - i32.store offset=4 - local.get $out - local.set $8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - call $~lib/array/Array#get:dataStart - local.set $outStart - local.get $thisLen - i32.const 2 - i32.shl - local.set $thisSize i32.const 0 + i32.store + i32.const 1 drop - local.get $outStart local.get $this local.set $8 global.get $~lib/memory/__stack_pointer local.get $8 i32.store local.get $8 - call $~lib/array/Array#get:dataStart - local.get $thisSize - memory.copy - local.get $outStart - local.get $thisSize - i32.add - local.get $other + call $~lib/array/Array#get:length_ + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $fromIndex + local.get $len + i32.ge_s + end + if + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $fromIndex + i32.const 0 + i32.lt_s + if + local.get $len + local.get $fromIndex + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $fromIndex + end + local.get $this local.set $8 global.get $~lib/memory/__stack_pointer local.get $8 i32.store local.get $8 - call $~lib/array/Array#get:dataStart - local.get $otherLen - i32.const 2 - i32.shl - memory.copy - local.get $out + call $~lib/array/Array#get:dataStart + local.set $ptr + loop $while-continue|0 + local.get $fromIndex + local.get $len + i32.lt_s + if + local.get $ptr + local.get $fromIndex + i32.const 2 + i32.shl + i32.add + f32.load + local.set $elem + local.get $elem + local.get $value + f32.eq + if (result i32) + i32.const 1 + else + local.get $elem + local.get $elem + f32.ne + local.get $value + local.get $value + f32.ne + i32.and + end + if + i32.const 1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $fromIndex + i32.const 1 + i32.add + local.set $fromIndex + br $while-continue|0 + end + end + i32.const 0 local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $8 return ) - (func $~lib/array/Array#copyWithin (param $this i32) (param $target i32) (param $start i32) (param $end i32) (result i32) - (local $ptr i32) + (func $~lib/array/Array#includes (param $this i32) (param $value f64) (param $fromIndex i32) (result i32) (local $len i32) - (local $6 i32) - (local $7 i32) + (local $4 i32) + (local $5 i32) + (local $ptr i32) + (local $elem f64) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $to i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $from i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $last i32) - (local $23 i32) - (local $24 i32) - (local $count i32) - (local $26 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -11967,144 +12790,265 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + i32.const 1 + drop local.get $this - local.set $26 - global.get $~lib/memory/__stack_pointer - local.get $26 - i32.store - local.get $26 - call $~lib/array/Array#get:dataStart - local.set $ptr - local.get $this - local.set $26 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $26 + local.get $8 i32.store - local.get $26 - call $~lib/array/Array#get:length_ + local.get $8 + call $~lib/array/Array#get:length_ local.set $len - local.get $end - local.tee $6 local.get $len - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - local.set $end - local.get $target i32.const 0 - i32.lt_s + i32.eq if (result i32) + i32.const 1 + else + local.get $fromIndex local.get $len - local.get $target - i32.add - local.tee $8 + i32.ge_s + end + if i32.const 0 - local.tee $9 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $8 - local.get $9 - i32.gt_s - select - else - local.get $target - local.tee $10 - local.get $len - local.tee $11 - local.get $10 - local.get $11 - i32.lt_s - select + return end - local.set $to - local.get $start + local.get $fromIndex i32.const 0 i32.lt_s - if (result i32) + if local.get $len - local.get $start + local.get $fromIndex i32.add - local.tee $13 + local.tee $4 i32.const 0 - local.tee $14 - local.get $13 - local.get $14 + local.tee $5 + local.get $4 + local.get $5 i32.gt_s select - else - local.get $start - local.tee $15 + local.set $fromIndex + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:dataStart + local.set $ptr + loop $while-continue|0 + local.get $fromIndex local.get $len - local.tee $16 - local.get $15 - local.get $16 i32.lt_s - select + if + local.get $ptr + local.get $fromIndex + i32.const 3 + i32.shl + i32.add + f64.load + local.set $elem + local.get $elem + local.get $value + f64.eq + if (result i32) + i32.const 1 + else + local.get $elem + local.get $elem + f64.ne + local.get $value + local.get $value + f64.ne + i32.and + end + if + i32.const 1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $fromIndex + i32.const 1 + i32.add + local.set $fromIndex + br $while-continue|0 + end end - local.set $from - local.get $end + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#splice (param $this i32) (param $start i32) (param $deleteCount i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $result i32) + (local $resultStart i32) + (local $thisStart i32) + (local $thisBase i32) + (local $offset i32) + (local $17 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/array/Array#get:length_ + local.set $len + local.get $start i32.const 0 i32.lt_s if (result i32) local.get $len - local.get $end + local.get $start i32.add - local.tee $18 + local.tee $4 i32.const 0 - local.tee $19 - local.get $18 - local.get $19 + local.tee $5 + local.get $4 + local.get $5 i32.gt_s select else - local.get $end - local.tee $20 + local.get $start + local.tee $6 local.get $len - local.tee $21 - local.get $20 - local.get $21 + local.tee $7 + local.get $6 + local.get $7 i32.lt_s select end - local.set $last - local.get $last - local.get $from - i32.sub - local.tee $23 + local.set $start + local.get $deleteCount + local.tee $8 local.get $len - local.get $to + local.get $start i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $9 + local.get $8 + local.get $9 i32.lt_s select - local.set $count - local.get $ptr - local.get $to + local.tee $10 + i32.const 0 + local.tee $11 + local.get $10 + local.get $11 + i32.gt_s + select + local.set $deleteCount + global.get $~lib/memory/__stack_pointer + local.get $deleteCount i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $from + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $result + i32.store offset=4 + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/array/Array#get:dataStart + local.set $resultStart + local.get $this + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/array/Array#get:dataStart + local.set $thisStart + local.get $thisStart + local.get $start i32.const 2 i32.shl i32.add - local.get $count + local.set $thisBase + local.get $resultStart + local.get $thisBase + local.get $deleteCount i32.const 2 i32.shl memory.copy + local.get $start + local.get $deleteCount + i32.add + local.set $offset + local.get $len + local.get $offset + i32.ne + if + local.get $thisBase + local.get $thisStart + local.get $offset + i32.const 2 + i32.shl + i32.add + local.get $len + local.get $offset + i32.sub + i32.const 2 + i32.shl + memory.copy + end local.get $this - local.set $26 + local.set $17 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $17 + i32.store + local.get $17 + local.get $len + local.get $deleteCount + i32.sub + call $~lib/array/Array#set:length_ + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $26 + local.get $17 return ) - (func $~lib/array/Array#copyWithin@varargs (param $this i32) (param $target i32) (param $start i32) (param $end i32) (result i32) - (local $4 i32) + (func $~lib/array/Array#splice@varargs (param $this i32) (param $start i32) (param $deleteCount i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -12117,212 +13061,251 @@ block $0of1 block $outOfRange global.get $~argumentsLength - i32.const 2 + i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange end unreachable end global.get $~lib/builtins/i32.MAX_VALUE - local.set $end + local.set $deleteCount end local.get $this - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store - local.get $4 - local.get $target + local.get $3 local.get $start - local.get $end - call $~lib/array/Array#copyWithin - local.set $4 + local.get $deleteCount + call $~lib/array/Array#splice + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 ) - (func $std/array/isArraysEqual (param $a i32) (param $b i32) (param $len i32) (result i32) - (local $i i32) + (func $~lib/array/Array#splice (param $this i32) (param $start i32) (param $deleteCount i32) (result i32) + (local $len i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $result i32) + (local $resultStart i32) + (local $thisStart i32) + (local $thisBase i32) + (local $offset i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 + i64.const 0 + i64.store + local.get $this + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 i32.store - local.get $len - i32.eqz - if - local.get $a - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#get:length - local.set $len + local.get $17 + call $~lib/array/Array#get:length_ + local.set $len + local.get $start + i32.const 0 + i32.lt_s + if (result i32) local.get $len - local.get $b - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store + local.get $start + i32.add + local.tee $4 + i32.const 0 + local.tee $5 local.get $4 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - end - local.get $a - local.get $b - i32.eq - if - i32.const 1 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - end + local.get $5 + i32.gt_s + select + else + local.get $start + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select end + local.set $start + local.get $deleteCount + local.tee $8 + local.get $len + local.get $start + i32.sub + local.tee $9 + local.get $8 + local.get $9 + i32.lt_s + select + local.tee $10 i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i + local.tee $11 + local.get $10 + local.get $11 + i32.gt_s + select + local.set $deleteCount + global.get $~lib/memory/__stack_pointer + local.get $deleteCount + i32.const 2 + i32.const 10 + i32.const 0 + call $~lib/rt/__newArray + local.tee $result + i32.store offset=4 + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/array/Array#get:dataStart + local.set $resultStart + local.get $this + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/array/Array#get:dataStart + local.set $thisStart + local.get $thisStart + local.get $start + i32.const 2 + i32.shl + i32.add + local.set $thisBase + local.get $resultStart + local.get $thisBase + local.get $deleteCount + i32.const 2 + i32.shl + memory.copy + local.get $start + local.get $deleteCount + i32.add + local.set $offset + local.get $len + local.get $offset + i32.ne + if + local.get $thisBase + local.get $thisStart + local.get $offset + i32.const 2 + i32.shl + i32.add local.get $len - i32.lt_s - if - i32.const 0 - drop - local.get $a - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - local.get $i - call $~lib/array/Array#__get - local.get $b - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - local.get $i - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - end - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 - end + local.get $offset + i32.sub + i32.const 2 + i32.shl + memory.copy end - i32.const 1 - local.set $4 + local.get $this + local.set $17 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $17 + i32.store + local.get $17 + local.get $len + local.get $deleteCount + i32.sub + call $~lib/array/Array#set:length_ + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $17 return ) - (func $~lib/array/Array#unshift (param $this i32) (param $value i32) (result i32) - (local $len i32) - (local $ptr i32) - (local $4 i32) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + local.get $index local.get $this - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store - local.get $4 - call $~lib/array/Array#get:length_ - i32.const 1 - i32.add - local.set $len - local.get $this - local.get $len - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 2448 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $this - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store - local.get $4 - call $~lib/array/Array#get:dataStart - local.set $ptr - local.get $ptr - i32.const 4 - i32.add - local.get $ptr - local.get $len - i32.const 1 - i32.sub + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index i32.const 2 i32.shl - memory.copy - local.get $ptr - local.get $value - i32.store + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop i32.const 0 + i32.eqz drop - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - local.get $len - call $~lib/array/Array#set:length_ - local.get $len - local.set $4 + local.get $value + i32.eqz + if + i32.const 7360 + i32.const 2448 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 return ) - (func $~lib/array/Array#shift (param $this i32) (result i32) - (local $len i32) - (local $base i32) - (local $element i32) - (local $lastIndex i32) - (local $5 i32) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -12331,75 +13314,70 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $index local.get $this - local.set $5 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $3 i32.store - local.get $5 - call $~lib/array/Array#get:length_ - local.set $len - local.get $len - i32.const 1 - i32.lt_s + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u if - i32.const 1616 - i32.const 80 - i32.const 330 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 2448 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ end local.get $this - local.set $5 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $3 i32.store - local.get $5 - call $~lib/array/Array#get:dataStart - local.set $base - local.get $base - i32.load - local.set $element - local.get $len - i32.const 1 - i32.sub - local.set $lastIndex - local.get $base - local.get $base - i32.const 4 - i32.add - local.get $lastIndex - i32.const 2 - i32.shl - memory.copy - i32.const 0 - drop - local.get $base - local.get $lastIndex + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index i32.const 2 i32.shl i32.add - i32.const 0 + local.get $value i32.store + i32.const 1 + drop local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - local.get $lastIndex - call $~lib/array/Array#set:length_ - local.get $element - local.set $5 + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 - return ) - (func $~lib/array/Array#slice (param $this i32) (param $start i32) (param $end i32) (result i32) + (func $~lib/array/Array#splice (param $this i32) (param $start i32) (param $deleteCount i32) (result i32) (local $len i32) (local $4 i32) (local $5 i32) @@ -12409,11 +13387,11 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $slice i32) - (local $sliceBase i32) + (local $result i32) + (local $resultStart i32) + (local $thisStart i32) (local $thisBase i32) + (local $offset i32) (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -12429,14 +13407,14 @@ local.get $17 i32.store local.get $17 - call $~lib/array/Array#get:length_ + call $~lib/array/Array#get:length_ local.set $len local.get $start i32.const 0 i32.lt_s if (result i32) - local.get $start local.get $len + local.get $start i32.add local.tee $4 i32.const 0 @@ -12456,163 +13434,101 @@ select end local.set $start - local.get $end - i32.const 0 - i32.lt_s - if (result i32) - local.get $end - local.get $len - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - else - local.get $end - local.tee $10 - local.get $len - local.tee $11 - local.get $10 - local.get $11 - i32.lt_s - select - end - local.set $end - local.get $end + local.get $deleteCount + local.tee $8 + local.get $len local.get $start i32.sub - local.tee $12 + local.tee $9 + local.get $8 + local.get $9 + i32.lt_s + select + local.tee $10 i32.const 0 - local.tee $13 - local.get $12 - local.get $13 + local.tee $11 + local.get $10 + local.get $11 i32.gt_s select - local.set $len + local.set $deleteCount global.get $~lib/memory/__stack_pointer - local.get $len + local.get $deleteCount i32.const 2 - i32.const 4 + i32.const 13 i32.const 0 call $~lib/rt/__newArray - local.tee $slice + local.tee $result i32.store offset=4 - local.get $slice + local.get $result local.set $17 global.get $~lib/memory/__stack_pointer local.get $17 i32.store local.get $17 - call $~lib/array/Array#get:dataStart - local.set $sliceBase + call $~lib/array/Array#get:dataStart + local.set $resultStart local.get $this local.set $17 global.get $~lib/memory/__stack_pointer local.get $17 i32.store local.get $17 - call $~lib/array/Array#get:dataStart + call $~lib/array/Array#get:dataStart + local.set $thisStart + local.get $thisStart local.get $start i32.const 2 i32.shl i32.add local.set $thisBase - i32.const 0 - drop - local.get $sliceBase + local.get $resultStart local.get $thisBase - local.get $len + local.get $deleteCount i32.const 2 i32.shl memory.copy - local.get $slice + local.get $start + local.get $deleteCount + i32.add + local.set $offset + local.get $len + local.get $offset + i32.ne + if + local.get $thisBase + local.get $thisStart + local.get $offset + i32.const 2 + i32.shl + i32.add + local.get $len + local.get $offset + i32.sub + i32.const 2 + i32.shl + memory.copy + end + local.get $this local.set $17 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $17 - return - ) - (func $~lib/array/Array#slice@varargs (param $this i32) (param $start i32) (param $end i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $start - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $end - end - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 i32.store - local.get $3 - local.get $start - local.get $end - call $~lib/array/Array#slice - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/array/Array#reverse (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $17 + local.get $len + local.get $deleteCount i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:dataStart - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length_ - call $~lib/util/bytes/REVERSE - local.get $this - local.set $1 + call $~lib/array/Array#set:length_ + local.get $result + local.set $17 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $17 return ) - (func $~lib/array/Array#reverse (param $this i32) (result i32) + (func $~lib/array/Array#get:length (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -12628,16 +13544,7 @@ local.get $1 i32.store local.get $1 - call $~lib/array/Array#get:dataStart - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length_ - call $~lib/util/bytes/REVERSE - local.get $this + call $~lib/array/Array#get:length_ local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -12646,67 +13553,64 @@ local.get $1 return ) - (func $~lib/array/Array#reverse (param $this i32) (result i32) - (local $1 i32) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:dataStart + i64.const 0 + i64.store + local.get $index local.get $this - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store - local.get $1 - call $~lib/array/Array#get:length_ - call $~lib/util/bytes/REVERSE - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/array/Array#get:length (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 2448 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $this - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store - local.get $1 - call $~lib/array/Array#get:length_ - local.set $1 + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 1 + i32.eqz + drop + local.get $value + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $3 return ) - (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) - (local $value i32) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -12723,15 +13627,37 @@ local.get $3 i32.store local.get $3 - call $~lib/array/Array#get:length_ + call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 2448 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ end local.get $this local.set $3 @@ -12739,135 +13665,114 @@ local.get $3 i32.store local.get $3 - call $~lib/array/Array#get:dataStart + call $~lib/array/Array#get:dataStart local.get $index - i32.const 1 + i32.const 2 i32.shl i32.add - i32.load16_u - local.set $value + local.get $value + i32.store i32.const 0 drop - local.get $value - local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 - return ) - (func $~lib/array/Array#indexOf (param $this i32) (param $value i32) (param $fromIndex i32) (result i32) + (func $~lib/array/Array#findIndex (param $this i32) (param $fn i32) (result i32) + (local $i i32) (local $len i32) (local $4 i32) (local $5 i32) - (local $ptr i32) - (local $7 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store i32.const 0 - i32.store + local.set $i local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store - local.get $7 + local.get $6 call $~lib/array/Array#get:length_ local.set $len - local.get $len - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $fromIndex - local.get $len - i32.ge_s - end - if - i32.const -1 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - end - local.get $fromIndex - i32.const 0 - i32.lt_s - if + loop $for-loop|0 + local.get $i local.get $len - local.get $fromIndex - i32.add local.tee $4 - i32.const 0 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length_ local.tee $5 local.get $4 local.get $5 - i32.gt_s + i32.lt_s select - local.set $fromIndex - end - local.get $this - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - call $~lib/array/Array#get:dataStart - local.set $ptr - loop $while-continue|0 - local.get $fromIndex - local.get $len i32.lt_s if - local.get $ptr - local.get $fromIndex + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:dataStart + local.get $i i32.const 2 i32.shl i32.add i32.load - local.get $value - i32.eq + local.get $i + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) if - local.get $fromIndex - local.set $7 + local.get $i + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return end - local.get $fromIndex + local.get $i i32.const 1 i32.add - local.set $fromIndex - br $while-continue|0 + local.set $i + br $for-loop|0 end end i32.const -1 - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return ) - (func $~lib/array/Array#indexOf (param $this i32) (param $value f32) (param $fromIndex i32) (result i32) - (local $len i32) - (local $4 i32) - (local $5 i32) - (local $ptr i32) - (local $7 i32) + (func $start:std/array~anonymous|3 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -12876,103 +13781,133 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $this - local.set $7 + local.get $array + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $3 i32.store - local.get $7 - call $~lib/array/Array#get:length_ - local.set $len - local.get $len - i32.const 0 + local.get $3 + i32.const 100 + call $~lib/array/Array#push + drop + local.get $value + i32.const 100 i32.eq - if (result i32) - i32.const 1 - else - local.get $fromIndex - local.get $len - i32.ge_s - end - if - i32.const -1 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - end - local.get $fromIndex + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $start:std/array~anonymous|5 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.lt_s - if - local.get $len - local.get $fromIndex - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $fromIndex - end + i32.store + local.get $array + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop + local.get $value + i32.const 100 + i32.eq + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#findLastIndex (param $this i32) (param $fn i32) (result i32) + (local $i i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - local.set $7 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $3 i32.store - local.get $7 - call $~lib/array/Array#get:dataStart - local.set $ptr - loop $while-continue|0 - local.get $fromIndex - local.get $len - i32.lt_s + local.get $3 + call $~lib/array/Array#get:length_ + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s if - local.get $ptr - local.get $fromIndex + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $i i32.const 2 i32.shl i32.add - f32.load - local.get $value - f32.eq + i32.load + local.get $i + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) if - local.get $fromIndex - local.set $7 + local.get $i + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $3 return end - local.get $fromIndex + local.get $i i32.const 1 - i32.add - local.set $fromIndex - br $while-continue|0 + i32.sub + local.set $i + br $for-loop|0 end end i32.const -1 - local.set $7 + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $3 return ) - (func $~lib/array/Array#indexOf (param $this i32) (param $value f64) (param $fromIndex i32) (result i32) - (local $len i32) - (local $4 i32) - (local $5 i32) - (local $ptr i32) - (local $7 i32) + (func $start:std/array~anonymous|9 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -12981,197 +13916,119 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $this - local.set $7 + local.get $array + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $3 i32.store - local.get $7 - call $~lib/array/Array#get:length_ - local.set $len - local.get $len - i32.const 0 + local.get $3 + call $~lib/array/Array#pop + drop + local.get $value + i32.const 100 i32.eq - if (result i32) - i32.const 1 - else - local.get $fromIndex - local.get $len - i32.ge_s - end - if - i32.const -1 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - end - local.get $fromIndex - i32.const 0 - i32.lt_s - if - local.get $len - local.get $fromIndex - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $fromIndex - end - local.get $this - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - call $~lib/array/Array#get:dataStart - local.set $ptr - loop $while-continue|0 - local.get $fromIndex - local.get $len - i32.lt_s - if - local.get $ptr - local.get $fromIndex - i32.const 3 - i32.shl - i32.add - f64.load - local.get $value - f64.eq - if - local.get $fromIndex - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - end - local.get $fromIndex - i32.const 1 - i32.add - local.set $fromIndex - br $while-continue|0 - end - end - i32.const -1 - local.set $7 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $3 return ) - (func $~lib/array/Array#lastIndexOf (param $this i32) (param $value i32) (param $fromIndex i32) (result i32) + (func $~lib/array/Array#every (param $this i32) (param $fn i32) (result i32) + (local $i i32) (local $len i32) - (local $ptr i32) + (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store i32.const 0 - i32.store + local.set $i local.get $this - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store - local.get $5 + local.get $6 call $~lib/array/Array#get:length_ local.set $len - local.get $len - i32.const 0 - i32.eq - if - i32.const -1 - local.set $5 + loop $for-loop|0 + local.get $i + local.get $len + local.tee $4 + local.get $this + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length_ + local.tee $5 + local.get $4 local.get $5 - return - end - local.get $fromIndex - i32.const 0 - i32.lt_s - if - local.get $len - local.get $fromIndex - i32.add - local.set $fromIndex - else - local.get $fromIndex - local.get $len - i32.ge_s - if - local.get $len - i32.const 1 - i32.sub - local.set $fromIndex - end - end - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array#get:dataStart - local.set $ptr - loop $while-continue|0 - local.get $fromIndex - i32.const 0 - i32.ge_s + i32.lt_s + select + i32.lt_s if - local.get $ptr - local.get $fromIndex + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:dataStart + local.get $i i32.const 2 i32.shl i32.add i32.load - local.get $value - i32.eq + local.get $i + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) + i32.eqz if - local.get $fromIndex - local.set $5 + i32.const 0 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $6 return end - local.get $fromIndex + local.get $i i32.const 1 - i32.sub - local.set $fromIndex - br $while-continue|0 + i32.add + local.set $i + br $for-loop|0 end end - i32.const -1 - local.set $5 + i32.const 1 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $6 return ) - (func $~lib/array/Array#lastIndexOf@varargs (param $this i32) (param $value i32) (param $fromIndex i32) (result i32) + (func $start:std/array~anonymous|12 (param $value i32) (param $_ i32) (param $array i32) (result i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -13181,42 +14038,27 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#get:length_ - local.set $fromIndex - end - local.get $this + local.get $array local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 i32.store local.get $3 + i32.const 100 + call $~lib/array/Array#push + drop local.get $value - local.get $fromIndex - call $~lib/array/Array#lastIndexOf + i32.const 10 + i32.lt_s local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $3 + return ) - (func $~lib/array/Array#includes (param $this i32) (param $value i32) (param $fromIndex i32) (result i32) + (func $start:std/array~anonymous|14 (param $value i32) (param $_ i32) (param $array i32) (result i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -13226,19 +14068,17 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 - drop - local.get $this + local.get $array local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 i32.store local.get $3 + call $~lib/array/Array#pop + drop local.get $value - local.get $fromIndex - call $~lib/array/Array#indexOf - i32.const 0 - i32.ge_s + i32.const 3 + i32.lt_s local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -13247,134 +14087,130 @@ local.get $3 return ) - (func $~lib/array/Array#includes (param $this i32) (param $value f32) (param $fromIndex i32) (result i32) + (func $~lib/array/Array#some (param $this i32) (param $fn i32) (result i32) + (local $i i32) (local $len i32) (local $4 i32) (local $5 i32) - (local $ptr i32) - (local $elem f32) - (local $8 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store i32.const 0 - i32.store - i32.const 1 - drop + local.set $i local.get $this - local.set $8 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store - local.get $8 - call $~lib/array/Array#get:length_ + local.get $6 + call $~lib/array/Array#get:length_ local.set $len - local.get $len - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $fromIndex - local.get $len - i32.ge_s - end - if - i32.const 0 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - end - local.get $fromIndex - i32.const 0 - i32.lt_s - if + loop $for-loop|0 + local.get $i local.get $len - local.get $fromIndex - i32.add local.tee $4 - i32.const 0 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length_ local.tee $5 local.get $4 local.get $5 - i32.gt_s + i32.lt_s select - local.set $fromIndex - end - local.get $this - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - call $~lib/array/Array#get:dataStart - local.set $ptr - loop $while-continue|0 - local.get $fromIndex - local.get $len i32.lt_s if - local.get $ptr - local.get $fromIndex + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:dataStart + local.get $i i32.const 2 i32.shl i32.add - f32.load - local.set $elem - local.get $elem - local.get $value - f32.eq - if (result i32) - i32.const 1 - else - local.get $elem - local.get $elem - f32.ne - local.get $value - local.get $value - f32.ne - i32.and - end + i32.load + local.get $i + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) if i32.const 1 - local.set $8 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $6 return end - local.get $fromIndex + local.get $i i32.const 1 i32.add - local.set $fromIndex - br $while-continue|0 + local.set $i + br $for-loop|0 end end i32.const 0 - local.set $8 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $start:std/array~anonymous|17 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 100 + call $~lib/array/Array#push + drop + local.get $value + i32.const 10 + i32.gt_s + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $3 return ) - (func $~lib/array/Array#includes (param $this i32) (param $value f64) (param $fromIndex i32) (result i32) - (local $len i32) - (local $4 i32) - (local $5 i32) - (local $ptr i32) - (local $elem f64) - (local $8 i32) + (func $start:std/array~anonymous|19 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -13383,265 +14219,164 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 + local.get $array + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop drop + local.get $value + i32.const 3 + i32.gt_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#forEach (param $this i32) (param $fn i32) + (local $i i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + local.set $i local.get $this - local.set $8 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store - local.get $8 - call $~lib/array/Array#get:length_ + local.get $6 + call $~lib/array/Array#get:length_ local.set $len - local.get $len - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $fromIndex - local.get $len - i32.ge_s - end - if - i32.const 0 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - end - local.get $fromIndex - i32.const 0 - i32.lt_s - if + loop $for-loop|0 + local.get $i local.get $len - local.get $fromIndex - i32.add local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $fromIndex - end - local.get $this - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - call $~lib/array/Array#get:dataStart - local.set $ptr - loop $while-continue|0 - local.get $fromIndex - local.get $len + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length_ + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select i32.lt_s if - local.get $ptr - local.get $fromIndex - i32.const 3 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:dataStart + local.get $i + i32.const 2 i32.shl i32.add - f64.load - local.set $elem - local.get $elem - local.get $value - f64.eq - if (result i32) - i32.const 1 - else - local.get $elem - local.get $elem - f64.ne - local.get $value - local.get $value - f64.ne - i32.and - end - if - i32.const 1 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - end - local.get $fromIndex + i32.load + local.get $i + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $5) + local.get $i i32.const 1 i32.add - local.set $fromIndex - br $while-continue|0 + local.set $i + br $for-loop|0 end end - i32.const 0 - local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 - return ) - (func $~lib/array/Array#splice (param $this i32) (param $start i32) (param $deleteCount i32) (result i32) - (local $len i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $result i32) - (local $resultStart i32) - (local $thisStart i32) - (local $thisBase i32) - (local $offset i32) - (local $17 i32) + (func $start:std/array~anonymous|21 (param $value i32) (param $_ i32) (param $array i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - local.set $17 + i32.const 0 + i32.store + local.get $array + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $3 i32.store - local.get $17 - call $~lib/array/Array#get:length_ - local.set $len - local.get $start - i32.const 0 - i32.lt_s - if (result i32) - local.get $len - local.get $start - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $start - local.tee $6 - local.get $len - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $start - local.get $deleteCount - local.tee $8 - local.get $len - local.get $start - i32.sub - local.tee $9 - local.get $8 - local.get $9 - i32.lt_s - select - local.tee $10 - i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - local.set $deleteCount + local.get $3 + i32.const 100 + call $~lib/array/Array#push + drop + global.get $std/array/i + local.get $value + i32.add + global.set $std/array/i global.get $~lib/memory/__stack_pointer - local.get $deleteCount - i32.const 2 i32.const 4 - i32.const 0 - call $~lib/rt/__newArray - local.tee $result - i32.store offset=4 - local.get $result - local.set $17 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|23 (param $value i32) (param $_ i32) (param $array i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store - local.get $17 - call $~lib/array/Array#get:dataStart - local.set $resultStart - local.get $this - local.set $17 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $17 + i32.const 0 i32.store - local.get $17 - call $~lib/array/Array#get:dataStart - local.set $thisStart - local.get $thisStart - local.get $start - i32.const 2 - i32.shl - i32.add - local.set $thisBase - local.get $resultStart - local.get $thisBase - local.get $deleteCount - i32.const 2 - i32.shl - memory.copy - local.get $start - local.get $deleteCount - i32.add - local.set $offset - local.get $len - local.get $offset - i32.ne - if - local.get $thisBase - local.get $thisStart - local.get $offset - i32.const 2 - i32.shl - i32.add - local.get $len - local.get $offset - i32.sub - i32.const 2 - i32.shl - memory.copy - end - local.get $this - local.set $17 + local.get $array + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $3 i32.store - local.get $17 - local.get $len - local.get $deleteCount - i32.sub - call $~lib/array/Array#set:length_ - local.get $result - local.set $17 + local.get $3 + call $~lib/array/Array#pop + drop + global.get $std/array/i + local.get $value + i32.add + global.set $std/array/i global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $17 - return ) - (func $~lib/array/Array#splice@varargs (param $this i32) (param $start i32) (param $deleteCount i32) (result i32) - (local $3 i32) + (func $start:std/array~anonymous|24 (param $value i32) (param $index i32) (param $array i32) + (local $i i32) + (local $i|4 i32) + (local $i|5 i32) + (local $i|6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -13650,254 +14385,362 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength + local.get $index + i32.const 0 + i32.eq + if + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + i32.const 4 + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#pop + drop + local.get $i i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $i|4 + loop $for-loop|1 + local.get $i|4 + i32.const 100 + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 100 + local.get $i|4 + i32.add + call $~lib/array/Array#push + drop + local.get $i|4 + i32.const 1 + i32.add + local.set $i|4 + br $for-loop|1 + end + end + i32.const 0 + local.set $i|5 + loop $for-loop|2 + local.get $i|5 + i32.const 100 + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#pop + drop + local.get $i|5 + i32.const 1 + i32.add + local.set $i|5 + br $for-loop|2 + end + end + i32.const 0 + local.set $i|6 + loop $for-loop|3 + local.get $i|6 + i32.const 100 + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $i|6 + i32.const 200 + i32.add + call $~lib/array/Array#push + drop + local.get $i|6 + i32.const 1 + i32.add + local.set $i|6 + br $for-loop|3 end + end + end + local.get $index + i32.const 2 + i32.eq + if + local.get $value + i32.const 202 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2496 + i32.const 767 + i32.const 7 + call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $deleteCount end - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - local.get $start - local.get $deleteCount - call $~lib/array/Array#splice - local.set $3 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 $this i32) (param $start i32) (param $deleteCount i32) (result i32) + (func $~lib/array/Array#map<~lib/string/String> (param $this i32) (param $fn i32) (result i32) (local $len i32) - (local $4 i32) - (local $5 i32) + (local $out i32) + (local $outStart i32) + (local $i i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) (local $result i32) - (local $resultStart i32) - (local $thisStart i32) - (local $thisBase i32) - (local $offset i32) - (local $17 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $this - local.set $17 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $9 i32.store - local.get $17 - call $~lib/array/Array#get:length_ + local.get $9 + call $~lib/array/Array#get:length_ local.set $len - local.get $start + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 2 + i32.const 16 i32.const 0 - i32.lt_s - if (result i32) + call $~lib/rt/__newArray + local.tee $out + i32.store offset=4 + local.get $out + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $outStart + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i local.get $len - local.get $start - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $start local.tee $6 - local.get $len + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/array/Array#get:length_ local.tee $7 local.get $6 local.get $7 i32.lt_s select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/array/Array#get:dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) + local.tee $result + i32.store offset=12 + local.get $outStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $result + i32.store + i32.const 1 + drop + local.get $out + local.get $result + i32.const 1 + call $~lib/rt/itcms/__link + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end end - local.set $start - local.get $deleteCount - local.tee $8 - local.get $len - local.get $start - i32.sub - local.tee $9 - local.get $8 - local.get $9 - i32.lt_s - select - local.tee $10 - i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - local.set $deleteCount - global.get $~lib/memory/__stack_pointer - local.get $deleteCount - i32.const 2 - i32.const 10 - i32.const 0 - call $~lib/rt/__newArray - local.tee $result - i32.store offset=4 - local.get $result - local.set $17 - global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store - local.get $17 - call $~lib/array/Array#get:dataStart - local.set $resultStart - local.get $this - local.set $17 - global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store - local.get $17 - call $~lib/array/Array#get:dataStart - local.set $thisStart - local.get $thisStart - local.get $start - i32.const 2 - i32.shl - i32.add - local.set $thisBase - local.get $resultStart - local.get $thisBase - local.get $deleteCount - i32.const 2 - i32.shl - memory.copy - local.get $start - local.get $deleteCount - i32.add - local.set $offset - local.get $len - local.get $offset - i32.ne - if - local.get $thisBase - local.get $thisStart - local.get $offset - i32.const 2 - i32.shl - i32.add - local.get $len - local.get $offset - i32.sub - i32.const 2 - i32.shl - memory.copy - end - local.get $this - local.set $17 - global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store - local.get $17 - local.get $len - local.get $deleteCount - i32.sub - call $~lib/array/Array#set:length_ - local.get $result - local.set $17 + local.get $out + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $17 + local.get $9 return ) - (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) - (local $value i32) - (local $3 i32) + (func $~lib/array/Array#map (param $this i32) (param $fn i32) (result i32) + (local $len i32) + (local $out i32) + (local $outStart i32) + (local $i i32) + (local $6 i32) + (local $7 i32) + (local $result f32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $index - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#get:length_ - i32.ge_u - if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $this - local.set $3 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $9 i32.store - local.get $3 - call $~lib/array/Array#get:dataStart - local.get $index + local.get $9 + call $~lib/array/Array#get:length_ + local.set $len + global.get $~lib/memory/__stack_pointer + local.get $len i32.const 2 - i32.shl - i32.add - i32.load - local.tee $value + i32.const 9 + i32.const 0 + call $~lib/rt/__newArray + local.tee $out i32.store offset=4 - i32.const 1 - drop + local.get $out + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/array/Array#get:dataStart + local.set $outStart i32.const 0 - i32.eqz - drop - local.get $value - i32.eqz - if - i32.const 5392 - i32.const 80 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + local.tee $6 + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/array/Array#get:length_ + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + if + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/array/Array#get:dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $17) + local.set $result + local.get $outStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $result + f32.store + i32.const 0 + drop + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end end - local.get $value - local.set $3 + local.get $out + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $9 return ) - (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (func $start:std/array~anonymous|27 (param $value i32) (param $_ i32) (param $array i32) (result i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -13907,222 +14750,144 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $index - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#get:length_ - i32.ge_u - if - local.get $index - i32.const 0 - i32.lt_s - if - i32.const 320 - i32.const 80 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $this - local.get $index - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - local.get $index - i32.const 1 - i32.add - call $~lib/array/Array#set:length_ - end - local.get $this + local.get $array local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 i32.store local.get $3 - call $~lib/array/Array#get:dataStart - local.get $index - i32.const 2 - i32.shl - i32.add - local.get $value - i32.store - i32.const 1 + i32.const 100 + call $~lib/array/Array#push drop - local.get $this + global.get $std/array/i local.get $value - i32.const 1 - call $~lib/rt/itcms/__link + i32.add + global.set $std/array/i + local.get $value + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 + return ) - (func $~lib/array/Array#splice (param $this i32) (param $start i32) (param $deleteCount i32) (result i32) + (func $~lib/array/Array#map (param $this i32) (param $fn i32) (result i32) (local $len i32) - (local $4 i32) - (local $5 i32) + (local $out i32) + (local $outStart i32) + (local $i i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) (local $result i32) - (local $resultStart i32) - (local $thisStart i32) - (local $thisBase i32) - (local $offset i32) - (local $17 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $this - local.set $17 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $9 i32.store - local.get $17 - call $~lib/array/Array#get:length_ - local.set $len - local.get $start - i32.const 0 - i32.lt_s - if (result i32) - local.get $len - local.get $start - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $start - local.tee $6 - local.get $len - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $start - local.get $deleteCount - local.tee $8 - local.get $len - local.get $start - i32.sub - local.tee $9 - local.get $8 local.get $9 - i32.lt_s - select - local.tee $10 - i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - local.set $deleteCount + call $~lib/array/Array#get:length_ + local.set $len global.get $~lib/memory/__stack_pointer - local.get $deleteCount + local.get $len i32.const 2 - i32.const 13 + i32.const 4 i32.const 0 call $~lib/rt/__newArray - local.tee $result + local.tee $out i32.store offset=4 - local.get $result - local.set $17 - global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store - local.get $17 - call $~lib/array/Array#get:dataStart - local.set $resultStart - local.get $this - local.set $17 + local.get $out + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $9 i32.store - local.get $17 - call $~lib/array/Array#get:dataStart - local.set $thisStart - local.get $thisStart - local.get $start - i32.const 2 - i32.shl - i32.add - local.set $thisBase - local.get $resultStart - local.get $thisBase - local.get $deleteCount - i32.const 2 - i32.shl - memory.copy - local.get $start - local.get $deleteCount - i32.add - local.set $offset - local.get $len - local.get $offset - i32.ne - if - local.get $thisBase - local.get $thisStart - local.get $offset - i32.const 2 - i32.shl - i32.add + local.get $9 + call $~lib/array/Array#get:dataStart + local.set $outStart + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i local.get $len - local.get $offset - i32.sub - i32.const 2 - i32.shl - memory.copy + local.tee $6 + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/array/Array#get:length_ + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + if + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/array/Array#get:dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) + local.set $result + local.get $outStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $result + i32.store + i32.const 0 + drop + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end end - local.get $this - local.set $17 - global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store - local.get $17 - local.get $len - local.get $deleteCount - i32.sub - call $~lib/array/Array#set:length_ - local.get $result - local.set $17 + local.get $out + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $17 + local.get $9 return ) - (func $~lib/array/Array#get:length (param $this i32) (result i32) - (local $1 i32) + (func $start:std/array~anonymous|29 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -14131,153 +14896,35 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $this - local.set $1 + local.get $array + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store - local.get $1 - call $~lib/array/Array#get:length_ - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) - (local $value i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $index - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#get:length_ - i32.ge_u - if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#get:dataStart - local.get $index - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $value - i32.store offset=4 - i32.const 1 - drop - i32.const 1 - i32.eqz + call $~lib/array/Array#pop drop + global.get $std/array/i local.get $value - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $index - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#get:length_ - i32.ge_u - if - local.get $index - i32.const 0 - i32.lt_s - if - i32.const 320 - i32.const 80 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $this - local.get $index - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - local.get $index - i32.const 1 - i32.add - call $~lib/array/Array#set:length_ - end - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#get:dataStart - local.get $index - i32.const 2 - i32.shl i32.add + global.set $std/array/i local.get $value - i32.store - i32.const 0 - drop + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 + return ) - (func $~lib/array/Array#findIndex (param $this i32) (param $fn i32) (result i32) + (func $~lib/array/Array#filter (param $this i32) (param $fn i32) (result i32) + (local $result i32) (local $i i32) (local $len i32) - (local $4 i32) (local $5 i32) (local $6 i32) + (local $value i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -14286,67 +14933,78 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $result + i32.store i32.const 0 local.set $i local.get $this - local.set $6 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 + local.get $8 + i32.store offset=4 + local.get $8 call $~lib/array/Array#get:length_ local.set $len loop $for-loop|0 local.get $i local.get $len - local.tee $4 + local.tee $5 local.get $this - local.set $6 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 + local.get $8 + i32.store offset=4 + local.get $8 call $~lib/array/Array#get:length_ - local.tee $5 - local.get $4 + local.tee $6 local.get $5 + local.get $6 i32.lt_s select i32.lt_s if local.get $this - local.set $6 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $8 i32.store offset=4 - local.get $6 + local.get $8 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 i32.shl i32.add i32.load + local.set $value + local.get $value local.get $i local.get $this - local.set $6 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 + local.get $8 + i32.store offset=4 + local.get $8 i32.const 3 global.set $~argumentsLength local.get $fn i32.load call_indirect (type $3) if - local.get $i - local.set $6 + local.get $result + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + call $~lib/array/Array#push + drop end local.get $i i32.const 1 @@ -14355,16 +15013,16 @@ br $for-loop|0 end end - i32.const -1 - local.set $6 + local.get $result + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $8 return ) - (func $start:std/array~anonymous|3 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (func $start:std/array~anonymous|31 (param $value i32) (param $_ i32) (param $array i32) (result i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -14383,9 +15041,13 @@ i32.const 100 call $~lib/array/Array#push drop + global.get $std/array/i local.get $value - i32.const 100 - i32.eq + i32.add + global.set $std/array/i + local.get $value + i32.const 2 + i32.ge_s local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -14394,7 +15056,7 @@ local.get $3 return ) - (func $start:std/array~anonymous|5 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (func $start:std/array~anonymous|33 (param $value i32) (param $_ i32) (param $array i32) (result i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -14412,9 +15074,13 @@ local.get $3 call $~lib/array/Array#pop drop + global.get $std/array/i local.get $value - i32.const 100 - i32.eq + i32.add + global.set $std/array/i + local.get $value + i32.const 2 + i32.ge_s local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -14423,9 +15089,13 @@ local.get $3 return ) - (func $~lib/array/Array#findLastIndex (param $this i32) (param $fn i32) (result i32) + (func $~lib/array/Array#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $acc i32) (local $i i32) - (local $3 i32) + (local $len i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -14434,27 +15104,43 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + local.get $initialValue + local.set $acc + i32.const 0 + local.set $i local.get $this - local.set $3 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $8 i32.store - local.get $3 + local.get $8 call $~lib/array/Array#get:length_ - i32.const 1 - i32.sub - local.set $i + local.set $len loop $for-loop|0 local.get $i - i32.const 0 - i32.ge_s + local.get $len + local.tee $6 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length_ + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s if + local.get $acc local.get $this - local.set $3 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $8 i32.store offset=4 - local.get $3 + local.get $8 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -14463,77 +15149,40 @@ i32.load local.get $i local.get $this - local.set $3 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $8 i32.store - local.get $3 - i32.const 3 + local.get $8 + i32.const 4 global.set $~argumentsLength local.get $fn i32.load - call_indirect (type $3) - if - local.get $i - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - end + call_indirect (type $4) + local.set $acc local.get $i i32.const 1 - i32.sub + i32.add local.set $i br $for-loop|0 end end - i32.const -1 - local.set $3 + local.get $acc + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $start:std/array~anonymous|9 (param $value i32) (param $_ i32) (param $array i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $array - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#pop - drop - local.get $value - i32.const 100 - i32.eq - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $8 return ) - (func $~lib/array/Array#every (param $this i32) (param $fn i32) (result i32) + (func $~lib/array/Array#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $acc i32) (local $i i32) (local $len 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 @@ -14542,40 +15191,43 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + local.get $initialValue + local.set $acc i32.const 0 local.set $i local.get $this - local.set $6 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $8 i32.store - local.get $6 + local.get $8 call $~lib/array/Array#get:length_ local.set $len loop $for-loop|0 local.get $i local.get $len - local.tee $4 + local.tee $6 local.get $this - local.set $6 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $8 i32.store - local.get $6 + local.get $8 call $~lib/array/Array#get:length_ - local.tee $5 - local.get $4 - local.get $5 + local.tee $7 + local.get $6 + local.get $7 i32.lt_s select i32.lt_s if + local.get $acc local.get $this - local.set $6 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $8 i32.store offset=4 - local.get $6 + local.get $8 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -14584,27 +15236,17 @@ i32.load local.get $i local.get $this - local.set $6 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $8 i32.store - local.get $6 - i32.const 3 + local.get $8 + i32.const 4 global.set $~argumentsLength local.get $fn i32.load - call_indirect (type $3) - i32.eqz - if - i32.const 0 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end + call_indirect (type $4) + local.set $acc local.get $i i32.const 1 i32.add @@ -14612,17 +15254,17 @@ br $for-loop|0 end end - i32.const 1 - local.set $6 + local.get $acc + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $8 return ) - (func $start:std/array~anonymous|12 (param $value i32) (param $_ i32) (param $array i32) (result i32) - (local $3 i32) + (func $start:std/array~anonymous|38 (param $prev i32) (param $current i32) (param $_ i32) (param $array i32) (result i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -14632,27 +15274,27 @@ i32.const 0 i32.store local.get $array - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store - local.get $3 - i32.const 100 + local.get $4 + i32.const 1 call $~lib/array/Array#push drop - local.get $value - i32.const 10 - i32.lt_s - local.set $3 + local.get $prev + local.get $current + i32.add + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 return ) - (func $start:std/array~anonymous|14 (param $value i32) (param $_ i32) (param $array i32) (result i32) - (local $3 i32) + (func $start:std/array~anonymous|40 (param $prev i32) (param $current i32) (param $_ i32) (param $array i32) (result i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -14662,30 +15304,28 @@ i32.const 0 i32.store local.get $array - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store - local.get $3 + local.get $4 call $~lib/array/Array#pop drop - local.get $value - i32.const 3 - i32.lt_s - local.set $3 + local.get $prev + local.get $current + i32.add + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 return ) - (func $~lib/array/Array#some (param $this i32) (param $fn i32) (result i32) + (func $~lib/array/Array#reduceRight (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $acc i32) (local $i i32) - (local $len i32) - (local $4 i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -14694,40 +15334,30 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - i32.const 0 - local.set $i + local.get $initialValue + local.set $acc local.get $this - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store - local.get $6 + local.get $5 call $~lib/array/Array#get:length_ - local.set $len + i32.const 1 + i32.sub + local.set $i loop $for-loop|0 local.get $i - local.get $len - local.tee $4 - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $~lib/array/Array#get:length_ - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s + i32.const 0 + i32.ge_s if + local.get $acc local.get $this - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -14736,107 +15366,37 @@ i32.load local.get $i local.get $this - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store - local.get $6 - i32.const 3 + local.get $5 + i32.const 4 global.set $~argumentsLength local.get $fn i32.load - call_indirect (type $3) - if - i32.const 1 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end + call_indirect (type $4) + local.set $acc local.get $i i32.const 1 - i32.add + i32.sub local.set $i br $for-loop|0 end end - i32.const 0 - local.set $6 + local.get $acc + local.set $5 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $5 return ) - (func $start:std/array~anonymous|17 (param $value i32) (param $_ i32) (param $array i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $array - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $value - i32.const 10 - i32.gt_s - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $start:std/array~anonymous|19 (param $value i32) (param $_ i32) (param $array i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $array - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#pop - drop - local.get $value - i32.const 3 - i32.gt_s - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $~lib/array/Array#forEach (param $this i32) (param $fn i32) - (local $i i32) - (local $len i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $~lib/array/Array#reduceRight (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $acc i32) + (local $i i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -14845,40 +15405,30 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - i32.const 0 - local.set $i + local.get $initialValue + local.set $acc local.get $this - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store - local.get $6 + local.get $5 call $~lib/array/Array#get:length_ - local.set $len + i32.const 1 + i32.sub + local.set $i loop $for-loop|0 local.get $i - local.get $len - local.tee $4 - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $~lib/array/Array#get:length_ - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s + i32.const 0 + i32.ge_s if + local.get $acc local.get $this - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -14887,30 +15437,35 @@ i32.load local.get $i local.get $this - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store - local.get $6 - i32.const 3 + local.get $5 + i32.const 4 global.set $~argumentsLength local.get $fn i32.load - call_indirect (type $5) + call_indirect (type $4) + local.set $acc local.get $i i32.const 1 - i32.add + i32.sub local.set $i br $for-loop|0 end end + local.get $acc + local.set $5 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $5 + return ) - (func $start:std/array~anonymous|21 (param $value i32) (param $_ i32) (param $array i32) - (local $3 i32) + (func $start:std/array~anonymous|45 (param $prev i32) (param $current i32) (param $_ i32) (param $array i32) (result i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -14920,25 +15475,27 @@ i32.const 0 i32.store local.get $array - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store - local.get $3 - i32.const 100 + local.get $4 + i32.const 1 call $~lib/array/Array#push drop - global.get $std/array/i - local.get $value + local.get $prev + local.get $current i32.add - global.set $std/array/i + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 + return ) - (func $start:std/array~anonymous|23 (param $value i32) (param $_ i32) (param $array i32) - (local $3 i32) + (func $start:std/array~anonymous|47 (param $prev i32) (param $current i32) (param $_ i32) (param $array i32) (result i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -14948,28 +15505,80 @@ i32.const 0 i32.store local.get $array - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store - local.get $3 + local.get $4 call $~lib/array/Array#pop drop - global.get $std/array/i - local.get $value + local.get $prev + local.get $current i32.add - global.set $std/array/i + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 + return ) - (func $start:std/array~anonymous|24 (param $value i32) (param $index i32) (param $array i32) - (local $i i32) - (local $i|4 i32) - (local $i|5 i32) - (local $i|6 i32) - (local $7 i32) + (func $std/array/Dim#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $std/array/Dim#set:height + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $std/array/Dim#set:width + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -14979,401 +15588,584 @@ i32.const 0 i32.store local.get $index - i32.const 0 - i32.eq + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u if + local.get $index i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i - i32.const 4 - i32.lt_s - if - local.get $array - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - call $~lib/array/Array#pop - drop - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 - end - end - i32.const 0 - local.set $i|4 - loop $for-loop|1 - local.get $i|4 - i32.const 100 - i32.lt_s - if - local.get $array - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - i32.const 100 - local.get $i|4 - i32.add - call $~lib/array/Array#push - drop - local.get $i|4 - i32.const 1 - i32.add - local.set $i|4 - br $for-loop|1 - end - end - i32.const 0 - local.set $i|5 - loop $for-loop|2 - local.get $i|5 - i32.const 100 - i32.lt_s - if - local.get $array - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - call $~lib/array/Array#pop - drop - local.get $i|5 - i32.const 1 - i32.add - local.set $i|5 - br $for-loop|2 - end - end - i32.const 0 - local.set $i|6 - loop $for-loop|3 - local.get $i|6 - i32.const 100 - i32.lt_s - if - local.get $array - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $i|6 - i32.const 200 - i32.add - call $~lib/array/Array#push - drop - local.get $i|6 - i32.const 1 - i32.add - local.set $i|6 - br $for-loop|3 - end - end - end - local.get $index - i32.const 2 - i32.eq - if - local.get $value - i32.const 202 - i32.eq - i32.eqz + i32.lt_s if - i32.const 0 - i32.const 528 - i32.const 767 - i32.const 7 + i32.const 320 + i32.const 2448 + i32.const 130 + i32.const 22 call $~lib/builtins/abort unreachable end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#map<~lib/string/String> (param $this i32) (param $fn i32) (result i32) - (local $len i32) - (local $out i32) - (local $outStart i32) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a f32) + (local $b f32) + (local $c i32) + (local $a|7 f32) + (local $b|8 f32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) (local $i i32) - (local $6 i32) - (local $7 i32) - (local $result i32) - (local $9 i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $this - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $~lib/array/Array#get:length_ - local.set $len - global.get $~lib/memory/__stack_pointer - local.get $len - i32.const 2 - i32.const 16 i32.const 0 - call $~lib/rt/__newArray - local.tee $out - i32.store offset=4 - local.get $out - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 i32.store - local.get $9 - call $~lib/array/Array<~lib/string/String>#get:dataStart - local.set $outStart - i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i + local.get $len + i32.const 48 + i32.le_s + if local.get $len - local.tee $6 - local.get $this - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $~lib/array/Array#get:length_ - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s + i32.const 1 + i32.le_s if global.get $~lib/memory/__stack_pointer - local.get $this - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 - call $~lib/array/Array#get:dataStart - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.get $i - local.get $this - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - i32.const 3 - global.set $~argumentsLength - local.get $fn - i32.load - call_indirect (type $3) - local.tee $result - i32.store offset=12 - local.get $outStart - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $result - i32.store - i32.const 1 - drop - local.get $out - local.get $result - i32.const 1 - call $~lib/rt/itcms/__link - local.get $i - i32.const 1 + i32.const 4 i32.add - local.set $i - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + return end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $ptr + f32.load + local.set $a + local.get $ptr + f32.load offset=4 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + f32.store + local.get $a + local.get $b + local.get $c + select + local.set $a + local.get $ptr + f32.load offset=8 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + f32.store offset=4 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + f32.store offset=8 + end + local.get $ptr + f32.load + local.set $a|7 + local.get $ptr + f32.load offset=4 + local.set $b|8 + local.get $a|7 + local.get $b|8 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + f32.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + f32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $out - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 16 + block $~lib/util/sort/log2u|inlined.0 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.0 + end + i32.const 2 i32.add - global.set $~lib/memory/__stack_pointer - local.get $9 - return - ) - (func $~lib/array/Array#map (param $this i32) (param $fn i32) (result i32) - (local $len i32) - (local $out i32) - (local $outStart i32) - (local $i i32) - (local $6 i32) - (local $7 i32) - (local $result f32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf i32.const 0 - i32.store offset=8 - local.get $this - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $~lib/array/Array#get:length_ - local.set $len - global.get $~lib/memory/__stack_pointer + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end local.get $len i32.const 2 - i32.const 9 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr i32.const 0 - call $~lib/rt/__newArray - local.tee $out - i32.store offset=4 - local.get $out - local.set $9 + local.get $hi + local.get $comparator + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $34 i32.store - local.get $9 - call $~lib/array/Array#get:dataStart - local.set $outStart - i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i - local.get $len - local.tee $6 - local.get $this - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $~lib/array/Array#get:length_ - local.tee $7 - local.get $6 - local.get $7 + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi i32.lt_s if - local.get $this - local.set $9 + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 - call $~lib/array/Array#get:dataStart - local.get $i + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k i32.const 2 i32.shl i32.add - i32.load - local.get $i - local.get $this - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $startA i32.store - local.get $9 - i32.const 3 - global.set $~argumentsLength - local.get $fn - i32.load - call_indirect (type $18) - local.set $result - local.get $outStart - local.get $i + local.get $leftRunEndBuf + local.get $k i32.const 2 i32.shl i32.add - local.get $result - f32.store - i32.const 0 - drop - local.get $i - i32.const 1 + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl i32.add - local.set $i - br $for-loop|0 + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 end end - local.get $out - local.set $9 + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 - return ) - (func $start:std/array~anonymous|27 (param $value i32) (param $_ i32) (param $array i32) (result i32) - (local $3 i32) + (func $~lib/array/Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $array - local.set $3 + i64.const 0 + i64.store + local.get $this + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.const 100 - call $~lib/array/Array#push - drop - global.get $std/array/i - local.get $value - i32.add - global.set $std/array/i - local.get $value - local.set $3 + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:length_ + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $2 return ) - (func $~lib/array/Array#map (param $this i32) (param $fn i32) (result i32) - (local $len i32) - (local $out i32) - (local $outStart i32) - (local $i i32) - (local $6 i32) - (local $7 i32) - (local $result i32) - (local $9 i32) + (func $~lib/array/Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -15385,102 +16177,83 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - local.get $this - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $~lib/array/Array#get:length_ - local.set $len - global.get $~lib/memory/__stack_pointer - local.get $len - i32.const 2 - i32.const 4 - i32.const 0 - call $~lib/rt/__newArray - local.tee $out - i32.store offset=4 - local.get $out - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $~lib/array/Array#get:dataStart - local.set $outStart - i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i - local.get $len - local.tee $6 - local.get $this - local.set $9 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $~lib/array/Array#get:length_ - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - if - local.get $this - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 - call $~lib/array/Array#get:dataStart - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.get $i - local.get $this - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - i32.const 3 - global.set $~argumentsLength - local.get $fn - i32.load - call_indirect (type $3) - local.set $result - local.get $outStart - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $result - i32.store + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) i32.const 0 drop - local.get $i i32.const 1 - i32.add - local.set $i - br $for-loop|0 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 9424 + br $~lib/util/sort/COMPARATOR|inlined.0 end + local.tee $comparator + i32.store end - local.get $out - local.set $9 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/array/Array#sort + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 - return + local.get $2 ) - (func $start:std/array~anonymous|29 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) (local $3 i32) + (local $a f64) + (local $b f64) + (local $c i32) + (local $a|7 f64) + (local $b|8 f64) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -15489,293 +16262,441 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $array - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#pop - drop - global.get $std/array/i - local.get $value - i32.add - global.set $std/array/i - local.get $value - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $ptr + f64.load + local.set $a + local.get $ptr + f64.load offset=8 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + f64.store + local.get $a + local.get $b + local.get $c + select + local.set $a + local.get $ptr + f64.load offset=16 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + f64.store offset=8 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + f64.store offset=16 + end + local.get $ptr + f64.load + local.set $a|7 + local.get $ptr + f64.load offset=8 + local.set $b|8 + local.get $a|7 + local.get $b|8 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + f64.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + f64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.1 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.1 + end + i32.const 2 i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $~lib/array/Array#filter (param $this i32) (param $fn i32) (result i32) - (local $result i32) - (local $i i32) - (local $len i32) - (local $5 i32) - (local $6 i32) - (local $value i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 + local.set $lgPlus2 + local.get $lgPlus2 i32.const 2 - i32.const 4 - i32.const 0 - call $~lib/rt/__newArray - local.tee $result - i32.store + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf i32.const 0 local.set $i - local.get $this - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - call $~lib/array/Array#get:length_ - local.set $len - loop $for-loop|0 + loop $for-loop|1 local.get $i - local.get $len - local.tee $5 - local.get $this - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - call $~lib/array/Array#get:length_ - local.tee $6 - local.get $5 - local.get $6 - i32.lt_s - select - i32.lt_s + local.get $lgPlus2 + i32.lt_u if - local.get $this - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - call $~lib/array/Array#get:dataStart + local.get $leftRunStartBuf local.get $i i32.const 2 i32.shl i32.add - i32.load - local.set $value - local.get $value - local.get $i - local.get $this - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - global.set $~argumentsLength - local.get $fn - i32.load - call_indirect (type $3) - if - local.get $result - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - local.get $value - call $~lib/array/Array#push - drop - end + i32.const -1 + i32.store local.get $i i32.const 1 i32.add local.set $i - br $for-loop|0 + br $for-loop|1 end end - local.get $result - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - ) - (func $start:std/array~anonymous|31 (param $value i32) (param $_ i32) (param $array i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $len + i32.const 3 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + local.set $hi + local.get $ptr i32.const 0 - i32.store - local.get $array - local.set $3 + local.get $hi + local.get $comparator + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $34 i32.store - local.get $3 - i32.const 100 - call $~lib/array/Array#push - drop - global.get $std/array/i - local.get $value - i32.add - global.set $std/array/i - local.get $value - i32.const 2 - i32.ge_s - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $start:std/array~anonymous|33 (param $value i32) (param $_ i32) (param $array i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $array - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#pop - drop - global.get $std/array/i - local.get $value - i32.add - global.set $std/array/i - local.get $value - i32.const 2 - i32.ge_s - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $~lib/array/Array#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) - (local $acc i32) - (local $i i32) - (local $len i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $initialValue - local.set $acc - i32.const 0 - local.set $i - local.get $this - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - call $~lib/array/Array#get:length_ - local.set $len - loop $for-loop|0 - local.get $i - local.get $len - local.tee $6 - local.get $this - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - call $~lib/array/Array#get:length_ - local.tee $7 - local.get $6 - local.get $7 + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi i32.lt_s if - local.get $acc - local.get $this - local.set $8 + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - call $~lib/array/Array#get:dataStart - local.get $i + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k i32.const 2 i32.shl i32.add - i32.load - local.get $i - local.get $this - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $startA i32.store - local.get $8 - i32.const 4 - global.set $~argumentsLength - local.get $fn + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add i32.load - call_indirect (type $4) - local.set $acc - local.get $i + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 i32.const 1 - i32.add - local.set $i - br $for-loop|0 + i32.sub + local.set $i|32 + br $for-loop|4 end end - local.get $acc - local.set $8 + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 - return ) - (func $~lib/array/Array#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) - (local $acc i32) - (local $i i32) - (local $len i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + (func $~lib/array/Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -15784,110 +16705,95 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $initialValue - local.set $acc - i32.const 0 - local.set $i local.get $this - local.set $8 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:length_ + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.store - local.get $8 - call $~lib/array/Array#get:length_ - local.set $len - loop $for-loop|0 - local.get $i - local.get $len - local.tee $6 - local.get $this - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - call $~lib/array/Array#get:length_ - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - if - local.get $acc - local.get $this - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - call $~lib/array/Array#get:dataStart - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.get $i - local.get $this - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - i32.const 4 - global.set $~argumentsLength - local.get $fn - i32.load - call_indirect (type $4) - local.set $acc - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 - end - end - local.get $acc - local.set $8 + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $2 return ) - (func $start:std/array~anonymous|38 (param $prev i32) (param $current i32) (param $_ i32) (param $array i32) (result i32) - (local $4 i32) + (func $~lib/array/Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - local.get $array - local.set $4 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 9712 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1 - call $~lib/array/Array#push - drop - local.get $prev - local.get $current - i32.add - local.set $4 + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/array/Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - return + local.get $2 ) - (func $start:std/array~anonymous|40 (param $prev i32) (param $current i32) (param $_ i32) (param $array i32) (result i32) - (local $4 i32) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -15896,189 +16802,66 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $array - local.set $4 + local.get $this + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store - local.get $4 - call $~lib/array/Array#pop - drop - local.get $prev - local.get $current - i32.add - local.set $4 + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $1 return ) - (func $~lib/array/Array#reduceRight (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) - (local $acc i32) - (local $i i32) - (local $5 i32) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result f64) + (local $value f64) + (local $3 i32) + (local $4 f64) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $initialValue - local.set $acc + i32.const 0 + i32.store + local.get $index local.get $this - local.set $5 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $3 i32.store - local.get $5 - call $~lib/array/Array#get:length_ - i32.const 1 - i32.sub - local.set $i - loop $for-loop|0 - local.get $i - i32.const 0 - i32.ge_s - if - local.get $acc - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $~lib/array/Array#get:dataStart - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.get $i - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $fn - i32.load - call_indirect (type $4) - local.set $acc - local.get $i - i32.const 1 - i32.sub - local.set $i - br $for-loop|0 - end + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 2448 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end - local.get $acc - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - return - ) - (func $~lib/array/Array#reduceRight (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) - (local $acc i32) - (local $i i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $initialValue - local.set $acc local.get $this - local.set $5 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $3 i32.store - local.get $5 - call $~lib/array/Array#get:length_ - i32.const 1 - i32.sub - local.set $i - loop $for-loop|0 - local.get $i - i32.const 0 - i32.ge_s - if - local.get $acc - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $~lib/array/Array#get:dataStart - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.get $i - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $fn - i32.load - call_indirect (type $4) - local.set $acc - local.get $i - i32.const 1 - i32.sub - local.set $i - br $for-loop|0 - end - end - local.get $acc - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - return - ) - (func $start:std/array~anonymous|45 (param $prev i32) (param $current i32) (param $_ i32) (param $array i32) (result i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + f64.load + local.set $value i32.const 0 - i32.store - local.get $array - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1 - call $~lib/array/Array#push drop - local.get $prev - local.get $current - i32.add + local.get $value local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -16087,8 +16870,13 @@ local.get $4 return ) - (func $start:std/array~anonymous|47 (param $prev i32) (param $current i32) (param $_ i32) (param $array i32) (result i32) - (local $4 i32) + (func $std/array/isArraysEqual (param $a i32) (param $b i32) (param $len i32) (result i32) + (local $i i32) + (local $4 f64) + (local $5 f64) + (local $x f64) + (local $x|7 f64) + (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -16097,159 +16885,191 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $array - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#pop - drop - local.get $prev - local.get $current - i32.add - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - ) - (func $std/array/Dim#constructor (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this + local.get $len i32.eqz if + local.get $a + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 22 - call $~lib/rt/itcms/__new - local.tee $this + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length + local.set $len + local.get $len + local.get $b + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 i32.store + local.get $8 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $a + local.get $b + i32.eq + if + i32.const 1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end end - global.get $~lib/memory/__stack_pointer - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/object/Object#constructor - local.tee $this - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $std/array/Dim#set:height - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $std/array/Dim#set:width - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - local.get $index - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#get:length_ - i32.ge_u - if - local.get $index - i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len i32.lt_s if - i32.const 320 - i32.const 80 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable + block $for-continue|0 + i32.const 1 + drop + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + local.tee $4 + local.get $4 + f64.ne + if (result i32) + local.get $b + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + local.tee $5 + local.get $5 + f64.ne + else + i32.const 0 + end + if + br $for-continue|0 + end + block $~lib/math/NativeMath.signbit|inlined.2 (result i32) + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + local.set $x + local.get $x + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + br $~lib/math/NativeMath.signbit|inlined.2 + end + i32.const 0 + i32.ne + block $~lib/math/NativeMath.signbit|inlined.3 (result i32) + local.get $b + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + local.set $x|7 + local.get $x|7 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + br $~lib/math/NativeMath.signbit|inlined.3 + end + i32.const 0 + i32.ne + i32.ne + if + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + local.get $b + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + f64.ne + if + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 end - local.get $this - local.get $index - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - local.get $index - i32.const 1 - i32.add - call $~lib/array/Array#set:length_ end - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#get:dataStart - local.get $index - i32.const 2 - i32.shl - i32.add - local.get $value - i32.store - i32.const 1 - drop - local.get $this - local.get $value i32.const 1 - call $~lib/rt/itcms/__link + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $8 + return ) - (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) (local $3 i32) - (local $a f32) - (local $b f32) + (local $a i32) + (local $b i32) (local $c i32) - (local $a|7 f32) - (local $b|8 f32) + (local $a|7 i32) + (local $b|8 i32) (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) @@ -16318,10 +17138,10 @@ br $break|0 end local.get $ptr - f32.load + i32.load local.set $a local.get $ptr - f32.load offset=4 + i32.load offset=4 local.set $b local.get $a local.get $b @@ -16329,7 +17149,7 @@ global.set $~argumentsLength local.get $comparator i32.load - call_indirect (type $7) + call_indirect (type $0) i32.const 0 i32.gt_s local.set $c @@ -16338,14 +17158,14 @@ local.get $a local.get $c select - f32.store + i32.store local.get $a local.get $b local.get $c select local.set $a local.get $ptr - f32.load offset=8 + i32.load offset=8 local.set $b local.get $a local.get $b @@ -16353,7 +17173,7 @@ global.set $~argumentsLength local.get $comparator i32.load - call_indirect (type $7) + call_indirect (type $0) i32.const 0 i32.gt_s local.set $c @@ -16362,19 +17182,19 @@ local.get $a local.get $c select - f32.store offset=4 + i32.store offset=4 local.get $ptr local.get $a local.get $b local.get $c select - f32.store offset=8 + i32.store offset=8 end local.get $ptr - f32.load + i32.load local.set $a|7 local.get $ptr - f32.load offset=4 + i32.load offset=4 local.set $b|8 local.get $a|7 local.get $b|8 @@ -16382,7 +17202,7 @@ global.set $~argumentsLength local.get $comparator i32.load - call_indirect (type $7) + call_indirect (type $0) i32.const 0 i32.gt_s local.set $c|9 @@ -16391,13 +17211,13 @@ local.get $a|7 local.get $c|9 select - f32.store + i32.store local.get $ptr local.get $a|7 local.get $b|8 local.get $c|9 select - f32.store offset=4 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -16416,21 +17236,21 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end - block $~lib/util/sort/log2u|inlined.0 (result i32) + block $~lib/util/sort/log2u|inlined.2 (result i32) local.get $len local.set $n i32.const 31 local.get $n i32.clz i32.sub - br $~lib/util/sort/log2u|inlined.0 + br $~lib/util/sort/log2u|inlined.2 end i32.const 2 i32.add @@ -16487,7 +17307,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endA local.get $endA i32.const 1 @@ -16518,7 +17338,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.set $top @@ -16542,7 +17362,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endB local.get $endB local.get $startB @@ -16577,7 +17397,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.get $hi @@ -16622,7 +17442,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf @@ -16699,7 +17519,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $i|32 i32.const 1 @@ -16717,7 +17537,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#sort (param $this i32) (param $comparator i32) (result i32) + (func $~lib/array/Array#sort (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -16733,21 +17553,21 @@ local.get $2 i32.store offset=4 local.get $2 - call $~lib/array/Array#get:dataStart + call $~lib/array/Array#get:dataStart local.get $this local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 - call $~lib/array/Array#get:length_ + call $~lib/array/Array#get:length_ local.get $comparator local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 - call $~lib/util/sort/SORT + call $~lib/util/sort/SORT local.get $this local.set $2 global.get $~lib/memory/__stack_pointer @@ -16757,7 +17577,7 @@ local.get $2 return ) - (func $~lib/array/Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (func $~lib/array/Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -16779,17 +17599,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 0 - drop + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) i32.const 1 drop i32.const 4 i32.const 4 - i32.eq + i32.le_u drop - i32.const 9232 - br $~lib/util/sort/COMPARATOR|inlined.0 + i32.const 9888 + br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator i32.store @@ -16806,7 +17624,7 @@ local.get $2 i32.store offset=8 local.get $2 - call $~lib/array/Array#sort + call $~lib/array/Array#sort local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -16814,13 +17632,13 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) (local $3 i32) - (local $a f64) - (local $b f64) + (local $a i32) + (local $b i32) (local $c i32) - (local $a|7 f64) - (local $b|8 f64) + (local $a|7 i32) + (local $b|8 i32) (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) @@ -16889,10 +17707,10 @@ br $break|0 end local.get $ptr - f64.load + i32.load local.set $a local.get $ptr - f64.load offset=8 + i32.load offset=4 local.set $b local.get $a local.get $b @@ -16900,7 +17718,7 @@ global.set $~argumentsLength local.get $comparator i32.load - call_indirect (type $8) + call_indirect (type $0) i32.const 0 i32.gt_s local.set $c @@ -16909,14 +17727,14 @@ local.get $a local.get $c select - f64.store + i32.store local.get $a local.get $b local.get $c select local.set $a local.get $ptr - f64.load offset=16 + i32.load offset=8 local.set $b local.get $a local.get $b @@ -16924,7 +17742,7 @@ global.set $~argumentsLength local.get $comparator i32.load - call_indirect (type $8) + call_indirect (type $0) i32.const 0 i32.gt_s local.set $c @@ -16933,19 +17751,19 @@ local.get $a local.get $c select - f64.store offset=8 + i32.store offset=4 local.get $ptr local.get $a local.get $b local.get $c select - f64.store offset=16 + i32.store offset=8 end local.get $ptr - f64.load + i32.load local.set $a|7 local.get $ptr - f64.load offset=8 + i32.load offset=4 local.set $b|8 local.get $a|7 local.get $b|8 @@ -16953,7 +17771,7 @@ global.set $~argumentsLength local.get $comparator i32.load - call_indirect (type $8) + call_indirect (type $0) i32.const 0 i32.gt_s local.set $c|9 @@ -16962,13 +17780,13 @@ local.get $a|7 local.get $c|9 select - f64.store + i32.store local.get $ptr local.get $a|7 local.get $b|8 local.get $c|9 select - f64.store offset=8 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -16987,21 +17805,21 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end - block $~lib/util/sort/log2u|inlined.1 (result i32) + block $~lib/util/sort/log2u|inlined.3 (result i32) local.get $len local.set $n i32.const 31 local.get $n i32.clz i32.sub - br $~lib/util/sort/log2u|inlined.1 + br $~lib/util/sort/log2u|inlined.3 end i32.const 2 i32.add @@ -17041,7 +17859,7 @@ end end local.get $len - i32.const 3 + i32.const 2 i32.shl call $~lib/rt/tlsf/__alloc local.set $buffer @@ -17058,7 +17876,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endA local.get $endA i32.const 1 @@ -17089,7 +17907,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.set $top @@ -17113,7 +17931,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endB local.get $endB local.get $startB @@ -17148,7 +17966,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.get $hi @@ -17193,7 +18011,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf @@ -17270,7 +18088,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $i|32 i32.const 1 @@ -17288,7 +18106,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#sort (param $this i32) (param $comparator i32) (result i32) + (func $~lib/array/Array#sort (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -17304,21 +18122,21 @@ local.get $2 i32.store offset=4 local.get $2 - call $~lib/array/Array#get:dataStart + call $~lib/array/Array#get:dataStart local.get $this local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 - call $~lib/array/Array#get:length_ + call $~lib/array/Array#get:length_ local.get $comparator local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 - call $~lib/util/sort/SORT + call $~lib/util/sort/SORT local.get $this local.set $2 global.get $~lib/memory/__stack_pointer @@ -17328,7 +18146,7 @@ local.get $2 return ) - (func $~lib/array/Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (func $~lib/array/Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -17350,17 +18168,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 0 - drop + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) i32.const 1 drop - i32.const 8 - i32.const 4 - i32.eq + i32.const 0 drop - i32.const 9520 - br $~lib/util/sort/COMPARATOR|inlined.0 + i32.const 10016 + br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator i32.store @@ -17377,7 +18191,7 @@ local.get $2 i32.store offset=8 local.get $2 - call $~lib/array/Array#sort + call $~lib/array/Array#sort local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -17385,91 +18199,118 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/array/Array#get:length (param $this i32) (result i32) - (local $1 i32) + (func $std/array/createReverseOrderedArray (param $size i32) (result i32) + (local $arr i32) + (local $i i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $arr i32.store - local.get $1 - call $~lib/array/Array#get:length_ - local.set $1 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $arr + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $i + local.get $size + i32.const 1 + i32.sub + local.get $i + i32.sub + call $~lib/array/Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $arr + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $3 return ) - (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result f64) - (local $value f64) + (func $std/array/createRandomOrderedArray (param $size i32) (result i32) + (local $arr i32) + (local $i i32) (local $3 i32) - (local $4 f64) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $index - local.get $this - local.set $3 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $3 + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $arr i32.store - local.get $3 - call $~lib/array/Array#get:length_ - i32.ge_u - if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $arr + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $i + call $~lib/math/NativeMath.random + local.get $size + f64.convert_i32_s + f64.mul + i32.trunc_sat_f64_s + call $~lib/array/Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end end - local.get $this + local.get $arr local.set $3 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#get:dataStart - local.get $index - i32.const 3 - i32.shl - i32.add - f64.load - local.set $value - i32.const 0 - drop - local.get $value - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 return ) - (func $std/array/isArraysEqual (param $a i32) (param $b i32) (param $len i32) (result i32) + (func $std/array/isSorted (param $data i32) (param $comparator i32) (result i32) (local $i i32) - (local $4 f64) - (local $5 f64) - (local $x f64) - (local $x|7 f64) - (local $8 i32) + (local $len i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -17478,167 +18319,55 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $len - i32.eqz - if - local.get $a - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - call $~lib/array/Array#get:length - local.set $len - local.get $len - local.get $b - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - end - local.get $a - local.get $b - i32.eq - if - i32.const 1 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - end - end - i32.const 0 + i32.const 1 local.set $i + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + local.set $len loop $for-loop|0 local.get $i local.get $len i32.lt_s if - block $for-continue|0 - i32.const 1 - drop - local.get $a - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $i - call $~lib/array/Array#__get - local.tee $4 - local.get $4 - f64.ne - if (result i32) - local.get $b - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $i - call $~lib/array/Array#__get - local.tee $5 - local.get $5 - f64.ne - else - i32.const 0 - end - if - br $for-continue|0 - end - block $~lib/math/NativeMath.signbit|inlined.2 (result i32) - local.get $a - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $i - call $~lib/array/Array#__get - local.set $x - local.get $x - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - br $~lib/math/NativeMath.signbit|inlined.2 - end - i32.const 0 - i32.ne - block $~lib/math/NativeMath.signbit|inlined.3 (result i32) - local.get $b - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $i - call $~lib/array/Array#__get - local.set $x|7 - local.get $x|7 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - br $~lib/math/NativeMath.signbit|inlined.3 - end + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + i32.const 1 + i32.sub + call $~lib/array/Array#__get + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array#__get + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if i32.const 0 - i32.ne - i32.ne - if - i32.const 0 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - end - local.get $a - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $i - call $~lib/array/Array#__get - local.get $b - local.set $8 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - local.get $8 - local.get $i - call $~lib/array/Array#__get - f64.ne - if - i32.const 0 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - end + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return end local.get $i i32.const 1 @@ -17648,490 +18377,68 @@ end end i32.const 1 - local.set $8 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $4 return ) - (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) - (local $3 i32) - (local $a i32) - (local $b i32) - (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) - (local $n i32) - (local $lgPlus2 i32) - (local $lgPlus2Size i32) - (local $leftRunStartBuf i32) - (local $leftRunEndBuf i32) - (local $i i32) - (local $buffer i32) - (local $hi i32) - (local $endA i32) - (local $lenA i32) - (local $20 i32) - (local $21 i32) - (local $top i32) - (local $startA i32) - (local $startB i32) - (local $endB i32) - (local $lenB i32) - (local $27 i32) - (local $28 i32) - (local $k i32) - (local $i|30 i32) - (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (func $std/array/assertSorted (param $arr i32) (param $comparator i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $arr + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/array/Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.store - local.get $len - i32.const 48 - i32.le_s + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $std/array/isSorted + i32.eqz if - local.get $len - i32.const 1 - i32.le_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $break|0 - block $case1|0 - block $case0|0 - local.get $len - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $ptr - i32.load - local.set $a - local.get $ptr - i32.load offset=4 - local.set $b - local.get $a - local.get $b - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.set $c - local.get $ptr - local.get $b - local.get $a - local.get $c - select - i32.store - local.get $a - local.get $b - local.get $c - select - local.set $a - local.get $ptr - i32.load offset=8 - local.set $b - local.get $a - local.get $b - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.set $c - local.get $ptr - local.get $b - local.get $a - local.get $c - select - i32.store offset=4 - local.get $ptr - local.get $a - local.get $b - local.get $c - select - i32.store offset=8 - end - local.get $ptr - i32.load - local.set $a|7 - local.get $ptr - i32.load offset=4 - local.set $b|8 - local.get $a|7 - local.get $b|8 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.set $c|9 - local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 - select - i32.store - local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 - select - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $ptr - i32.const 0 - local.get $len - i32.const 1 - i32.sub - i32.const 0 - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/insertionSort - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - block $~lib/util/sort/log2u|inlined.2 (result i32) - local.get $len - local.set $n - i32.const 31 - local.get $n - i32.clz - i32.sub - br $~lib/util/sort/log2u|inlined.2 - end - i32.const 2 - i32.add - local.set $lgPlus2 - local.get $lgPlus2 - i32.const 2 - i32.shl - local.set $lgPlus2Size - local.get $lgPlus2Size - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $leftRunStartBuf - local.get $leftRunStartBuf - local.get $lgPlus2Size - i32.add - local.set $leftRunEndBuf - i32.const 0 - local.set $i - loop $for-loop|1 - local.get $i - local.get $lgPlus2 - i32.lt_u - if - local.get $leftRunStartBuf - local.get $i - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|1 - end - end - local.get $len - i32.const 2 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $buffer - local.get $len - i32.const 1 - i32.sub - local.set $hi - local.get $ptr - i32.const 0 - local.get $hi - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/extendRunRight - local.set $endA - local.get $endA - i32.const 1 - i32.add - local.set $lenA - local.get $lenA - i32.const 32 - i32.lt_s - if - local.get $hi - local.tee $20 - i32.const 32 - i32.const 1 - i32.sub - local.tee $21 - local.get $20 - local.get $21 - i32.lt_s - select - local.set $endA - local.get $ptr - i32.const 0 - local.get $endA - local.get $lenA - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $top - i32.const 0 - local.set $startA - loop $while-continue|2 - local.get $endA - local.get $hi - i32.lt_s - if - local.get $endA - i32.const 1 - i32.add - local.set $startB - local.get $ptr - local.get $startB - local.get $hi - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/extendRunRight - local.set $endB - local.get $endB - local.get $startB - i32.sub - i32.const 1 - i32.add - local.set $lenB - local.get $lenB - i32.const 32 - i32.lt_s - if - local.get $hi - local.tee $27 - local.get $startB - i32.const 32 - i32.add - i32.const 1 - i32.sub - local.tee $28 - local.get $27 - local.get $28 - i32.lt_s - select - local.set $endB - local.get $ptr - local.get $startB - local.get $endB - local.get $lenB - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.get $hi - local.get $startA - local.get $startB - local.get $endB - call $~lib/util/sort/nodePower - local.set $k - local.get $top - local.set $i|30 - loop $for-loop|3 - local.get $i|30 - local.get $k - i32.gt_u - if - local.get $leftRunStartBuf - local.get $i|30 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $start - local.get $start - i32.const -1 - i32.ne - if - local.get $ptr - local.get $start - local.get $leftRunEndBuf - local.get $i|30 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - i32.add - local.get $endA - local.get $buffer - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/mergeRuns - local.get $start - local.set $startA - local.get $leftRunStartBuf - local.get $i|30 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - end - local.get $i|30 - i32.const 1 - i32.sub - local.set $i|30 - br $for-loop|3 - end - end - local.get $leftRunStartBuf - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $startA - i32.store - local.get $leftRunEndBuf - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $endA - i32.store - local.get $startB - local.set $startA - local.get $endB - local.set $endA - local.get $k - local.set $top - br $while-continue|2 - end - end - local.get $top - local.set $i|32 - loop $for-loop|4 - local.get $i|32 i32.const 0 - i32.ne - if - local.get $leftRunStartBuf - local.get $i|32 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $start|33 - local.get $start|33 - i32.const -1 - i32.ne - if - local.get $ptr - local.get $start|33 - local.get $leftRunEndBuf - local.get $i|32 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - i32.add - local.get $hi - local.get $buffer - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/mergeRuns - end - local.get $i|32 - i32.const 1 - i32.sub - local.set $i|32 - br $for-loop|4 - end + i32.const 2496 + i32.const 1080 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $buffer - call $~lib/rt/tlsf/__free - local.get $leftRunStartBuf - call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#sort (param $this i32) (param $comparator i32) (result i32) - (local $2 i32) + (func $std/array/assertSortedDefault (param $arr i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -18140,3158 +18447,3374 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $this - local.set $2 + local.get $arr + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/array/Array#get:dataStart - local.get $this - local.set $2 + local.get $1 + i32.store + local.get $1 + block $~lib/util/sort/COMPARATOR|inlined.1 (result i32) + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + i32.const 10288 + br $~lib/util/sort/COMPARATOR|inlined.1 + end + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 - call $~lib/array/Array#get:length_ - local.get $comparator - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/util/sort/SORT - local.get $this - local.set $2 + local.get $1 + call $std/array/assertSorted global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - return ) - (func $~lib/array/Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#slice (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $slice i32) + (local $sliceBase i32) + (local $thisBase i32) + (local $off i32) + (local $end|18 i32) + (local $ref i32) + (local $20 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + local.get $this + local.set $20 global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store + local.get $20 + call $~lib/array/Array#get:length_ + local.set $len + local.get $start i32.const 0 - i32.store offset=8 - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.le_u - drop - i32.const 9696 - br $~lib/util/sort/COMPARATOR|inlined.0 + i32.lt_s + if (result i32) + local.get $start + local.get $len + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $start + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + end + local.set $start + local.get $end + i32.const 0 + i32.lt_s + if (result i32) + local.get $end + local.get $len + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + else + local.get $end + local.tee $10 + local.get $len + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $end + local.get $end + local.get $start + i32.sub + local.tee $12 + i32.const 0 + local.tee $13 + local.get $12 + local.get $13 + i32.gt_s + select + local.set $len + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 2 + i32.const 23 + i32.const 0 + call $~lib/rt/__newArray + local.tee $slice + i32.store offset=4 + local.get $slice + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store + local.get $20 + call $~lib/array/Array#get:dataStart + local.set $sliceBase + local.get $this + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store + local.get $20 + call $~lib/array/Array#get:dataStart + local.get $start + i32.const 2 + i32.shl + i32.add + local.set $thisBase + i32.const 1 + drop + i32.const 0 + local.set $off + local.get $len + i32.const 2 + i32.shl + local.set $end|18 + loop $while-continue|0 + local.get $off + local.get $end|18 + i32.lt_u + if + local.get $thisBase + local.get $off + i32.add + i32.load + local.set $ref + local.get $sliceBase + local.get $off + i32.add + local.get $ref + i32.store + local.get $slice + local.get $ref + i32.const 1 + call $~lib/rt/itcms/__link + local.get $off + i32.const 4 + i32.add + local.set $off + br $while-continue|0 end - local.tee $comparator - i32.store + end + local.get $slice + local.set $20 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $20 + return + ) + (func $~lib/array/Array#slice@varargs (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $start + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end end local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $start + local.get $end + call $~lib/array/Array#slice + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $std/array/assertStableSortedForComplexObjects~anonymous|0 (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=4 + i32.store local.get $2 - local.get $comparator + call $std/array/Dim#get:height + local.get $b local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=8 + i32.store local.get $2 - call $~lib/array/Array#sort + call $std/array/Dim#get:height + i32.sub local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) - (local $3 i32) + (func $~lib/util/sort/insertionSort (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) (local $a i32) (local $b i32) - (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) - (local $n i32) - (local $lgPlus2 i32) - (local $lgPlus2Size i32) - (local $leftRunStartBuf i32) - (local $leftRunEndBuf i32) - (local $i i32) - (local $buffer i32) - (local $hi i32) - (local $endA i32) - (local $lenA i32) - (local $20 i32) - (local $21 i32) - (local $top i32) - (local $startA i32) - (local $startB i32) - (local $endB i32) - (local $lenB i32) - (local $27 i32) - (local $28 i32) - (local $k i32) - (local $i|30 i32) - (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $min i32) + (local $max i32) + (local $j i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - local.get $len - i32.const 48 - i32.le_s - if - local.get $len - i32.const 1 + i32.const 24 + memory.fill + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $break|0 - block $case1|0 - block $case0|0 - local.get $len - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $ptr - i32.load - local.set $a - local.get $ptr - i32.load offset=4 - local.set $b - local.get $a - local.get $b - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.set $c - local.get $ptr - local.get $b - local.get $a - local.get $c - select - i32.store - local.get $a - local.get $b - local.get $c - select - local.set $a - local.get $ptr - i32.load offset=8 - local.set $b - local.get $a - local.get $b - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.set $c - local.get $ptr - local.get $b - local.get $a - local.get $c - select - i32.store offset=4 - local.get $ptr - local.get $a - local.get $b - local.get $c - select - i32.store offset=8 - end local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add i32.load - local.set $a|7 + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add i32.load offset=4 - local.set $b|8 - local.get $a|7 - local.get $b|8 + local.tee $b + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $min + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $a + local.tee $max + i32.store offset=12 + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $b + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator i32.load call_indirect (type $0) i32.const 0 - i32.gt_s - local.set $c|9 - local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 - select - i32.store - local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 - select - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $ptr - i32.const 0 - local.get $len - i32.const 1 - i32.sub - i32.const 0 - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/insertionSort - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - block $~lib/util/sort/log2u|inlined.3 (result i32) - local.get $len - local.set $n - i32.const 31 - local.get $n - i32.clz - i32.sub - br $~lib/util/sort/log2u|inlined.3 - end - i32.const 2 - i32.add - local.set $lgPlus2 - local.get $lgPlus2 - i32.const 2 - i32.shl - local.set $lgPlus2Size - local.get $lgPlus2Size - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $leftRunStartBuf - local.get $leftRunStartBuf - local.get $lgPlus2Size - i32.add - local.set $leftRunEndBuf - i32.const 0 - local.set $i - loop $for-loop|1 - local.get $i - local.get $lgPlus2 - i32.lt_u - if - local.get $leftRunStartBuf - local.get $i - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $a + local.tee $min + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $max + i32.store offset=12 + end local.get $i i32.const 1 - i32.add - local.set $i - br $for-loop|1 - end - end - local.get $len - i32.const 2 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $buffer - local.get $len - i32.const 1 - i32.sub - local.set $hi - local.get $ptr - i32.const 0 - local.get $hi - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/extendRunRight - local.set $endA - local.get $endA - i32.const 1 - i32.add - local.set $lenA - local.get $lenA - i32.const 32 - i32.lt_s - if - local.get $hi - local.tee $20 - i32.const 32 - i32.const 1 - i32.sub - local.tee $21 - local.get $20 - local.get $21 - i32.lt_s - select - local.set $endA - local.get $ptr - i32.const 0 - local.get $endA - local.get $lenA - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $top - i32.const 0 - local.set $startA - loop $while-continue|2 - local.get $endA - local.get $hi - i32.lt_s - if - local.get $endA - i32.const 1 - i32.add - local.set $startB - local.get $ptr - local.get $startB - local.get $hi - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/extendRunRight - local.set $endB - local.get $endB - local.get $startB i32.sub - i32.const 1 - i32.add - local.set $lenB - local.get $lenB - i32.const 32 - i32.lt_s - if - local.get $hi - local.tee $27 - local.get $startB - i32.const 32 - i32.add - i32.const 1 - i32.sub - local.tee $28 - local.get $27 - local.get $28 - i32.lt_s - select - local.set $endB - local.get $ptr - local.get $startB - local.get $endB - local.get $lenB - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.get $hi - local.get $startA - local.get $startB - local.get $endB - call $~lib/util/sort/nodePower - local.set $k - local.get $top - local.set $i|30 - loop $for-loop|3 - local.get $i|30 - local.get $k - i32.gt_u - if - local.get $leftRunStartBuf - local.get $i|30 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $start - local.get $start - i32.const -1 - i32.ne + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s if + global.get $~lib/memory/__stack_pointer local.get $ptr - local.get $start - local.get $leftRunEndBuf - local.get $i|30 + local.get $j i32.const 2 i32.shl i32.add i32.load - i32.const 1 - i32.add - local.get $endA - local.get $buffer + local.tee $a + i32.store + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $max + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength local.get $comparator - local.set $34 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $max + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/mergeRuns - local.get $start - local.set $startA - local.get $leftRunStartBuf - local.get $i|30 + local.get $ptr + local.get $j i32.const 2 i32.shl i32.add - i32.const -1 + i32.load + local.tee $a i32.store + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $min + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=4 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 end - local.get $i|30 - i32.const 1 - i32.sub - local.set $i|30 - br $for-loop|3 end end - local.get $leftRunStartBuf - local.get $k + local.get $ptr + local.get $j i32.const 2 i32.shl i32.add - local.get $startA - i32.store - local.get $leftRunEndBuf - local.get $k + local.get $min + i32.store offset=4 + local.get $i i32.const 2 - i32.shl i32.add - local.get $endA - i32.store - local.get $startB - local.set $startA - local.get $endB - local.set $endA - local.get $k - local.set $top - br $while-continue|2 + local.set $i + br $for-loop|0 end end - local.get $top - local.set $i|32 - loop $for-loop|4 - local.get $i|32 - i32.const 0 - i32.ne - if - local.get $leftRunStartBuf - local.get $i|32 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $start|33 - local.get $start|33 - i32.const -1 - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $ptr - local.get $start|33 - local.get $leftRunEndBuf - local.get $i|32 + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $tmp + i32.store offset=8 + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k i32.const 2 i32.shl i32.add i32.load + i32.store + local.get $i i32.const 1 i32.add - local.get $hi - local.get $buffer - local.get $comparator - local.set $34 + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $7 i32.store - local.get $34 - call $~lib/util/sort/mergeRuns + local.get $7 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 end - local.get $i|32 - i32.const 1 - i32.sub - local.set $i|32 - br $for-loop|4 end end - local.get $buffer - call $~lib/rt/tlsf/__free - local.get $leftRunStartBuf - call $~lib/rt/tlsf/__free + local.get $j + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $7 + return ) - (func $~lib/array/Array#sort (param $this i32) (param $comparator i32) (result i32) - (local $2 i32) + (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i32) + (local $b i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/array/Array#get:dataStart - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/array/Array#get:length_ - local.get $comparator - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/util/sort/SORT - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - ) - (func $~lib/array/Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 1 - drop - i32.const 0 - drop - i32.const 9824 - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.tee $comparator - i32.store - end - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $comparator - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - call $~lib/array/Array#sort - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $std/array/createReverseOrderedArray (param $size i32) (result i32) - (local $arr i32) - (local $i i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + i64.store offset=8 + local.get $m + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $size - call $~lib/array/Array#constructor - local.tee $arr - i32.store - i32.const 0 + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add local.set $i loop $for-loop|0 local.get $i - local.get $size - i32.lt_s + local.get $l + i32.gt_s if - local.get $arr - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 + local.get $buffer local.get $i - local.get $size i32.const 1 i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr local.get $i + i32.const 1 i32.sub - call $~lib/array/Array#__set + i32.const 2 + i32.shl + i32.add + i32.load + i32.store local.get $i i32.const 1 - i32.add + i32.sub local.set $i br $for-loop|0 end end - local.get $arr - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $std/array/createRandomOrderedArray (param $size i32) (result i32) - (local $arr i32) - (local $i i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $size - call $~lib/array/Array#constructor - local.tee $arr - i32.store - i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i - local.get $size + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r i32.lt_s if - local.get $arr - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $i - call $~lib/math/NativeMath.random - local.get $size - f64.convert_i32_s - f64.mul - i32.trunc_sat_f64_s - call $~lib/array/Array#__set - local.get $i + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $j i32.const 1 i32.add - local.set $i - br $for-loop|0 + local.set $j + br $for-loop|1 end end - local.get $arr - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $std/array/isSorted (param $data i32) (param $comparator i32) (result i32) - (local $i i32) - (local $len i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1 - local.set $i - local.get $data - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#get:length - local.set $len - loop $for-loop|0 - local.get $i - local.get $len - i32.lt_s + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s if - local.get $data - local.set $4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $buffer + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a i32.store - local.get $4 - local.get $i - i32.const 1 - i32.sub - call $~lib/array/Array#__get - local.get $data - local.set $4 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 + local.get $buffer local.get $i - call $~lib/array/Array#__get + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $b + i32.store offset=4 + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + local.get $b + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=12 + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator i32.load call_indirect (type $0) i32.const 0 - i32.gt_s + i32.lt_s if - i32.const 0 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $ptr + local.get $k + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return + local.get $a + i32.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $b + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i end - local.get $i + local.get $k i32.const 1 i32.add - local.set $i - br $for-loop|0 + local.set $k + br $for-loop|2 end end - i32.const 1 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - ) - (func $std/array/assertSorted (param $arr i32) (param $comparator i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $arr - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - local.get $comparator - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 - local.get $2 - call $~lib/array/Array#sort - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $comparator - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $std/array/isSorted - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1080 - i32.const 3 - call $~lib/builtins/abort - unreachable - end global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/array/assertSortedDefault (param $arr i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $arr - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - block $~lib/util/sort/COMPARATOR|inlined.1 (result i32) - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.le_u - drop - i32.const 10096 - br $~lib/util/sort/COMPARATOR|inlined.1 - end - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $std/array/assertSorted - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#slice (param $this i32) (param $start i32) (param $end i32) (result i32) - (local $len i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $slice i32) - (local $sliceBase i32) - (local $thisBase i32) - (local $off i32) - (local $end|18 i32) - (local $ref i32) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - local.set $20 - global.get $~lib/memory/__stack_pointer - local.get $20 - i32.store - local.get $20 - call $~lib/array/Array#get:length_ - local.set $len - local.get $start i32.const 0 - i32.lt_s - if (result i32) - local.get $start + i32.const 24 + memory.fill + local.get $len + i32.const 48 + i32.le_s + if local.get $len - i32.add - local.tee $4 + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $start - local.tee $6 - local.get $len - local.tee $7 - local.get $6 - local.get $7 + i32.const 1 i32.lt_s - select - end - local.set $start - local.get $end - i32.const 0 - i32.lt_s - if (result i32) - local.get $end - local.get $len - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - else - local.get $end - local.tee $10 + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=4 + local.tee $b + i32.store offset=4 + local.get $a + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store + global.get $~lib/memory/__stack_pointer + local.get $a + local.get $b + local.get $c + select + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=8 + local.tee $b + i32.store offset=4 + local.get $a + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store offset=4 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load + local.tee $a|7 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=4 + local.tee $b|8 + i32.store offset=20 + local.get $a|7 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b|8 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i32.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 local.get $len - local.tee $11 - local.get $10 - local.get $11 - i32.lt_s - select + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.4 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.4 end - local.set $end - local.get $end - local.get $start - i32.sub - local.tee $12 - i32.const 0 - local.tee $13 - local.get $12 - local.get $13 - i32.gt_s - select - local.set $len - global.get $~lib/memory/__stack_pointer - local.get $len i32.const 2 - i32.const 23 - i32.const 0 - call $~lib/rt/__newArray - local.tee $slice - i32.store offset=4 - local.get $slice - local.set $20 - global.get $~lib/memory/__stack_pointer - local.get $20 - i32.store - local.get $20 - call $~lib/array/Array#get:dataStart - local.set $sliceBase - local.get $this - local.set $20 - global.get $~lib/memory/__stack_pointer - local.get $20 - i32.store - local.get $20 - call $~lib/array/Array#get:dataStart - local.get $start + i32.add + local.set $lgPlus2 + local.get $lgPlus2 i32.const 2 i32.shl - i32.add - local.set $thisBase + local.set $lgPlus2Size + local.get $lgPlus2Size i32.const 1 - drop - i32.const 0 - local.set $off - local.get $len - i32.const 2 i32.shl - local.set $end|18 - loop $while-continue|0 - local.get $off - local.get $end|18 + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 i32.lt_u if - local.get $thisBase - local.get $off - i32.add - i32.load - local.set $ref - local.get $sliceBase - local.get $off + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl i32.add - local.get $ref + i32.const -1 i32.store - local.get $slice - local.get $ref + local.get $i i32.const 1 - call $~lib/rt/itcms/__link - local.get $off - i32.const 4 i32.add - local.set $off - br $while-continue|0 - end - end - local.get $slice - local.set $20 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $20 - return - ) - (func $~lib/array/Array#slice@varargs (param $this i32) (param $start i32) (param $end i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $start + local.set $i + br $for-loop|1 end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $end end - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - local.get $start - local.get $end - call $~lib/array/Array#slice - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $std/array/assertStableSortedForComplexObjects~anonymous|0 (param $a i32) (param $b i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $len + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + local.set $hi + local.get $ptr i32.const 0 - i32.store - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/array/Dim#get:height - local.get $b - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/array/Dim#get:height - i32.sub - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/util/sort/insertionSort (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) - (local $range i32) - (local $i i32) - (local $a i32) - (local $b i32) - (local $min i32) - (local $max i32) - (local $j i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $hi + local.get $comparator + local.set $34 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $right - local.get $left - i32.sub + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA i32.const 1 i32.add - local.set $range - local.get $left - local.get $range - i32.const 1 - i32.and - local.get $presorted - local.get $range - local.get $presorted - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $presorted + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort + end i32.const 0 - i32.eq - select - i32.add - local.set $i - loop $for-loop|0 - local.get $i - local.get $right - i32.le_s + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $ptr - local.get $i - i32.const 2 - i32.shl + local.get $endA + i32.const 1 i32.add - i32.load - local.tee $a - i32.store - global.get $~lib/memory/__stack_pointer + local.set $startB local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $b - i32.store offset=4 + local.get $startB + local.get $hi + local.get $comparator + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $b - local.tee $min + local.get $34 i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $a - local.tee $max - i32.store offset=12 - local.get $a - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=16 - local.get $12 - local.get $b - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=20 - local.get $12 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - if - global.get $~lib/memory/__stack_pointer - local.get $a - local.tee $min - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $b - local.tee $max - i32.store offset=12 - end - local.get $i - i32.const 1 + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB i32.sub - local.set $j - block $while-break|1 - loop $while-continue|1 - local.get $j - local.get $left - i32.ge_s - if - global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if local.get $ptr - local.get $j + local.get $start + local.get $leftRunEndBuf + local.get $i|30 i32.const 2 i32.shl i32.add i32.load - local.tee $a - i32.store - local.get $a - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=16 - local.get $12 - local.get $max - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=20 - local.get $12 - i32.const 2 - global.set $~argumentsLength + i32.const 1 + i32.add + local.get $endA + local.get $buffer local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - local.get $a - i32.store offset=8 - local.get $j - i32.const 1 - i32.sub - local.set $j - else - br $while-break|1 - end - br $while-continue|1 - end - end - end - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - local.get $max - i32.store offset=8 - block $while-break|2 - loop $while-continue|2 - local.get $j - local.get $left - i32.ge_s - if + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $ptr - local.get $j + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 i32.const 2 i32.shl i32.add - i32.load - local.tee $a + i32.const -1 i32.store - local.get $a - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=16 - local.get $12 - local.get $min - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=20 - local.get $12 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - local.get $a - i32.store offset=4 - local.get $j - i32.const 1 - i32.sub - local.set $j - else - br $while-break|2 - end - br $while-continue|2 end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 end end - local.get $ptr - local.get $j + local.get $leftRunStartBuf + local.get $k i32.const 2 i32.shl i32.add - local.get $min - i32.store offset=4 - local.get $i + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k i32.const 2 + i32.shl i32.add - local.set $i - br $for-loop|0 + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 end end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp i32) - (local $7 i32) + (func $~lib/array/Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + local.get $this + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $i - local.get $right - i32.eq - if - local.get $i - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:length_ + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.store - local.get $7 - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 2 - i32.shl + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.load - local.set $7 + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $tmp - i32.store offset=8 - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $tmp - i32.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - local.set $7 + i32.store + local.get $this + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $1 return ) - (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) - (local $i i32) - (local $j i32) - (local $t i32) - (local $k i32) - (local $a i32) - (local $b i32) - (local $12 i32) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + local.get $index + local.get $this + local.set $3 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $m - i32.const 1 - i32.sub - local.set $m - local.get $r - local.get $m - i32.add - local.set $t - local.get $m - i32.const 1 - i32.add - local.set $i - loop $for-loop|0 - local.get $i - local.get $l - i32.gt_s - if - local.get $buffer - local.get $i - i32.const 1 - i32.sub - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $i - i32.const 1 - i32.sub - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $i - i32.const 1 - i32.sub - local.set $i - br $for-loop|0 - end + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 2448 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end - local.get $m - local.set $j - loop $for-loop|1 - local.get $j - local.get $r - i32.lt_s - if - local.get $buffer - local.get $t - local.get $j - i32.sub - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.store - local.get $j - i32.const 1 - i32.add - local.set $j - br $for-loop|1 - end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 7360 + i32.const 2448 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable end - local.get $l - local.set $k - loop $for-loop|2 - local.get $k - local.get $r - i32.le_s - if - global.get $~lib/memory/__stack_pointer - local.get $buffer - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $a - i32.store - global.get $~lib/memory/__stack_pointer - local.get $buffer + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/array/assertStableSortedForComplexObjects + (local $sorted i32) + (local $check i32) + (local $i i32) + (local $len i32) + (local $input i32) + (local $target i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/array/inputStabArr + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#slice@varargs + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 10384 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#sort + local.tee $sorted + i32.store offset=12 + i32.const 1 + local.set $check + i32.const 0 + local.set $i + global.get $std/array/inputStabArr + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + local.set $len + block $for-break0 + loop $for-loop|0 local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $b - i32.store offset=4 - local.get $a - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=8 - local.get $12 - local.get $b - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=12 - local.get $12 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 + local.get $len i32.lt_s if - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $a + global.get $~lib/memory/__stack_pointer + local.get $sorted + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 i32.store - local.get $j - i32.const 1 - i32.sub - local.set $j - else - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $b + local.get $6 + local.get $i + call $~lib/array/Array#__get + local.tee $input + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $std/array/outputStabArr + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/array/Array#__get + local.tee $target + i32.store offset=20 + local.get $input + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $std/array/Dim#get:height + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 i32.store + local.get $6 + call $std/array/Dim#get:height + i32.ne + if (result i32) + i32.const 1 + else + local.get $input + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $std/array/Dim#get:width + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $std/array/Dim#get:width + i32.ne + end + if + i32.const 0 + local.set $check + br $for-break0 + end local.get $i i32.const 1 i32.add local.set $i + br $for-loop|0 end - local.get $k - i32.const 1 - i32.add - local.set $k - br $for-loop|2 end end + local.get $check + i32.eqz + if + i32.const 0 + i32.const 2496 + i32.const 1076 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (func $~lib/array/Array<~lib/array/Array>#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) (local $3 i32) - (local $a i32) - (local $b i32) - (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) - (local $n i32) - (local $lgPlus2 i32) - (local $lgPlus2Size i32) - (local $leftRunStartBuf i32) - (local $leftRunEndBuf i32) - (local $i i32) + (local $bufferSize i32) (local $buffer i32) - (local $hi i32) - (local $endA i32) - (local $lenA i32) - (local $20 i32) - (local $21 i32) - (local $top i32) - (local $startA i32) - (local $startB i32) - (local $endB i32) - (local $lenB i32) - (local $27 i32) - (local $28 i32) - (local $k i32) - (local $i|30 i32) - (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 29 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 0 - i32.const 24 - memory.fill - local.get $len - i32.const 48 - i32.le_s + call $~lib/array/Array<~lib/array/Array>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u if - local.get $len - i32.const 1 - i32.le_s + i32.const 2400 + i32.const 2448 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array<~lib/array/Array>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array<~lib/array/Array>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array<~lib/array/Array>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array<~lib/array/Array>#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array<~lib/array/Array>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 320 + i32.const 2448 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable end - i32.const 0 + local.get $this + local.get $index i32.const 1 - i32.lt_s - drop - block $break|0 - block $case1|0 - block $case0|0 - local.get $len - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - global.get $~lib/memory/__stack_pointer - local.get $ptr - i32.load - local.tee $a - i32.store - global.get $~lib/memory/__stack_pointer - local.get $ptr - i32.load offset=4 - local.tee $b - i32.store offset=4 - local.get $a - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - local.get $b - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=12 - local.get $34 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.set $c - local.get $ptr - local.get $b - local.get $a - local.get $c - select - i32.store - global.get $~lib/memory/__stack_pointer - local.get $a - local.get $b - local.get $c - select - local.tee $a - i32.store - global.get $~lib/memory/__stack_pointer - local.get $ptr - i32.load offset=8 - local.tee $b - i32.store offset=4 - local.get $a - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - local.get $b - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=12 - local.get $34 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.set $c - local.get $ptr - local.get $b - local.get $a - local.get $c - select - i32.store offset=4 - local.get $ptr - local.get $a - local.get $b - local.get $c - select - i32.store offset=8 - end - global.get $~lib/memory/__stack_pointer - local.get $ptr - i32.load - local.tee $a|7 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $ptr - i32.load offset=4 - local.tee $b|8 - i32.store offset=20 - local.get $a|7 - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - local.get $b|8 - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=12 - local.get $34 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.set $c|9 - local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 - select - i32.store - local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 - select - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $ptr - i32.const 0 - local.get $len + i32.add + i32.const 2 i32.const 1 - i32.sub - i32.const 0 - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/array/ensureCapacity + local.get $this + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 24 + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return - end - block $~lib/util/sort/log2u|inlined.4 (result i32) - local.get $len - local.set $n - i32.const 31 - local.get $n - i32.clz - i32.sub - br $~lib/util/sort/log2u|inlined.4 + call $~lib/array/Array<~lib/array/Array>#set:length_ end - i32.const 2 - i32.add - local.set $lgPlus2 - local.get $lgPlus2 + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.get $index i32.const 2 i32.shl - local.set $lgPlus2Size - local.get $lgPlus2Size + i32.add + local.get $value + i32.store i32.const 1 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $leftRunStartBuf - local.get $leftRunStartBuf - local.get $lgPlus2Size + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $leftRunEndBuf + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/createReverseOrderedNestedArray (param $size i32) (result i32) + (local $arr i32) + (local $i i32) + (local $inner i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array<~lib/array/Array>#constructor + local.tee $arr + i32.store i32.const 0 local.set $i - loop $for-loop|1 + loop $for-loop|0 local.get $i - local.get $lgPlus2 - i32.lt_u + local.get $size + i32.lt_s if - local.get $leftRunStartBuf + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $~lib/array/Array#constructor + local.tee $inner + i32.store offset=4 + local.get $inner + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 0 + local.get $size + i32.const 1 + i32.sub local.get $i - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store + i32.sub + call $~lib/array/Array#__set + local.get $arr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + local.get $i + local.get $inner + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/array/Array<~lib/array/Array>#__set local.get $i i32.const 1 i32.add local.set $i - br $for-loop|1 + br $for-loop|0 end end - local.get $len - i32.const 2 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $buffer - local.get $len - i32.const 1 + local.get $arr + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $start:std/array~anonymous|52 (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.set $hi - local.get $ptr + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $hi - local.get $comparator - local.set $34 + i32.store + local.get $a + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - call $~lib/util/sort/extendRunRight - local.set $endA - local.get $endA - i32.const 1 + local.get $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + i32.sub + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $lenA - local.get $lenA - i32.const 32 - i32.lt_s - if - local.get $hi - local.tee $20 - i32.const 32 - i32.const 1 - i32.sub - local.tee $21 - local.get $20 - local.get $21 - i32.lt_s - select - local.set $endA - local.get $ptr - i32.const 0 - local.get $endA - local.get $lenA - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - call $~lib/util/sort/insertionSort - end + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/sort/insertionSort<~lib/array/Array> (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i32) + (local $b i32) + (local $min i32) + (local $max i32) + (local $j i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $top + i32.const 24 + memory.fill i32.const 0 - local.set $startA - loop $while-continue|2 - local.get $endA - local.get $hi - i32.lt_s + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s if - local.get $endA - i32.const 1 + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl i32.add - local.set $startB + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer local.get $ptr - local.get $startB - local.get $hi - local.get $comparator - local.set $34 + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $b + i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $b + local.tee $min i32.store offset=8 - local.get $34 - call $~lib/util/sort/extendRunRight - local.set $endB - local.get $endB - local.get $startB - i32.sub - i32.const 1 - i32.add - local.set $lenB - local.get $lenB - i32.const 32 - i32.lt_s + global.get $~lib/memory/__stack_pointer + local.get $a + local.tee $max + i32.store offset=12 + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $b + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s if - local.get $hi - local.tee $27 - local.get $startB - i32.const 32 - i32.add - i32.const 1 - i32.sub - local.tee $28 - local.get $27 - local.get $28 - i32.lt_s - select - local.set $endB - local.get $ptr - local.get $startB - local.get $endB - local.get $lenB - local.get $comparator - local.set $34 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $a + local.tee $min i32.store offset=8 - local.get $34 - call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $max + i32.store offset=12 end - i32.const 0 - local.get $hi - local.get $startA - local.get $startB - local.get $endB - call $~lib/util/sort/nodePower - local.set $k - local.get $top - local.set $i|30 - loop $for-loop|3 - local.get $i|30 - local.get $k - i32.gt_u - if - local.get $leftRunStartBuf - local.get $i|30 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $start - local.get $start - i32.const -1 - i32.ne + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s if + global.get $~lib/memory/__stack_pointer local.get $ptr - local.get $start - local.get $leftRunEndBuf - local.get $i|30 + local.get $j i32.const 2 i32.shl i32.add i32.load - i32.const 1 - i32.add - local.get $endA - local.get $buffer + local.tee $a + i32.store + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $max + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength local.get $comparator - local.set $34 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $max + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - call $~lib/util/sort/mergeRuns - local.get $start - local.set $startA - local.get $leftRunStartBuf - local.get $i|30 + local.get $ptr + local.get $j i32.const 2 i32.shl i32.add - i32.const -1 + i32.load + local.tee $a i32.store + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $min + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=4 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 end - local.get $i|30 - i32.const 1 - i32.sub - local.set $i|30 - br $for-loop|3 end end - local.get $leftRunStartBuf - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $startA - i32.store - local.get $leftRunEndBuf - local.get $k + local.get $ptr + local.get $j i32.const 2 i32.shl i32.add - local.get $endA - i32.store - local.get $startB - local.set $startA - local.get $endB - local.set $endA - local.get $k - local.set $top - br $while-continue|2 - end - end - local.get $top - local.set $i|32 - loop $for-loop|4 - local.get $i|32 - i32.const 0 - i32.ne - if - local.get $leftRunStartBuf - local.get $i|32 + local.get $min + i32.store offset=4 + local.get $i i32.const 2 - i32.shl i32.add - i32.load - local.set $start|33 - local.get $start|33 - i32.const -1 - i32.ne - if - local.get $ptr - local.get $start|33 - local.get $leftRunEndBuf - local.get $i|32 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - i32.add - local.get $hi - local.get $buffer - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - call $~lib/util/sort/mergeRuns - end - local.get $i|32 - i32.const 1 - i32.sub - local.set $i|32 - br $for-loop|4 + local.set $i + br $for-loop|0 end end - local.get $buffer - call $~lib/rt/tlsf/__free - local.get $leftRunStartBuf - call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#sort (param $this i32) (param $comparator i32) (result i32) - (local $2 i32) + (func $~lib/util/sort/extendRunRight<~lib/array/Array> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/array/Array#get:dataStart - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/array/Array#get:length_ - local.get $comparator - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/util/sort/SORT - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - ) - (func $~lib/array/Array#get:length (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length_ - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) - (local $value i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $index - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#get:length_ - i32.ge_u + i32.store offset=8 + local.get $i + local.get $right + i32.eq if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $i + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 i32.store - local.get $3 - call $~lib/array/Array#get:dataStart - local.get $index + local.get $7 + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j i32.const 2 i32.shl i32.add i32.load - local.tee $value + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 i32.store offset=4 - i32.const 1 - drop + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) i32.const 0 - i32.eqz - drop - local.get $value - i32.eqz + i32.gt_s if - i32.const 5392 - i32.const 80 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $tmp + i32.store offset=8 + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end end - local.get $value - local.set $3 + local.get $j + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $7 return ) - (func $std/array/assertStableSortedForComplexObjects - (local $sorted i32) - (local $check i32) + (func $~lib/util/sort/mergeRuns<~lib/array/Array> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) - (local $len i32) - (local $input i32) - (local $target i32) - (local $6 i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i32) + (local $b i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - global.get $std/array/inputStabArr - local.set $6 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - local.get $6 - i32.const 0 + i64.const 0 + i64.store offset=8 + local.get $m i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/array/Array#slice@varargs - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - i32.const 10192 - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - call $~lib/array/Array#sort - local.tee $sorted - i32.store offset=12 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m i32.const 1 - local.set $check - i32.const 0 + i32.add local.set $i - global.get $std/array/inputStabArr - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $~lib/array/Array#get:length - local.set $len - block $for-break0 - loop $for-loop|0 + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer local.get $i - local.get $len + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $b + i32.store offset=4 + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + local.get $b + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=12 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $sorted - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $i - call $~lib/array/Array#__get - local.tee $input - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $std/array/outputStabArr - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $i - call $~lib/array/Array#__get - local.tee $target - i32.store offset=20 - local.get $input - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $a i32.store - local.get $6 - call $std/array/Dim#get:height - local.get $target - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $b i32.store - local.get $6 - call $std/array/Dim#get:height - i32.ne - if (result i32) - i32.const 1 - else - local.get $input - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $std/array/Dim#get:width - local.get $target - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $std/array/Dim#get:width - i32.ne - end - if - i32.const 0 - local.set $check - br $for-break0 - end local.get $i i32.const 1 i32.add local.set $i - br $for-loop|0 end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 end end - local.get $check - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1076 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array<~lib/array/Array>#constructor (param $this i32) (param $length i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $bufferSize i32) - (local $buffer i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 29 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#set:buffer - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#set:dataStart - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#set:byteLength - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#set:length_ - local.get $length - i32.const 1073741820 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $length - local.tee $2 - i32.const 8 - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select - i32.const 2 - i32.shl - local.set $bufferSize - global.get $~lib/memory/__stack_pointer - local.get $bufferSize - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $buffer - i32.store offset=8 - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $buffer - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $6 - call $~lib/array/Array<~lib/array/Array>#set:buffer - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $buffer - call $~lib/array/Array<~lib/array/Array>#set:dataStart - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $bufferSize - call $~lib/array/Array<~lib/array/Array>#set:byteLength - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $length - call $~lib/array/Array<~lib/array/Array>#set:length_ - local.get $this - local.set $6 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 ) - (func $~lib/array/Array<~lib/array/Array>#__set (param $this i32) (param $index i32) (param $value i32) + (func $~lib/util/sort/SORT<~lib/array/Array> (param $ptr i32) (param $len i32) (param $comparator i32) (local $3 i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - local.get $index - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array<~lib/array/Array>#get:length_ - i32.ge_u + i32.const 24 + memory.fill + local.get $len + i32.const 48 + i32.le_s if - local.get $index - i32.const 0 - i32.lt_s + local.get $len + i32.const 1 + i32.le_s if - i32.const 320 - i32.const 80 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $this - local.get $index - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - local.get $index + i32.const 0 i32.const 1 - i32.add - call $~lib/array/Array<~lib/array/Array>#set:length_ - end - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array<~lib/array/Array>#get:dataStart - local.get $index - i32.const 2 - i32.shl - i32.add - local.get $value - i32.store - i32.const 1 - drop - local.get $this - local.get $value - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/array/createReverseOrderedNestedArray (param $size i32) (result i32) - (local $arr i32) - (local $i i32) - (local $inner i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $size - call $~lib/array/Array<~lib/array/Array>#constructor - local.tee $arr - i32.store - i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i - local.get $size i32.lt_s - if + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=4 + local.tee $b + i32.store offset=4 + local.get $a + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store + global.get $~lib/memory/__stack_pointer + local.get $a + local.get $b + local.get $c + select + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=8 + local.tee $b + i32.store offset=4 + local.get $a + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store offset=4 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i32.store offset=8 + end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 1 - call $~lib/array/Array#constructor - local.tee $inner - i32.store offset=4 - local.get $inner - local.set $4 + local.get $ptr + i32.load + local.tee $a|7 + i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - i32.const 0 - local.get $size - i32.const 1 - i32.sub - local.get $i - i32.sub - call $~lib/array/Array#__set - local.get $arr - local.set $4 + local.get $ptr + i32.load offset=4 + local.tee $b|8 + i32.store offset=20 + local.get $a|7 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $34 i32.store offset=8 - local.get $4 - local.get $i - local.get $inner - local.set $4 + local.get $34 + local.get $b|8 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $34 i32.store offset=12 - local.get $4 - call $~lib/array/Array<~lib/array/Array>#__set + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i32.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.5 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.5 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store local.get $i i32.const 1 i32.add local.set $i - br $for-loop|0 + br $for-loop|1 end end - local.get $arr - local.set $4 + local.get $len + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/extendRunRight<~lib/array/Array> + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort<~lib/array/Array> + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/extendRunRight<~lib/array/Array> + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort<~lib/array/Array> + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/mergeRuns<~lib/array/Array> + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/mergeRuns<~lib/array/Array> + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - return ) - (func $start:std/array~anonymous|52 (param $a i32) (param $b i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#sort (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $a + i64.const 0 + i64.store + local.get $this local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=4 local.get $2 - i32.const 0 - call $~lib/array/Array#__get - local.get $b + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array<~lib/array/Array>#get:length_ + local.get $comparator local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 - i32.const 0 - call $~lib/array/Array#__get - i32.sub + call $~lib/util/sort/SORT<~lib/array/Array> + local.get $this local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $2 + return ) - (func $~lib/util/sort/insertionSort<~lib/array/Array> (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) - (local $range i32) - (local $i i32) - (local $a i32) - (local $b i32) - (local $min i32) - (local $max i32) - (local $j i32) - (local $12 i32) + (func $~lib/array/Array<~lib/array/Array>#get:length (param $this i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $right - local.get $left - i32.sub - i32.const 1 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<~lib/array/Array>#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $range - local.get $left - local.get $range - i32.const 1 - i32.and - local.get $presorted - local.get $range - local.get $presorted + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<~lib/array/Array>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 2448 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 i32.const 1 - i32.and - i32.sub - local.get $presorted + drop i32.const 0 - i32.eq - select + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 7360 + i32.const 2448 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/array/isSorted<~lib/array/Array> (param $data i32) (param $comparator i32) (result i32) + (local $i i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 1 local.set $i + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/array/Array>#get:length + local.set $len loop $for-loop|0 local.get $i - local.get $right - i32.le_s + local.get $len + i32.lt_s if + local.get $data + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $ptr + local.get $4 + i32.store offset=8 + local.get $4 local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $a - i32.store + i32.const 1 + i32.sub + call $~lib/array/Array<~lib/array/Array>#__get + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $b - i32.store offset=4 + local.get $4 + i32.store + local.get $4 + local.get $data + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $b - local.tee $min + local.get $4 i32.store offset=8 + local.get $4 + local.get $i + call $~lib/array/Array<~lib/array/Array>#__get + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $a - local.tee $max - i32.store offset=12 - local.get $a - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=16 - local.get $12 - local.get $b - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=20 - local.get $12 + local.get $4 + i32.store offset=4 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $comparator i32.load call_indirect (type $0) i32.const 0 - i32.le_s + i32.gt_s if + i32.const 0 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $a - local.tee $min - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $b - local.tee $max - i32.store offset=12 + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return end local.get $i i32.const 1 - i32.sub - local.set $j - block $while-break|1 - loop $while-continue|1 - local.get $j - local.get $left - i32.ge_s - if - global.get $~lib/memory/__stack_pointer - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $a - i32.store - local.get $a - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=16 - local.get $12 - local.get $max - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=20 - local.get $12 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - local.get $a - i32.store offset=8 - local.get $j - i32.const 1 - i32.sub - local.set $j - else - br $while-break|1 - end - br $while-continue|1 - end - end - end - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - local.get $max - i32.store offset=8 - block $while-break|2 - loop $while-continue|2 - local.get $j - local.get $left - i32.ge_s - if - global.get $~lib/memory/__stack_pointer - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $a - i32.store - local.get $a - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=16 - local.get $12 - local.get $min - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=20 - local.get $12 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - local.get $a - i32.store offset=4 - local.get $j - i32.const 1 - i32.sub - local.set $j - else - br $while-break|2 - end - br $while-continue|2 - end - end - end - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - local.get $min - i32.store offset=4 - local.get $i - i32.const 2 i32.add local.set $i br $for-loop|0 end end + i32.const 1 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 + return ) - (func $~lib/util/sort/extendRunRight<~lib/array/Array> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp i32) - (local $7 i32) + (func $std/array/assertSorted<~lib/array/Array> (param $arr i32) (param $comparator i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -21299,300 +21822,443 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 + i64.const 0 + i64.store offset=8 + local.get $arr + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.store offset=8 - local.get $i - local.get $right - i32.eq + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/array/Array<~lib/array/Array>#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $std/array/isSorted<~lib/array/Array> + i32.eqz + if + i32.const 0 + i32.const 2496 + i32.const 1080 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array>#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz if - local.get $i - local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return + i32.const 16 + i32.const 32 + call $~lib/rt/itcms/__new + local.tee $this + i32.store end - local.get $i - local.set $j - local.get $ptr - local.get $j + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array>#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 2400 + i32.const 2448 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select i32.const 2 i32.shl - i32.add - i32.load - local.set $7 + local.set $bufferSize global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $ptr - local.get $j + local.get $bufferSize i32.const 1 - i32.add - local.tee $j + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=4 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $tmp - i32.store offset=8 - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $tmp - i32.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - local.set $7 + local.get $6 + local.get $buffer + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array>#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 - return + local.get $6 ) - (func $~lib/util/sort/mergeRuns<~lib/array/Array> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) - (local $i i32) - (local $j i32) - (local $t i32) - (local $k i32) - (local $a i32) - (local $b i32) - (local $12 i32) + (func $std/array/Proxy#constructor (param $this i32) (param $x i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 31 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $m - i32.const 1 + local.get $2 + i32.store offset=4 + local.get $2 + local.get $x + call $std/array/Proxy#set:x + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.set $m - local.get $r - local.get $m + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 2448 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array>#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array>#get:dataStart + local.get $index + i32.const 2 + i32.shl i32.add - local.set $t - local.get $m + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/createReverseOrderedElementsArray (param $size i32) (result i32) + (local $arr i32) + (local $i i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array>#constructor + local.tee $arr + i32.store + i32.const 0 local.set $i loop $for-loop|0 local.get $i - local.get $l - i32.gt_s + local.get $size + i32.lt_s if - local.get $buffer + local.get $arr + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 local.get $i + i32.const 0 + local.get $size i32.const 1 i32.sub - i32.const 2 - i32.shl - i32.add - local.get $ptr local.get $i - i32.const 1 i32.sub - i32.const 2 - i32.shl - i32.add - i32.load - i32.store + call $std/array/Proxy#constructor + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/array/Array>#__set local.get $i i32.const 1 - i32.sub + i32.add local.set $i br $for-loop|0 end end - local.get $m - local.set $j - loop $for-loop|1 - local.get $j - local.get $r - i32.lt_s - if - local.get $buffer - local.get $t - local.get $j - i32.sub - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.store - local.get $j - i32.const 1 - i32.add - local.set $j - br $for-loop|1 - end - end - local.get $l - local.set $k - loop $for-loop|2 - local.get $k - local.get $r + local.get $arr + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $start:std/array~anonymous|53 (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/array/Proxy#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/array/Proxy#get:x + i32.sub + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/sort/insertionSort> (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i32) + (local $b i32) + (local $min i32) + (local $max i32) + (local $j i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right i32.le_s if global.get $~lib/memory/__stack_pointer - local.get $buffer - local.get $j + local.get $ptr + local.get $i i32.const 2 i32.shl i32.add @@ -21600,25 +22266,33 @@ local.tee $a i32.store global.get $~lib/memory/__stack_pointer - local.get $buffer + local.get $ptr local.get $i i32.const 2 i32.shl i32.add - i32.load + i32.load offset=4 local.tee $b i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $min + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $a + local.tee $max + i32.store offset=12 local.get $a local.set $12 global.get $~lib/memory/__stack_pointer local.get $12 - i32.store offset=8 + i32.store offset=16 local.get $12 local.get $b local.set $12 global.get $~lib/memory/__stack_pointer local.get $12 - i32.store offset=12 + i32.store offset=20 local.get $12 i32.const 2 global.set $~argumentsLength @@ -21626,32 +22300,520 @@ i32.load call_indirect (type $0) i32.const 0 - i32.lt_s + i32.le_s if - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add + global.get $~lib/memory/__stack_pointer local.get $a - i32.store - local.get $j - i32.const 1 - i32.sub - local.set $j - else - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add + local.tee $min + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $b - i32.store - local.get $i - i32.const 1 - i32.add - local.set $i - end + local.tee $max + i32.store offset=12 + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $max + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $max + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $min + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=4 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $min + i32.store offset=4 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/extendRunRight> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $tmp + i32.store offset=8 + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/util/sort/mergeRuns> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i32) + (local $b i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $b + i32.store offset=4 + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + local.get $b + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=12 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $b + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + end local.get $k i32.const 1 i32.add @@ -21664,7 +22826,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT<~lib/array/Array> (param $ptr i32) (param $len i32) (param $comparator i32) + (func $~lib/util/sort/SORT> (param $ptr i32) (param $len i32) (param $comparator i32) (local $3 i32) (local $a i32) (local $b i32) @@ -21880,21 +23042,21 @@ local.get $34 i32.store offset=8 local.get $34 - call $~lib/util/sort/insertionSort<~lib/array/Array> + call $~lib/util/sort/insertionSort> global.get $~lib/memory/__stack_pointer i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return end - block $~lib/util/sort/log2u|inlined.5 (result i32) + block $~lib/util/sort/log2u|inlined.6 (result i32) local.get $len local.set $n i32.const 31 local.get $n i32.clz i32.sub - br $~lib/util/sort/log2u|inlined.5 + br $~lib/util/sort/log2u|inlined.6 end i32.const 2 i32.add @@ -21951,7 +23113,7 @@ local.get $34 i32.store offset=8 local.get $34 - call $~lib/util/sort/extendRunRight<~lib/array/Array> + call $~lib/util/sort/extendRunRight> local.set $endA local.get $endA i32.const 1 @@ -21982,7 +23144,7 @@ local.get $34 i32.store offset=8 local.get $34 - call $~lib/util/sort/insertionSort<~lib/array/Array> + call $~lib/util/sort/insertionSort> end i32.const 0 local.set $top @@ -22006,7 +23168,7 @@ local.get $34 i32.store offset=8 local.get $34 - call $~lib/util/sort/extendRunRight<~lib/array/Array> + call $~lib/util/sort/extendRunRight> local.set $endB local.get $endB local.get $startB @@ -22041,7 +23203,7 @@ local.get $34 i32.store offset=8 local.get $34 - call $~lib/util/sort/insertionSort<~lib/array/Array> + call $~lib/util/sort/insertionSort> end i32.const 0 local.get $hi @@ -22086,7 +23248,7 @@ local.get $34 i32.store offset=8 local.get $34 - call $~lib/util/sort/mergeRuns<~lib/array/Array> + call $~lib/util/sort/mergeRuns> local.get $start local.set $startA local.get $leftRunStartBuf @@ -22163,7 +23325,7 @@ local.get $34 i32.store offset=8 local.get $34 - call $~lib/util/sort/mergeRuns<~lib/array/Array> + call $~lib/util/sort/mergeRuns> end local.get $i|32 i32.const 1 @@ -22181,7 +23343,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/array/Array>#sort (param $this i32) (param $comparator i32) (result i32) + (func $~lib/array/Array>#sort (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -22197,21 +23359,21 @@ local.get $2 i32.store offset=4 local.get $2 - call $~lib/array/Array<~lib/array/Array>#get:dataStart + call $~lib/array/Array>#get:dataStart local.get $this local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 - call $~lib/array/Array<~lib/array/Array>#get:length_ + call $~lib/array/Array>#get:length_ local.get $comparator local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 - call $~lib/util/sort/SORT<~lib/array/Array> + call $~lib/util/sort/SORT> local.get $this local.set $2 global.get $~lib/memory/__stack_pointer @@ -22221,7 +23383,7 @@ local.get $2 return ) - (func $~lib/array/Array<~lib/array/Array>#get:length (param $this i32) (result i32) + (func $~lib/array/Array>#get:length (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -22237,7 +23399,7 @@ local.get $1 i32.store local.get $1 - call $~lib/array/Array<~lib/array/Array>#get:length_ + call $~lib/array/Array>#get:length_ local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -22246,7 +23408,7 @@ local.get $1 return ) - (func $~lib/array/Array<~lib/array/Array>#__get (param $this i32) (param $index i32) (result i32) + (func $~lib/array/Array>#__get (param $this i32) (param $index i32) (result i32) (local $value i32) (local $3 i32) global.get $~lib/memory/__stack_pointer @@ -22264,11 +23426,11 @@ local.get $3 i32.store local.get $3 - call $~lib/array/Array<~lib/array/Array>#get:length_ + call $~lib/array/Array>#get:length_ i32.ge_u if i32.const 320 - i32.const 80 + i32.const 2448 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -22281,7 +23443,7 @@ local.get $3 i32.store local.get $3 - call $~lib/array/Array<~lib/array/Array>#get:dataStart + call $~lib/array/Array>#get:dataStart local.get $index i32.const 2 i32.shl @@ -22297,8 +23459,8 @@ local.get $value i32.eqz if - i32.const 5392 - i32.const 80 + i32.const 7360 + i32.const 2448 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -22313,7 +23475,7 @@ local.get $3 return ) - (func $std/array/isSorted<~lib/array/Array> (param $data i32) (param $comparator i32) (result i32) + (func $std/array/isSorted> (param $data i32) (param $comparator i32) (result i32) (local $i i32) (local $len i32) (local $4 i32) @@ -22336,7 +23498,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array<~lib/array/Array>#get:length + call $~lib/array/Array>#get:length local.set $len loop $for-loop|0 local.get $i @@ -22352,7 +23514,7 @@ local.get $i i32.const 1 i32.sub - call $~lib/array/Array<~lib/array/Array>#__get + call $~lib/array/Array>#__get local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -22365,7 +23527,7 @@ i32.store offset=8 local.get $4 local.get $i - call $~lib/array/Array<~lib/array/Array>#__get + call $~lib/array/Array>#__get local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -22404,7 +23566,7 @@ local.get $4 return ) - (func $std/array/assertSorted<~lib/array/Array> (param $arr i32) (param $comparator i32) + (func $std/array/assertSorted> (param $arr i32) (param $comparator i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 16 @@ -22429,7 +23591,7 @@ local.get $2 i32.store offset=12 local.get $2 - call $~lib/array/Array<~lib/array/Array>#sort + call $~lib/array/Array>#sort local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -22441,11 +23603,11 @@ local.get $2 i32.store offset=4 local.get $2 - call $std/array/isSorted<~lib/array/Array> + call $std/array/isSorted> i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1080 i32.const 3 call $~lib/builtins/abort @@ -22456,350 +23618,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array>#constructor (param $this i32) (param $length i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $bufferSize i32) - (local $buffer i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 32 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - call $~lib/array/Array>#set:buffer - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - call $~lib/array/Array>#set:dataStart - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - call $~lib/array/Array>#set:byteLength - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - call $~lib/array/Array>#set:length_ - local.get $length - i32.const 1073741820 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $length - local.tee $2 - i32.const 8 - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select - i32.const 2 - i32.shl - local.set $bufferSize - global.get $~lib/memory/__stack_pointer - local.get $bufferSize - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $buffer - i32.store offset=8 - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $buffer - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $6 - call $~lib/array/Array>#set:buffer - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $buffer - call $~lib/array/Array>#set:dataStart - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $bufferSize - call $~lib/array/Array>#set:byteLength - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $length - call $~lib/array/Array>#set:length_ - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) - (func $std/array/Proxy#constructor (param $this i32) (param $x i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 31 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $x - call $std/array/Proxy#set:x - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/array/Array>#__set (param $this i32) (param $index i32) (param $value i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $index - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array>#get:length_ - i32.ge_u - if - local.get $index - i32.const 0 - i32.lt_s - if - i32.const 320 - i32.const 80 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $this - local.get $index - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - local.get $index - i32.const 1 - i32.add - call $~lib/array/Array>#set:length_ - end - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array>#get:dataStart - local.get $index - i32.const 2 - i32.shl - i32.add - local.get $value - i32.store - i32.const 1 - drop - local.get $this - local.get $value - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/array/createReverseOrderedElementsArray (param $size i32) (result i32) - (local $arr i32) - (local $i i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $size - call $~lib/array/Array>#constructor - local.tee $arr - i32.store - i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i - local.get $size - i32.lt_s - if - local.get $arr - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $i - i32.const 0 - local.get $size - i32.const 1 - i32.sub - local.get $i - i32.sub - call $std/array/Proxy#constructor - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - call $~lib/array/Array>#__set - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 - end - end - local.get $arr - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $start:std/array~anonymous|53 (param $a i32) (param $b i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/array/Proxy#get:x - local.get $b - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/array/Proxy#get:x - i32.sub - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/util/sort/insertionSort> (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (func $~lib/util/sort/insertionSort<~lib/string/String|null> (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) (local $range i32) (local $i i32) (local $a i32) @@ -23040,7 +23859,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (func $~lib/util/sort/extendRunRight<~lib/string/String|null> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) (local $k i32) (local $tmp i32) @@ -23251,7 +24070,7 @@ local.get $7 return ) - (func $~lib/util/sort/mergeRuns> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (func $~lib/util/sort/mergeRuns<~lib/string/String|null> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) (local $j i32) (local $t i32) @@ -23419,7 +24238,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT> (param $ptr i32) (param $len i32) (param $comparator i32) + (func $~lib/util/sort/SORT<~lib/string/String|null> (param $ptr i32) (param $len i32) (param $comparator i32) (local $3 i32) (local $a i32) (local $b i32) @@ -23635,21 +24454,21 @@ local.get $34 i32.store offset=8 local.get $34 - call $~lib/util/sort/insertionSort> + call $~lib/util/sort/insertionSort<~lib/string/String|null> global.get $~lib/memory/__stack_pointer i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return end - block $~lib/util/sort/log2u|inlined.6 (result i32) + block $~lib/util/sort/log2u|inlined.7 (result i32) local.get $len local.set $n i32.const 31 local.get $n i32.clz i32.sub - br $~lib/util/sort/log2u|inlined.6 + br $~lib/util/sort/log2u|inlined.7 end i32.const 2 i32.add @@ -23706,7 +24525,7 @@ local.get $34 i32.store offset=8 local.get $34 - call $~lib/util/sort/extendRunRight> + call $~lib/util/sort/extendRunRight<~lib/string/String|null> local.set $endA local.get $endA i32.const 1 @@ -23737,7 +24556,7 @@ local.get $34 i32.store offset=8 local.get $34 - call $~lib/util/sort/insertionSort> + call $~lib/util/sort/insertionSort<~lib/string/String|null> end i32.const 0 local.set $top @@ -23761,7 +24580,7 @@ local.get $34 i32.store offset=8 local.get $34 - call $~lib/util/sort/extendRunRight> + call $~lib/util/sort/extendRunRight<~lib/string/String|null> local.set $endB local.get $endB local.get $startB @@ -23796,7 +24615,7 @@ local.get $34 i32.store offset=8 local.get $34 - call $~lib/util/sort/insertionSort> + call $~lib/util/sort/insertionSort<~lib/string/String|null> end i32.const 0 local.get $hi @@ -23841,7 +24660,7 @@ local.get $34 i32.store offset=8 local.get $34 - call $~lib/util/sort/mergeRuns> + call $~lib/util/sort/mergeRuns<~lib/string/String|null> local.get $start local.set $startA local.get $leftRunStartBuf @@ -23918,7 +24737,7 @@ local.get $34 i32.store offset=8 local.get $34 - call $~lib/util/sort/mergeRuns> + call $~lib/util/sort/mergeRuns<~lib/string/String|null> end local.get $i|32 i32.const 1 @@ -23936,7 +24755,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array>#sort (param $this i32) (param $comparator i32) (result i32) + (func $~lib/array/Array<~lib/string/String|null>#sort (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -23952,21 +24771,21 @@ local.get $2 i32.store offset=4 local.get $2 - call $~lib/array/Array>#get:dataStart + call $~lib/array/Array<~lib/string/String|null>#get:dataStart local.get $this local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 - call $~lib/array/Array>#get:length_ + call $~lib/array/Array<~lib/string/String|null>#get:length_ local.get $comparator local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 - call $~lib/util/sort/SORT> + call $~lib/util/sort/SORT<~lib/string/String|null> local.get $this local.set $2 global.get $~lib/memory/__stack_pointer @@ -23976,7 +24795,7 @@ local.get $2 return ) - (func $~lib/array/Array>#get:length (param $this i32) (result i32) + (func $~lib/array/Array<~lib/string/String|null>#get:length (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -23992,7 +24811,7 @@ local.get $1 i32.store local.get $1 - call $~lib/array/Array>#get:length_ + call $~lib/array/Array<~lib/string/String|null>#get:length_ local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -24001,7 +24820,7 @@ local.get $1 return ) - (func $~lib/array/Array>#__get (param $this i32) (param $index i32) (result i32) + (func $~lib/array/Array<~lib/string/String|null>#__get (param $this i32) (param $index i32) (result i32) (local $value i32) (local $3 i32) global.get $~lib/memory/__stack_pointer @@ -24019,11 +24838,11 @@ local.get $3 i32.store local.get $3 - call $~lib/array/Array>#get:length_ + call $~lib/array/Array<~lib/string/String|null>#get:length_ i32.ge_u if i32.const 320 - i32.const 80 + i32.const 2448 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -24036,7 +24855,7 @@ local.get $3 i32.store local.get $3 - call $~lib/array/Array>#get:dataStart + call $~lib/array/Array<~lib/string/String|null>#get:dataStart local.get $index i32.const 2 i32.shl @@ -24046,20 +24865,10 @@ i32.store offset=4 i32.const 1 drop - i32.const 0 + i32.const 1 i32.eqz drop local.get $value - i32.eqz - if - i32.const 5392 - i32.const 80 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $value local.set $3 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -24068,7 +24877,7 @@ local.get $3 return ) - (func $std/array/isSorted> (param $data i32) (param $comparator i32) (result i32) + (func $std/array/isSorted<~lib/string/String|null> (param $data i32) (param $comparator i32) (result i32) (local $i i32) (local $len i32) (local $4 i32) @@ -24091,7 +24900,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array>#get:length + call $~lib/array/Array<~lib/string/String|null>#get:length local.set $len loop $for-loop|0 local.get $i @@ -24107,7 +24916,7 @@ local.get $i i32.const 1 i32.sub - call $~lib/array/Array>#__get + call $~lib/array/Array<~lib/string/String|null>#__get local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -24120,7 +24929,7 @@ i32.store offset=8 local.get $4 local.get $i - call $~lib/array/Array>#__get + call $~lib/array/Array<~lib/string/String|null>#__get local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -24159,7 +24968,7 @@ local.get $4 return ) - (func $std/array/assertSorted> (param $arr i32) (param $comparator i32) + (func $std/array/assertSorted<~lib/string/String|null> (param $arr i32) (param $comparator i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 16 @@ -24184,7 +24993,7 @@ local.get $2 i32.store offset=12 local.get $2 - call $~lib/array/Array>#sort + call $~lib/array/Array<~lib/string/String|null>#sort local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -24196,11 +25005,11 @@ local.get $2 i32.store offset=4 local.get $2 - call $std/array/isSorted> + call $std/array/isSorted<~lib/string/String|null> i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1080 i32.const 3 call $~lib/builtins/abort @@ -24211,1269 +25020,785 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/insertionSort<~lib/string/String|null> (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) - (local $range i32) - (local $i i32) - (local $a i32) - (local $b i32) - (local $min i32) - (local $max i32) - (local $j i32) - (local $12 i32) + (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $a i32) (param $b i32) (result i32) + (local $alen i32) + (local $blen i32) + (local $4 i32) + (local $5 i32) + (local $res i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $a + local.get $b + i32.eq + if (result i32) + i32.const 1 + else + local.get $a + i32.const 0 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $b + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $a + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $alen + local.get $b + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $blen + local.get $alen + local.get $blen + i32.or + i32.eqz + if + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $alen + i32.eqz + if + i32.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $blen + i32.eqz + if + i32.const 1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $a + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 i32.const 0 - i32.const 24 - memory.fill + local.get $b + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $right - local.get $left - i32.sub - i32.const 1 + local.get $alen + local.tee $4 + local.get $blen + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.set $res + local.get $res + if (result i32) + local.get $res + else + local.get $alen + local.get $blen + i32.sub + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $range - local.get $left - local.get $range - i32.const 1 - i32.and - local.get $presorted - local.get $range - local.get $presorted - i32.sub - i32.const 1 - i32.and + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $std/array/assertSorted<~lib/string/String|null>@varargs (param $arr i32) (param $comparator i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub - local.get $presorted + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.eq - select - i32.add - local.set $i - loop $for-loop|0 - local.get $i - local.get $right - i32.le_s - if - global.get $~lib/memory/__stack_pointer - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $a - i32.store - global.get $~lib/memory/__stack_pointer - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $b - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $b - local.tee $min - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $a - local.tee $max - i32.store offset=12 - local.get $a - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=16 - local.get $12 - local.get $b - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=20 - local.get $12 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - if - global.get $~lib/memory/__stack_pointer - local.get $a - local.tee $min - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $b - local.tee $max - i32.store offset=12 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange end - local.get $i + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 (result i32) + i32.const 0 + drop + i32.const 0 + drop i32.const 1 - i32.sub - local.set $j - block $while-break|1 - loop $while-continue|1 - local.get $j - local.get $left - i32.ge_s - if - global.get $~lib/memory/__stack_pointer - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $a - i32.store - local.get $a - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=16 - local.get $12 - local.get $max - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=20 - local.get $12 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - local.get $a - i32.store offset=8 - local.get $j - i32.const 1 - i32.sub - local.set $j - else - br $while-break|1 - end - br $while-continue|1 - end - end - end - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - local.get $max - i32.store offset=8 - block $while-break|2 - loop $while-continue|2 - local.get $j - local.get $left - i32.ge_s - if - global.get $~lib/memory/__stack_pointer - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $a - i32.store - local.get $a - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=16 - local.get $12 - local.get $min - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=20 - local.get $12 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - local.get $a - i32.store offset=4 - local.get $j - i32.const 1 - i32.sub - local.set $j - else - br $while-break|2 - end - br $while-continue|2 - end - end - end - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - local.get $min - i32.store offset=4 - local.get $i - i32.const 2 - i32.add - local.set $i - br $for-loop|0 + drop + i32.const 10832 + br $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 end + local.tee $comparator + i32.store end + local.get $arr + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 24 + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $std/array/assertSorted<~lib/string/String|null> + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight<~lib/string/String|null> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp i32) - (local $7 i32) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $i + local.get $left local.get $right i32.eq if - local.get $i - local.set $7 + i32.const 1 + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $3 return end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) + local.get $left i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $tmp - i32.store offset=8 - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $tmp - i32.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end + i32.eq + if (result i32) + i32.const 1 else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end + local.get $right + i32.const 0 + i32.eq end - local.get $j - local.set $7 + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $3 return ) - (func $~lib/util/sort/mergeRuns<~lib/string/String|null> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) - (local $i i32) - (local $j i32) - (local $t i32) - (local $k i32) - (local $a i32) - (local $b i32) - (local $12 i32) + (func $~lib/string/String.__ne (param $left i32) (param $right i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + local.get $left + local.set $2 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $m - i32.const 1 - i32.sub - local.set $m - local.get $r - local.get $m - i32.add - local.set $t - local.get $m - i32.const 1 + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__eq + i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $i - loop $for-loop|0 - local.get $i - local.get $l - i32.gt_s + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/array/isArraysEqual<~lib/string/String|null> (param $a i32) (param $b i32) (param $len i32) (result i32) + (local $i i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $len + i32.eqz + if + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String|null>#get:length + local.set $len + local.get $len + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String|null>#get:length + i32.ne if - local.get $buffer - local.get $i - i32.const 1 - i32.sub - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $i - i32.const 1 - i32.sub - i32.const 2 - i32.shl + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load - i32.store - local.get $i - i32.const 1 - i32.sub - local.set $i - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + local.get $4 + return end - end - local.get $m - local.set $j - loop $for-loop|1 - local.get $j - local.get $r - i32.lt_s + local.get $a + local.get $b + i32.eq if - local.get $buffer - local.get $t - local.get $j - i32.sub - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.store - local.get $j i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.set $j - br $for-loop|1 + global.set $~lib/memory/__stack_pointer + local.get $4 + return end end - local.get $l - local.set $k - loop $for-loop|2 - local.get $k - local.get $r - i32.le_s + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $buffer - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $a - i32.store - global.get $~lib/memory/__stack_pointer - local.get $buffer - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $b - i32.store offset=4 + i32.const 0 + drop local.get $a - local.set $12 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $4 i32.store offset=8 - local.get $12 + local.get $4 + local.get $i + call $~lib/array/Array<~lib/string/String|null>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 local.get $b - local.set $12 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=12 - local.get $12 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.lt_s + local.get $4 + i32.store offset=8 + local.get $4 + local.get $i + call $~lib/array/Array<~lib/string/String|null>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__ne if - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $a - i32.store - local.get $j - i32.const 1 - i32.sub - local.set $j - else - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $b - i32.store - local.get $i - i32.const 1 + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.set $i + global.set $~lib/memory/__stack_pointer + local.get $4 + return end - local.get $k + local.get $i i32.const 1 i32.add - local.set $k - br $for-loop|2 + local.set $i + br $for-loop|0 end end + i32.const 1 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 + return ) - (func $~lib/util/sort/SORT<~lib/string/String|null> (param $ptr i32) (param $len i32) (param $comparator i32) + (func $~lib/array/Array<~lib/string/String>#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) (local $3 i32) - (local $a i32) - (local $b i32) - (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) - (local $n i32) - (local $lgPlus2 i32) - (local $lgPlus2Size i32) - (local $leftRunStartBuf i32) - (local $leftRunEndBuf i32) - (local $i i32) + (local $bufferSize i32) (local $buffer i32) - (local $hi i32) - (local $endA i32) - (local $lenA i32) - (local $20 i32) - (local $21 i32) - (local $top i32) - (local $startA i32) - (local $startB i32) - (local $endB i32) - (local $lenB i32) - (local $27 i32) - (local $28 i32) - (local $k i32) - (local $i|30 i32) - (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - local.get $len - i32.const 48 - i32.le_s - if - local.get $len - i32.const 1 - i32.le_s - if - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $break|0 - block $case1|0 - block $case0|0 - local.get $len - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - global.get $~lib/memory/__stack_pointer - local.get $ptr - i32.load - local.tee $a - i32.store - global.get $~lib/memory/__stack_pointer - local.get $ptr - i32.load offset=4 - local.tee $b - i32.store offset=4 - local.get $a - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - local.get $b - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=12 - local.get $34 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.set $c - local.get $ptr - local.get $b - local.get $a - local.get $c - select - i32.store - global.get $~lib/memory/__stack_pointer - local.get $a - local.get $b - local.get $c - select - local.tee $a - i32.store - global.get $~lib/memory/__stack_pointer - local.get $ptr - i32.load offset=8 - local.tee $b - i32.store offset=4 - local.get $a - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - local.get $b - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=12 - local.get $34 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.set $c - local.get $ptr - local.get $b - local.get $a - local.get $c - select - i32.store offset=4 - local.get $ptr - local.get $a - local.get $b - local.get $c - select - i32.store offset=8 - end - global.get $~lib/memory/__stack_pointer - local.get $ptr - i32.load - local.tee $a|7 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $ptr - i32.load offset=4 - local.tee $b|8 - i32.store offset=20 - local.get $a|7 - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - local.get $b|8 - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=12 - local.get $34 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.set $c|9 - local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 - select - i32.store - local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 - select - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $ptr - i32.const 0 - local.get $len - i32.const 1 - i32.sub - i32.const 0 - local.get $comparator - local.set $34 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - call $~lib/util/sort/insertionSort<~lib/string/String|null> + i32.const 16 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 2400 + i32.const 2448 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array<~lib/string/String>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array<~lib/string/String>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array<~lib/string/String>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array<~lib/string/String>#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/string/String#charAt (param $this i32) (param $pos i32) (result i32) + (local $out i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $pos + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ge_u + if + i32.const 96 + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 return end - block $~lib/util/sort/log2u|inlined.7 (result i32) - local.get $len - local.set $n - i32.const 31 - local.get $n - i32.clz - i32.sub - br $~lib/util/sort/log2u|inlined.7 - end + global.get $~lib/memory/__stack_pointer i32.const 2 - i32.add - local.set $lgPlus2 - local.get $lgPlus2 i32.const 2 - i32.shl - local.set $lgPlus2Size - local.get $lgPlus2Size + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $pos i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.set $leftRunStartBuf - local.get $leftRunStartBuf - local.get $lgPlus2Size i32.add - local.set $leftRunEndBuf + i32.load16_u + i32.store16 + local.get $out + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/array/createRandomString (param $len i32) (result i32) + (local $result i32) + (local $i i32) + (local $x f64) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 96 + local.tee $result + i32.store i32.const 0 local.set $i - loop $for-loop|1 + loop $for-loop|0 local.get $i - local.get $lgPlus2 - i32.lt_u + local.get $len + i32.lt_s if - local.get $leftRunStartBuf - local.get $i - i32.const 2 - i32.shl - i32.add - i32.const -1 + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + global.get $std/array/charset + block $~lib/math/NativeMath.floor|inlined.0 (result f64) + call $~lib/math/NativeMath.random + global.get $std/array/charset + call $~lib/string/String#get:length + f64.convert_i32_s + f64.mul + local.set $x + local.get $x + f64.floor + br $~lib/math/NativeMath.floor|inlined.0 + end + i32.trunc_sat_f64_s + call $~lib/string/String#charAt + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/string/String.__concat + local.tee $result i32.store local.get $i i32.const 1 i32.add local.set $i - br $for-loop|1 + br $for-loop|0 end end - local.get $len - i32.const 2 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $buffer - local.get $len - i32.const 1 + local.get $result + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array<~lib/string/String>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.set $hi - local.get $ptr + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $hi - local.get $comparator - local.set $34 + i32.store + local.get $index + local.get $this + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - call $~lib/util/sort/extendRunRight<~lib/string/String|null> - local.set $endA - local.get $endA - i32.const 1 - i32.add - local.set $lenA - local.get $lenA - i32.const 32 - i32.lt_s + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.ge_u if - local.get $hi - local.tee $20 - i32.const 32 - i32.const 1 - i32.sub - local.tee $21 - local.get $20 - local.get $21 - i32.lt_s - select - local.set $endA - local.get $ptr + local.get $index i32.const 0 - local.get $endA - local.get $lenA - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - call $~lib/util/sort/insertionSort<~lib/string/String|null> - end - i32.const 0 - local.set $top - i32.const 0 - local.set $startA - loop $while-continue|2 - local.get $endA - local.get $hi i32.lt_s if - local.get $endA - i32.const 1 - i32.add - local.set $startB - local.get $ptr - local.get $startB - local.get $hi - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - call $~lib/util/sort/extendRunRight<~lib/string/String|null> - local.set $endB - local.get $endB - local.get $startB - i32.sub - i32.const 1 - i32.add - local.set $lenB - local.get $lenB - i32.const 32 - i32.lt_s - if - local.get $hi - local.tee $27 - local.get $startB - i32.const 32 - i32.add - i32.const 1 - i32.sub - local.tee $28 - local.get $27 - local.get $28 - i32.lt_s - select - local.set $endB - local.get $ptr - local.get $startB - local.get $endB - local.get $lenB - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - call $~lib/util/sort/insertionSort<~lib/string/String|null> - end - i32.const 0 - local.get $hi - local.get $startA - local.get $startB - local.get $endB - call $~lib/util/sort/nodePower - local.set $k - local.get $top - local.set $i|30 - loop $for-loop|3 - local.get $i|30 - local.get $k - i32.gt_u - if - local.get $leftRunStartBuf - local.get $i|30 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $start - local.get $start - i32.const -1 - i32.ne - if - local.get $ptr - local.get $start - local.get $leftRunEndBuf - local.get $i|30 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - i32.add - local.get $endA - local.get $buffer - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - call $~lib/util/sort/mergeRuns<~lib/string/String|null> - local.get $start - local.set $startA - local.get $leftRunStartBuf - local.get $i|30 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - end - local.get $i|30 - i32.const 1 - i32.sub - local.set $i|30 - br $for-loop|3 - end - end - local.get $leftRunStartBuf - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $startA - i32.store - local.get $leftRunEndBuf - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $endA - i32.store - local.get $startB - local.set $startA - local.get $endB - local.set $endA - local.get $k - local.set $top - br $while-continue|2 - end - end - local.get $top - local.set $i|32 - loop $for-loop|4 - local.get $i|32 - i32.const 0 - i32.ne - if - local.get $leftRunStartBuf - local.get $i|32 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $start|33 - local.get $start|33 - i32.const -1 - i32.ne - if - local.get $ptr - local.get $start|33 - local.get $leftRunEndBuf - local.get $i|32 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - i32.add - local.get $hi - local.get $buffer - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - call $~lib/util/sort/mergeRuns<~lib/string/String|null> - end - local.get $i|32 - i32.const 1 - i32.sub - local.set $i|32 - br $for-loop|4 + i32.const 320 + i32.const 2448 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array<~lib/string/String>#set:length_ end - local.get $buffer - call $~lib/rt/tlsf/__free - local.get $leftRunStartBuf - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array<~lib/string/String|null>#sort (param $this i32) (param $comparator i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/array/Array<~lib/string/String|null>#get:dataStart - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/array/Array<~lib/string/String|null>#get:length_ - local.get $comparator - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/util/sort/SORT<~lib/string/String|null> - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - ) - (func $~lib/array/Array<~lib/string/String|null>#get:length (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array<~lib/string/String|null>#get:length_ - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/array/Array<~lib/string/String|null>#__get (param $this i32) (param $index i32) (result i32) - (local $value i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $index - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array<~lib/string/String|null>#get:length_ - i32.ge_u - if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer local.get $this local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 i32.store local.get $3 - call $~lib/array/Array<~lib/string/String|null>#get:dataStart + call $~lib/array/Array<~lib/string/String>#get:dataStart local.get $index i32.const 2 i32.shl i32.add - i32.load - local.tee $value - i32.store offset=4 - i32.const 1 - drop + local.get $value + i32.store i32.const 1 - i32.eqz drop + local.get $this local.get $value - local.set $3 + i32.const 1 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 - return ) - (func $std/array/isSorted<~lib/string/String|null> (param $data i32) (param $comparator i32) (result i32) + (func $std/array/createRandomStringArray (param $size i32) (result i32) + (local $arr i32) (local $i i32) - (local $len i32) - (local $4 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -25485,66 +25810,37 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - i32.const 1 - local.set $i - local.get $data - local.set $4 global.get $~lib/memory/__stack_pointer - local.get $4 + i32.const 0 + local.get $size + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $arr i32.store - local.get $4 - call $~lib/array/Array<~lib/string/String|null>#get:length - local.set $len + i32.const 0 + local.set $i loop $for-loop|0 local.get $i - local.get $len + local.get $size i32.lt_s if - local.get $data - local.set $4 + local.get $arr + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 + local.get $3 + i32.store offset=4 + local.get $3 local.get $i - i32.const 1 - i32.sub - call $~lib/array/Array<~lib/string/String|null>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - local.get $data - local.set $4 + call $~lib/math/NativeMath.random + f64.const 32 + f64.mul + i32.trunc_sat_f64_s + call $std/array/createRandomString + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 - local.get $i - call $~lib/array/Array<~lib/string/String|null>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - i32.const 0 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - end + local.get $3 + call $~lib/array/Array<~lib/string/String>#__set local.get $i i32.const 1 i32.add @@ -25552,207 +25848,477 @@ br $for-loop|0 end end - i32.const 1 - local.set $4 + local.get $arr + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 return ) - (func $std/array/assertSorted<~lib/string/String|null> (param $arr i32) (param $comparator i32) - (local $2 i32) + (func $~lib/util/sort/insertionSort<~lib/string/String> (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i32) + (local $b i32) + (local $min i32) + (local $max i32) + (local $j i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $arr - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - local.get $comparator - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 - local.get $2 - call $~lib/array/Array<~lib/string/String|null>#sort - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $comparator - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $std/array/isSorted<~lib/string/String|null> - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1080 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 0 + i32.const 24 + memory.fill + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $a i32) (param $b i32) (result i32) - (local $alen i32) - (local $blen i32) - (local $4 i32) - (local $5 i32) - (local $res i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $a - local.get $b + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 i32.eq - if (result i32) - i32.const 1 - else - local.get $a - i32.const 0 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $b - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - end - local.get $a - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - call $~lib/string/String#get:length - local.set $alen - local.get $b - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - call $~lib/string/String#get:length - local.set $blen - local.get $alen - local.get $blen - i32.or - i32.eqz - if - i32.const 0 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - end - local.get $alen - i32.eqz - if - i32.const -1 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $b + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $min + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $a + local.tee $max + i32.store offset=12 + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $b + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $a + local.tee $min + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $max + i32.store offset=12 + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $max + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $max + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $min + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=4 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $min + i32.store offset=4 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end end - local.get $blen - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/extendRunRight<~lib/string/String> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq if - i32.const 1 + local.get $i local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $7 return end - local.get $a + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load local.set $7 global.get $~lib/memory/__stack_pointer local.get $7 i32.store local.get $7 - i32.const 0 - local.get $b + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load local.set $7 global.get $~lib/memory/__stack_pointer local.get $7 i32.store offset=4 local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) i32.const 0 - local.get $alen - local.tee $4 - local.get $blen - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl - local.set $res - local.get $res - if (result i32) - local.get $res + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $tmp + i32.store offset=8 + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end else - local.get $alen - local.get $blen - i32.sub + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end end + local.get $j local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $7 return ) - (func $std/array/assertSorted<~lib/string/String|null>@varargs (param $arr i32) (param $comparator i32) - (local $2 i32) + (func $~lib/util/sort/mergeRuns<~lib/string/String> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i32) + (local $b i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -25760,1942 +26326,1299 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 (result i32) - i32.const 0 - drop - i32.const 0 - drop + i64.const 0 + i64.store offset=8 + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i i32.const 1 - drop - i32.const 10672 - br $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 end - local.tee $comparator - i32.store end - local.get $arr - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $comparator - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - call $std/array/assertSorted<~lib/string/String|null> - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) - (local $leftLength i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $left - local.get $right - i32.eq - if - i32.const 1 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - end - local.get $left - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $right - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - end - local.get $left - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/string/String#get:length - local.set $leftLength - local.get $leftLength - local.get $right - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - end - local.get $left - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.const 0 - local.get $right - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.const 0 - local.get $leftLength - call $~lib/util/string/compareImpl - i32.eqz - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $~lib/string/String.__ne (param $left i32) (param $right i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $left - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $right - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/string/String.__eq - i32.eqz - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - ) - (func $std/array/isArraysEqual<~lib/string/String|null> (param $a i32) (param $b i32) (param $len i32) (result i32) - (local $i i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $len - i32.eqz - if - local.get $a - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array<~lib/string/String|null>#get:length - local.set $len - local.get $len - local.get $b - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array<~lib/string/String|null>#get:length - i32.ne + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s if - i32.const 0 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - end - local.get $a - local.get $b - i32.eq - if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $j i32.const 1 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 12 i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return + local.set $j + br $for-loop|1 end end - i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i - local.get $len - i32.lt_s + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s if - i32.const 0 - drop - local.get $a - local.set $4 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - local.get $i - call $~lib/array/Array<~lib/string/String|null>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $buffer + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a i32.store - local.get $4 - local.get $b - local.set $4 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 + local.get $buffer local.get $i - call $~lib/array/Array<~lib/string/String|null>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $b i32.store offset=4 - local.get $4 - call $~lib/string/String.__ne + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + local.get $b + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=12 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s if - i32.const 0 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $ptr + local.get $k + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return + local.get $a + i32.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $b + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i end - local.get $i + local.get $k i32.const 1 i32.add - local.set $i - br $for-loop|0 + local.set $k + br $for-loop|2 end end - i32.const 1 - local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - return ) - (func $~lib/array/Array<~lib/string/String>#constructor (param $this i32) (param $length i32) (result i32) - (local $2 i32) + (func $~lib/util/sort/SORT<~lib/string/String> (param $ptr i32) (param $len i32) (param $comparator i32) (local $3 i32) - (local $bufferSize i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) (local $buffer i32) - (local $6 i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 16 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#set:buffer - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#set:dataStart - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#set:byteLength - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 i32.const 0 - call $~lib/array/Array<~lib/string/String>#set:length_ - local.get $length - i32.const 1073741820 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $length - local.tee $2 - i32.const 8 - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select - i32.const 2 - i32.shl - local.set $bufferSize - global.get $~lib/memory/__stack_pointer - local.get $bufferSize - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $buffer - i32.store offset=8 - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $buffer - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $6 - call $~lib/array/Array<~lib/string/String>#set:buffer - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $buffer - call $~lib/array/Array<~lib/string/String>#set:dataStart - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $bufferSize - call $~lib/array/Array<~lib/string/String>#set:byteLength - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $length - call $~lib/array/Array<~lib/string/String>#set:length_ - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) - (func $~lib/string/String#charAt (param $this i32) (param $pos i32) (result i32) - (local $out i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $pos - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/string/String#get:length - i32.ge_u + i32.const 24 + memory.fill + local.get $len + i32.const 48 + i32.le_s if - i32.const 10544 - local.set $3 + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=4 + local.tee $b + i32.store offset=4 + local.get $a + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store + global.get $~lib/memory/__stack_pointer + local.get $a + local.get $b + local.get $c + select + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=8 + local.tee $b + i32.store offset=4 + local.get $a + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store offset=4 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load + local.tee $a|7 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=4 + local.tee $b|8 + i32.store offset=20 + local.get $a|7 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b|8 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i32.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort<~lib/string/String> + 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 2 + block $~lib/util/sort/log2u|inlined.8 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.8 + end i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store offset=4 - local.get $out - local.get $this - local.get $pos - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $out - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 8 i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) - (local $thisSize i32) - (local $otherSize i32) - (local $outSize i32) - (local $out i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $~lib/string/String#get:length - i32.const 1 + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 i32.shl - local.set $thisSize - local.get $other - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $~lib/string/String#get:length + local.set $lgPlus2Size + local.get $lgPlus2Size i32.const 1 i32.shl - local.set $otherSize - local.get $thisSize - local.get $otherSize - i32.add - local.set $outSize - local.get $outSize - i32.const 0 - i32.eq - if - i32.const 10544 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - global.get $~lib/memory/__stack_pointer - local.get $outSize - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store offset=4 - local.get $out - local.get $this - local.get $thisSize - memory.copy - local.get $out - local.get $thisSize - i32.add - local.get $other - local.get $otherSize - memory.copy - local.get $out - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - ) - (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $left - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $right - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/string/String#concat - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - ) - (func $std/array/createRandomString (param $len i32) (result i32) - (local $result i32) - (local $i i32) - (local $x f64) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 10544 - local.tee $result - i32.store + local.set $leftRunEndBuf i32.const 0 local.set $i - loop $for-loop|0 + loop $for-loop|1 local.get $i - local.get $len - i32.lt_s + local.get $lgPlus2 + i32.lt_u if - global.get $~lib/memory/__stack_pointer - local.get $result - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - global.get $std/array/charset - block $~lib/math/NativeMath.floor|inlined.0 (result f64) - call $~lib/math/NativeMath.random - global.get $std/array/charset - call $~lib/string/String#get:length - f64.convert_i32_s - f64.mul - local.set $x - local.get $x - f64.floor - br $~lib/math/NativeMath.floor|inlined.0 - end - i32.trunc_sat_f64_s - call $~lib/string/String#charAt - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - call $~lib/string/String.__concat - local.tee $result + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 i32.store local.get $i i32.const 1 i32.add local.set $i - br $for-loop|0 + br $for-loop|1 end end - local.get $result - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - ) - (func $~lib/array/Array<~lib/string/String>#__set (param $this i32) (param $index i32) (param $value i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $len + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + local.set $hi + local.get $ptr i32.const 0 - i32.store - local.get $index - local.get $this - local.set $3 + local.get $hi + local.get $comparator + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array<~lib/string/String>#get:length_ - i32.ge_u + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/extendRunRight<~lib/string/String> + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s if - local.get $index - i32.const 0 - i32.lt_s - if - i32.const 320 - i32.const 80 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $this - local.get $index - i32.const 1 - i32.add - i32.const 2 + local.get $hi + local.tee $20 + i32.const 32 i32.const 1 - call $~lib/array/ensureCapacity - local.get $this - local.set $3 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - local.get $index - i32.const 1 - i32.add - call $~lib/array/Array<~lib/string/String>#set:length_ + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort<~lib/string/String> end - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array<~lib/string/String>#get:dataStart - local.get $index - i32.const 2 - i32.shl - i32.add - local.get $value - i32.store - i32.const 1 - drop - local.get $this - local.get $value - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/array/createRandomStringArray (param $size i32) (result i32) - (local $arr i32) - (local $i i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.set $top i32.const 0 - local.get $size - call $~lib/array/Array<~lib/string/String>#constructor - local.tee $arr - i32.store - i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i - local.get $size + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi i32.lt_s if - local.get $arr - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $i - call $~lib/math/NativeMath.random - f64.const 32 - f64.mul - i32.trunc_sat_f64_s - call $std/array/createRandomString - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - call $~lib/array/Array<~lib/string/String>#__set - local.get $i + local.get $endA i32.const 1 i32.add - local.set $i - br $for-loop|0 - end - end - local.get $arr - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $~lib/util/sort/insertionSort<~lib/string/String> (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) - (local $range i32) - (local $i i32) - (local $a i32) - (local $b i32) - (local $min i32) - (local $max i32) - (local $j i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $right - local.get $left - i32.sub - i32.const 1 - i32.add - local.set $range - local.get $left - local.get $range - i32.const 1 - i32.and - local.get $presorted - local.get $range - local.get $presorted - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $presorted - i32.const 0 - i32.eq - select - i32.add - local.set $i - loop $for-loop|0 - local.get $i - local.get $right - i32.le_s - if - global.get $~lib/memory/__stack_pointer - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $a - i32.store - global.get $~lib/memory/__stack_pointer + local.set $startB local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $b - i32.store offset=4 + local.get $startB + local.get $hi + local.get $comparator + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $b - local.tee $min + local.get $34 i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $a - local.tee $max - i32.store offset=12 - local.get $a - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=16 - local.get $12 - local.get $b - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=20 - local.get $12 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s + local.get $34 + call $~lib/util/sort/extendRunRight<~lib/string/String> + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $a - local.tee $min + local.get $34 i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $b - local.tee $max - i32.store offset=12 + local.get $34 + call $~lib/util/sort/insertionSort<~lib/string/String> end - local.get $i - i32.const 1 - i32.sub - local.set $j - block $while-break|1 - loop $while-continue|1 - local.get $j - local.get $left - i32.ge_s + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne if - global.get $~lib/memory/__stack_pointer local.get $ptr - local.get $j + local.get $start + local.get $leftRunEndBuf + local.get $i|30 i32.const 2 i32.shl i32.add i32.load - local.tee $a - i32.store - local.get $a - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=16 - local.get $12 - local.get $max - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=20 - local.get $12 - i32.const 2 - global.set $~argumentsLength + i32.const 1 + i32.add + local.get $endA + local.get $buffer local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - local.get $a - i32.store offset=8 - local.get $j - i32.const 1 - i32.sub - local.set $j - else - br $while-break|1 - end - br $while-continue|1 - end - end - end - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - local.get $max - i32.store offset=8 - block $while-break|2 - loop $while-continue|2 - local.get $j - local.get $left - i32.ge_s - if + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $ptr - local.get $j + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/mergeRuns<~lib/string/String> + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 i32.const 2 i32.shl i32.add - i32.load - local.tee $a + i32.const -1 i32.store - local.get $a - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=16 - local.get $12 - local.get $min - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=20 - local.get $12 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - local.get $a - i32.store offset=4 - local.get $j - i32.const 1 - i32.sub - local.set $j - else - br $while-break|2 - end - br $while-continue|2 end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 end end - local.get $ptr - local.get $j + local.get $leftRunStartBuf + local.get $k i32.const 2 i32.shl i32.add - local.get $min - i32.store offset=4 - local.get $i + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k i32.const 2 + i32.shl i32.add - local.set $i - br $for-loop|0 + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/mergeRuns<~lib/string/String> + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 end end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight<~lib/string/String> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp i32) - (local $7 i32) + (func $~lib/array/Array<~lib/string/String>#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + local.get $this + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $i - local.get $right - i32.eq - if - local.get $i - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.get $this + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length_ + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.store - local.get $7 - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 2 - i32.shl + local.get $2 + call $~lib/util/sort/SORT<~lib/string/String> + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.load - local.set $7 + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array<~lib/string/String>#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $tmp - i32.store offset=8 - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $tmp - i32.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - local.set $7 + i32.store + local.get $this + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<~lib/string/String>#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $1 return ) - (func $~lib/util/sort/mergeRuns<~lib/string/String> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) - (local $i i32) - (local $j i32) - (local $t i32) - (local $k i32) - (local $a i32) - (local $b i32) - (local $12 i32) + (func $~lib/array/Array<~lib/string/String>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + local.get $index + local.get $this + local.set $3 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $m - i32.const 1 - i32.sub - local.set $m - local.get $r - local.get $m + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 2448 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.get $index + i32.const 2 + i32.shl i32.add - local.set $t - local.get $m + i32.load + local.tee $value + i32.store offset=4 i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 7360 + i32.const 2448 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/array/isSorted<~lib/string/String> (param $data i32) (param $comparator i32) (result i32) + (local $i i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 1 local.set $i + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $len loop $for-loop|0 local.get $i - local.get $l - i32.gt_s + local.get $len + i32.lt_s if - local.get $buffer - local.get $i - i32.const 1 - i32.sub - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $i - i32.const 1 - i32.sub - i32.const 2 - i32.shl - i32.add - i32.load - i32.store + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 local.get $i i32.const 1 i32.sub - local.set $i - br $for-loop|0 - end - end - local.get $m - local.set $j - loop $for-loop|1 - local.get $j - local.get $r - i32.lt_s - if - local.get $buffer - local.get $t - local.get $j - i32.sub - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.store - local.get $j - i32.const 1 - i32.add - local.set $j - br $for-loop|1 - end - end - local.get $l - local.set $k - loop $for-loop|2 - local.get $k - local.get $r - i32.le_s - if + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $buffer - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $a + local.get $4 i32.store + local.get $4 + local.get $data + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $buffer - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $b - i32.store offset=4 - local.get $a - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $4 i32.store offset=8 - local.get $12 - local.get $b - local.set $12 + local.get $4 + local.get $i + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=12 - local.get $12 + local.get $4 + i32.store offset=4 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $comparator i32.load call_indirect (type $0) i32.const 0 - i32.lt_s + i32.gt_s if - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $a - i32.store - local.get $j - i32.const 1 - i32.sub - local.set $j - else - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $b - i32.store - local.get $i - i32.const 1 + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.set $i + global.set $~lib/memory/__stack_pointer + local.get $4 + return end - local.get $k + local.get $i i32.const 1 i32.add - local.set $k - br $for-loop|2 + local.set $i + br $for-loop|0 end end + i32.const 1 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 + return ) - (func $~lib/util/sort/SORT<~lib/string/String> (param $ptr i32) (param $len i32) (param $comparator i32) - (local $3 i32) - (local $a i32) - (local $b i32) - (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) - (local $n i32) - (local $lgPlus2 i32) - (local $lgPlus2Size i32) - (local $leftRunStartBuf i32) - (local $leftRunEndBuf i32) - (local $i i32) - (local $buffer i32) - (local $hi i32) - (local $endA i32) - (local $lenA i32) - (local $20 i32) - (local $21 i32) - (local $top i32) - (local $startA i32) - (local $startB i32) - (local $endB i32) - (local $lenB i32) - (local $27 i32) - (local $28 i32) - (local $k i32) - (local $i|30 i32) - (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (func $std/array/assertSorted<~lib/string/String> (param $arr i32) (param $comparator i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - local.get $len - i32.const 48 - i32.le_s + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $arr + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/array/Array<~lib/string/String>#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $std/array/isSorted<~lib/string/String> + i32.eqz if - local.get $len + i32.const 0 + i32.const 2496 + i32.const 1080 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 (param $a i32) (param $b i32) (result i32) + (local $alen i32) + (local $blen i32) + (local $4 i32) + (local $5 i32) + (local $res i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $a + local.get $b + i32.eq + if (result i32) i32.const 1 - i32.le_s - if - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end + else + local.get $a i32.const 0 + i32.eq + end + if (result i32) i32.const 1 - i32.lt_s - drop - block $break|0 - block $case1|0 - block $case0|0 - local.get $len - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - global.get $~lib/memory/__stack_pointer - local.get $ptr - i32.load - local.tee $a - i32.store - global.get $~lib/memory/__stack_pointer - local.get $ptr - i32.load offset=4 - local.tee $b - i32.store offset=4 - local.get $a - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - local.get $b - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=12 - local.get $34 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.set $c - local.get $ptr - local.get $b - local.get $a - local.get $c - select - i32.store - global.get $~lib/memory/__stack_pointer - local.get $a - local.get $b - local.get $c - select - local.tee $a - i32.store - global.get $~lib/memory/__stack_pointer - local.get $ptr - i32.load offset=8 - local.tee $b - i32.store offset=4 - local.get $a - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - local.get $b - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=12 - local.get $34 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.set $c - local.get $ptr - local.get $b - local.get $a - local.get $c - select - i32.store offset=4 - local.get $ptr - local.get $a - local.get $b - local.get $c - select - i32.store offset=8 - end - global.get $~lib/memory/__stack_pointer - local.get $ptr - i32.load - local.tee $a|7 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $ptr - i32.load offset=4 - local.tee $b|8 - i32.store offset=20 - local.get $a|7 - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - local.get $b|8 - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=12 - local.get $34 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.set $c|9 - local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 - select - i32.store - local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 - select - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $ptr + else + local.get $b i32.const 0 - local.get $len - i32.const 1 - i32.sub + i32.eq + end + if i32.const 0 - local.get $comparator - local.set $34 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - call $~lib/util/sort/insertionSort<~lib/string/String> + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $a + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $alen + local.get $b + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $blen + local.get $alen + local.get $blen + i32.or + i32.eqz + if + i32.const 0 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $7 return end - block $~lib/util/sort/log2u|inlined.8 (result i32) - local.get $len - local.set $n - i32.const 31 - local.get $n - i32.clz + local.get $alen + i32.eqz + if + i32.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $blen + i32.eqz + if + i32.const 1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $a + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 0 + local.get $b + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + local.get $alen + local.tee $4 + local.get $blen + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.set $res + local.get $res + if (result i32) + local.get $res + else + local.get $alen + local.get $blen i32.sub - br $~lib/util/sort/log2u|inlined.8 end - i32.const 2 - i32.add - local.set $lgPlus2 - local.get $lgPlus2 - i32.const 2 - i32.shl - local.set $lgPlus2Size - local.get $lgPlus2Size - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $leftRunStartBuf - local.get $leftRunStartBuf - local.get $lgPlus2Size + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $leftRunEndBuf + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $std/array/assertSorted<~lib/string/String>@varargs (param $arr i32) (param $comparator i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $i - loop $for-loop|1 - local.get $i - local.get $lgPlus2 - i32.lt_u - if - local.get $leftRunStartBuf - local.get $i - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $i + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 (result i32) + i32.const 0 + drop + i32.const 0 + drop i32.const 1 - i32.add - local.set $i - br $for-loop|1 + drop + i32.const 10864 + br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 end + local.tee $comparator + i32.store end - local.get $len - i32.const 2 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $buffer - local.get $len - i32.const 1 - i32.sub - local.set $hi - local.get $ptr - i32.const 0 - local.get $hi + local.get $arr + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 local.get $comparator - local.set $34 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $2 i32.store offset=8 - local.get $34 - call $~lib/util/sort/extendRunRight<~lib/string/String> - local.set $endA - local.get $endA - i32.const 1 + local.get $2 + call $std/array/assertSorted<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.set $lenA - local.get $lenA - i32.const 32 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#substring (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $finalStart i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $finalEnd i32) + (local $14 i32) + (local $15 i32) + (local $fromPos i32) + (local $17 i32) + (local $18 i32) + (local $toPos i32) + (local $size i32) + (local $out i32) + (local $22 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $22 + global.get $~lib/memory/__stack_pointer + local.get $22 + i32.store + local.get $22 + call $~lib/string/String#get:length + local.set $len + local.get $start + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $finalStart + local.get $end + local.tee $9 + i32.const 0 + local.tee $10 + local.get $9 + local.get $10 + i32.gt_s + select + local.tee $11 + local.get $len + local.tee $12 + local.get $11 + local.get $12 + i32.lt_s + select + local.set $finalEnd + local.get $finalStart + local.tee $14 + local.get $finalEnd + local.tee $15 + local.get $14 + local.get $15 i32.lt_s + select + i32.const 1 + i32.shl + local.set $fromPos + local.get $finalStart + local.tee $17 + local.get $finalEnd + local.tee $18 + local.get $17 + local.get $18 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $toPos + local.get $toPos + local.get $fromPos + i32.sub + local.set $size + local.get $size + i32.eqz if - local.get $hi - local.tee $20 - i32.const 32 + i32.const 96 + local.set $22 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $22 + return + end + local.get $fromPos + i32.eqz + if (result i32) + local.get $toPos + local.get $len i32.const 1 - i32.sub - local.tee $21 - local.get $20 - local.get $21 - i32.lt_s - select - local.set $endA - local.get $ptr + i32.shl + i32.eq + else i32.const 0 - local.get $endA - local.get $lenA - local.get $comparator - local.set $34 + end + if + local.get $this + local.set $22 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - call $~lib/util/sort/insertionSort<~lib/string/String> + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $22 + return end - i32.const 0 - local.set $top - i32.const 0 - local.set $startA - loop $while-continue|2 - local.get $endA - local.get $hi - i32.lt_s - if - local.get $endA - i32.const 1 - i32.add - local.set $startB - local.get $ptr - local.get $startB - local.get $hi - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - call $~lib/util/sort/extendRunRight<~lib/string/String> - local.set $endB - local.get $endB - local.get $startB - i32.sub - i32.const 1 - i32.add - local.set $lenB - local.get $lenB - i32.const 32 - i32.lt_s - if - local.get $hi - local.tee $27 - local.get $startB - i32.const 32 - i32.add - i32.const 1 - i32.sub - local.tee $28 - local.get $27 - local.get $28 - i32.lt_s - select - local.set $endB - local.get $ptr - local.get $startB - local.get $endB - local.get $lenB - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - call $~lib/util/sort/insertionSort<~lib/string/String> - end - i32.const 0 - local.get $hi - local.get $startA - local.get $startB - local.get $endB - call $~lib/util/sort/nodePower - local.set $k - local.get $top - local.set $i|30 - loop $for-loop|3 - local.get $i|30 - local.get $k - i32.gt_u - if - local.get $leftRunStartBuf - local.get $i|30 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $start - local.get $start - i32.const -1 - i32.ne - if - local.get $ptr - local.get $start - local.get $leftRunEndBuf - local.get $i|30 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - i32.add - local.get $endA - local.get $buffer - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - call $~lib/util/sort/mergeRuns<~lib/string/String> - local.get $start - local.set $startA - local.get $leftRunStartBuf - local.get $i|30 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - end - local.get $i|30 - i32.const 1 - i32.sub - local.set $i|30 - br $for-loop|3 - end - end - local.get $leftRunStartBuf - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $startA - i32.store - local.get $leftRunEndBuf - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $endA - i32.store - local.get $startB - local.set $startA - local.get $endB - local.set $endA - local.get $k - local.set $top - br $while-continue|2 - end - end - local.get $top - local.set $i|32 - loop $for-loop|4 - local.get $i|32 - i32.const 0 - i32.ne - if - local.get $leftRunStartBuf - local.get $i|32 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $start|33 - local.get $start|33 - i32.const -1 - i32.ne - if - local.get $ptr - local.get $start|33 - local.get $leftRunEndBuf - local.get $i|32 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - i32.add - local.get $hi - local.get $buffer - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store offset=8 - local.get $34 - call $~lib/util/sort/mergeRuns<~lib/string/String> - end - local.get $i|32 - i32.const 1 - i32.sub - local.set $i|32 - br $for-loop|4 - end - end - local.get $buffer - call $~lib/rt/tlsf/__free - local.get $leftRunStartBuf - call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 24 + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $fromPos + i32.add + local.get $size + memory.copy + local.get $out + local.set $22 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $22 + return ) - (func $~lib/array/Array<~lib/string/String>#sort (param $this i32) (param $comparator i32) (result i32) - (local $2 i32) + (func $~lib/util/string/joinBooleanArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $sepLen i32) + (local $valueLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value i32) + (local $i i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -27704,38 +27627,186 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $this - local.set $2 + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 96 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex + i32.eqz + if + i32.const 10928 + i32.const 10960 + local.get $dataStart + i32.load8_u + select + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $separator + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:dataStart - local.get $this - local.set $2 + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 5 + local.set $valueLen + local.get $valueLen + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + local.get $valueLen + i32.add + local.set $estLen global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result i32.store offset=4 - local.get $2 - call $~lib/array/Array<~lib/string/String>#get:length_ - local.get $comparator - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/util/sort/SORT<~lib/string/String> - local.get $this - local.set $2 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.add + i32.load8_u + local.set $value + i32.const 4 + local.get $value + i32.eqz + i32.add + local.set $valueLen + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 10928 + i32.const 10960 + local.get $value + select + local.get $valueLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $valueLen + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $dataStart + local.get $lastIndex + i32.add + i32.load8_u + local.set $value + i32.const 4 + local.get $value + i32.eqz + i32.add + local.set $valueLen + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 10928 + i32.const 10960 + local.get $value + select + local.get $valueLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $valueLen + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $11 return ) - (func $~lib/array/Array<~lib/string/String>#get:length (param $this i32) (result i32) - (local $1 i32) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -27745,23 +27816,50 @@ i32.const 0 i32.store local.get $this - local.set $1 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.store - local.get $1 - call $~lib/array/Array<~lib/string/String>#get:length_ - local.set $1 + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinBooleanArray + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $4 return ) - (func $~lib/array/Array<~lib/string/String>#__get (param $this i32) (param $index i32) (result i32) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) (local $value i32) - (local $3 i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i32) + (local $i i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -27770,136 +27868,112 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $index - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array<~lib/string/String>#get:length_ - i32.ge_u - if - i32.const 320 - i32.const 80 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array<~lib/string/String>#get:dataStart - local.get $index - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $value - i32.store offset=4 + local.get $length i32.const 1 - drop + i32.sub + local.set $lastIndex + local.get $lastIndex i32.const 0 - i32.eqz - drop - local.get $value + i32.lt_s + if + i32.const 96 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex i32.eqz if - i32.const 5392 - i32.const 80 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable + local.get $dataStart + i32.load + local.set $value + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + call $~lib/util/number/itoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end - local.get $value - local.set $3 + local.get $separator + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 11 + local.get $sepLen i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $std/array/isSorted<~lib/string/String> (param $data i32) (param $comparator i32) (result i32) - (local $i i32) - (local $len i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $lastIndex + i32.mul + i32.const 11 + i32.add + local.set $estLen global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + local.get $estLen i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 local.set $i - local.get $data - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array<~lib/string/String>#get:length - local.set $len loop $for-loop|0 local.get $i - local.get $len + local.get $lastIndex i32.lt_s if - local.get $data - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - local.get $i - i32.const 1 - i32.sub - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - local.get $data - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 + local.get $dataStart local.get $i - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 i32.const 2 - global.set $~argumentsLength - local.get $comparator + i32.shl + i32.add i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $sepLen if - i32.const 0 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $result + local.get $offset + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset end local.get $i i32.const 1 @@ -27908,74 +27982,112 @@ br $for-loop|0 end end + local.get $dataStart + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset i32.const 1 - local.set $4 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $11 return ) - (func $std/array/assertSorted<~lib/string/String> (param $arr i32) (param $comparator i32) - (local $2 i32) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $arr - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - local.get $comparator - local.set $2 + i32.const 0 + i32.store + local.get $this + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 - local.get $2 - call $~lib/array/Array<~lib/string/String>#sort - local.set $2 + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.store - local.get $2 - local.get $comparator - local.set $2 + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $std/array/isSorted<~lib/string/String> - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1080 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinIntegerArray + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 + return ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 (param $a i32) (param $b i32) (result i32) - (local $alen i32) - (local $blen i32) - (local $4 i32) - (local $5 i32) - (local $res i32) - (local $7 i32) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i32) + (local $i i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -27984,398 +28096,278 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $a - local.get $b - i32.eq - if (result i32) - i32.const 1 - else - local.get $a - i32.const 0 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $b - i32.const 0 - i32.eq + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 96 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end + local.get $lastIndex + i32.eqz if + local.get $dataStart + i32.load + local.set $value i32.const 0 - local.set $7 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + call $~lib/util/number/utoa32 + local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $11 return end - local.get $a - local.set $7 + local.get $separator + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $11 i32.store - local.get $7 + local.get $11 call $~lib/string/String#get:length - local.set $alen - local.get $b - local.set $7 + local.set $sepLen + i32.const 10 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 10 + i32.add + local.set $estLen global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - call $~lib/string/String#get:length - local.set $blen - local.get $alen - local.get $blen - i32.or - i32.eqz + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 0 - local.set $7 + local.get $offset + call $~lib/string/String#substring + local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $11 return end - local.get $alen - i32.eqz + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinIntegerArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/util/string/joinFloatArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value f64) + (local $i i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s if - i32.const -1 - local.set $7 + i32.const 96 + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $10 return end - local.get $blen + local.get $lastIndex i32.eqz if - i32.const 1 - local.set $7 + local.get $dataStart + f64.load + call $~lib/util/number/dtoa + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $10 return end - local.get $a - local.set $7 + local.get $separator + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store - local.get $7 - i32.const 0 - local.get $b - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - local.get $alen - local.tee $4 - local.get $blen - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl - local.set $res - local.get $res - if (result i32) - local.get $res - else - local.get $alen - local.get $blen - i32.sub - end - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - ) - (func $std/array/assertSorted<~lib/string/String>@varargs (param $arr i32) (param $comparator i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 10704 - br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 - end - local.tee $comparator - i32.store - end - local.get $arr - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $comparator - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - call $std/array/assertSorted<~lib/string/String> - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String#substring (param $this i32) (param $start i32) (param $end i32) (result i32) - (local $len i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $finalStart i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $finalEnd i32) - (local $14 i32) - (local $15 i32) - (local $fromPos i32) - (local $17 i32) - (local $18 i32) - (local $toPos i32) - (local $size i32) - (local $out i32) - (local $22 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - local.set $22 - global.get $~lib/memory/__stack_pointer - local.get $22 - i32.store - local.get $22 - call $~lib/string/String#get:length - local.set $len - local.get $start - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $6 - local.get $len - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - local.set $finalStart - local.get $end - local.tee $9 - i32.const 0 - local.tee $10 - local.get $9 local.get $10 - i32.gt_s - select - local.tee $11 - local.get $len - local.tee $12 - local.get $11 - local.get $12 - i32.lt_s - select - local.set $finalEnd - local.get $finalStart - local.tee $14 - local.get $finalEnd - local.tee $15 - local.get $14 - local.get $15 - i32.lt_s - select - i32.const 1 - i32.shl - local.set $fromPos - local.get $finalStart - local.tee $17 - local.get $finalEnd - local.tee $18 - local.get $17 - local.get $18 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $toPos - local.get $toPos - local.get $fromPos - i32.sub - local.set $size - local.get $size - i32.eqz - if - i32.const 10544 - local.set $22 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $22 - return - end - local.get $fromPos - i32.eqz - if (result i32) - local.get $toPos - local.get $len - i32.const 1 - i32.shl - i32.eq - else - i32.const 0 - end - if - local.get $this - local.set $22 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $22 - return - end - global.get $~lib/memory/__stack_pointer - local.get $size - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store offset=4 - local.get $out - local.get $this - local.get $fromPos - i32.add - local.get $size - memory.copy - local.get $out - local.set $22 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $22 - return - ) - (func $~lib/util/string/joinBooleanArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) - (local $lastIndex i32) - (local $sepLen i32) - (local $valueLen i32) - (local $estLen i32) - (local $result i32) - (local $offset i32) - (local $value i32) - (local $i i32) - (local $11 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $length - i32.const 1 - i32.sub - local.set $lastIndex - local.get $lastIndex - i32.const 0 - i32.lt_s - if - i32.const 10544 - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return - end - local.get $lastIndex - i32.eqz - if - i32.const 10768 - i32.const 10800 - local.get $dataStart - i32.load8_u - select - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return - end - local.get $separator - local.set $11 - global.get $~lib/memory/__stack_pointer - local.get $11 - i32.store - local.get $11 call $~lib/string/String#get:length local.set $sepLen - i32.const 5 - local.set $valueLen - local.get $valueLen + i32.const 28 local.get $sepLen i32.add local.get $lastIndex i32.mul - local.get $valueLen + i32.const 28 i32.add local.set $estLen global.get $~lib/memory/__stack_pointer @@ -28390,36 +28382,26 @@ local.set $offset i32.const 0 local.set $i - loop $for-loop|1 + loop $for-loop|0 local.get $i local.get $lastIndex i32.lt_s if local.get $dataStart local.get $i + i32.const 3 + i32.shl i32.add - i32.load8_u + f64.load local.set $value - i32.const 4 - local.get $value - i32.eqz - i32.add - local.set $valueLen + local.get $offset local.get $result local.get $offset i32.const 1 i32.shl i32.add - i32.const 10768 - i32.const 10800 local.get $value - select - local.get $valueLen - i32.const 1 - i32.shl - memory.copy - local.get $offset - local.get $valueLen + call $~lib/util/number/dtoa_buffered i32.add local.set $offset local.get $sepLen @@ -28443,34 +28425,24 @@ i32.const 1 i32.add local.set $i - br $for-loop|1 + br $for-loop|0 end end local.get $dataStart local.get $lastIndex + i32.const 3 + i32.shl i32.add - i32.load8_u + f64.load local.set $value - i32.const 4 - local.get $value - i32.eqz - i32.add - local.set $valueLen + local.get $offset local.get $result local.get $offset i32.const 1 i32.shl i32.add - i32.const 10768 - i32.const 10800 local.get $value - select - local.get $valueLen - i32.const 1 - i32.shl - memory.copy - local.get $offset - local.get $valueLen + call $~lib/util/number/dtoa_buffered i32.add local.set $offset local.get $estLen @@ -28478,32 +28450,32 @@ i32.gt_s if local.get $result - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store - local.get $11 + local.get $10 i32.const 0 local.get $offset call $~lib/string/String#substring - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $10 return end local.get $result - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $10 return ) - (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) (local $ptr i32) (local $len i32) (local $4 i32) @@ -28521,7 +28493,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:dataStart + call $~lib/array/Array#get:dataStart local.set $ptr local.get $this local.set $4 @@ -28529,8 +28501,12 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:length_ + call $~lib/array/Array#get:length_ local.set $len + i32.const 0 + drop + i32.const 0 + drop i32.const 1 drop local.get $ptr @@ -28541,7 +28517,7 @@ local.get $4 i32.store local.get $4 - call $~lib/util/string/joinBooleanArray + call $~lib/util/string/joinFloatArray local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -28550,24 +28526,29 @@ local.get $4 return ) - (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (func $~lib/util/string/joinStringArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) (local $lastIndex i32) + (local $4 i32) + (local $estLen i32) (local $value i32) + (local $i i32) + (local $offset i32) (local $sepLen i32) - (local $estLen i32) (local $result i32) - (local $offset i32) - (local $value|9 i32) - (local $i i32) - (local $11 i32) + (local $i|11 i32) + (local $valueLen i32) + (local $13 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $length i32.const 1 i32.sub @@ -28576,160 +28557,206 @@ i32.const 0 i32.lt_s if - i32.const 10544 - local.set $11 + i32.const 96 + local.set $13 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $13 return end local.get $lastIndex i32.eqz if + global.get $~lib/memory/__stack_pointer local.get $dataStart i32.load - local.set $value - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.le_u - drop - local.get $value - i32.const 10 - call $~lib/util/number/itoa32 - local.set $11 + local.tee $4 + i32.store + local.get $4 + if (result i32) + local.get $4 + else + i32.const 96 + end + local.set $13 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $13 return end + i32.const 0 + local.set $estLen + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + local.get $value + i32.const 0 + i32.ne + if + local.get $estLen + local.get $value + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + i32.add + local.set $estLen + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $offset local.get $separator - local.set $11 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $11 - i32.store - local.get $11 + local.get $13 + i32.store offset=8 + local.get $13 call $~lib/string/String#get:length local.set $sepLen - i32.const 11 + global.get $~lib/memory/__stack_pointer + local.get $estLen local.get $sepLen - i32.add local.get $lastIndex i32.mul - i32.const 11 i32.add - local.set $estLen - global.get $~lib/memory/__stack_pointer - local.get $estLen i32.const 1 i32.shl i32.const 2 call $~lib/rt/itcms/__new local.tee $result - i32.store offset=4 - i32.const 0 - local.set $offset + i32.store offset=12 i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i + local.set $i|11 + loop $for-loop|1 + local.get $i|11 local.get $lastIndex i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $dataStart - local.get $i + local.get $i|11 i32.const 2 i32.shl i32.add i32.load - local.set $value|9 - local.get $offset - local.get $result - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $value|9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $offset - local.get $sepLen + local.tee $value + i32.store offset=4 + local.get $value + i32.const 0 + i32.ne if + local.get $value + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + local.set $valueLen local.get $result local.get $offset i32.const 1 i32.shl i32.add - local.get $separator - local.get $sepLen + local.get $value + local.get $valueLen i32.const 1 i32.shl memory.copy local.get $offset - local.get $sepLen + local.get $valueLen i32.add local.set $offset end - local.get $i + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i|11 i32.const 1 i32.add - local.set $i - br $for-loop|0 + local.set $i|11 + br $for-loop|1 end end + global.get $~lib/memory/__stack_pointer local.get $dataStart local.get $lastIndex i32.const 2 i32.shl i32.add i32.load - local.set $value|9 - local.get $offset - local.get $result - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $value|9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $offset - local.get $estLen - local.get $offset - i32.gt_s + local.tee $value + i32.store offset=4 + local.get $value + i32.const 0 + i32.ne if local.get $result - local.set $11 - global.get $~lib/memory/__stack_pointer - local.get $11 - i32.store - local.get $11 - i32.const 0 local.get $offset - call $~lib/string/String#substring - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return + local.get $value + local.get $value + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + memory.copy end local.get $result - local.set $11 + local.set $13 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $13 return ) - (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (func $~lib/array/Array<~lib/string/String|null>#join (param $this i32) (param $separator i32) (result i32) (local $ptr i32) (local $len i32) (local $4 i32) @@ -28747,7 +28774,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:dataStart + call $~lib/array/Array<~lib/string/String|null>#get:dataStart local.set $ptr local.get $this local.set $4 @@ -28755,10 +28782,18 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:length_ + call $~lib/array/Array<~lib/string/String|null>#get:length_ local.set $len i32.const 0 drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + i32.const 1 + i32.lt_s + drop i32.const 1 drop local.get $ptr @@ -28769,7 +28804,7 @@ local.get $4 i32.store local.get $4 - call $~lib/util/string/joinIntegerArray + call $~lib/util/string/joinStringArray local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -28778,24 +28813,22 @@ local.get $4 return ) - (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (func $~lib/util/string/joinReferenceArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) (local $lastIndex i32) (local $value i32) - (local $sepLen i32) - (local $estLen i32) (local $result i32) - (local $offset i32) - (local $value|9 i32) + (local $sepLen i32) (local $i i32) - (local $11 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.const 20 + memory.fill local.get $length i32.const 1 i32.sub @@ -28804,64 +28837,57 @@ i32.const 0 i32.lt_s if - i32.const 10544 - local.set $11 + i32.const 96 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $8 return end local.get $lastIndex i32.eqz if + global.get $~lib/memory/__stack_pointer local.get $dataStart i32.load - local.set $value - i32.const 0 - drop - i32.const 4 - i32.const 4 - i32.le_u - drop + local.tee $value + i32.store local.get $value - i32.const 10 - call $~lib/util/number/utoa32 - local.set $11 + i32.const 0 + i32.ne + if (result i32) + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $std/array/Ref#toString + else + i32.const 96 + end + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $8 return end + global.get $~lib/memory/__stack_pointer + i32.const 96 + local.tee $result + i32.store offset=8 local.get $separator - local.set $11 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $11 - i32.store - local.get $11 + local.get $8 + i32.store offset=4 + local.get $8 call $~lib/string/String#get:length local.set $sepLen - i32.const 10 - local.get $sepLen - i32.add - local.get $lastIndex - i32.mul - i32.const 10 - i32.add - local.set $estLen - global.get $~lib/memory/__stack_pointer - local.get $estLen - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store offset=4 - i32.const 0 - local.set $offset i32.const 0 local.set $i loop $for-loop|0 @@ -28869,39 +28895,60 @@ local.get $lastIndex i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $dataStart local.get $i i32.const 2 i32.shl i32.add i32.load - local.set $value|9 - local.get $offset - local.get $result - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $value|9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $offset + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + call $std/array/Ref#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end local.get $sepLen if + global.get $~lib/memory/__stack_pointer local.get $result - local.get $offset - i32.const 1 - i32.shl - i32.add + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 local.get $separator - local.get $sepLen - i32.const 1 - i32.shl - memory.copy - local.get $offset - local.get $sepLen - i32.add - local.set $offset + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 end local.get $i i32.const 1 @@ -28910,54 +28957,52 @@ br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer local.get $dataStart local.get $lastIndex i32.const 2 i32.shl i32.add i32.load - local.set $value|9 - local.get $offset - local.get $result - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $value|9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $offset - local.get $estLen - local.get $offset - i32.gt_s + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne if + global.get $~lib/memory/__stack_pointer local.get $result - local.set $11 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $11 - i32.store - local.get $11 - i32.const 0 - local.get $offset - call $~lib/string/String#substring - local.set $11 + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return + local.get $8 + i32.store offset=16 + local.get $8 + call $std/array/Ref#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 end local.get $result - local.set $11 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $8 return ) - (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) (local $ptr i32) (local $len i32) (local $4 i32) @@ -28975,7 +29020,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:dataStart + call $~lib/array/Array#get:dataStart local.set $ptr local.get $this local.set $4 @@ -28983,10 +29028,20 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:length_ + call $~lib/array/Array#get:length_ local.set $len i32.const 0 drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 0 + drop i32.const 1 drop local.get $ptr @@ -28997,7 +29052,7 @@ local.get $4 i32.store local.get $4 - call $~lib/util/string/joinIntegerArray + call $~lib/util/string/joinReferenceArray local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -29006,23 +29061,22 @@ local.get $4 return ) - (func $~lib/util/string/joinFloatArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (func $~lib/util/string/joinReferenceArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) (local $lastIndex i32) - (local $sepLen i32) - (local $estLen i32) + (local $value i32) (local $result i32) - (local $offset i32) - (local $value f64) + (local $sepLen i32) (local $i i32) - (local $10 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.const 20 + memory.fill local.get $length i32.const 1 i32.sub @@ -29031,55 +29085,57 @@ i32.const 0 i32.lt_s if - i32.const 10544 - local.set $10 + i32.const 96 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $8 return end local.get $lastIndex i32.eqz if + global.get $~lib/memory/__stack_pointer local.get $dataStart - f64.load - call $~lib/util/number/dtoa - local.set $10 + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if (result i32) + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $std/array/Ref#toString + else + i32.const 96 + end + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $8 return end + global.get $~lib/memory/__stack_pointer + i32.const 96 + local.tee $result + i32.store offset=8 local.get $separator - local.set $10 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store - local.get $10 + local.get $8 + i32.store offset=4 + local.get $8 call $~lib/string/String#get:length local.set $sepLen - i32.const 28 - local.get $sepLen - i32.add - local.get $lastIndex - i32.mul - i32.const 28 - i32.add - local.set $estLen - global.get $~lib/memory/__stack_pointer - local.get $estLen - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store offset=4 - i32.const 0 - local.set $offset i32.const 0 local.set $i loop $for-loop|0 @@ -29087,39 +29143,60 @@ local.get $lastIndex i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $dataStart local.get $i - i32.const 3 - i32.shl - i32.add - f64.load - local.set $value - local.get $offset - local.get $result - local.get $offset - i32.const 1 + i32.const 2 i32.shl i32.add + i32.load + local.tee $value + i32.store local.get $value - call $~lib/util/number/dtoa_buffered - i32.add - local.set $offset + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + call $std/array/Ref#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end local.get $sepLen if + global.get $~lib/memory/__stack_pointer local.get $result - local.get $offset - i32.const 1 - i32.shl - i32.add + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 local.get $separator - local.get $sepLen - i32.const 1 - i32.shl - memory.copy - local.get $offset - local.get $sepLen - i32.add - local.set $offset + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 end local.get $i i32.const 1 @@ -29128,54 +29205,52 @@ br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer local.get $dataStart local.get $lastIndex - i32.const 3 - i32.shl - i32.add - f64.load - local.set $value - local.get $offset - local.get $result - local.get $offset - i32.const 1 + i32.const 2 i32.shl i32.add + i32.load + local.tee $value + i32.store local.get $value - call $~lib/util/number/dtoa_buffered - i32.add - local.set $offset - local.get $estLen - local.get $offset - i32.gt_s + i32.const 0 + i32.ne if + global.get $~lib/memory/__stack_pointer local.get $result - local.set $10 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store - local.get $10 - i32.const 0 - local.get $offset - call $~lib/string/String#substring - local.set $10 + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - end - local.get $result - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $8 + i32.store offset=16 + local.get $8 + call $std/array/Ref#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 return ) - (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) (local $ptr i32) (local $len i32) (local $4 i32) @@ -29193,7 +29268,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:dataStart + call $~lib/array/Array#get:dataStart local.set $ptr local.get $this local.set $4 @@ -29201,12 +29276,20 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:length_ + call $~lib/array/Array#get:length_ local.set $len i32.const 0 drop i32.const 0 drop + i32.const 0 + drop + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 0 + drop i32.const 1 drop local.get $ptr @@ -29217,7 +29300,7 @@ local.get $4 i32.store local.get $4 - call $~lib/util/string/joinFloatArray + call $~lib/util/string/joinReferenceArray local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -29226,29 +29309,50 @@ local.get $4 return ) - (func $~lib/util/string/joinStringArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (func $~lib/array/Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 10992 + call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) (local $lastIndex i32) - (local $4 i32) - (local $estLen i32) (local $value i32) - (local $i i32) - (local $offset i32) (local $sepLen i32) + (local $estLen i32) (local $result i32) - (local $i|11 i32) - (local $valueLen i32) - (local $13 i32) + (local $offset i32) + (local $value|9 i32) + (local $i i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 local.get $length i32.const 1 i32.sub @@ -29257,142 +29361,88 @@ i32.const 0 i32.lt_s if - i32.const 10544 - local.set $13 + i32.const 96 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $13 + local.get $11 return end local.get $lastIndex i32.eqz if - global.get $~lib/memory/__stack_pointer local.get $dataStart - i32.load - local.tee $4 - i32.store - local.get $4 - if (result i32) - local.get $4 - else - i32.const 10544 - end - local.set $13 + i32.load8_s + local.set $value + i32.const 1 + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + call $~lib/util/number/itoa32 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $13 + local.get $11 return end - i32.const 0 - local.set $estLen - i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i - local.get $length - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $dataStart - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $value - i32.store offset=4 - local.get $value - i32.const 0 - i32.ne - if - local.get $estLen - local.get $value - local.set $13 - global.get $~lib/memory/__stack_pointer - local.get $13 - i32.store offset=8 - local.get $13 - call $~lib/string/String#get:length - i32.add - local.set $estLen - end - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 - end - end - i32.const 0 - local.set $offset local.get $separator - local.set $13 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $13 - i32.store offset=8 - local.get $13 + local.get $11 + i32.store + local.get $11 call $~lib/string/String#get:length local.set $sepLen - global.get $~lib/memory/__stack_pointer - local.get $estLen + i32.const 11 local.get $sepLen + i32.add local.get $lastIndex i32.mul + i32.const 11 i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen i32.const 1 i32.shl i32.const 2 call $~lib/rt/itcms/__new local.tee $result - i32.store offset=12 + i32.store offset=4 i32.const 0 - local.set $i|11 - loop $for-loop|1 - local.get $i|11 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i local.get $lastIndex i32.lt_s if - global.get $~lib/memory/__stack_pointer local.get $dataStart - local.get $i|11 - i32.const 2 + local.get $i + i32.const 0 i32.shl i32.add - i32.load - local.tee $value - i32.store offset=4 - local.get $value - i32.const 0 - i32.ne - if - local.get $value - local.set $13 - global.get $~lib/memory/__stack_pointer - local.get $13 - i32.store offset=8 - local.get $13 - call $~lib/string/String#get:length - local.set $valueLen - local.get $result - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $value - local.get $valueLen - i32.const 1 - i32.shl - memory.copy - local.get $offset - local.get $valueLen - i32.add - local.set $offset - end + i32.load8_s + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset local.get $sepLen if local.get $result @@ -29410,53 +29460,61 @@ i32.add local.set $offset end - local.get $i|11 + local.get $i i32.const 1 i32.add - local.set $i|11 - br $for-loop|1 + local.set $i + br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer local.get $dataStart local.get $lastIndex - i32.const 2 + i32.const 0 i32.shl i32.add - i32.load - local.tee $value - i32.store offset=4 - local.get $value - i32.const 0 - i32.ne + i32.load8_s + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s if local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $value - local.get $value - local.set $13 + call $~lib/string/String#substring + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $13 - i32.store offset=8 - local.get $13 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - memory.copy + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end local.get $result - local.set $13 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $13 + local.get $11 return ) - (func $~lib/array/Array<~lib/string/String|null>#join (param $this i32) (param $separator i32) (result i32) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) (local $ptr i32) (local $len i32) (local $4 i32) @@ -29474,7 +29532,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array<~lib/string/String|null>#get:dataStart + call $~lib/array/Array#get:dataStart local.set $ptr local.get $this local.set $4 @@ -29482,18 +29540,10 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array<~lib/string/String|null>#get:length_ + call $~lib/array/Array#get:length_ local.set $len i32.const 0 drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.lt_s - drop i32.const 1 drop local.get $ptr @@ -29504,7 +29554,7 @@ local.get $4 i32.store local.get $4 - call $~lib/util/string/joinStringArray + call $~lib/util/string/joinIntegerArray local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -29513,22 +29563,50 @@ local.get $4 return ) - (func $~lib/util/string/joinReferenceArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (func $~lib/array/Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 10992 + call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) (local $lastIndex i32) (local $value i32) - (local $result i32) (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i32) (local $i i32) - (local $8 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill + i64.const 0 + i64.store local.get $length i32.const 1 i32.sub @@ -29537,57 +29615,64 @@ i32.const 0 i32.lt_s if - i32.const 10544 - local.set $8 + i32.const 96 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $11 return end local.get $lastIndex i32.eqz if - global.get $~lib/memory/__stack_pointer local.get $dataStart - i32.load - local.tee $value - i32.store - local.get $value + i32.load16_u + local.set $value i32.const 0 - i32.ne - if (result i32) - local.get $value - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - call $std/array/Ref#toString - else - i32.const 10544 - end - local.set $8 + drop + i32.const 2 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + call $~lib/util/number/utoa32 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $11 return end - global.get $~lib/memory/__stack_pointer - i32.const 10544 - local.tee $result - i32.store offset=8 local.get $separator - local.set $8 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 + local.get $11 + i32.store + local.get $11 call $~lib/string/String#get:length local.set $sepLen + i32.const 10 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 10 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset i32.const 0 local.set $i loop $for-loop|0 @@ -29595,60 +29680,39 @@ local.get $lastIndex i32.lt_s if - global.get $~lib/memory/__stack_pointer local.get $dataStart local.get $i - i32.const 2 + i32.const 1 i32.shl i32.add - i32.load - local.tee $value - i32.store - local.get $value - i32.const 0 - i32.ne - if - global.get $~lib/memory/__stack_pointer - local.get $result - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - local.get $value - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=16 - local.get $8 - call $std/array/Ref#toString - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $8 - call $~lib/string/String.__concat - local.tee $result - i32.store offset=8 - end + i32.load16_u + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset local.get $sepLen if - global.get $~lib/memory/__stack_pointer local.get $result - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 + local.get $offset + i32.const 1 + i32.shl + i32.add local.get $separator - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $8 - call $~lib/string/String.__concat - local.tee $result - i32.store offset=8 + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset end local.get $i i32.const 1 @@ -29657,300 +29721,54 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer local.get $dataStart local.get $lastIndex - i32.const 2 + i32.const 1 i32.shl i32.add - i32.load - local.tee $value - i32.store - local.get $value - i32.const 0 - i32.ne + i32.load16_u + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s if - global.get $~lib/memory/__stack_pointer local.get $result - local.set $8 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - local.get $value - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=16 - local.get $8 - call $std/array/Ref#toString - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $8 - call $~lib/string/String.__concat - local.tee $result - i32.store offset=8 - end - local.get $result - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - ) - (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) - (local $ptr i32) - (local $len i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#get:dataStart - local.set $ptr - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#get:length_ - local.set $len - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.lt_s - drop - i32.const 0 - drop - i32.const 1 - drop - local.get $ptr - local.get $len - local.get $separator - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/util/string/joinReferenceArray - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - ) - (func $~lib/util/string/joinReferenceArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) - (local $lastIndex i32) - (local $value i32) - (local $result i32) - (local $sepLen i32) - (local $i i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - local.get $length - i32.const 1 - i32.sub - local.set $lastIndex - local.get $lastIndex - i32.const 0 - i32.lt_s - if - i32.const 10544 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - end - local.get $lastIndex - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $dataStart - i32.load - local.tee $value + local.get $11 i32.store - local.get $value + local.get $11 i32.const 0 - i32.ne - if (result i32) - local.get $value - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - call $std/array/Ref#toString - else - i32.const 10544 - end - local.set $8 + local.get $offset + call $~lib/string/String#substring + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $11 return end - global.get $~lib/memory/__stack_pointer - i32.const 10544 - local.tee $result - i32.store offset=8 - local.get $separator - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - call $~lib/string/String#get:length - local.set $sepLen - i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i - local.get $lastIndex - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $dataStart - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $value - i32.store - local.get $value - i32.const 0 - i32.ne - if - global.get $~lib/memory/__stack_pointer - local.get $result - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - local.get $value - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=16 - local.get $8 - call $std/array/Ref#toString - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $8 - call $~lib/string/String.__concat - local.tee $result - i32.store offset=8 - end - local.get $sepLen - if - global.get $~lib/memory/__stack_pointer - local.get $result - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - local.get $separator - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $8 - call $~lib/string/String.__concat - local.tee $result - i32.store offset=8 - end - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $dataStart - local.get $lastIndex - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $value - i32.store - local.get $value - i32.const 0 - i32.ne - if - global.get $~lib/memory/__stack_pointer - local.get $result - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - local.get $value - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=16 - local.get $8 - call $std/array/Ref#toString - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $8 - call $~lib/string/String.__concat - local.tee $result - i32.store offset=8 - end local.get $result - local.set $8 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $11 return ) - (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) (local $ptr i32) (local $len i32) (local $4 i32) @@ -29968,7 +29786,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:dataStart + call $~lib/array/Array#get:dataStart local.set $ptr local.get $this local.set $4 @@ -29976,20 +29794,10 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:length_ + call $~lib/array/Array#get:length_ local.set $len i32.const 0 drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.lt_s - drop - i32.const 0 - drop i32.const 1 drop local.get $ptr @@ -30000,7 +29808,7 @@ local.get $4 i32.store local.get $4 - call $~lib/util/string/joinReferenceArray + call $~lib/util/string/joinIntegerArray local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -30009,7 +29817,7 @@ local.get $4 return ) - (func $~lib/array/Array#toString (param $this i32) (result i32) + (func $~lib/array/Array#toString (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -30025,8 +29833,8 @@ local.get $1 i32.store local.get $1 - i32.const 10832 - call $~lib/array/Array#join + i32.const 10992 + call $~lib/array/Array#join local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -30035,7 +29843,7 @@ local.get $1 return ) - (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) (local $lastIndex i32) (local $value i32) (local $sepLen i32) @@ -30061,7 +29869,7 @@ i32.const 0 i32.lt_s if - i32.const 10544 + i32.const 96 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -30074,11 +29882,11 @@ i32.eqz if local.get $dataStart - i32.load8_s + i32.load16_s local.set $value i32.const 1 drop - i32.const 1 + i32.const 2 i32.const 4 i32.le_u drop @@ -30128,10 +29936,10 @@ if local.get $dataStart local.get $i - i32.const 0 + i32.const 1 i32.shl i32.add - i32.load8_s + i32.load16_s local.set $value|9 local.get $offset local.get $result @@ -30140,7 +29948,7 @@ i32.shl i32.add local.get $value|9 - call $~lib/util/number/itoa_buffered + call $~lib/util/number/itoa_buffered i32.add local.set $offset local.get $sepLen @@ -30169,10 +29977,10 @@ end local.get $dataStart local.get $lastIndex - i32.const 0 + i32.const 1 i32.shl i32.add - i32.load8_s + i32.load16_s local.set $value|9 local.get $offset local.get $result @@ -30181,7 +29989,7 @@ i32.shl i32.add local.get $value|9 - call $~lib/util/number/itoa_buffered + call $~lib/util/number/itoa_buffered i32.add local.set $offset local.get $estLen @@ -30214,7 +30022,7 @@ local.get $11 return ) - (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) (local $ptr i32) (local $len i32) (local $4 i32) @@ -30232,7 +30040,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:dataStart + call $~lib/array/Array#get:dataStart local.set $ptr local.get $this local.set $4 @@ -30240,7 +30048,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:length_ + call $~lib/array/Array#get:length_ local.set $len i32.const 0 drop @@ -30254,7 +30062,7 @@ local.get $4 i32.store local.get $4 - call $~lib/util/string/joinIntegerArray + call $~lib/util/string/joinIntegerArray local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -30263,7 +30071,7 @@ local.get $4 return ) - (func $~lib/array/Array#toString (param $this i32) (result i32) + (func $~lib/array/Array#toString (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -30279,8 +30087,8 @@ local.get $1 i32.store local.get $1 - i32.const 10832 - call $~lib/array/Array#join + i32.const 10992 + call $~lib/array/Array#join local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -30289,14 +30097,14 @@ local.get $1 return ) - (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) (local $lastIndex i32) - (local $value i32) + (local $value i64) (local $sepLen i32) (local $estLen i32) (local $result i32) (local $offset i32) - (local $value|9 i32) + (local $value|9 i64) (local $i i32) (local $11 i32) global.get $~lib/memory/__stack_pointer @@ -30315,7 +30123,7 @@ i32.const 0 i32.lt_s if - i32.const 10544 + i32.const 96 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -30328,17 +30136,17 @@ i32.eqz if local.get $dataStart - i32.load16_u + i64.load local.set $value i32.const 0 drop - i32.const 2 + i32.const 8 i32.const 4 i32.le_u drop local.get $value i32.const 10 - call $~lib/util/number/utoa32 + call $~lib/util/number/utoa64 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -30355,12 +30163,12 @@ local.get $11 call $~lib/string/String#get:length local.set $sepLen - i32.const 10 + i32.const 20 local.get $sepLen i32.add local.get $lastIndex i32.mul - i32.const 10 + i32.const 20 i32.add local.set $estLen global.get $~lib/memory/__stack_pointer @@ -30382,10 +30190,10 @@ if local.get $dataStart local.get $i - i32.const 1 + i32.const 3 i32.shl i32.add - i32.load16_u + i64.load local.set $value|9 local.get $offset local.get $result @@ -30394,7 +30202,7 @@ i32.shl i32.add local.get $value|9 - call $~lib/util/number/itoa_buffered + call $~lib/util/number/itoa_buffered i32.add local.set $offset local.get $sepLen @@ -30423,10 +30231,10 @@ end local.get $dataStart local.get $lastIndex - i32.const 1 + i32.const 3 i32.shl i32.add - i32.load16_u + i64.load local.set $value|9 local.get $offset local.get $result @@ -30435,7 +30243,7 @@ i32.shl i32.add local.get $value|9 - call $~lib/util/number/itoa_buffered + call $~lib/util/number/itoa_buffered i32.add local.set $offset local.get $estLen @@ -30468,7 +30276,7 @@ local.get $11 return ) - (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) (local $ptr i32) (local $len i32) (local $4 i32) @@ -30486,7 +30294,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:dataStart + call $~lib/array/Array#get:dataStart local.set $ptr local.get $this local.set $4 @@ -30494,7 +30302,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:length_ + call $~lib/array/Array#get:length_ local.set $len i32.const 0 drop @@ -30508,7 +30316,7 @@ local.get $4 i32.store local.get $4 - call $~lib/util/string/joinIntegerArray + call $~lib/util/string/joinIntegerArray local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -30517,7 +30325,7 @@ local.get $4 return ) - (func $~lib/array/Array#toString (param $this i32) (result i32) + (func $~lib/array/Array#toString (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -30533,8 +30341,8 @@ local.get $1 i32.store local.get $1 - i32.const 10832 - call $~lib/array/Array#join + i32.const 10992 + call $~lib/array/Array#join local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -30543,14 +30351,14 @@ local.get $1 return ) - (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) (local $lastIndex i32) - (local $value i32) + (local $value i64) (local $sepLen i32) (local $estLen i32) (local $result i32) (local $offset i32) - (local $value|9 i32) + (local $value|9 i64) (local $i i32) (local $11 i32) global.get $~lib/memory/__stack_pointer @@ -30569,7 +30377,7 @@ i32.const 0 i32.lt_s if - i32.const 10544 + i32.const 96 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -30582,17 +30390,19 @@ i32.eqz if local.get $dataStart - i32.load16_s + i64.load local.set $value i32.const 1 drop - i32.const 2 + i32.const 8 i32.const 4 i32.le_u drop local.get $value + i32.wrap_i64 + i64.extend_i32_s i32.const 10 - call $~lib/util/number/itoa32 + call $~lib/util/number/itoa64 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -30609,12 +30419,12 @@ local.get $11 call $~lib/string/String#get:length local.set $sepLen - i32.const 11 + i32.const 21 local.get $sepLen i32.add local.get $lastIndex i32.mul - i32.const 11 + i32.const 21 i32.add local.set $estLen global.get $~lib/memory/__stack_pointer @@ -30636,10 +30446,10 @@ if local.get $dataStart local.get $i - i32.const 1 + i32.const 3 i32.shl i32.add - i32.load16_s + i64.load local.set $value|9 local.get $offset local.get $result @@ -30648,7 +30458,7 @@ i32.shl i32.add local.get $value|9 - call $~lib/util/number/itoa_buffered + call $~lib/util/number/itoa_buffered i32.add local.set $offset local.get $sepLen @@ -30677,10 +30487,10 @@ end local.get $dataStart local.get $lastIndex - i32.const 1 + i32.const 3 i32.shl i32.add - i32.load16_s + i64.load local.set $value|9 local.get $offset local.get $result @@ -30689,7 +30499,7 @@ i32.shl i32.add local.get $value|9 - call $~lib/util/number/itoa_buffered + call $~lib/util/number/itoa_buffered i32.add local.set $offset local.get $estLen @@ -30722,7 +30532,7 @@ local.get $11 return ) - (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) (local $ptr i32) (local $len i32) (local $4 i32) @@ -30740,7 +30550,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:dataStart + call $~lib/array/Array#get:dataStart local.set $ptr local.get $this local.set $4 @@ -30748,7 +30558,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:length_ + call $~lib/array/Array#get:length_ local.set $len i32.const 0 drop @@ -30762,7 +30572,7 @@ local.get $4 i32.store local.get $4 - call $~lib/util/string/joinIntegerArray + call $~lib/util/string/joinIntegerArray local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -30771,7 +30581,7 @@ local.get $4 return ) - (func $~lib/array/Array#toString (param $this i32) (result i32) + (func $~lib/array/Array#toString (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -30787,8 +30597,8 @@ local.get $1 i32.store local.get $1 - i32.const 10832 - call $~lib/array/Array#join + i32.const 10992 + call $~lib/array/Array#join local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -30797,24 +30607,48 @@ local.get $1 return ) - (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (func $~lib/array/Array<~lib/string/String|null>#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 10992 + call $~lib/array/Array<~lib/string/String|null>#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) (local $lastIndex i32) - (local $value i64) - (local $sepLen i32) - (local $estLen i32) + (local $value i32) (local $result i32) - (local $offset i32) - (local $value|9 i64) + (local $sepLen i32) (local $i i32) - (local $11 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.const 20 + memory.fill local.get $length i32.const 1 i32.sub @@ -30823,64 +30657,57 @@ i32.const 0 i32.lt_s if - i32.const 10544 - local.set $11 + i32.const 96 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $8 return end local.get $lastIndex i32.eqz if + global.get $~lib/memory/__stack_pointer local.get $dataStart - i64.load - local.set $value - i32.const 0 - drop - i32.const 8 - i32.const 4 - i32.le_u - drop + i32.load + local.tee $value + i32.store local.get $value - i32.const 10 - call $~lib/util/number/utoa64 - local.set $11 + i32.const 0 + i32.ne + if (result i32) + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#toString + else + i32.const 96 + end + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $8 return end + global.get $~lib/memory/__stack_pointer + i32.const 96 + local.tee $result + i32.store offset=8 local.get $separator - local.set $11 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $11 - i32.store - local.get $11 + local.get $8 + i32.store offset=4 + local.get $8 call $~lib/string/String#get:length local.set $sepLen - i32.const 20 - local.get $sepLen - i32.add - local.get $lastIndex - i32.mul - i32.const 20 - i32.add - local.set $estLen - global.get $~lib/memory/__stack_pointer - local.get $estLen - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store offset=4 - i32.const 0 - local.set $offset i32.const 0 local.set $i loop $for-loop|0 @@ -30888,39 +30715,60 @@ local.get $lastIndex i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $dataStart local.get $i - i32.const 3 - i32.shl - i32.add - i64.load - local.set $value|9 - local.get $offset - local.get $result - local.get $offset - i32.const 1 + i32.const 2 i32.shl i32.add - local.get $value|9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $offset + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + call $~lib/array/Array#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end local.get $sepLen if + global.get $~lib/memory/__stack_pointer local.get $result - local.get $offset - i32.const 1 - i32.shl - i32.add + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 local.get $separator - local.get $sepLen - i32.const 1 - i32.shl - memory.copy - local.get $offset - local.get $sepLen - i32.add - local.set $offset + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 end local.get $i i32.const 1 @@ -30929,54 +30777,52 @@ br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer local.get $dataStart local.get $lastIndex - i32.const 3 - i32.shl - i32.add - i64.load - local.set $value|9 - local.get $offset - local.get $result - local.get $offset - i32.const 1 + i32.const 2 i32.shl i32.add - local.get $value|9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $offset - local.get $estLen - local.get $offset - i32.gt_s + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne if + global.get $~lib/memory/__stack_pointer local.get $result - local.set $11 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $11 - i32.store - local.get $11 - i32.const 0 - local.get $offset - call $~lib/string/String#substring - local.set $11 + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return + local.get $8 + i32.store offset=16 + local.get $8 + call $~lib/array/Array#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 end local.get $result - local.set $11 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $8 return ) - (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (param $this i32) (param $separator i32) (result i32) (local $ptr i32) (local $len i32) (local $4 i32) @@ -30994,7 +30840,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:dataStart + call $~lib/array/Array<~lib/array/Array>#get:dataStart local.set $ptr local.get $this local.set $4 @@ -31002,10 +30848,20 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:length_ + call $~lib/array/Array<~lib/array/Array>#get:length_ local.set $len i32.const 0 drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 0 + drop i32.const 1 drop local.get $ptr @@ -31016,7 +30872,7 @@ local.get $4 i32.store local.get $4 - call $~lib/util/string/joinIntegerArray + call $~lib/util/string/joinReferenceArray<~lib/array/Array> local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31025,7 +30881,7 @@ local.get $4 return ) - (func $~lib/array/Array#toString (param $this i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31041,8 +30897,8 @@ local.get $1 i32.store local.get $1 - i32.const 10832 - call $~lib/array/Array#join + i32.const 10992 + call $~lib/array/Array<~lib/array/Array>#join local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31051,14 +30907,87 @@ local.get $1 return ) - (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 2448 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array<~lib/array/Array>#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) (local $lastIndex i32) - (local $value i64) + (local $value i32) (local $sepLen i32) (local $estLen i32) (local $result i32) (local $offset i32) - (local $value|9 i64) + (local $value|9 i32) (local $i i32) (local $11 i32) global.get $~lib/memory/__stack_pointer @@ -31077,7 +31006,7 @@ i32.const 0 i32.lt_s if - i32.const 10544 + i32.const 96 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -31090,19 +31019,17 @@ i32.eqz if local.get $dataStart - i64.load + i32.load8_u local.set $value - i32.const 1 + i32.const 0 drop - i32.const 8 + i32.const 1 i32.const 4 i32.le_u drop local.get $value - i32.wrap_i64 - i64.extend_i32_s i32.const 10 - call $~lib/util/number/itoa64 + call $~lib/util/number/utoa32 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -31119,12 +31046,12 @@ local.get $11 call $~lib/string/String#get:length local.set $sepLen - i32.const 21 + i32.const 10 local.get $sepLen i32.add local.get $lastIndex i32.mul - i32.const 21 + i32.const 10 i32.add local.set $estLen global.get $~lib/memory/__stack_pointer @@ -31146,10 +31073,10 @@ if local.get $dataStart local.get $i - i32.const 3 + i32.const 0 i32.shl i32.add - i64.load + i32.load8_u local.set $value|9 local.get $offset local.get $result @@ -31158,7 +31085,7 @@ i32.shl i32.add local.get $value|9 - call $~lib/util/number/itoa_buffered + call $~lib/util/number/itoa_buffered i32.add local.set $offset local.get $sepLen @@ -31187,10 +31114,10 @@ end local.get $dataStart local.get $lastIndex - i32.const 3 + i32.const 0 i32.shl i32.add - i64.load + i32.load8_u local.set $value|9 local.get $offset local.get $result @@ -31199,7 +31126,7 @@ i32.shl i32.add local.get $value|9 - call $~lib/util/number/itoa_buffered + call $~lib/util/number/itoa_buffered i32.add local.set $offset local.get $estLen @@ -31232,7 +31159,7 @@ local.get $11 return ) - (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) (local $ptr i32) (local $len i32) (local $4 i32) @@ -31250,7 +31177,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:dataStart + call $~lib/array/Array#get:dataStart local.set $ptr local.get $this local.set $4 @@ -31258,7 +31185,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array#get:length_ + call $~lib/array/Array#get:length_ local.set $len i32.const 0 drop @@ -31272,7 +31199,7 @@ local.get $4 i32.store local.get $4 - call $~lib/util/string/joinIntegerArray + call $~lib/util/string/joinIntegerArray local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31281,33 +31208,7 @@ local.get $4 return ) - (func $~lib/array/Array#toString (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 10832 - call $~lib/array/Array#join - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/array/Array<~lib/string/String|null>#toString (param $this i32) (result i32) + (func $~lib/array/Array#toString (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31323,8 +31224,8 @@ local.get $1 i32.store local.get $1 - i32.const 10832 - call $~lib/array/Array<~lib/string/String|null>#join + i32.const 10992 + call $~lib/array/Array#join local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31333,7 +31234,7 @@ local.get $1 return ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) (local $lastIndex i32) (local $value i32) (local $result i32) @@ -31357,7 +31258,7 @@ i32.const 0 i32.lt_s if - i32.const 10544 + i32.const 96 local.set $8 global.get $~lib/memory/__stack_pointer i32.const 20 @@ -31384,9 +31285,9 @@ local.get $8 i32.store offset=4 local.get $8 - call $~lib/array/Array#toString + call $~lib/array/Array#toString else - i32.const 10544 + i32.const 96 end local.set $8 global.get $~lib/memory/__stack_pointer @@ -31397,7 +31298,7 @@ return end global.get $~lib/memory/__stack_pointer - i32.const 10544 + i32.const 96 local.tee $result i32.store offset=8 local.get $separator @@ -31441,7 +31342,7 @@ local.get $8 i32.store offset=16 local.get $8 - call $~lib/array/Array#toString + call $~lib/array/Array#toString local.set $8 global.get $~lib/memory/__stack_pointer local.get $8 @@ -31503,7 +31404,7 @@ local.get $8 i32.store offset=16 local.get $8 - call $~lib/array/Array#toString + call $~lib/array/Array#toString local.set $8 global.get $~lib/memory/__stack_pointer local.get $8 @@ -31522,7 +31423,7 @@ local.get $8 return ) - (func $~lib/array/Array<~lib/array/Array>#join (param $this i32) (param $separator i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (param $this i32) (param $separator i32) (result i32) (local $ptr i32) (local $len i32) (local $4 i32) @@ -31540,7 +31441,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array<~lib/array/Array>#get:dataStart + call $~lib/array/Array<~lib/array/Array>#get:dataStart local.set $ptr local.get $this local.set $4 @@ -31548,7 +31449,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array<~lib/array/Array>#get:length_ + call $~lib/array/Array<~lib/array/Array>#get:length_ local.set $len i32.const 0 drop @@ -31572,7 +31473,7 @@ local.get $4 i32.store local.get $4 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> + call $~lib/util/string/joinReferenceArray<~lib/array/Array> local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31581,7 +31482,7 @@ local.get $4 return ) - (func $~lib/array/Array<~lib/array/Array>#toString (param $this i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31597,8 +31498,8 @@ local.get $1 i32.store local.get $1 - i32.const 10832 - call $~lib/array/Array<~lib/array/Array>#join + i32.const 10992 + call $~lib/array/Array<~lib/array/Array>#join local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31607,7 +31508,7 @@ local.get $1 return ) - (func $~lib/array/Array<~lib/array/Array>#__set (param $this i32) (param $index i32) (param $value i32) + (func $~lib/array/Array<~lib/array/Array>#__set (param $this i32) (param $index i32) (param $value i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31624,7 +31525,7 @@ local.get $3 i32.store local.get $3 - call $~lib/array/Array<~lib/array/Array>#get:length_ + call $~lib/array/Array<~lib/array/Array>#get:length_ i32.ge_u if local.get $index @@ -31632,7 +31533,7 @@ i32.lt_s if i32.const 320 - i32.const 80 + i32.const 2448 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -31654,7 +31555,7 @@ local.get $index i32.const 1 i32.add - call $~lib/array/Array<~lib/array/Array>#set:length_ + call $~lib/array/Array<~lib/array/Array>#set:length_ end local.get $this local.set $3 @@ -31662,7 +31563,7 @@ local.get $3 i32.store local.get $3 - call $~lib/array/Array<~lib/array/Array>#get:dataStart + call $~lib/array/Array<~lib/array/Array>#get:dataStart local.get $index i32.const 2 i32.shl @@ -31680,235 +31581,80 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) - (local $lastIndex i32) - (local $value i32) - (local $sepLen i32) - (local $estLen i32) - (local $result i32) - (local $offset i32) - (local $value|9 i32) - (local $i i32) - (local $11 i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $length - i32.const 1 - i32.sub - local.set $lastIndex - local.get $lastIndex i32.const 0 - i32.lt_s - if - i32.const 10544 - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return - end - local.get $lastIndex - i32.eqz - if - local.get $dataStart - i32.load8_u - local.set $value - i32.const 0 - drop - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $value - i32.const 10 - call $~lib/util/number/utoa32 - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return - end - local.get $separator - local.set $11 - global.get $~lib/memory/__stack_pointer - local.get $11 i32.store - local.get $11 - call $~lib/string/String#get:length - local.set $sepLen - i32.const 10 - local.get $sepLen - i32.add - local.get $lastIndex - i32.mul - i32.const 10 - i32.add - local.set $estLen + local.get $index + local.get $this + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $estLen - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store offset=4 - i32.const 0 - local.set $offset - i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i - local.get $lastIndex + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 i32.lt_s if - local.get $dataStart - local.get $i - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $value|9 - local.get $offset - local.get $result - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $value|9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $offset - local.get $sepLen - if - local.get $result - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $separator - local.get $sepLen - i32.const 1 - i32.shl - memory.copy - local.get $offset - local.get $sepLen - i32.add - local.set $offset - end - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 + i32.const 320 + i32.const 2448 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable end - end - local.get $dataStart - local.get $lastIndex - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $value|9 - local.get $offset - local.get $result - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $value|9 - call $~lib/util/number/itoa_buffered - i32.add - local.set $offset - local.get $estLen - local.get $offset - i32.gt_s - if - local.get $result - local.set $11 + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $3 i32.store - local.get $11 - i32.const 0 - local.get $offset - call $~lib/string/String#substring - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $3 + local.get $index + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#set:length_ end - local.get $result - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return - ) - (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) - (local $ptr i32) - (local $len i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $this - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store - local.get $4 - call $~lib/array/Array#get:dataStart - local.set $ptr - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value i32.store - local.get $4 - call $~lib/array/Array#get:length_ - local.set $len - i32.const 0 - drop i32.const 1 drop - local.get $ptr - local.get $len - local.get $separator - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/util/string/joinIntegerArray - local.set $4 + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - return ) - (func $~lib/array/Array#toString (param $this i32) (result i32) + (func $~lib/array/Array#toString (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31924,8 +31670,8 @@ local.get $1 i32.store local.get $1 - i32.const 10832 - call $~lib/array/Array#join + i32.const 10992 + call $~lib/array/Array#join local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31934,7 +31680,7 @@ local.get $1 return ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) (local $lastIndex i32) (local $value i32) (local $result i32) @@ -31958,7 +31704,7 @@ i32.const 0 i32.lt_s if - i32.const 10544 + i32.const 96 local.set $8 global.get $~lib/memory/__stack_pointer i32.const 20 @@ -31985,9 +31731,9 @@ local.get $8 i32.store offset=4 local.get $8 - call $~lib/array/Array#toString + call $~lib/array/Array#toString else - i32.const 10544 + i32.const 96 end local.set $8 global.get $~lib/memory/__stack_pointer @@ -31998,7 +31744,7 @@ return end global.get $~lib/memory/__stack_pointer - i32.const 10544 + i32.const 96 local.tee $result i32.store offset=8 local.get $separator @@ -32042,7 +31788,7 @@ local.get $8 i32.store offset=16 local.get $8 - call $~lib/array/Array#toString + call $~lib/array/Array#toString local.set $8 global.get $~lib/memory/__stack_pointer local.get $8 @@ -32104,7 +31850,7 @@ local.get $8 i32.store offset=16 local.get $8 - call $~lib/array/Array#toString + call $~lib/array/Array#toString local.set $8 global.get $~lib/memory/__stack_pointer local.get $8 @@ -32123,7 +31869,7 @@ local.get $8 return ) - (func $~lib/array/Array<~lib/array/Array>#join (param $this i32) (param $separator i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (param $this i32) (param $separator i32) (result i32) (local $ptr i32) (local $len i32) (local $4 i32) @@ -32141,7 +31887,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array<~lib/array/Array>#get:dataStart + call $~lib/array/Array<~lib/array/Array>#get:dataStart local.set $ptr local.get $this local.set $4 @@ -32149,7 +31895,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array<~lib/array/Array>#get:length_ + call $~lib/array/Array<~lib/array/Array>#get:length_ local.set $len i32.const 0 drop @@ -32173,7 +31919,7 @@ local.get $4 i32.store local.get $4 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> + call $~lib/util/string/joinReferenceArray<~lib/array/Array> local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -32182,179 +31928,7 @@ local.get $4 return ) - (func $~lib/array/Array<~lib/array/Array>#toString (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 10832 - call $~lib/array/Array<~lib/array/Array>#join - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/array/Array<~lib/array/Array>#__set (param $this i32) (param $index i32) (param $value i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $index - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array<~lib/array/Array>#get:length_ - i32.ge_u - if - local.get $index - i32.const 0 - i32.lt_s - if - i32.const 320 - i32.const 80 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $this - local.get $index - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - local.get $index - i32.const 1 - i32.add - call $~lib/array/Array<~lib/array/Array>#set:length_ - end - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array<~lib/array/Array>#get:dataStart - local.get $index - i32.const 2 - i32.shl - i32.add - local.get $value - i32.store - i32.const 1 - drop - local.get $this - local.get $value - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__set (param $this i32) (param $index i32) (param $value i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $index - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:length_ - i32.ge_u - if - local.get $index - i32.const 0 - i32.lt_s - if - i32.const 320 - i32.const 80 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $this - local.get $index - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - local.get $index - i32.const 1 - i32.add - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#set:length_ - end - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:dataStart - local.get $index - i32.const 2 - i32.shl - i32.add - local.get $value - i32.store - i32.const 1 - drop - local.get $this - local.get $value - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#toString (param $this i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -32370,8 +31944,8 @@ local.get $1 i32.store local.get $1 - i32.const 10832 - call $~lib/array/Array#join + i32.const 10992 + call $~lib/array/Array<~lib/array/Array>#join local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -32380,7 +31954,7 @@ local.get $1 return ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) (local $lastIndex i32) (local $value i32) (local $result i32) @@ -32404,7 +31978,7 @@ i32.const 0 i32.lt_s if - i32.const 10544 + i32.const 96 local.set $8 global.get $~lib/memory/__stack_pointer i32.const 20 @@ -32431,9 +32005,9 @@ local.get $8 i32.store offset=4 local.get $8 - call $~lib/array/Array#toString + call $~lib/array/Array<~lib/array/Array>#toString else - i32.const 10544 + i32.const 96 end local.set $8 global.get $~lib/memory/__stack_pointer @@ -32444,7 +32018,7 @@ return end global.get $~lib/memory/__stack_pointer - i32.const 10544 + i32.const 96 local.tee $result i32.store offset=8 local.get $separator @@ -32488,7 +32062,7 @@ local.get $8 i32.store offset=16 local.get $8 - call $~lib/array/Array#toString + call $~lib/array/Array<~lib/array/Array>#toString local.set $8 global.get $~lib/memory/__stack_pointer local.get $8 @@ -32550,7 +32124,7 @@ local.get $8 i32.store offset=16 local.get $8 - call $~lib/array/Array#toString + call $~lib/array/Array<~lib/array/Array>#toString local.set $8 global.get $~lib/memory/__stack_pointer local.get $8 @@ -32569,7 +32143,7 @@ local.get $8 return ) - (func $~lib/array/Array<~lib/array/Array>#join (param $this i32) (param $separator i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join (param $this i32) (param $separator i32) (result i32) (local $ptr i32) (local $len i32) (local $4 i32) @@ -32587,7 +32161,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array<~lib/array/Array>#get:dataStart + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:dataStart local.set $ptr local.get $this local.set $4 @@ -32595,7 +32169,7 @@ local.get $4 i32.store local.get $4 - call $~lib/array/Array<~lib/array/Array>#get:length_ + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:length_ local.set $len i32.const 0 drop @@ -32619,7 +32193,7 @@ local.get $4 i32.store local.get $4 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> + call $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -32628,7 +32202,7 @@ local.get $4 return ) - (func $~lib/array/Array<~lib/array/Array>#toString (param $this i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -32644,8 +32218,8 @@ local.get $1 i32.store local.get $1 - i32.const 10832 - call $~lib/array/Array<~lib/array/Array>#join + i32.const 10992 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -32654,305 +32228,31 @@ local.get $1 return ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) - (local $lastIndex i32) - (local $value i32) - (local $result i32) - (local $sepLen i32) + (func $~lib/array/Array<~lib/array/Array>#flat (param $this i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $size i32) (local $i i32) - (local $8 i32) + (local $child i32) + (local $byteLength i32) + (local $outBuffer i32) + (local $outArray i32) + (local $resultOffset i32) + (local $i|10 i32) + (local $child|11 i32) + (local $childDataLength i32) + (local $13 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 - memory.fill - local.get $length - i32.const 1 - i32.sub - local.set $lastIndex - local.get $lastIndex - i32.const 0 - i32.lt_s - if - i32.const 10544 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - end - local.get $lastIndex - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $dataStart - i32.load - local.tee $value - i32.store - local.get $value - i32.const 0 - i32.ne - if (result i32) - local.get $value - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - call $~lib/array/Array<~lib/array/Array>#toString - else - i32.const 10544 - end - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 10544 - local.tee $result - i32.store offset=8 - local.get $separator - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - call $~lib/string/String#get:length - local.set $sepLen - i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i - local.get $lastIndex - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $dataStart - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $value - i32.store - local.get $value - i32.const 0 - i32.ne - if - global.get $~lib/memory/__stack_pointer - local.get $result - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - local.get $value - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=16 - local.get $8 - call $~lib/array/Array<~lib/array/Array>#toString - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $8 - call $~lib/string/String.__concat - local.tee $result - i32.store offset=8 - end - local.get $sepLen - if - global.get $~lib/memory/__stack_pointer - local.get $result - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - local.get $separator - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $8 - call $~lib/string/String.__concat - local.tee $result - i32.store offset=8 - end - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $dataStart - local.get $lastIndex - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $value - i32.store - local.get $value - i32.const 0 - i32.ne - if - global.get $~lib/memory/__stack_pointer - local.get $result - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - local.get $value - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=16 - local.get $8 - call $~lib/array/Array<~lib/array/Array>#toString - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $8 - call $~lib/string/String.__concat - local.tee $result - i32.store offset=8 - end - local.get $result - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - return - ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join (param $this i32) (param $separator i32) (result i32) - (local $ptr i32) - (local $len i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:dataStart - local.set $ptr - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:length_ - local.set $len - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.lt_s - drop - i32.const 0 - drop - i32.const 1 - drop - local.get $ptr - local.get $len - local.get $separator - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 10832 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/array/Array<~lib/array/Array>#flat (param $this i32) (result i32) - (local $ptr i32) - (local $len i32) - (local $size i32) - (local $i i32) - (local $child i32) - (local $byteLength i32) - (local $outBuffer i32) - (local $outArray i32) - (local $resultOffset i32) - (local $i|10 i32) - (local $child|11 i32) - (local $childDataLength i32) - (local $13 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i32.store offset=8 i32.const 1 i32.eqz drop @@ -33121,7 +32421,7 @@ i32.lt_s if i32.const 320 - i32.const 80 + i32.const 2448 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -33386,7 +32686,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1267 i32.const 5 call $~lib/builtins/abort @@ -33413,7 +32713,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1269 i32.const 5 call $~lib/builtins/abort @@ -33897,7 +33197,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 47 i32.const 3 call $~lib/builtins/abort @@ -33916,7 +33216,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 48 i32.const 3 call $~lib/builtins/abort @@ -33935,7 +33235,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -33947,19 +33247,19 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 50 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 640 + i32.const 2608 call $~lib/array/Array.isArray<~lib/string/String> i32.eqz i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 51 i32.const 3 call $~lib/builtins/abort @@ -33975,7 +33275,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 53 i32.const 3 call $~lib/builtins/abort @@ -33985,7 +33285,7 @@ i32.const 5 i32.const 0 i32.const 7 - i32.const 672 + i32.const 2640 call $~lib/rt/__newArray local.tee $1 i32.store offset=4 @@ -34009,7 +33309,7 @@ i32.const 5 i32.const 0 i32.const 7 - i32.const 704 + i32.const 2672 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34021,7 +33321,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -34049,7 +33349,7 @@ i32.const 5 i32.const 0 i32.const 7 - i32.const 736 + i32.const 2704 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34061,7 +33361,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -34087,7 +33387,7 @@ i32.const 5 i32.const 0 i32.const 7 - i32.const 768 + i32.const 2736 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34099,7 +33399,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -34127,7 +33427,7 @@ i32.const 5 i32.const 0 i32.const 7 - i32.const 800 + i32.const 2768 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34139,7 +33439,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 70 i32.const 3 call $~lib/builtins/abort @@ -34165,7 +33465,7 @@ i32.const 5 i32.const 0 i32.const 7 - i32.const 832 + i32.const 2800 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34177,7 +33477,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 73 i32.const 3 call $~lib/builtins/abort @@ -34205,7 +33505,7 @@ i32.const 5 i32.const 0 i32.const 7 - i32.const 864 + i32.const 2832 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34217,7 +33517,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 76 i32.const 3 call $~lib/builtins/abort @@ -34227,7 +33527,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 896 + i32.const 2864 call $~lib/rt/__newArray local.tee $9 i32.store offset=12 @@ -34251,7 +33551,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 944 + i32.const 2912 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34263,7 +33563,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -34291,7 +33591,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 992 + i32.const 2960 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34303,7 +33603,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 86 i32.const 3 call $~lib/builtins/abort @@ -34329,7 +33629,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 1040 + i32.const 3008 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34341,7 +33641,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 89 i32.const 3 call $~lib/builtins/abort @@ -34369,7 +33669,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 1088 + i32.const 3056 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34381,7 +33681,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 92 i32.const 3 call $~lib/builtins/abort @@ -34407,7 +33707,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 1136 + i32.const 3104 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34419,7 +33719,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 95 i32.const 3 call $~lib/builtins/abort @@ -34447,7 +33747,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 1184 + i32.const 3152 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34459,7 +33759,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -34469,7 +33769,7 @@ i32.const 5 i32.const 2 i32.const 9 - i32.const 1232 + i32.const 3200 call $~lib/rt/__newArray local.tee $17 i32.store offset=16 @@ -34493,7 +33793,7 @@ i32.const 5 i32.const 2 i32.const 9 - i32.const 1280 + i32.const 3248 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34505,7 +33805,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 105 i32.const 3 call $~lib/builtins/abort @@ -34533,7 +33833,7 @@ i32.const 5 i32.const 2 i32.const 9 - i32.const 1328 + i32.const 3296 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34545,7 +33845,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -34571,7 +33871,7 @@ i32.const 5 i32.const 2 i32.const 9 - i32.const 1376 + i32.const 3344 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34583,7 +33883,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 111 i32.const 3 call $~lib/builtins/abort @@ -34611,7 +33911,7 @@ i32.const 5 i32.const 2 i32.const 9 - i32.const 1424 + i32.const 3392 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34623,7 +33923,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -34649,7 +33949,7 @@ i32.const 5 i32.const 2 i32.const 9 - i32.const 1472 + i32.const 3440 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34661,7 +33961,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 117 i32.const 3 call $~lib/builtins/abort @@ -34689,7 +33989,7 @@ i32.const 5 i32.const 2 i32.const 9 - i32.const 1520 + i32.const 3488 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34701,7 +34001,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 120 i32.const 3 call $~lib/builtins/abort @@ -34729,7 +34029,7 @@ i32.const 5 i32.const 2 i32.const 9 - i32.const 1568 + i32.const 3536 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -34741,7 +34041,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 123 i32.const 3 call $~lib/builtins/abort @@ -34759,7 +34059,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 129 i32.const 3 call $~lib/builtins/abort @@ -34777,7 +34077,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 130 i32.const 3 call $~lib/builtins/abort @@ -34805,7 +34105,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 134 i32.const 3 call $~lib/builtins/abort @@ -34823,7 +34123,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 135 i32.const 3 call $~lib/builtins/abort @@ -34841,7 +34141,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 136 i32.const 3 call $~lib/builtins/abort @@ -34861,7 +34161,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 140 i32.const 3 call $~lib/builtins/abort @@ -34879,7 +34179,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 141 i32.const 3 call $~lib/builtins/abort @@ -34897,7 +34197,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 142 i32.const 3 call $~lib/builtins/abort @@ -34924,7 +34224,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 146 i32.const 3 call $~lib/builtins/abort @@ -34942,7 +34242,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 147 i32.const 3 call $~lib/builtins/abort @@ -34961,7 +34261,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 148 i32.const 3 call $~lib/builtins/abort @@ -34988,7 +34288,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 152 i32.const 3 call $~lib/builtins/abort @@ -35006,7 +34306,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 153 i32.const 3 call $~lib/builtins/abort @@ -35025,7 +34325,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 154 i32.const 3 call $~lib/builtins/abort @@ -35044,7 +34344,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 155 i32.const 3 call $~lib/builtins/abort @@ -35071,7 +34371,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 159 i32.const 3 call $~lib/builtins/abort @@ -35089,7 +34389,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 160 i32.const 3 call $~lib/builtins/abort @@ -35108,7 +34408,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 161 i32.const 3 call $~lib/builtins/abort @@ -35127,7 +34427,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 162 i32.const 3 call $~lib/builtins/abort @@ -35146,7 +34446,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 163 i32.const 3 call $~lib/builtins/abort @@ -35196,7 +34496,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 171 i32.const 3 call $~lib/builtins/abort @@ -35206,7 +34506,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 1664 + i32.const 3632 call $~lib/rt/__newArray local.tee $29 i32.store offset=28 @@ -35223,7 +34523,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 179 i32.const 3 call $~lib/builtins/abort @@ -35242,7 +34542,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 180 i32.const 3 call $~lib/builtins/abort @@ -35261,7 +34561,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 181 i32.const 3 call $~lib/builtins/abort @@ -35280,7 +34580,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 182 i32.const 3 call $~lib/builtins/abort @@ -35320,7 +34620,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 191 i32.const 3 call $~lib/builtins/abort @@ -35338,7 +34638,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 192 i32.const 3 call $~lib/builtins/abort @@ -35356,7 +34656,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 193 i32.const 3 call $~lib/builtins/abort @@ -35371,7 +34671,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 1712 + i32.const 3680 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -35392,7 +34692,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 196 i32.const 3 call $~lib/builtins/abort @@ -35411,7 +34711,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 198 i32.const 3 call $~lib/builtins/abort @@ -35430,7 +34730,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 199 i32.const 3 call $~lib/builtins/abort @@ -35449,7 +34749,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 200 i32.const 3 call $~lib/builtins/abort @@ -35501,7 +34801,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 207 i32.const 3 call $~lib/builtins/abort @@ -35519,7 +34819,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 208 i32.const 3 call $~lib/builtins/abort @@ -35537,7 +34837,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 209 i32.const 3 call $~lib/builtins/abort @@ -35556,7 +34856,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 210 i32.const 3 call $~lib/builtins/abort @@ -35575,7 +34875,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 211 i32.const 3 call $~lib/builtins/abort @@ -35594,7 +34894,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 212 i32.const 3 call $~lib/builtins/abort @@ -35613,7 +34913,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 213 i32.const 3 call $~lib/builtins/abort @@ -35632,7 +34932,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 214 i32.const 3 call $~lib/builtins/abort @@ -35658,7 +34958,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 217 i32.const 3 call $~lib/builtins/abort @@ -35668,7 +34968,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 1744 + i32.const 3712 call $~lib/rt/__newArray local.tee $34 i32.store offset=40 @@ -35684,7 +34984,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 225 i32.const 3 call $~lib/builtins/abort @@ -35718,7 +35018,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 227 i32.const 3 call $~lib/builtins/abort @@ -35736,7 +35036,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 228 i32.const 3 call $~lib/builtins/abort @@ -35746,7 +35046,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1776 + i32.const 3744 call $~lib/rt/__newArray local.tee $36 i32.store offset=44 @@ -35770,7 +35070,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1824 + i32.const 3792 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -35782,7 +35082,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 235 i32.const 3 call $~lib/builtins/abort @@ -35792,7 +35092,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1872 + i32.const 3840 call $~lib/rt/__newArray local.tee $36 i32.store offset=44 @@ -35816,7 +35116,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1920 + i32.const 3888 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -35828,7 +35128,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 237 i32.const 3 call $~lib/builtins/abort @@ -35838,7 +35138,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1968 + i32.const 3936 call $~lib/rt/__newArray local.tee $36 i32.store offset=44 @@ -35862,7 +35162,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2016 + i32.const 3984 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -35874,7 +35174,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 239 i32.const 3 call $~lib/builtins/abort @@ -35884,7 +35184,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2064 + i32.const 4032 call $~lib/rt/__newArray local.tee $36 i32.store offset=44 @@ -35908,7 +35208,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2112 + i32.const 4080 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -35920,7 +35220,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 241 i32.const 3 call $~lib/builtins/abort @@ -35930,7 +35230,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2160 + i32.const 4128 call $~lib/rt/__newArray local.tee $36 i32.store offset=44 @@ -35952,7 +35252,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2208 + i32.const 4176 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -35964,7 +35264,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 243 i32.const 3 call $~lib/builtins/abort @@ -35974,7 +35274,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2256 + i32.const 4224 call $~lib/rt/__newArray local.tee $36 i32.store offset=44 @@ -35996,7 +35296,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2304 + i32.const 4272 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -36008,7 +35308,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 245 i32.const 3 call $~lib/builtins/abort @@ -36018,7 +35318,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2352 + i32.const 4320 call $~lib/rt/__newArray local.tee $36 i32.store offset=44 @@ -36040,7 +35340,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2400 + i32.const 4368 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -36052,7 +35352,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 247 i32.const 3 call $~lib/builtins/abort @@ -36062,7 +35362,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2448 + i32.const 4416 call $~lib/rt/__newArray local.tee $36 i32.store offset=44 @@ -36086,7 +35386,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2496 + i32.const 4464 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -36098,7 +35398,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 249 i32.const 3 call $~lib/builtins/abort @@ -36108,7 +35408,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2544 + i32.const 4512 call $~lib/rt/__newArray local.tee $36 i32.store offset=44 @@ -36130,7 +35430,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2592 + i32.const 4560 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -36142,7 +35442,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 251 i32.const 3 call $~lib/builtins/abort @@ -36152,7 +35452,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2640 + i32.const 4608 call $~lib/rt/__newArray local.tee $36 i32.store offset=44 @@ -36174,7 +35474,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2688 + i32.const 4656 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -36186,7 +35486,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 253 i32.const 3 call $~lib/builtins/abort @@ -36196,7 +35496,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2736 + i32.const 4704 call $~lib/rt/__newArray local.tee $36 i32.store offset=44 @@ -36218,7 +35518,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2784 + i32.const 4752 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -36230,7 +35530,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 255 i32.const 3 call $~lib/builtins/abort @@ -36240,7 +35540,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2832 + i32.const 4800 call $~lib/rt/__newArray local.tee $36 i32.store offset=44 @@ -36264,7 +35564,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2880 + i32.const 4848 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -36276,7 +35576,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 257 i32.const 3 call $~lib/builtins/abort @@ -36303,7 +35603,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 265 i32.const 3 call $~lib/builtins/abort @@ -36321,7 +35621,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 266 i32.const 3 call $~lib/builtins/abort @@ -36340,7 +35640,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 267 i32.const 3 call $~lib/builtins/abort @@ -36359,7 +35659,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 268 i32.const 3 call $~lib/builtins/abort @@ -36378,7 +35678,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 269 i32.const 3 call $~lib/builtins/abort @@ -36397,7 +35697,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 270 i32.const 3 call $~lib/builtins/abort @@ -36424,7 +35724,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 274 i32.const 3 call $~lib/builtins/abort @@ -36442,7 +35742,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 275 i32.const 3 call $~lib/builtins/abort @@ -36461,7 +35761,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 276 i32.const 3 call $~lib/builtins/abort @@ -36480,7 +35780,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 277 i32.const 3 call $~lib/builtins/abort @@ -36499,7 +35799,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 278 i32.const 3 call $~lib/builtins/abort @@ -36518,7 +35818,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 279 i32.const 3 call $~lib/builtins/abort @@ -36537,7 +35837,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 280 i32.const 3 call $~lib/builtins/abort @@ -36557,7 +35857,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 289 i32.const 3 call $~lib/builtins/abort @@ -36575,7 +35875,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 290 i32.const 3 call $~lib/builtins/abort @@ -36593,7 +35893,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 291 i32.const 3 call $~lib/builtins/abort @@ -36612,7 +35912,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 292 i32.const 3 call $~lib/builtins/abort @@ -36631,7 +35931,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 293 i32.const 3 call $~lib/builtins/abort @@ -36650,7 +35950,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 294 i32.const 3 call $~lib/builtins/abort @@ -36669,7 +35969,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 295 i32.const 3 call $~lib/builtins/abort @@ -36689,7 +35989,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 299 i32.const 3 call $~lib/builtins/abort @@ -36707,7 +36007,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 300 i32.const 3 call $~lib/builtins/abort @@ -36725,7 +36025,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 301 i32.const 3 call $~lib/builtins/abort @@ -36744,7 +36044,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 302 i32.const 3 call $~lib/builtins/abort @@ -36763,7 +36063,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 303 i32.const 3 call $~lib/builtins/abort @@ -36782,7 +36082,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 304 i32.const 3 call $~lib/builtins/abort @@ -36792,7 +36092,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2928 + i32.const 4896 call $~lib/rt/__newArray local.tee $62 i32.store offset=52 @@ -36819,7 +36119,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 2976 + i32.const 4944 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -36831,7 +36131,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 314 i32.const 3 call $~lib/builtins/abort @@ -36858,7 +36158,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 3008 + i32.const 4976 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -36870,7 +36170,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 317 i32.const 3 call $~lib/builtins/abort @@ -36897,7 +36197,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 3040 + i32.const 5008 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -36909,7 +36209,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 320 i32.const 3 call $~lib/builtins/abort @@ -36946,7 +36246,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -36975,7 +36275,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 3088 + i32.const 5056 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -36987,7 +36287,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 326 i32.const 3 call $~lib/builtins/abort @@ -37014,7 +36314,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 3120 + i32.const 5088 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -37026,7 +36326,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 329 i32.const 3 call $~lib/builtins/abort @@ -37053,7 +36353,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 3152 + i32.const 5120 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -37065,7 +36365,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 332 i32.const 3 call $~lib/builtins/abort @@ -37091,7 +36391,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 334 i32.const 3 call $~lib/builtins/abort @@ -37119,7 +36419,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 335 i32.const 3 call $~lib/builtins/abort @@ -37145,7 +36445,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 343 i32.const 3 call $~lib/builtins/abort @@ -37163,7 +36463,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -37182,7 +36482,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 345 i32.const 3 call $~lib/builtins/abort @@ -37201,7 +36501,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 346 i32.const 3 call $~lib/builtins/abort @@ -37220,7 +36520,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 347 i32.const 3 call $~lib/builtins/abort @@ -37248,7 +36548,7 @@ i32.const 4 i32.const 0 i32.const 7 - i32.const 3184 + i32.const 5152 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -37296,7 +36596,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 354 i32.const 5 call $~lib/builtins/abort @@ -37313,7 +36613,7 @@ i32.const 8 i32.const 0 i32.const 7 - i32.const 3216 + i32.const 5184 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -37361,7 +36661,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 359 i32.const 5 call $~lib/builtins/abort @@ -37378,7 +36678,7 @@ i32.const 17 i32.const 0 i32.const 7 - i32.const 3248 + i32.const 5216 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -37426,7 +36726,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 364 i32.const 5 call $~lib/builtins/abort @@ -37443,7 +36743,7 @@ i32.const 7 i32.const 1 i32.const 11 - i32.const 3296 + i32.const 5264 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -37491,7 +36791,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 369 i32.const 5 call $~lib/builtins/abort @@ -37508,7 +36808,7 @@ i32.const 8 i32.const 1 i32.const 11 - i32.const 3344 + i32.const 5312 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -37556,7 +36856,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 374 i32.const 5 call $~lib/builtins/abort @@ -37573,7 +36873,7 @@ i32.const 9 i32.const 1 i32.const 11 - i32.const 3392 + i32.const 5360 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -37621,7 +36921,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 379 i32.const 5 call $~lib/builtins/abort @@ -37650,7 +36950,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 387 i32.const 3 call $~lib/builtins/abort @@ -37672,7 +36972,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -37694,7 +36994,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -37716,7 +37016,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 396 i32.const 3 call $~lib/builtins/abort @@ -37738,7 +37038,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 399 i32.const 3 call $~lib/builtins/abort @@ -37760,7 +37060,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 402 i32.const 3 call $~lib/builtins/abort @@ -37782,7 +37082,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 405 i32.const 3 call $~lib/builtins/abort @@ -37804,7 +37104,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 408 i32.const 3 call $~lib/builtins/abort @@ -37826,7 +37126,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 411 i32.const 3 call $~lib/builtins/abort @@ -37848,7 +37148,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -37857,7 +37157,7 @@ i32.const 1 i32.const 2 i32.const 9 - i32.const 3440 + i32.const 5408 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -37872,7 +37172,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -37881,7 +37181,7 @@ i32.const 1 i32.const 3 i32.const 12 - i32.const 3472 + i32.const 5440 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -37896,7 +37196,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -37906,7 +37206,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 3504 + i32.const 5472 call $~lib/rt/__newArray local.tee $96 i32.store offset=84 @@ -37926,7 +37226,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 424 i32.const 3 call $~lib/builtins/abort @@ -37948,7 +37248,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 425 i32.const 3 call $~lib/builtins/abort @@ -37968,7 +37268,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 426 i32.const 3 call $~lib/builtins/abort @@ -37988,7 +37288,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 427 i32.const 3 call $~lib/builtins/abort @@ -38008,7 +37308,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 428 i32.const 3 call $~lib/builtins/abort @@ -38028,7 +37328,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 429 i32.const 3 call $~lib/builtins/abort @@ -38050,7 +37350,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 437 i32.const 3 call $~lib/builtins/abort @@ -38072,7 +37372,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -38094,7 +37394,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 443 i32.const 3 call $~lib/builtins/abort @@ -38116,7 +37416,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 446 i32.const 3 call $~lib/builtins/abort @@ -38138,7 +37438,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 449 i32.const 3 call $~lib/builtins/abort @@ -38160,7 +37460,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 452 i32.const 3 call $~lib/builtins/abort @@ -38182,7 +37482,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 455 i32.const 3 call $~lib/builtins/abort @@ -38204,7 +37504,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 458 i32.const 3 call $~lib/builtins/abort @@ -38226,7 +37526,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 461 i32.const 3 call $~lib/builtins/abort @@ -38248,7 +37548,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 464 i32.const 3 call $~lib/builtins/abort @@ -38257,7 +37557,7 @@ i32.const 1 i32.const 2 i32.const 9 - i32.const 3552 + i32.const 5520 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38270,7 +37570,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 466 i32.const 3 call $~lib/builtins/abort @@ -38279,7 +37579,7 @@ i32.const 1 i32.const 3 i32.const 12 - i32.const 3584 + i32.const 5552 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38292,7 +37592,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 467 i32.const 3 call $~lib/builtins/abort @@ -38320,7 +37620,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 471 i32.const 3 call $~lib/builtins/abort @@ -38338,7 +37638,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 472 i32.const 3 call $~lib/builtins/abort @@ -38357,7 +37657,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 473 i32.const 3 call $~lib/builtins/abort @@ -38376,7 +37676,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 474 i32.const 3 call $~lib/builtins/abort @@ -38386,7 +37686,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3616 + i32.const 5584 call $~lib/rt/__newArray local.tee $101 i32.store offset=88 @@ -38409,7 +37709,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3664 + i32.const 5632 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38421,7 +37721,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 481 i32.const 3 call $~lib/builtins/abort @@ -38436,7 +37736,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 3712 + i32.const 5680 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38448,7 +37748,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 482 i32.const 3 call $~lib/builtins/abort @@ -38458,7 +37758,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3744 + i32.const 5712 call $~lib/rt/__newArray local.tee $101 i32.store offset=88 @@ -38479,7 +37779,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 3792 + i32.const 5760 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38491,7 +37791,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 485 i32.const 3 call $~lib/builtins/abort @@ -38506,7 +37806,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3824 + i32.const 5792 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38518,7 +37818,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 486 i32.const 3 call $~lib/builtins/abort @@ -38528,7 +37828,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3872 + i32.const 5840 call $~lib/rt/__newArray local.tee $101 i32.store offset=88 @@ -38551,7 +37851,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 3920 + i32.const 5888 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38563,7 +37863,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 489 i32.const 3 call $~lib/builtins/abort @@ -38578,7 +37878,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 3952 + i32.const 5920 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38590,7 +37890,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 490 i32.const 3 call $~lib/builtins/abort @@ -38600,7 +37900,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3984 + i32.const 5952 call $~lib/rt/__newArray local.tee $101 i32.store offset=88 @@ -38621,7 +37921,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 4032 + i32.const 6000 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38633,7 +37933,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 493 i32.const 3 call $~lib/builtins/abort @@ -38648,7 +37948,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 4064 + i32.const 6032 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38660,7 +37960,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 494 i32.const 3 call $~lib/builtins/abort @@ -38670,7 +37970,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 4096 + i32.const 6064 call $~lib/rt/__newArray local.tee $101 i32.store offset=88 @@ -38691,7 +37991,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 4144 + i32.const 6112 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38703,7 +38003,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 497 i32.const 3 call $~lib/builtins/abort @@ -38718,7 +38018,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 4176 + i32.const 6144 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38730,7 +38030,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 498 i32.const 3 call $~lib/builtins/abort @@ -38740,7 +38040,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 4224 + i32.const 6192 call $~lib/rt/__newArray local.tee $101 i32.store offset=88 @@ -38763,7 +38063,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 4272 + i32.const 6240 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38775,7 +38075,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 501 i32.const 3 call $~lib/builtins/abort @@ -38790,7 +38090,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 4304 + i32.const 6272 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38802,7 +38102,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 502 i32.const 3 call $~lib/builtins/abort @@ -38812,7 +38112,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 4352 + i32.const 6320 call $~lib/rt/__newArray local.tee $101 i32.store offset=88 @@ -38835,7 +38135,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 4400 + i32.const 6368 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38847,7 +38147,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 505 i32.const 3 call $~lib/builtins/abort @@ -38862,7 +38162,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 4432 + i32.const 6400 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38874,7 +38174,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 506 i32.const 3 call $~lib/builtins/abort @@ -38884,7 +38184,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 4464 + i32.const 6432 call $~lib/rt/__newArray local.tee $101 i32.store offset=88 @@ -38905,7 +38205,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 4512 + i32.const 6480 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38917,7 +38217,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 509 i32.const 3 call $~lib/builtins/abort @@ -38932,7 +38232,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 4544 + i32.const 6512 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38944,7 +38244,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 510 i32.const 3 call $~lib/builtins/abort @@ -38954,7 +38254,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 4592 + i32.const 6560 call $~lib/rt/__newArray local.tee $101 i32.store offset=88 @@ -38975,7 +38275,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 4640 + i32.const 6608 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -38987,7 +38287,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 513 i32.const 3 call $~lib/builtins/abort @@ -39002,7 +38302,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 4672 + i32.const 6640 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -39014,7 +38314,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 514 i32.const 3 call $~lib/builtins/abort @@ -39024,7 +38324,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 4720 + i32.const 6688 call $~lib/rt/__newArray local.tee $101 i32.store offset=88 @@ -39045,7 +38345,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 4768 + i32.const 6736 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -39057,7 +38357,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 517 i32.const 3 call $~lib/builtins/abort @@ -39072,7 +38372,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 4800 + i32.const 6768 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -39084,7 +38384,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 518 i32.const 3 call $~lib/builtins/abort @@ -39094,7 +38394,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 4848 + i32.const 6816 call $~lib/rt/__newArray local.tee $101 i32.store offset=88 @@ -39115,7 +38415,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 4896 + i32.const 6864 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -39127,7 +38427,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 521 i32.const 3 call $~lib/builtins/abort @@ -39142,7 +38442,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 4928 + i32.const 6896 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -39154,7 +38454,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 522 i32.const 3 call $~lib/builtins/abort @@ -39164,7 +38464,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 4976 + i32.const 6944 call $~lib/rt/__newArray local.tee $101 i32.store offset=88 @@ -39185,7 +38485,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 5024 + i32.const 6992 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -39197,7 +38497,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 525 i32.const 3 call $~lib/builtins/abort @@ -39212,7 +38512,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 5056 + i32.const 7024 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -39224,7 +38524,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 526 i32.const 3 call $~lib/builtins/abort @@ -39234,7 +38534,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 5104 + i32.const 7072 call $~lib/rt/__newArray local.tee $101 i32.store offset=88 @@ -39255,7 +38555,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 5152 + i32.const 7120 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -39267,7 +38567,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -39282,7 +38582,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 5184 + i32.const 7152 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -39294,7 +38594,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -39304,7 +38604,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 5232 + i32.const 7200 call $~lib/rt/__newArray local.tee $101 i32.store offset=88 @@ -39325,7 +38625,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 5280 + i32.const 7248 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -39337,7 +38637,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 533 i32.const 3 call $~lib/builtins/abort @@ -39352,7 +38652,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 5312 + i32.const 7280 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -39364,7 +38664,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 534 i32.const 3 call $~lib/builtins/abort @@ -39374,7 +38674,7 @@ i32.const 0 i32.const 2 i32.const 10 - i32.const 5360 + i32.const 7328 call $~lib/rt/__newArray local.tee $144 i32.store offset=92 @@ -39402,7 +38702,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 538 i32.const 3 call $~lib/builtins/abort @@ -39420,7 +38720,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 539 i32.const 3 call $~lib/builtins/abort @@ -39492,7 +38792,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 544 i32.const 3 call $~lib/builtins/abort @@ -39517,7 +38817,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 545 i32.const 3 call $~lib/builtins/abort @@ -39542,7 +38842,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 546 i32.const 3 call $~lib/builtins/abort @@ -39560,7 +38860,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 548 i32.const 3 call $~lib/builtins/abort @@ -39585,7 +38885,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 549 i32.const 3 call $~lib/builtins/abort @@ -39610,7 +38910,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 550 i32.const 3 call $~lib/builtins/abort @@ -39635,7 +38935,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 551 i32.const 3 call $~lib/builtins/abort @@ -39693,7 +38993,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 556 i32.const 3 call $~lib/builtins/abort @@ -39714,8 +39014,8 @@ if (result i32) local.get $150 else - i32.const 5520 - i32.const 528 + i32.const 7488 + i32.const 2496 i32.const 557 i32.const 10 call $~lib/builtins/abort @@ -39732,7 +39032,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -39750,7 +39050,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -39769,7 +39069,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -39790,8 +39090,8 @@ if (result i32) local.get $151 else - i32.const 5520 - i32.const 528 + i32.const 7488 + i32.const 2496 i32.const 561 i32.const 10 call $~lib/builtins/abort @@ -39808,7 +39108,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -39856,7 +39156,7 @@ local.get $296 i32.store local.get $296 - i32.const 5648 + i32.const 7616 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -39870,7 +39170,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -39882,7 +39182,7 @@ local.get $296 i32.store local.get $296 - i32.const 5680 + i32.const 7648 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -39896,7 +39196,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -39908,7 +39208,7 @@ local.get $296 i32.store local.get $296 - i32.const 5712 + i32.const 7680 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -39922,7 +39222,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -39934,7 +39234,7 @@ local.get $296 i32.store local.get $296 - i32.const 5744 + i32.const 7712 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -39948,7 +39248,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 588 i32.const 3 call $~lib/builtins/abort @@ -39966,7 +39266,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 589 i32.const 3 call $~lib/builtins/abort @@ -39978,7 +39278,7 @@ local.get $296 i32.store local.get $296 - i32.const 5776 + i32.const 7744 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -39992,7 +39292,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 591 i32.const 3 call $~lib/builtins/abort @@ -40036,7 +39336,7 @@ local.get $296 i32.store local.get $296 - i32.const 5808 + i32.const 7776 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40050,7 +39350,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -40068,7 +39368,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -40096,7 +39396,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 5840 + i32.const 7808 call $~lib/rt/__newArray local.tee $153 i32.store offset=124 @@ -40106,7 +39406,7 @@ local.get $296 i32.store local.get $296 - i32.const 5888 + i32.const 7856 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40120,7 +39420,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -40132,7 +39432,7 @@ local.get $296 i32.store local.get $296 - i32.const 5920 + i32.const 7888 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40146,7 +39446,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -40158,7 +39458,7 @@ local.get $296 i32.store local.get $296 - i32.const 5952 + i32.const 7920 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40172,7 +39472,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 624 i32.const 3 call $~lib/builtins/abort @@ -40184,7 +39484,7 @@ local.get $296 i32.store local.get $296 - i32.const 5984 + i32.const 7952 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40198,7 +39498,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -40210,7 +39510,7 @@ local.get $296 i32.store local.get $296 - i32.const 6016 + i32.const 7984 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40224,7 +39524,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 640 i32.const 3 call $~lib/builtins/abort @@ -40236,7 +39536,7 @@ local.get $296 i32.store local.get $296 - i32.const 6048 + i32.const 8016 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40250,7 +39550,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 643 i32.const 3 call $~lib/builtins/abort @@ -40262,7 +39562,7 @@ local.get $296 i32.store local.get $296 - i32.const 6080 + i32.const 8048 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40276,7 +39576,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 651 i32.const 3 call $~lib/builtins/abort @@ -40294,7 +39594,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 652 i32.const 3 call $~lib/builtins/abort @@ -40306,7 +39606,7 @@ local.get $296 i32.store local.get $296 - i32.const 6112 + i32.const 8080 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40320,7 +39620,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 654 i32.const 3 call $~lib/builtins/abort @@ -40364,7 +39664,7 @@ local.get $296 i32.store local.get $296 - i32.const 6144 + i32.const 8112 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40378,7 +39678,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 667 i32.const 3 call $~lib/builtins/abort @@ -40396,7 +39696,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 668 i32.const 3 call $~lib/builtins/abort @@ -40426,7 +39726,7 @@ local.get $296 i32.store local.get $296 - i32.const 6176 + i32.const 8144 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40440,7 +39740,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 678 i32.const 3 call $~lib/builtins/abort @@ -40452,7 +39752,7 @@ local.get $296 i32.store local.get $296 - i32.const 6208 + i32.const 8176 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40466,7 +39766,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 681 i32.const 3 call $~lib/builtins/abort @@ -40478,7 +39778,7 @@ local.get $296 i32.store local.get $296 - i32.const 6240 + i32.const 8208 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40492,7 +39792,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 689 i32.const 3 call $~lib/builtins/abort @@ -40510,7 +39810,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 690 i32.const 3 call $~lib/builtins/abort @@ -40522,7 +39822,7 @@ local.get $296 i32.store local.get $296 - i32.const 6272 + i32.const 8240 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40536,7 +39836,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 692 i32.const 3 call $~lib/builtins/abort @@ -40580,7 +39880,7 @@ local.get $296 i32.store local.get $296 - i32.const 6304 + i32.const 8272 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40594,7 +39894,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 705 i32.const 3 call $~lib/builtins/abort @@ -40612,7 +39912,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 706 i32.const 3 call $~lib/builtins/abort @@ -40644,7 +39944,7 @@ local.get $296 i32.store local.get $296 - i32.const 6336 + i32.const 8304 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40657,7 +39957,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 717 i32.const 3 call $~lib/builtins/abort @@ -40671,7 +39971,7 @@ local.get $296 i32.store local.get $296 - i32.const 6368 + i32.const 8336 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40684,7 +39984,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 726 i32.const 3 call $~lib/builtins/abort @@ -40702,7 +40002,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 727 i32.const 3 call $~lib/builtins/abort @@ -40716,7 +40016,7 @@ local.get $296 i32.store local.get $296 - i32.const 6400 + i32.const 8368 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40729,7 +40029,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 730 i32.const 3 call $~lib/builtins/abort @@ -40775,7 +40075,7 @@ local.get $296 i32.store local.get $296 - i32.const 6432 + i32.const 8400 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40788,7 +40088,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 744 i32.const 3 call $~lib/builtins/abort @@ -40806,7 +40106,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 745 i32.const 3 call $~lib/builtins/abort @@ -40836,7 +40136,7 @@ local.get $296 i32.store local.get $296 - i32.const 6464 + i32.const 8432 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40855,7 +40155,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 770 i32.const 3 call $~lib/builtins/abort @@ -40926,7 +40226,7 @@ local.get $296 i32.store local.get $296 - i32.const 8272 + i32.const 8464 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40942,7 +40242,7 @@ local.get $296 i32.store local.get $296 - i32.const 8304 + i32.const 8496 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -40963,7 +40263,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 786 i32.const 3 call $~lib/builtins/abort @@ -40990,7 +40290,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 787 i32.const 3 call $~lib/builtins/abort @@ -41004,7 +40304,7 @@ local.get $296 i32.store local.get $296 - i32.const 8336 + i32.const 8528 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41018,7 +40318,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 796 i32.const 3 call $~lib/builtins/abort @@ -41036,7 +40336,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 797 i32.const 3 call $~lib/builtins/abort @@ -41050,7 +40350,7 @@ local.get $296 i32.store local.get $296 - i32.const 8368 + i32.const 8560 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41064,7 +40364,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 804 i32.const 3 call $~lib/builtins/abort @@ -41110,7 +40410,7 @@ local.get $296 i32.store local.get $296 - i32.const 8400 + i32.const 8592 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41124,7 +40424,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 819 i32.const 3 call $~lib/builtins/abort @@ -41142,7 +40442,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 820 i32.const 3 call $~lib/builtins/abort @@ -41173,7 +40473,7 @@ local.get $296 i32.store local.get $296 - i32.const 8432 + i32.const 8624 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41194,7 +40494,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 830 i32.const 3 call $~lib/builtins/abort @@ -41208,7 +40508,7 @@ local.get $296 i32.store local.get $296 - i32.const 8464 + i32.const 8656 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41222,7 +40522,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 839 i32.const 3 call $~lib/builtins/abort @@ -41240,7 +40540,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 840 i32.const 3 call $~lib/builtins/abort @@ -41254,7 +40554,7 @@ local.get $296 i32.store local.get $296 - i32.const 8496 + i32.const 8688 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41268,7 +40568,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 847 i32.const 3 call $~lib/builtins/abort @@ -41314,7 +40614,7 @@ local.get $296 i32.store local.get $296 - i32.const 8528 + i32.const 8720 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41328,7 +40628,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 862 i32.const 3 call $~lib/builtins/abort @@ -41346,7 +40646,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 863 i32.const 3 call $~lib/builtins/abort @@ -41376,7 +40676,7 @@ local.get $296 i32.store local.get $296 - i32.const 8560 + i32.const 8752 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41391,7 +40691,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 873 i32.const 3 call $~lib/builtins/abort @@ -41403,7 +40703,7 @@ local.get $296 i32.store local.get $296 - i32.const 8592 + i32.const 8784 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41418,7 +40718,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 877 i32.const 3 call $~lib/builtins/abort @@ -41430,7 +40730,7 @@ local.get $296 i32.store local.get $296 - i32.const 8624 + i32.const 8816 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41447,7 +40747,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 880 i32.const 3 call $~lib/builtins/abort @@ -41459,7 +40759,7 @@ local.get $296 i32.store local.get $296 - i32.const 8656 + i32.const 8848 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41476,7 +40776,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 883 i32.const 3 call $~lib/builtins/abort @@ -41488,7 +40788,7 @@ local.get $296 i32.store local.get $296 - i32.const 8688 + i32.const 8880 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41503,7 +40803,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -41521,7 +40821,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 892 i32.const 3 call $~lib/builtins/abort @@ -41533,7 +40833,7 @@ local.get $296 i32.store local.get $296 - i32.const 8720 + i32.const 8912 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41548,7 +40848,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 894 i32.const 3 call $~lib/builtins/abort @@ -41592,7 +40892,7 @@ local.get $296 i32.store local.get $296 - i32.const 8752 + i32.const 8944 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41607,7 +40907,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 907 i32.const 3 call $~lib/builtins/abort @@ -41625,7 +40925,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 908 i32.const 3 call $~lib/builtins/abort @@ -41655,7 +40955,7 @@ local.get $296 i32.store local.get $296 - i32.const 8784 + i32.const 8976 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41670,7 +40970,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 918 i32.const 3 call $~lib/builtins/abort @@ -41682,7 +40982,7 @@ local.get $296 i32.store local.get $296 - i32.const 8816 + i32.const 9008 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41697,7 +40997,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 922 i32.const 3 call $~lib/builtins/abort @@ -41709,7 +41009,7 @@ local.get $296 i32.store local.get $296 - i32.const 8848 + i32.const 9040 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41726,7 +41026,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 925 i32.const 3 call $~lib/builtins/abort @@ -41738,7 +41038,7 @@ local.get $296 i32.store local.get $296 - i32.const 8880 + i32.const 9072 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41755,7 +41055,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 928 i32.const 3 call $~lib/builtins/abort @@ -41767,7 +41067,7 @@ local.get $296 i32.store local.get $296 - i32.const 8912 + i32.const 9104 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41782,7 +41082,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 936 i32.const 3 call $~lib/builtins/abort @@ -41800,7 +41100,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 937 i32.const 3 call $~lib/builtins/abort @@ -41812,7 +41112,7 @@ local.get $296 i32.store local.get $296 - i32.const 8944 + i32.const 9136 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41827,7 +41127,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 939 i32.const 3 call $~lib/builtins/abort @@ -41871,7 +41171,7 @@ local.get $296 i32.store local.get $296 - i32.const 8976 + i32.const 9168 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -41886,7 +41186,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 952 i32.const 3 call $~lib/builtins/abort @@ -41904,7 +41204,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 953 i32.const 3 call $~lib/builtins/abort @@ -42573,7 +41873,7 @@ i32.const 3 i32.const 2 i32.const 9 - i32.const 9200 + i32.const 9392 call $~lib/rt/__newArray local.tee $189 i32.store offset=244 @@ -42597,7 +41897,7 @@ i32.const 3 i32.const 2 i32.const 9 - i32.const 9264 + i32.const 9456 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -42609,7 +41909,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1091 i32.const 3 call $~lib/builtins/abort @@ -42619,7 +41919,7 @@ i32.const 8 i32.const 2 i32.const 9 - i32.const 9296 + i32.const 9488 call $~lib/rt/__newArray local.tee $192 i32.store offset=248 @@ -42643,7 +41943,7 @@ i32.const 8 i32.const 2 i32.const 9 - i32.const 9360 + i32.const 9552 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -42655,7 +41955,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1095 i32.const 3 call $~lib/builtins/abort @@ -42665,7 +41965,7 @@ i32.const 8 i32.const 3 i32.const 12 - i32.const 9424 + i32.const 9616 call $~lib/rt/__newArray local.tee $195 i32.store offset=252 @@ -42689,7 +41989,7 @@ i32.const 8 i32.const 3 i32.const 12 - i32.const 9552 + i32.const 9744 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -42701,7 +42001,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1099 i32.const 3 call $~lib/builtins/abort @@ -42711,7 +42011,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 9648 + i32.const 9840 call $~lib/rt/__newArray local.tee $198 i32.store offset=256 @@ -42735,7 +42035,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 9728 + i32.const 9920 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -42747,7 +42047,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1103 i32.const 3 call $~lib/builtins/abort @@ -42757,7 +42057,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 9776 + i32.const 9968 call $~lib/rt/__newArray local.tee $201 i32.store offset=260 @@ -42781,7 +42081,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 9856 + i32.const 10048 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -42793,7 +42093,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1107 i32.const 3 call $~lib/builtins/abort @@ -42803,7 +42103,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 9904 + i32.const 10096 call $~lib/rt/__newArray local.tee $204 i32.store offset=264 @@ -42811,7 +42111,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 9936 + i32.const 10128 call $~lib/rt/__newArray local.tee $206 i32.store offset=268 @@ -42819,7 +42119,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 9968 + i32.const 10160 call $~lib/rt/__newArray local.tee $208 i32.store offset=272 @@ -42827,7 +42127,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 10000 + i32.const 10192 call $~lib/rt/__newArray local.tee $210 i32.store offset=276 @@ -42835,7 +42135,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 10048 + i32.const 10240 call $~lib/rt/__newArray local.tee $212 i32.store offset=280 @@ -42887,7 +42187,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 10128 + i32.const 10320 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -42899,7 +42199,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1127 i32.const 3 call $~lib/builtins/abort @@ -42921,7 +42221,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 10160 + i32.const 10352 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -42933,7 +42233,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1130 i32.const 3 call $~lib/builtins/abort @@ -42963,7 +42263,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1133 i32.const 3 call $~lib/builtins/abort @@ -42993,7 +42293,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1136 i32.const 3 call $~lib/builtins/abort @@ -43023,7 +42323,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1139 i32.const 3 call $~lib/builtins/abort @@ -43053,7 +42353,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1142 i32.const 3 call $~lib/builtins/abort @@ -43083,7 +42383,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1145 i32.const 3 call $~lib/builtins/abort @@ -43113,7 +42413,7 @@ local.get $296 i32.store local.get $296 - i32.const 10224 + i32.const 10416 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -43126,7 +42426,7 @@ local.get $296 i32.store local.get $296 - i32.const 10256 + i32.const 10448 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -43139,7 +42439,7 @@ local.get $296 i32.store local.get $296 - i32.const 10288 + i32.const 10480 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -43152,7 +42452,7 @@ local.get $296 i32.store local.get $296 - i32.const 10320 + i32.const 10512 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -43170,7 +42470,7 @@ local.get $296 i32.store local.get $296 - i32.const 10352 + i32.const 10544 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -43188,7 +42488,7 @@ local.get $296 i32.store local.get $296 - i32.const 10384 + i32.const 10576 local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 @@ -43199,7 +42499,7 @@ i32.const 7 i32.const 2 i32.const 34 - i32.const 10576 + i32.const 10736 call $~lib/rt/__newArray local.tee $225 i32.store offset=320 @@ -43207,7 +42507,7 @@ i32.const 7 i32.const 2 i32.const 34 - i32.const 10624 + i32.const 10784 call $~lib/rt/__newArray local.tee $227 i32.store offset=324 @@ -43238,7 +42538,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1184 i32.const 3 call $~lib/builtins/abort @@ -43262,26 +42562,26 @@ i32.const 2 i32.const 0 i32.const 37 - i32.const 10736 + i32.const 10896 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 i32.store offset=8 local.get $296 - i32.const 10832 + i32.const 10992 call $~lib/array/Array#join local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 i32.store local.get $296 - i32.const 10864 + i32.const 11024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1193 i32.const 3 call $~lib/builtins/abort @@ -43290,26 +42590,26 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 10912 + i32.const 11072 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 i32.store offset=8 local.get $296 - i32.const 10544 + i32.const 96 call $~lib/array/Array#join local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 i32.store local.get $296 - i32.const 10944 + i32.const 11104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1194 i32.const 3 call $~lib/builtins/abort @@ -43318,26 +42618,26 @@ i32.const 3 i32.const 2 i32.const 8 - i32.const 10976 + i32.const 11136 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 i32.store offset=8 local.get $296 - i32.const 11008 + i32.const 11168 call $~lib/array/Array#join local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 i32.store local.get $296 - i32.const 10944 + i32.const 11104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1195 i32.const 3 call $~lib/builtins/abort @@ -43346,26 +42646,26 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 11040 + i32.const 11200 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 i32.store offset=8 local.get $296 - i32.const 11072 + i32.const 11232 call $~lib/array/Array#join local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 i32.store local.get $296 - i32.const 11104 + i32.const 11264 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1196 i32.const 3 call $~lib/builtins/abort @@ -43374,26 +42674,26 @@ i32.const 6 i32.const 3 i32.const 12 - i32.const 11184 + i32.const 11344 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 i32.store offset=8 local.get $296 - i32.const 11264 + i32.const 11424 call $~lib/array/Array#join local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 i32.store local.get $296 - i32.const 12432 + i32.const 12592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1197 i32.const 3 call $~lib/builtins/abort @@ -43402,26 +42702,26 @@ i32.const 3 i32.const 2 i32.const 34 - i32.const 12576 + i32.const 12736 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 i32.store offset=8 local.get $296 - i32.const 10544 + i32.const 96 call $~lib/array/Array<~lib/string/String|null>#join local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 i32.store local.get $296 - i32.const 12544 + i32.const 12704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1198 i32.const 3 call $~lib/builtins/abort @@ -43461,19 +42761,19 @@ local.get $296 i32.store offset=8 local.get $296 - i32.const 10832 + i32.const 10992 call $~lib/array/Array#join local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 i32.store local.get $296 - i32.const 12672 + i32.const 12832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1200 i32.const 3 call $~lib/builtins/abort @@ -43509,19 +42809,19 @@ local.get $296 i32.store offset=8 local.get $296 - i32.const 10832 + i32.const 10992 call $~lib/array/Array#join local.set $296 global.get $~lib/memory/__stack_pointer local.get $296 i32.store local.get $296 - i32.const 12768 + i32.const 12928 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1203 i32.const 3 call $~lib/builtins/abort @@ -43531,7 +42831,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 12864 + i32.const 13024 call $~lib/rt/__newArray local.tee $240 i32.store offset=348 @@ -43539,7 +42839,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 12896 + i32.const 13056 call $~lib/rt/__newArray local.tee $242 i32.store offset=352 @@ -43547,7 +42847,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 12928 + i32.const 13088 call $~lib/rt/__newArray local.tee $244 i32.store offset=356 @@ -43555,7 +42855,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 12960 + i32.const 13120 call $~lib/rt/__newArray local.tee $246 i32.store offset=360 @@ -43571,12 +42871,12 @@ local.get $296 i32.store local.get $296 - i32.const 10544 + i32.const 96 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1213 i32.const 3 call $~lib/builtins/abort @@ -43594,12 +42894,12 @@ local.get $296 i32.store local.get $296 - i32.const 12544 + i32.const 12704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1214 i32.const 3 call $~lib/builtins/abort @@ -43617,12 +42917,12 @@ local.get $296 i32.store local.get $296 - i32.const 13008 + i32.const 13168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1215 i32.const 3 call $~lib/builtins/abort @@ -43640,12 +42940,12 @@ local.get $296 i32.store local.get $296 - i32.const 13040 + i32.const 13200 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1216 i32.const 3 call $~lib/builtins/abort @@ -43654,7 +42954,7 @@ i32.const 3 i32.const 0 i32.const 38 - i32.const 13088 + i32.const 13248 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -43667,12 +42967,12 @@ local.get $296 i32.store local.get $296 - i32.const 13120 + i32.const 13280 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1218 i32.const 3 call $~lib/builtins/abort @@ -43681,7 +42981,7 @@ i32.const 3 i32.const 0 i32.const 38 - i32.const 13152 + i32.const 13312 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -43694,12 +42994,12 @@ local.get $296 i32.store local.get $296 - i32.const 13184 + i32.const 13344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1219 i32.const 3 call $~lib/builtins/abort @@ -43708,7 +43008,7 @@ i32.const 3 i32.const 1 i32.const 11 - i32.const 13232 + i32.const 13392 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -43721,12 +43021,12 @@ local.get $296 i32.store local.get $296 - i32.const 13264 + i32.const 13424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1220 i32.const 3 call $~lib/builtins/abort @@ -43735,7 +43035,7 @@ i32.const 2 i32.const 1 i32.const 39 - i32.const 13312 + i32.const 13472 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -43748,12 +43048,12 @@ local.get $296 i32.store local.get $296 - i32.const 13344 + i32.const 13504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1221 i32.const 3 call $~lib/builtins/abort @@ -43762,7 +43062,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 13392 + i32.const 13552 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -43775,12 +43075,12 @@ local.get $296 i32.store local.get $296 - i32.const 13424 + i32.const 13584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1222 i32.const 3 call $~lib/builtins/abort @@ -43789,7 +43089,7 @@ i32.const 3 i32.const 3 i32.const 40 - i32.const 13488 + i32.const 13648 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -43802,12 +43102,12 @@ local.get $296 i32.store local.get $296 - i32.const 13536 + i32.const 13696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1223 i32.const 3 call $~lib/builtins/abort @@ -43816,7 +43116,7 @@ i32.const 5 i32.const 3 i32.const 41 - i32.const 13616 + i32.const 13776 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -43829,12 +43129,12 @@ local.get $296 i32.store local.get $296 - i32.const 13680 + i32.const 13840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1224 i32.const 3 call $~lib/builtins/abort @@ -43844,7 +43144,7 @@ i32.const 7 i32.const 2 i32.const 34 - i32.const 13840 + i32.const 14000 call $~lib/rt/__newArray local.tee $255 i32.store offset=364 @@ -43860,12 +43160,12 @@ local.get $296 i32.store local.get $296 - i32.const 13888 + i32.const 14048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1231 i32.const 3 call $~lib/builtins/abort @@ -43874,7 +43174,7 @@ i32.const 4 i32.const 2 i32.const 34 - i32.const 14000 + i32.const 14160 call $~lib/rt/__newArray local.set $296 global.get $~lib/memory/__stack_pointer @@ -43887,12 +43187,12 @@ local.get $296 i32.store local.get $296 - i32.const 14048 + i32.const 14208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1232 i32.const 3 call $~lib/builtins/abort @@ -43912,7 +43212,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 14080 + i32.const 14240 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $257 @@ -43920,7 +43220,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 14112 + i32.const 14272 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $257 @@ -43938,12 +43238,12 @@ local.get $296 i32.store local.get $296 - i32.const 14144 + i32.const 14304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1235 i32.const 3 call $~lib/builtins/abort @@ -43963,7 +43263,7 @@ i32.const 2 i32.const 0 i32.const 7 - i32.const 14192 + i32.const 14352 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $261 @@ -43971,7 +43271,7 @@ i32.const 2 i32.const 0 i32.const 7 - i32.const 14224 + i32.const 14384 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $261 @@ -43989,12 +43289,12 @@ local.get $296 i32.store local.get $296 - i32.const 14144 + i32.const 14304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1238 i32.const 3 call $~lib/builtins/abort @@ -44024,7 +43324,7 @@ i32.const 1 i32.const 2 i32.const 8 - i32.const 14256 + i32.const 14416 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $266 @@ -44044,12 +43344,12 @@ local.get $296 i32.store local.get $296 - i32.const 12544 + i32.const 12704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1241 i32.const 3 call $~lib/builtins/abort @@ -44069,7 +43369,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 14288 + i32.const 14448 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $269 @@ -44077,7 +43377,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 14320 + i32.const 14480 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $269 @@ -44085,7 +43385,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 14352 + i32.const 14512 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $269 @@ -44093,7 +43393,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 14384 + i32.const 14544 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__set local.get $269 @@ -44121,7 +43421,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1248 i32.const 3 call $~lib/builtins/abort @@ -44147,7 +43447,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1250 i32.const 5 call $~lib/builtins/abort @@ -44174,7 +43474,7 @@ i32.const 1 i32.const 2 i32.const 34 - i32.const 14448 + i32.const 14608 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__set local.get $277 @@ -44182,7 +43482,7 @@ i32.const 3 i32.const 2 i32.const 34 - i32.const 14544 + i32.const 14704 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__set local.get $277 @@ -44190,7 +43490,7 @@ i32.const 3 i32.const 2 i32.const 34 - i32.const 14672 + i32.const 14832 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__set local.get $277 @@ -44198,7 +43498,7 @@ i32.const 1 i32.const 2 i32.const 34 - i32.const 14736 + i32.const 14896 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__set local.get $277 @@ -44218,7 +43518,7 @@ i32.const 8 i32.const 2 i32.const 34 - i32.const 14768 + i32.const 14928 call $~lib/rt/__newArray local.tee $285 i32.store offset=420 @@ -44234,7 +43534,7 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1256 i32.const 3 call $~lib/builtins/abort @@ -44283,228 +43583,1932 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 2496 i32.const 1258 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $286 - i32.const 1 - i32.add - local.set $286 - br $for-loop|8 + local.get $286 + i32.const 1 + i32.add + local.set $286 + br $for-loop|8 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__newArray + local.tee $287 + i32.store offset=424 + local.get $287 + i32.const 0 + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 14992 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $287 + i32.const 1 + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 15024 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $287 + local.tee $290 + i32.store offset=428 + local.get $290 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array<~lib/array/Array>#flat + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2496 + i32.const 1262 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__newArray + local.tee $291 + i32.store offset=432 + local.get $291 + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 15056 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $291 + i32.const 1 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 15088 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $291 + local.tee $294 + i32.store offset=436 + global.get $~lib/memory/__stack_pointer + local.get $294 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 15120 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + call $~lib/array/Array<~lib/array/Array>#map<~lib/array/Array> + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array<~lib/array/Array>#flat + local.tee $295 + i32.store offset=440 + local.get $295 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2496 + i32.const 1272 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $295 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2496 + i32.const 1273 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $295 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + call $~lib/array/Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2496 + i32.const 1274 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $295 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2496 + i32.const 1275 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $295 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + call $~lib/array/Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2496 + i32.const 1276 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/arr + i32.const 0 + global.set $std/array/inputStabArr + i32.const 0 + global.set $std/array/outputStabArr + global.get $~lib/memory/__heap_base + global.set $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__collect + global.get $~lib/memory/__stack_pointer + i32.const 444 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i32) + (local $offset|11 i32) + (local $val32 i32) + (local $decimals|13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + end + local.get $value + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.set $sign + local.get $sign + if + i32.const 0 + local.get $value + i32.sub + local.set $value + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + i64.extend_i32_u + local.get $offset|11 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.set $val32 + local.get $val32 + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $val32 + i64.extend_i32_u + local.get $decimals|13 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end + local.get $out + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/dtoa (param $value f64) (result i32) + (local $value|1 f64) + (local $isSingle i32) + (local $size i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + local.get $value + local.set $value|1 + i32.const 0 + local.set $isSingle + local.get $value|1 + f64.const 0 + f64.eq + if + i32.const 11456 + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.get $value|1 + local.get $value|1 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|1 + local.get $value|1 + f64.ne + if + i32.const 11488 + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 11520 + i32.const 11568 + local.get $value|1 + f64.const 0 + f64.lt + select + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 11600 + local.get $value|1 + local.get $isSingle + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + i32.const 11600 + local.get $size + memory.copy + local.get $result + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/util/number/utoa64 (param $value i64) (param $radix i32) (result i32) + (local $out i32) + (local $val32 i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i64) + (local $offset|11 i32) + (local $decimals|12 i32) + (local $buffer|13 i32) + (local $num|14 i64) + (local $offset|15 i32) + (local $decimals|16 i32) + (local $17 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 401 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i64.const 0 + i64.ne + i32.eqz + if + i32.const 752 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $value + i32.wrap_i64 + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $value + call $~lib/util/number/decimalCount64High + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + local.get $offset|11 + call $~lib/util/number/utoa64_dec_lut + end + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 63 + local.get $value + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|12 + global.get $~lib/memory/__stack_pointer + local.get $decimals|12 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|13 + local.get $value + local.set $num|14 + local.get $decimals|12 + local.set $offset|15 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|13 + local.get $num|14 + local.get $offset|15 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|16 + global.get $~lib/memory/__stack_pointer + local.get $decimals|16 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + local.get $decimals|16 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + ) + (func $~lib/util/number/itoa64 (param $value i64) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $val32 i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|9 i32) + (local $buffer|10 i32) + (local $num|11 i64) + (local $offset|12 i32) + (local $decimals|13 i32) + (local $buffer|14 i32) + (local $num|15 i64) + (local $offset|16 i32) + (local $decimals|17 i32) + (local $18 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 431 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i64.const 0 + i64.ne + i32.eqz + if + i32.const 752 + local.set $18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $18 + return + end + local.get $value + i64.const 63 + i64.shr_u + i32.wrap_i64 + i32.const 1 + i32.shl + local.set $sign + local.get $sign + if + i64.const 0 + local.get $value + i64.sub + local.set $value + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $value + i32.wrap_i64 + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $value + call $~lib/util/number/decimalCount64High + local.set $decimals|9 + global.get $~lib/memory/__stack_pointer + local.get $decimals|9 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|10 + local.get $value + local.set $num|11 + local.get $decimals|9 + local.set $offset|12 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|10 + local.get $num|11 + local.get $offset|12 + call $~lib/util/number/utoa64_dec_lut + end + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 63 + local.get $value + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|14 + local.get $value + local.set $num|15 + local.get $decimals|13 + local.set $offset|16 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|14 + local.get $num|15 + local.get $offset|16 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|17 + global.get $~lib/memory/__stack_pointer + local.get $decimals|17 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $value + local.get $decimals|17 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end + local.get $out + local.set $18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $18 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/array/arr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array/charset + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array/inputStabArr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array/outputStabArr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2400 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 3584 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 7360 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>#__visit + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>#__visit + ) + (func $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28f32%2Cf32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f32%2Cf32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28f64%2Cf64%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28u32%2Cu32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u32%2Cu32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Cu32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>#__visit + ) + (func $~lib/array/Array<~lib/array/Array>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit + ) + (func $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>#__visit + ) + (func $~lib/array/Array>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array>#__visit + ) + (func $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>#__visit + ) + (func $~lib/array/Array<~lib/string/String|null>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String|null>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String|null>#__visit + ) + (func $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>#__visit + ) + (func $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array<~lib/array/Array>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit + ) + (func $~lib/array/Array<~lib/array/Array>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit + ) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__visit + ) + (func $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array> + block $~lib/array/Array<~lib/array/Array<~lib/string/String|null>> + block $~lib/array/Array<~lib/array/Array<~lib/array/Array>> + block $~lib/array/Array<~lib/array/Array> + block $~lib/array/Array<~lib/array/Array> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32> + block $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32> + block $~lib/array/Array<~lib/string/String|null> + block $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32> + block $~lib/array/Array> + block $std/array/Proxy + block $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32> + block $~lib/array/Array<~lib/array/Array> + block $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32> + block $~lib/function/Function<%28u32%2Cu32%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $~lib/function/Function<%28f64%2Cf64%29=>i32> + block $~lib/function/Function<%28f32%2Cf32%29=>i32> + block $~lib/array/Array + block $std/array/Dim + block $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool> + block $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String> + block $~lib/array/Array<~lib/string/String> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/typedarray/Uint8Array + block $std/array/Ref + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $std/array/Ref $~lib/typedarray/Uint8Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool> $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void> $~lib/array/Array<~lib/string/String> $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String> $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32> $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32> $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32> $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool> $std/array/Dim $~lib/array/Array $~lib/function/Function<%28f32%2Cf32%29=>i32> $~lib/function/Function<%28f64%2Cf64%29=>i32> $~lib/function/Function<%28i32%2Ci32%29=>i32> $~lib/function/Function<%28u32%2Cu32%29=>i32> $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32> $~lib/array/Array<~lib/array/Array> $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32> $std/array/Proxy $~lib/array/Array> $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32> $~lib/array/Array<~lib/string/String|null> $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32> $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32> $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array<~lib/array/Array> $~lib/array/Array<~lib/array/Array> $~lib/array/Array<~lib/array/Array<~lib/array/Array>> $~lib/array/Array<~lib/array/Array<~lib/string/String|null>> $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Cf32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Cu32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String|null>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>~visit + return end + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>~visit + return end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - i32.const 29 - i32.const 0 - call $~lib/rt/__newArray - local.tee $287 - i32.store offset=424 - local.get $287 - i32.const 0 - i32.const 0 - i32.const 2 - i32.const 4 - i32.const 14832 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array>#__set - local.get $287 - i32.const 1 - i32.const 0 - i32.const 2 - i32.const 4 - i32.const 14864 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array>#__set - local.get $287 - local.tee $290 - i32.store offset=428 - local.get $290 - local.set $296 - global.get $~lib/memory/__stack_pointer - local.get $296 - i32.store offset=8 - local.get $296 - call $~lib/array/Array<~lib/array/Array>#flat - local.set $296 - global.get $~lib/memory/__stack_pointer - local.get $296 - i32.store - local.get $296 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1262 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - i32.const 29 - i32.const 0 - call $~lib/rt/__newArray - local.tee $291 - i32.store offset=432 - local.get $291 - i32.const 0 - i32.const 1 - i32.const 2 - i32.const 4 - i32.const 14896 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array>#__set - local.get $291 - i32.const 1 - i32.const 1 - i32.const 2 - i32.const 4 - i32.const 14928 - call $~lib/rt/__newArray - call $~lib/array/Array<~lib/array/Array>#__set - local.get $291 - local.tee $294 - i32.store offset=436 - global.get $~lib/memory/__stack_pointer - local.get $294 - local.set $296 - global.get $~lib/memory/__stack_pointer - local.get $296 - i32.store offset=8 - local.get $296 - i32.const 14960 - local.set $296 - global.get $~lib/memory/__stack_pointer - local.get $296 - i32.store offset=48 - local.get $296 - call $~lib/array/Array<~lib/array/Array>#map<~lib/array/Array> - local.set $296 - global.get $~lib/memory/__stack_pointer - local.get $296 - i32.store - local.get $296 - call $~lib/array/Array<~lib/array/Array>#flat - local.tee $295 - i32.store offset=440 - local.get $295 - local.set $296 - global.get $~lib/memory/__stack_pointer - local.get $296 - i32.store - local.get $296 - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1272 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $295 - local.set $296 - global.get $~lib/memory/__stack_pointer - local.get $296 - i32.store - local.get $296 - i32.const 0 - call $~lib/array/Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1273 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $295 - local.set $296 - global.get $~lib/memory/__stack_pointer - local.get $296 - i32.store - local.get $296 - i32.const 1 - call $~lib/array/Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1274 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $295 - local.set $296 - global.get $~lib/memory/__stack_pointer - local.get $296 - i32.store - local.get $296 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1275 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $295 - local.set $296 - global.get $~lib/memory/__stack_pointer - local.get $296 - i32.store - local.get $296 - i32.const 3 - call $~lib/array/Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 1276 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/arr - i32.const 0 - global.set $std/array/inputStabArr - i32.const 0 - global.set $std/array/outputStabArr - global.get $~lib/memory/__heap_base - global.set $~lib/memory/__stack_pointer - call $~lib/rt/itcms/__collect - global.get $~lib/memory/__stack_pointer - i32.const 444 - i32.add - global.set $~lib/memory/__stack_pointer + unreachable ) (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) (local $2 i32) @@ -45656,219 +46660,9 @@ local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array<~lib/array/Array>#__visit (param $this i32) (param $cookie i32) - (local $cur i32) - (local $end i32) - (local $val i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1 - drop - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/array/Array>#get:dataStart - local.set $cur - local.get $cur - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/array/Array>#get:length_ - i32.const 2 - i32.shl - i32.add - local.set $end - loop $while-continue|0 - local.get $cur - local.get $end - i32.lt_u - if - local.get $cur - i32.load - local.set $val - local.get $val - if - local.get $val - local.get $cookie - call $~lib/rt/itcms/__visit - end - local.get $cur - i32.const 4 - i32.add - local.set $cur - br $while-continue|0 - end - end - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/array/Array>#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array<~lib/array/Array>#__visit (param $this i32) (param $cookie i32) - (local $cur i32) - (local $end i32) - (local $val i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1 - drop - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/array/Array>#get:dataStart - local.set $cur - local.get $cur - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/array/Array>#get:length_ - i32.const 2 - i32.shl - i32.add - local.set $end - loop $while-continue|0 - local.get $cur - local.get $end - i32.lt_u - if - local.get $cur - i32.load - local.set $val - local.get $val - if - local.get $val - local.get $cookie - call $~lib/rt/itcms/__visit - end - local.get $cur - i32.const 4 - i32.add - local.set $cur - br $while-continue|0 - end - end - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/array/Array>#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit (param $this i32) (param $cookie i32) - (local $cur i32) - (local $end i32) - (local $val i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1 - drop - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:dataStart - local.set $cur - local.get $cur - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:length_ - i32.const 2 - i32.shl - i32.add - local.set $end - loop $while-continue|0 - local.get $cur - local.get $end - i32.lt_u - if - local.get $cur - i32.load - local.set $val - local.get $val - if - local.get $val - local.get $cookie - call $~lib/rt/itcms/__visit - end - local.get $cur - i32.const 4 - i32.add - local.set $cur - br $while-continue|0 - end - end - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:buffer + i32.store + local.get $2 + call $~lib/array/Array#get:buffer local.get $cookie call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer @@ -45876,7 +46670,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__visit (param $this i32) (param $cookie i32) + (func $~lib/array/Array<~lib/array/Array>#__visit (param $this i32) (param $cookie i32) (local $cur i32) (local $end i32) (local $val i32) @@ -45897,7 +46691,7 @@ local.get $5 i32.store local.get $5 - call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#get:dataStart + call $~lib/array/Array<~lib/array/Array>#get:dataStart local.set $cur local.get $cur local.get $this @@ -45906,7 +46700,7 @@ local.get $5 i32.store local.get $5 - call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#get:length_ + call $~lib/array/Array<~lib/array/Array>#get:length_ i32.const 2 i32.shl i32.add @@ -45938,31 +46732,7 @@ local.get $5 i32.store local.get $5 - call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>#get:_env + call $~lib/array/Array<~lib/array/Array>#get:buffer local.get $cookie call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer @@ -45970,73 +46740,11 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) - (local $bufferSize i32) - (local $buffer i32) - (local $array i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $length - local.get $alignLog2 - i32.shl - local.set $bufferSize - global.get $~lib/memory/__stack_pointer - local.get $bufferSize - i32.const 1 - local.get $data - call $~lib/rt/__newBuffer - local.tee $buffer - i32.store - i32.const 16 - local.get $id - call $~lib/rt/itcms/__new - local.set $array - local.get $array - local.get $buffer - i32.store - local.get $array - local.get $buffer - i32.const 0 - call $~lib/rt/itcms/__link - local.get $array - local.get $buffer - i32.store offset=4 - local.get $array - local.get $bufferSize - i32.store offset=8 - local.get $array - local.get $length - i32.store offset=12 - local.get $array - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - ) - (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) - (local $sign i32) - (local $out i32) - (local $decimals i32) - (local $buffer i32) - (local $num i32) - (local $offset i32) - (local $decimals|8 i32) - (local $buffer|9 i32) - (local $num|10 i32) - (local $offset|11 i32) - (local $val32 i32) - (local $decimals|13 i32) - (local $14 i32) + (func $~lib/array/Array<~lib/array/Array>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -46045,434 +46753,68 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $radix - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $radix - i32.const 36 - i32.gt_s - end - if - i32.const 6496 - i32.const 6624 - i32.const 373 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $value - i32.eqz - if - i32.const 6688 - local.set $14 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $14 - return - end - local.get $value - i32.const 31 - i32.shr_u i32.const 1 - i32.shl - local.set $sign - local.get $sign - if - i32.const 0 - local.get $value - i32.sub - local.set $value - end - local.get $radix - i32.const 10 - i32.eq - if - local.get $value - call $~lib/util/number/decimalCount32 - local.set $decimals - global.get $~lib/memory/__stack_pointer - local.get $decimals - i32.const 1 - i32.shl - local.get $sign - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $sign - i32.add - local.set $buffer - local.get $value - local.set $num - local.get $decimals - local.set $offset - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer - local.get $num - local.get $offset - call $~lib/util/number/utoa32_dec_lut - else - local.get $radix - i32.const 16 - i32.eq - if - i32.const 31 - local.get $value - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $decimals|8 - global.get $~lib/memory/__stack_pointer - local.get $decimals|8 - i32.const 1 - i32.shl - local.get $sign - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $sign - i32.add - local.set $buffer|9 - local.get $value - local.set $num|10 - local.get $decimals|8 - local.set $offset|11 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|9 - local.get $num|10 - i64.extend_i32_u - local.get $offset|11 - call $~lib/util/number/utoa_hex_lut - else - local.get $value - local.set $val32 - local.get $val32 - i64.extend_i32_u - local.get $radix - call $~lib/util/number/ulog_base - local.set $decimals|13 - global.get $~lib/memory/__stack_pointer - local.get $decimals|13 - i32.const 1 - i32.shl - local.get $sign - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $sign - i32.add - local.get $val32 - i64.extend_i32_u - local.get $decimals|13 - local.get $radix - call $~lib/util/number/utoa64_any_core - end - end - local.get $sign - if - local.get $out - i32.const 45 - i32.store16 - end - local.get $out - local.set $14 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $14 - return - ) - (func $~lib/object/Object#constructor (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + drop + local.get $this + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $5 i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.set $cur + local.get $cur local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) - (local $out i32) - (local $decimals i32) - (local $buffer i32) - (local $num i32) - (local $offset i32) - (local $decimals|7 i32) - (local $buffer|8 i32) - (local $num|9 i32) - (local $offset|10 i32) - (local $decimals|11 i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $5 i32.store - local.get $radix + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:length_ i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $radix - i32.const 36 - i32.gt_s - end - if - i32.const 6496 - i32.const 6624 - i32.const 350 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $value - i32.eqz - if - i32.const 6688 - local.set $12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $12 - return - end - local.get $radix - i32.const 10 - i32.eq - if - local.get $value - call $~lib/util/number/decimalCount32 - local.set $decimals - global.get $~lib/memory/__stack_pointer - local.get $decimals - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.set $buffer - local.get $value - local.set $num - local.get $decimals - local.set $offset - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer - local.get $num - local.get $offset - call $~lib/util/number/utoa32_dec_lut - else - local.get $radix - i32.const 16 - i32.eq - if - i32.const 31 - local.get $value - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $decimals|7 - global.get $~lib/memory/__stack_pointer - local.get $decimals|7 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.set $buffer|8 - local.get $value - local.set $num|9 - local.get $decimals|7 - local.set $offset|10 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|8 - local.get $num|9 - i64.extend_i32_u - local.get $offset|10 - call $~lib/util/number/utoa_hex_lut - else - local.get $value - i64.extend_i32_u - local.get $radix - call $~lib/util/number/ulog_base - local.set $decimals|11 - global.get $~lib/memory/__stack_pointer - local.get $decimals|11 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $value - i64.extend_i32_u - local.get $decimals|11 - local.get $radix - call $~lib/util/number/utoa64_any_core - end - end - local.get $out - local.set $12 - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $12 - return - ) - (func $~lib/util/number/dtoa (param $value f64) (result i32) - (local $value|1 f64) - (local $isSingle i32) - (local $size i32) - (local $result i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $~lib/util/number/dtoa_impl|inlined.0 (result i32) - local.get $value - local.set $value|1 - i32.const 0 - local.set $isSingle - local.get $value|1 - f64.const 0 - f64.eq - if - i32.const 11296 - br $~lib/util/number/dtoa_impl|inlined.0 - end - local.get $value|1 - local.get $value|1 - f64.sub - f64.const 0 - f64.eq - i32.eqz + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u if - local.get $value|1 - local.get $value|1 - f64.ne + local.get $cur + i32.load + local.set $val + local.get $val if - i32.const 11328 - br $~lib/util/number/dtoa_impl|inlined.0 - end - i32.const 11360 - i32.const 11408 - local.get $value|1 - f64.const 0 - f64.lt - select - br $~lib/util/number/dtoa_impl|inlined.0 - end - i32.const 11440 - local.get $value|1 - local.get $isSingle - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $size - global.get $~lib/memory/__stack_pointer - local.get $size - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store - local.get $result - i32.const 11440 - local.get $size - memory.copy - local.get $result - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end end + local.get $this local.set $5 global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 - return ) - (func $~lib/util/number/utoa64 (param $value i64) (param $radix i32) (result i32) - (local $out i32) - (local $val32 i32) - (local $decimals i32) - (local $buffer i32) - (local $num i32) - (local $offset i32) - (local $decimals|8 i32) - (local $buffer|9 i32) - (local $num|10 i64) - (local $offset|11 i32) - (local $decimals|12 i32) - (local $buffer|13 i32) - (local $num|14 i64) - (local $offset|15 i32) - (local $decimals|16 i32) - (local $17 i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -46481,186 +46823,68 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $radix + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:length_ i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $radix - i32.const 36 - i32.gt_s - end - if - i32.const 6496 - i32.const 6624 - i32.const 401 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $value - i64.const 0 - i64.ne - i32.eqz - if - i32.const 6688 - local.set $17 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $17 - return - end - local.get $radix - i32.const 10 - i32.eq - if - local.get $value - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $value - i32.wrap_i64 - local.set $val32 - local.get $val32 - call $~lib/util/number/decimalCount32 - local.set $decimals - global.get $~lib/memory/__stack_pointer - local.get $decimals - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.set $buffer - local.get $val32 - local.set $num - local.get $decimals - local.set $offset - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer - local.get $num - local.get $offset - call $~lib/util/number/utoa32_dec_lut - else - local.get $value - call $~lib/util/number/decimalCount64High - local.set $decimals|8 - global.get $~lib/memory/__stack_pointer - local.get $decimals|8 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.set $buffer|9 - local.get $value - local.set $num|10 - local.get $decimals|8 - local.set $offset|11 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|9 - local.get $num|10 - local.get $offset|11 - call $~lib/util/number/utoa64_dec_lut - end - else - local.get $radix - i32.const 16 - i32.eq + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u if - i32.const 63 - local.get $value - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 i32.add - local.set $decimals|12 - global.get $~lib/memory/__stack_pointer - local.get $decimals|12 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.set $buffer|13 - local.get $value - local.set $num|14 - local.get $decimals|12 - local.set $offset|15 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|13 - local.get $num|14 - local.get $offset|15 - call $~lib/util/number/utoa_hex_lut - else - local.get $value - local.get $radix - call $~lib/util/number/ulog_base - local.set $decimals|16 - global.get $~lib/memory/__stack_pointer - local.get $decimals|16 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $value - local.get $decimals|16 - local.get $radix - call $~lib/util/number/utoa64_any_core + local.set $cur + br $while-continue|0 end end - local.get $out - local.set $17 + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $17 - return ) - (func $~lib/util/number/itoa64 (param $value i64) (param $radix i32) (result i32) - (local $sign i32) - (local $out i32) - (local $val32 i32) - (local $decimals i32) - (local $buffer i32) - (local $num i32) - (local $offset i32) - (local $decimals|9 i32) - (local $buffer|10 i32) - (local $num|11 i64) - (local $offset|12 i32) - (local $decimals|13 i32) - (local $buffer|14 i32) - (local $num|15 i64) - (local $offset|16 i32) - (local $decimals|17 i32) - (local $18 i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -46669,202 +46893,85 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $radix - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $radix - i32.const 36 - i32.gt_s - end - if - i32.const 6496 - i32.const 6624 - i32.const 431 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $value - i64.const 0 - i64.ne - i32.eqz - if - i32.const 6688 - local.set $18 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $18 - return - end - local.get $value - i64.const 63 - i64.shr_u - i32.wrap_i64 i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#get:length_ + i32.const 2 i32.shl - local.set $sign - local.get $sign - if - i64.const 0 - local.get $value - i64.sub - local.set $value - end - local.get $radix - i32.const 10 - i32.eq - if - local.get $value - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $value - i32.wrap_i64 - local.set $val32 - local.get $val32 - call $~lib/util/number/decimalCount32 - local.set $decimals - global.get $~lib/memory/__stack_pointer - local.get $decimals - i32.const 1 - i32.shl - local.get $sign - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $sign - i32.add - local.set $buffer - local.get $val32 - local.set $num - local.get $decimals - local.set $offset - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer - local.get $num - local.get $offset - call $~lib/util/number/utoa32_dec_lut - else - local.get $value - call $~lib/util/number/decimalCount64High - local.set $decimals|9 - global.get $~lib/memory/__stack_pointer - local.get $decimals|9 - i32.const 1 - i32.shl - local.get $sign - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $sign - i32.add - local.set $buffer|10 - local.get $value - local.set $num|11 - local.get $decimals|9 - local.set $offset|12 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|10 - local.get $num|11 - local.get $offset|12 - call $~lib/util/number/utoa64_dec_lut - end - else - local.get $radix - i32.const 16 - i32.eq + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u if - i32.const 63 - local.get $value - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $decimals|13 - global.get $~lib/memory/__stack_pointer - local.get $decimals|13 - i32.const 1 - i32.shl - local.get $sign - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $sign - i32.add - local.set $buffer|14 - local.get $value - local.set $num|15 - local.get $decimals|13 - local.set $offset|16 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|14 - local.get $num|15 - local.get $offset|16 - call $~lib/util/number/utoa_hex_lut - else - local.get $value - local.get $radix - call $~lib/util/number/ulog_base - local.set $decimals|17 - global.get $~lib/memory/__stack_pointer - local.get $decimals|17 - i32.const 1 - i32.shl - local.get $sign - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $sign + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 i32.add - local.get $value - local.get $decimals|17 - local.get $radix - call $~lib/util/number/utoa64_any_core + local.set $cur + br $while-continue|0 end end - local.get $sign - if - local.get $out - i32.const 45 - i32.store16 - end - local.get $out - local.set $18 + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $18 - return ) ) diff --git a/tests/compiler/std/array.release.wat b/tests/compiler/std/array.release.wat index 22943cdb01..1eab8c3b62 100644 --- a/tests/compiler/std/array.release.wat +++ b/tests/compiler/std/array.release.wat @@ -8,8 +8,8 @@ (type $6 (func (param f64 f64) (result i32))) (type $7 (func (param i32 i32))) (type $8 (func (param i32))) - (type $9 (func (param i32 i32 i32 i32))) - (type $10 (func (param i32 i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i32 i32 i32))) + (type $10 (func (param i32 i32 i32 i32))) (type $11 (func)) (type $12 (func (result f64))) (type $13 (func (param i32 i32 i32 i32 i32 i32))) @@ -24,7 +24,6 @@ (type $22 (func (param i32 i32) (result f32))) (type $23 (func (param i32 f32 i32))) (type $24 (func (param i32 i32) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "Math.random" (func $~lib/bindings/dom/Math.random (result f64))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -51,611 +50,619 @@ (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 48960)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 49120)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $1 (i32.const 1084) ",") - (data $1.1 (i32.const 1096) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $2 (i32.const 1132) "<") - (data $2.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $3 (i32.const 1196) "<") - (data $3.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $6 (i32.const 1324) "<") - (data $6.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $7 (i32.const 1388) ",") - (data $7.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $9 (i32.const 1468) "<") - (data $9.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $10 (i32.const 1532) ",") - (data $10.1 (i32.const 1544) "\02\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $11 (i32.const 1580) "<") - (data $11.1 (i32.const 1592) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data $12 (i32.const 1644) "\1c") - (data $12.1 (i32.const 1656) "\02\00\00\00\06\00\00\00a\00b\00c") - (data $13 (i32.const 1676) "\1c") - (data $13.1 (i32.const 1688) "\01\00\00\00\05\00\00\00\01\02\03\04\05") - (data $14 (i32.const 1708) "\1c") - (data $14.1 (i32.const 1720) "\01\00\00\00\05\00\00\00\01\01\01\04\05") - (data $15 (i32.const 1740) "\1c") - (data $15.1 (i32.const 1752) "\01\00\00\00\05") - (data $16 (i32.const 1772) "\1c") - (data $16.1 (i32.const 1784) "\01\00\00\00\05\00\00\00\01\01") - (data $17 (i32.const 1804) "\1c") - (data $17.1 (i32.const 1816) "\01\00\00\00\05\00\00\00\01\01\00\02\02") - (data $18 (i32.const 1836) "\1c") - (data $18.1 (i32.const 1848) "\01\00\00\00\05\00\00\00\01\01\00\02\02") - (data $19 (i32.const 1868) "\1c") - (data $19.1 (i32.const 1880) "\01\00\00\00\05\00\00\00\ff\ff\ff\ff\ff") - (data $20 (i32.const 1900) ",") - (data $20.1 (i32.const 1912) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $21 (i32.const 1948) ",") - (data $21.1 (i32.const 1960) "\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") - (data $22 (i32.const 1996) ",") - (data $22.1 (i32.const 2008) "\01\00\00\00\14") - (data $23 (i32.const 2044) ",") - (data $23.1 (i32.const 2056) "\01\00\00\00\14\00\00\00\01\00\00\00\01") - (data $24 (i32.const 2092) ",") - (data $24.1 (i32.const 2104) "\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data $25 (i32.const 2140) ",") - (data $25.1 (i32.const 2152) "\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data $26 (i32.const 2188) ",") - (data $26.1 (i32.const 2200) "\01\00\00\00\14\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff") - (data $27 (i32.const 2236) ",") - (data $27.1 (i32.const 2248) "\01\00\00\00\14\00\00\00\00\00\00?\00\00\80?\00\00\c0?\00\00 @\00\00@@") - (data $28 (i32.const 2284) ",") - (data $28.1 (i32.const 2296) "\01\00\00\00\14\00\00\00\00\00\00?\00\00\80?\00\00\80?\00\00 @\00\00@@") - (data $29 (i32.const 2332) ",") - (data $29.1 (i32.const 2344) "\01\00\00\00\14") - (data $30 (i32.const 2380) ",") - (data $30.1 (i32.const 2392) "\01\00\00\00\14\00\00\00\00\00\80?\00\00\80?") - (data $31 (i32.const 2428) ",") - (data $31.1 (i32.const 2440) "\01\00\00\00\14\00\00\00\00\00\80?\00\00\80?\00\00\00\00\00\00\00@\00\00\00@") - (data $32 (i32.const 2476) ",") - (data $32.1 (i32.const 2488) "\01\00\00\00\14\00\00\00\00\00\80?\00\00\80?\00\00\00\00\00\00\00@\00\00\00@") - (data $33 (i32.const 2524) ",") - (data $33.1 (i32.const 2536) "\01\00\00\00\14\00\00\00\00\00\80\bf\00\00\80\bf\00\00\80\bf\00\00\80\bf\00\00\80\bf") - (data $34 (i32.const 2572) ",") - (data $34.1 (i32.const 2584) "\01\00\00\00\14\00\00\00\00\00\00\80\00\00\00\80\00\00\00\80\00\00\00\80\00\00\00\80") - (data $35 (i32.const 2620) ",") - (data $35.1 (i32.const 2632) "\02\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") - (data $36 (i32.const 2668) ",") - (data $36.1 (i32.const 2680) "\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") - (data $37 (i32.const 2716) "\1c") - (data $37.1 (i32.const 2728) "\01") - (data $38 (i32.const 2748) "\1c") - (data $38.1 (i32.const 2760) "\01") - (data $39 (i32.const 2780) ",") - (data $39.1 (i32.const 2792) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $40 (i32.const 2828) ",") - (data $40.1 (i32.const 2840) "\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data $41 (i32.const 2876) ",") - (data $41.1 (i32.const 2888) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $42 (i32.const 2924) ",") - (data $42.1 (i32.const 2936) "\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") - (data $43 (i32.const 2972) ",") - (data $43.1 (i32.const 2984) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $44 (i32.const 3020) ",") - (data $44.1 (i32.const 3032) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data $45 (i32.const 3068) ",") - (data $45.1 (i32.const 3080) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $46 (i32.const 3116) ",") - (data $46.1 (i32.const 3128) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $47 (i32.const 3164) ",") - (data $47.1 (i32.const 3176) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $48 (i32.const 3212) ",") - (data $48.1 (i32.const 3224) "\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $49 (i32.const 3260) ",") - (data $49.1 (i32.const 3272) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $50 (i32.const 3308) ",") - (data $50.1 (i32.const 3320) "\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") - (data $51 (i32.const 3356) ",") - (data $51.1 (i32.const 3368) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $52 (i32.const 3404) ",") - (data $52.1 (i32.const 3416) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data $53 (i32.const 3452) ",") - (data $53.1 (i32.const 3464) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $54 (i32.const 3500) ",") - (data $54.1 (i32.const 3512) "\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data $55 (i32.const 3548) ",") - (data $55.1 (i32.const 3560) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $56 (i32.const 3596) ",") - (data $56.1 (i32.const 3608) "\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $57 (i32.const 3644) ",") - (data $57.1 (i32.const 3656) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $58 (i32.const 3692) ",") - (data $58.1 (i32.const 3704) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") - (data $59 (i32.const 3740) ",") - (data $59.1 (i32.const 3752) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $60 (i32.const 3788) ",") - (data $60.1 (i32.const 3800) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data $61 (i32.const 3836) ",") - (data $61.1 (i32.const 3848) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $62 (i32.const 3884) ",") - (data $62.1 (i32.const 3896) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data $63 (i32.const 3932) ",") - (data $63.1 (i32.const 3944) "\01\00\00\00\14\00\00\00\03\00\00\00\05\00\00\00\07\00\00\00\t\00\00\00\0b") - (data $64 (i32.const 3980) "\1c") - (data $64.1 (i32.const 3992) "\01\00\00\00\0c\00\00\00\07\00\00\00\t\00\00\00\0b") - (data $65 (i32.const 4012) "\1c") - (data $65.1 (i32.const 4024) "\01\00\00\00\08\00\00\00\07\00\00\00\t") - (data $66 (i32.const 4044) ",") - (data $66.1 (i32.const 4056) "\01\00\00\00\10\00\00\00\05\00\00\00\07\00\00\00\t\00\00\00\0b") - (data $67 (i32.const 4092) "\1c") - (data $67.1 (i32.const 4104) "\01\00\00\00\08\00\00\00\t\00\00\00\0b") - (data $68 (i32.const 4124) "\1c") - (data $68.1 (i32.const 4136) "\01\00\00\00\08\00\00\00\07\00\00\00\t") - (data $69 (i32.const 4156) "\1c") - (data $69.1 (i32.const 4168) "\01\00\00\00\08\00\00\00\07\00\00\00\t") - (data $70 (i32.const 4188) "\1c") - (data $70.1 (i32.const 4200) "\01\00\00\00\04\00\00\00\00\01\02\03") - (data $71 (i32.const 4220) "\1c") - (data $71.1 (i32.const 4232) "\01\00\00\00\08\00\00\00\00\01\02\03\04\05\06\07") - (data $72 (i32.const 4252) ",") - (data $72.1 (i32.const 4264) "\01\00\00\00\11\00\00\00\00\01\02\03\04\05\06\07\08\t\n\0b\0c\r\0e\0f\10") - (data $73 (i32.const 4300) ",") - (data $73.1 (i32.const 4312) "\01\00\00\00\0e\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06") - (data $74 (i32.const 4348) ",") - (data $74.1 (i32.const 4360) "\01\00\00\00\10\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07") - (data $75 (i32.const 4396) ",") - (data $75.1 (i32.const 4408) "\01\00\00\00\12\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08") - (data $76 (i32.const 4444) "\1c") - (data $76.1 (i32.const 4456) "\01\00\00\00\04\00\00\00\00\00\c0\7f") - (data $77 (i32.const 4476) "\1c") - (data $77.1 (i32.const 4488) "\01\00\00\00\08") - (data $77.2 (i32.const 4502) "\f8\7f") - (data $78 (i32.const 4508) ",") - (data $78.1 (i32.const 4520) "\01\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02") - (data $79 (i32.const 4556) "\1c") - (data $79.1 (i32.const 4568) "\01\00\00\00\04\00\00\00\00\00\c0\7f") - (data $80 (i32.const 4588) "\1c") - (data $80.1 (i32.const 4600) "\01\00\00\00\08") - (data $80.2 (i32.const 4614) "\f8\7f") - (data $81 (i32.const 4620) ",") - (data $81.1 (i32.const 4632) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $82 (i32.const 4668) ",") - (data $82.1 (i32.const 4680) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $83 (i32.const 4716) "\1c") - (data $83.1 (i32.const 4728) "\01") - (data $84 (i32.const 4748) ",") - (data $84.1 (i32.const 4760) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $85 (i32.const 4796) "\1c") - (data $85.1 (i32.const 4808) "\01") - (data $86 (i32.const 4828) ",") - (data $86.1 (i32.const 4840) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $87 (i32.const 4876) ",") - (data $87.1 (i32.const 4888) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $88 (i32.const 4924) "\1c") - (data $88.1 (i32.const 4936) "\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05") - (data $89 (i32.const 4956) "\1c") - (data $89.1 (i32.const 4968) "\01\00\00\00\08\00\00\00\01\00\00\00\02") - (data $90 (i32.const 4988) ",") - (data $90.1 (i32.const 5000) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $91 (i32.const 5036) "\1c") - (data $91.1 (i32.const 5048) "\01\00\00\00\08\00\00\00\03\00\00\00\04") - (data $92 (i32.const 5068) "\1c") - (data $92.1 (i32.const 5080) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05") - (data $93 (i32.const 5100) ",") - (data $93.1 (i32.const 5112) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $94 (i32.const 5148) "\1c") - (data $94.1 (i32.const 5160) "\01\00\00\00\04\00\00\00\01") - (data $95 (i32.const 5180) ",") - (data $95.1 (i32.const 5192) "\01\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $96 (i32.const 5228) ",") - (data $96.1 (i32.const 5240) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $97 (i32.const 5276) "\1c") - (data $97.1 (i32.const 5288) "\01\00\00\00\04\00\00\00\05") - (data $98 (i32.const 5308) ",") - (data $98.1 (i32.const 5320) "\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") - (data $99 (i32.const 5356) ",") - (data $99.1 (i32.const 5368) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $100 (i32.const 5404) "\1c") - (data $100.1 (i32.const 5416) "\01\00\00\00\08\00\00\00\04\00\00\00\05") - (data $101 (i32.const 5436) "\1c") - (data $101.1 (i32.const 5448) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data $102 (i32.const 5468) ",") - (data $102.1 (i32.const 5480) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $103 (i32.const 5516) "\1c") - (data $103.1 (i32.const 5528) "\01\00\00\00\04\00\00\00\04") - (data $104 (i32.const 5548) ",") - (data $104.1 (i32.const 5560) "\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05") - (data $105 (i32.const 5596) ",") - (data $105.1 (i32.const 5608) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $106 (i32.const 5644) "\1c") - (data $106.1 (i32.const 5656) "\01\00\00\00\04\00\00\00\01") - (data $107 (i32.const 5676) ",") - (data $107.1 (i32.const 5688) "\01\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $108 (i32.const 5724) ",") - (data $108.1 (i32.const 5736) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $109 (i32.const 5772) "\1c") - (data $109.1 (i32.const 5784) "\01") - (data $110 (i32.const 5804) ",") - (data $110.1 (i32.const 5816) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $111 (i32.const 5852) ",") - (data $111.1 (i32.const 5864) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $112 (i32.const 5900) "\1c") - (data $112.1 (i32.const 5912) "\01") - (data $113 (i32.const 5932) ",") - (data $113.1 (i32.const 5944) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $114 (i32.const 5980) ",") - (data $114.1 (i32.const 5992) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $115 (i32.const 6028) "\1c") - (data $115.1 (i32.const 6040) "\01") - (data $116 (i32.const 6060) ",") - (data $116.1 (i32.const 6072) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $117 (i32.const 6108) ",") - (data $117.1 (i32.const 6120) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $118 (i32.const 6156) "\1c") - (data $118.1 (i32.const 6168) "\01") - (data $119 (i32.const 6188) ",") - (data $119.1 (i32.const 6200) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $120 (i32.const 6236) ",") - (data $120.1 (i32.const 6248) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $121 (i32.const 6284) "\1c") - (data $121.1 (i32.const 6296) "\01") - (data $122 (i32.const 6316) ",") - (data $122.1 (i32.const 6328) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $123 (i32.const 6364) "\1c") - (data $123.1 (i32.const 6376) "\01") - (data $124 (i32.const 6396) "|") - (data $124.1 (i32.const 6408) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data $125 (i32.const 6524) "|") - (data $125.1 (i32.const 6536) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") - (data $126 (i32.const 6652) "\1c") - (data $126.1 (i32.const 6664) "\0e\00\00\00\08\00\00\00\01") - (data $127 (i32.const 6684) "\1c") - (data $127.1 (i32.const 6696) "\0e\00\00\00\08\00\00\00\02") - (data $128 (i32.const 6716) "\1c") - (data $128.1 (i32.const 6728) "\0e\00\00\00\08\00\00\00\03") - (data $129 (i32.const 6748) "\1c") - (data $129.1 (i32.const 6760) "\0e\00\00\00\08\00\00\00\04") - (data $130 (i32.const 6780) "\1c") - (data $130.1 (i32.const 6792) "\0e\00\00\00\08\00\00\00\05") - (data $131 (i32.const 6812) "\1c") - (data $131.1 (i32.const 6824) "\0e\00\00\00\08\00\00\00\06") - (data $132 (i32.const 6844) ",") - (data $132.1 (i32.const 6856) "\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data $133 (i32.const 6892) "\1c") - (data $133.1 (i32.const 6904) "\0e\00\00\00\08\00\00\00\07") - (data $134 (i32.const 6924) "\1c") - (data $134.1 (i32.const 6936) "\0e\00\00\00\08\00\00\00\08") - (data $135 (i32.const 6956) "\1c") - (data $135.1 (i32.const 6968) "\0e\00\00\00\08\00\00\00\t") - (data $136 (i32.const 6988) "\1c") - (data $136.1 (i32.const 7000) "\0e\00\00\00\08\00\00\00\n") - (data $137 (i32.const 7020) "\1c") - (data $137.1 (i32.const 7032) "\0e\00\00\00\08\00\00\00\0b") - (data $138 (i32.const 7052) "\1c") - (data $138.1 (i32.const 7064) "\0e\00\00\00\08\00\00\00\0c") - (data $139 (i32.const 7084) "\1c") - (data $139.1 (i32.const 7096) "\0e\00\00\00\08\00\00\00\r") - (data $140 (i32.const 7116) "\1c") - (data $140.1 (i32.const 7128) "\0e\00\00\00\08\00\00\00\0e") - (data $141 (i32.const 7148) "\1c") - (data $141.1 (i32.const 7160) "\0e\00\00\00\08\00\00\00\0f") - (data $142 (i32.const 7180) "\1c") - (data $142.1 (i32.const 7192) "\0e\00\00\00\08\00\00\00\10") - (data $143 (i32.const 7212) "\1c") - (data $143.1 (i32.const 7224) "\0e\00\00\00\08\00\00\00\11") - (data $144 (i32.const 7244) "\1c") - (data $144.1 (i32.const 7256) "\0e\00\00\00\08\00\00\00\12") - (data $145 (i32.const 7276) "\1c") - (data $145.1 (i32.const 7288) "\0e\00\00\00\08\00\00\00\13") - (data $146 (i32.const 7308) "\1c") - (data $146.1 (i32.const 7320) "\0e\00\00\00\08\00\00\00\14") - (data $147 (i32.const 7340) "\1c") - (data $147.1 (i32.const 7352) "\0f\00\00\00\08\00\00\00\15") - (data $148 (i32.const 7372) "\1c") - (data $148.1 (i32.const 7384) "\0f\00\00\00\08\00\00\00\16") - (data $149 (i32.const 7404) "\1c") - (data $149.1 (i32.const 7416) "\0f\00\00\00\08\00\00\00\17") - (data $150 (i32.const 7436) "\1c") - (data $150.1 (i32.const 7448) "\0f\00\00\00\08\00\00\00\18") - (data $151 (i32.const 7468) "\1c") - (data $151.1 (i32.const 7480) "\0f\00\00\00\08\00\00\00\19") - (data $152 (i32.const 7500) "|") - (data $152.1 (i32.const 7512) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data $153 (i32.const 7628) "<") - (data $153.1 (i32.const 7640) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data $154 (i32.const 7692) "\1c") - (data $154.1 (i32.const 7704) "\02\00\00\00\02\00\00\000") - (data $155 (i32.const 7724) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data $156 (i32.const 8124) "\1c\04") - (data $156.1 (i32.const 8136) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data $157 (i32.const 9180) "\\") - (data $157.1 (i32.const 9192) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data $158 (i32.const 9276) "\1c") - (data $158.1 (i32.const 9288) "\11\00\00\00\08\00\00\00\1a") - (data $159 (i32.const 9308) "\1c") - (data $159.1 (i32.const 9320) "\12\00\00\00\08\00\00\00\1b") - (data $160 (i32.const 9340) "\1c") - (data $160.1 (i32.const 9352) "\13\00\00\00\08\00\00\00\1c") - (data $161 (i32.const 9372) "\1c") - (data $161.1 (i32.const 9384) "\13\00\00\00\08\00\00\00\1d") - (data $162 (i32.const 9404) "\1c") - (data $162.1 (i32.const 9416) "\13\00\00\00\08\00\00\00\1e") - (data $163 (i32.const 9436) "\1c") - (data $163.1 (i32.const 9448) "\0e\00\00\00\08\00\00\00\1f") - (data $164 (i32.const 9468) "\1c") - (data $164.1 (i32.const 9480) "\0e\00\00\00\08\00\00\00 ") - (data $165 (i32.const 9500) "\1c") - (data $165.1 (i32.const 9512) "\0e\00\00\00\08\00\00\00!") - (data $166 (i32.const 9532) "\1c") - (data $166.1 (i32.const 9544) "\0e\00\00\00\08\00\00\00\"") - (data $167 (i32.const 9564) "\1c") - (data $167.1 (i32.const 9576) "\14\00\00\00\08\00\00\00#") - (data $168 (i32.const 9596) "\1c") - (data $168.1 (i32.const 9608) "\14\00\00\00\08\00\00\00$") - (data $169 (i32.const 9628) "\1c") - (data $169.1 (i32.const 9640) "\15\00\00\00\08\00\00\00%") - (data $170 (i32.const 9660) "\1c") - (data $170.1 (i32.const 9672) "\15\00\00\00\08\00\00\00&") - (data $171 (i32.const 9692) "\1c") - (data $171.1 (i32.const 9704) "\14\00\00\00\08\00\00\00\'") - (data $172 (i32.const 9724) "\1c") - (data $172.1 (i32.const 9736) "\14\00\00\00\08\00\00\00(") - (data $173 (i32.const 9756) "\1c") - (data $173.1 (i32.const 9768) "\14\00\00\00\08\00\00\00)") - (data $174 (i32.const 9788) "\1c") - (data $174.1 (i32.const 9800) "\14\00\00\00\08\00\00\00*") - (data $175 (i32.const 9820) "\1c") - (data $175.1 (i32.const 9832) "\14\00\00\00\08\00\00\00+") - (data $176 (i32.const 9852) "\1c") - (data $176.1 (i32.const 9864) "\15\00\00\00\08\00\00\00,") - (data $177 (i32.const 9884) "\1c") - (data $177.1 (i32.const 9896) "\15\00\00\00\08\00\00\00-") - (data $178 (i32.const 9916) "\1c") - (data $178.1 (i32.const 9928) "\14\00\00\00\08\00\00\00.") - (data $179 (i32.const 9948) "\1c") - (data $179.1 (i32.const 9960) "\14\00\00\00\08\00\00\00/") - (data $180 (i32.const 9980) "\1c") - (data $180.1 (i32.const 9992) "\14\00\00\00\08\00\00\000") - (data $181 (i32.const 10012) "\bc") - (data $181.1 (i32.const 10024) "\02\00\00\00\ac\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?") - (data $182 (i32.const 10204) "\1c") - (data $182.1 (i32.const 10216) "\01\00\00\00\0c\00\00\00\00\00\00@\00\00\80\bf") - (data $183 (i32.const 10236) "\1c") - (data $183.1 (i32.const 10248) "\18\00\00\00\08\00\00\001") - (data $184 (i32.const 10268) "\1c") - (data $184.1 (i32.const 10280) "\01\00\00\00\0c\00\00\00\00\00\80\bf\00\00\00\00\00\00\00@") - (data $185 (i32.const 10300) "<") - (data $185.1 (i32.const 10312) "\01\00\00\00 \00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f") - (data $186 (i32.const 10364) "<") - (data $186.1 (i32.const 10376) "\01\00\00\00 \00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f") - (data $187 (i32.const 10428) "\\") - (data $187.1 (i32.const 10440) "\01\00\00\00@") - (data $187.2 (i32.const 10454) "\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?") - (data $187.3 (i32.const 10494) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") - (data $188 (i32.const 10524) "\1c") - (data $188.1 (i32.const 10536) "\19\00\00\00\08\00\00\002") - (data $189 (i32.const 10556) "\\") - (data $189.1 (i32.const 10568) "\01\00\00\00@") - (data $189.2 (i32.const 10582) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") - (data $189.3 (i32.const 10614) "\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") - (data $190 (i32.const 10652) ",") - (data $190.1 (i32.const 10664) "\01\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") - (data $191 (i32.const 10700) "\1c") - (data $191.1 (i32.const 10712) "\1a\00\00\00\08\00\00\003") - (data $192 (i32.const 10732) ",") - (data $192.1 (i32.const 10744) "\01\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") - (data $193 (i32.const 10780) ",") - (data $193.1 (i32.const 10792) "\01\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") - (data $194 (i32.const 10828) "\1c") - (data $194.1 (i32.const 10840) "\1b\00\00\00\08\00\00\004") - (data $195 (i32.const 10860) ",") - (data $195.1 (i32.const 10872) "\01\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") - (data $196 (i32.const 10908) "\1c") - (data $196.1 (i32.const 10920) "\01") - (data $197 (i32.const 10940) "\1c") - (data $197.1 (i32.const 10952) "\01\00\00\00\04\00\00\00\01") - (data $198 (i32.const 10972) "\1c") - (data $198.1 (i32.const 10984) "\01\00\00\00\08\00\00\00\02\00\00\00\01") - (data $199 (i32.const 11004) ",") - (data $199.1 (i32.const 11016) "\01\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $20 (i32.const 3452) ",") + (data $20.1 (i32.const 3464) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $21 (i32.const 3500) ",") + (data $21.1 (i32.const 3512) "\02\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $22 (i32.const 3548) "<") + (data $22.1 (i32.const 3560) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $23 (i32.const 3612) "\1c") + (data $23.1 (i32.const 3624) "\02\00\00\00\06\00\00\00a\00b\00c") + (data $24 (i32.const 3644) "\1c") + (data $24.1 (i32.const 3656) "\01\00\00\00\05\00\00\00\01\02\03\04\05") + (data $25 (i32.const 3676) "\1c") + (data $25.1 (i32.const 3688) "\01\00\00\00\05\00\00\00\01\01\01\04\05") + (data $26 (i32.const 3708) "\1c") + (data $26.1 (i32.const 3720) "\01\00\00\00\05") + (data $27 (i32.const 3740) "\1c") + (data $27.1 (i32.const 3752) "\01\00\00\00\05\00\00\00\01\01") + (data $28 (i32.const 3772) "\1c") + (data $28.1 (i32.const 3784) "\01\00\00\00\05\00\00\00\01\01\00\02\02") + (data $29 (i32.const 3804) "\1c") + (data $29.1 (i32.const 3816) "\01\00\00\00\05\00\00\00\01\01\00\02\02") + (data $30 (i32.const 3836) "\1c") + (data $30.1 (i32.const 3848) "\01\00\00\00\05\00\00\00\ff\ff\ff\ff\ff") + (data $31 (i32.const 3868) ",") + (data $31.1 (i32.const 3880) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $32 (i32.const 3916) ",") + (data $32.1 (i32.const 3928) "\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") + (data $33 (i32.const 3964) ",") + (data $33.1 (i32.const 3976) "\01\00\00\00\14") + (data $34 (i32.const 4012) ",") + (data $34.1 (i32.const 4024) "\01\00\00\00\14\00\00\00\01\00\00\00\01") + (data $35 (i32.const 4060) ",") + (data $35.1 (i32.const 4072) "\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data $36 (i32.const 4108) ",") + (data $36.1 (i32.const 4120) "\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data $37 (i32.const 4156) ",") + (data $37.1 (i32.const 4168) "\01\00\00\00\14\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff") + (data $38 (i32.const 4204) ",") + (data $38.1 (i32.const 4216) "\01\00\00\00\14\00\00\00\00\00\00?\00\00\80?\00\00\c0?\00\00 @\00\00@@") + (data $39 (i32.const 4252) ",") + (data $39.1 (i32.const 4264) "\01\00\00\00\14\00\00\00\00\00\00?\00\00\80?\00\00\80?\00\00 @\00\00@@") + (data $40 (i32.const 4300) ",") + (data $40.1 (i32.const 4312) "\01\00\00\00\14") + (data $41 (i32.const 4348) ",") + (data $41.1 (i32.const 4360) "\01\00\00\00\14\00\00\00\00\00\80?\00\00\80?") + (data $42 (i32.const 4396) ",") + (data $42.1 (i32.const 4408) "\01\00\00\00\14\00\00\00\00\00\80?\00\00\80?\00\00\00\00\00\00\00@\00\00\00@") + (data $43 (i32.const 4444) ",") + (data $43.1 (i32.const 4456) "\01\00\00\00\14\00\00\00\00\00\80?\00\00\80?\00\00\00\00\00\00\00@\00\00\00@") + (data $44 (i32.const 4492) ",") + (data $44.1 (i32.const 4504) "\01\00\00\00\14\00\00\00\00\00\80\bf\00\00\80\bf\00\00\80\bf\00\00\80\bf\00\00\80\bf") + (data $45 (i32.const 4540) ",") + (data $45.1 (i32.const 4552) "\01\00\00\00\14\00\00\00\00\00\00\80\00\00\00\80\00\00\00\80\00\00\00\80\00\00\00\80") + (data $46 (i32.const 4588) ",") + (data $46.1 (i32.const 4600) "\02\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") + (data $47 (i32.const 4636) ",") + (data $47.1 (i32.const 4648) "\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") + (data $48 (i32.const 4684) "\1c") + (data $48.1 (i32.const 4696) "\01") + (data $49 (i32.const 4716) "\1c") + (data $49.1 (i32.const 4728) "\01") + (data $50 (i32.const 4748) ",") + (data $50.1 (i32.const 4760) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $51 (i32.const 4796) ",") + (data $51.1 (i32.const 4808) "\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data $52 (i32.const 4844) ",") + (data $52.1 (i32.const 4856) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $53 (i32.const 4892) ",") + (data $53.1 (i32.const 4904) "\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") + (data $54 (i32.const 4940) ",") + (data $54.1 (i32.const 4952) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $55 (i32.const 4988) ",") + (data $55.1 (i32.const 5000) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data $56 (i32.const 5036) ",") + (data $56.1 (i32.const 5048) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $57 (i32.const 5084) ",") + (data $57.1 (i32.const 5096) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $58 (i32.const 5132) ",") + (data $58.1 (i32.const 5144) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $59 (i32.const 5180) ",") + (data $59.1 (i32.const 5192) "\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $60 (i32.const 5228) ",") + (data $60.1 (i32.const 5240) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $61 (i32.const 5276) ",") + (data $61.1 (i32.const 5288) "\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") + (data $62 (i32.const 5324) ",") + (data $62.1 (i32.const 5336) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $63 (i32.const 5372) ",") + (data $63.1 (i32.const 5384) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data $64 (i32.const 5420) ",") + (data $64.1 (i32.const 5432) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $65 (i32.const 5468) ",") + (data $65.1 (i32.const 5480) "\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data $66 (i32.const 5516) ",") + (data $66.1 (i32.const 5528) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $67 (i32.const 5564) ",") + (data $67.1 (i32.const 5576) "\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $68 (i32.const 5612) ",") + (data $68.1 (i32.const 5624) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $69 (i32.const 5660) ",") + (data $69.1 (i32.const 5672) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") + (data $70 (i32.const 5708) ",") + (data $70.1 (i32.const 5720) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $71 (i32.const 5756) ",") + (data $71.1 (i32.const 5768) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data $72 (i32.const 5804) ",") + (data $72.1 (i32.const 5816) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $73 (i32.const 5852) ",") + (data $73.1 (i32.const 5864) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data $74 (i32.const 5900) ",") + (data $74.1 (i32.const 5912) "\01\00\00\00\14\00\00\00\03\00\00\00\05\00\00\00\07\00\00\00\t\00\00\00\0b") + (data $75 (i32.const 5948) "\1c") + (data $75.1 (i32.const 5960) "\01\00\00\00\0c\00\00\00\07\00\00\00\t\00\00\00\0b") + (data $76 (i32.const 5980) "\1c") + (data $76.1 (i32.const 5992) "\01\00\00\00\08\00\00\00\07\00\00\00\t") + (data $77 (i32.const 6012) ",") + (data $77.1 (i32.const 6024) "\01\00\00\00\10\00\00\00\05\00\00\00\07\00\00\00\t\00\00\00\0b") + (data $78 (i32.const 6060) "\1c") + (data $78.1 (i32.const 6072) "\01\00\00\00\08\00\00\00\t\00\00\00\0b") + (data $79 (i32.const 6092) "\1c") + (data $79.1 (i32.const 6104) "\01\00\00\00\08\00\00\00\07\00\00\00\t") + (data $80 (i32.const 6124) "\1c") + (data $80.1 (i32.const 6136) "\01\00\00\00\08\00\00\00\07\00\00\00\t") + (data $81 (i32.const 6156) "\1c") + (data $81.1 (i32.const 6168) "\01\00\00\00\04\00\00\00\00\01\02\03") + (data $82 (i32.const 6188) "\1c") + (data $82.1 (i32.const 6200) "\01\00\00\00\08\00\00\00\00\01\02\03\04\05\06\07") + (data $83 (i32.const 6220) ",") + (data $83.1 (i32.const 6232) "\01\00\00\00\11\00\00\00\00\01\02\03\04\05\06\07\08\t\n\0b\0c\r\0e\0f\10") + (data $84 (i32.const 6268) ",") + (data $84.1 (i32.const 6280) "\01\00\00\00\0e\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06") + (data $85 (i32.const 6316) ",") + (data $85.1 (i32.const 6328) "\01\00\00\00\10\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07") + (data $86 (i32.const 6364) ",") + (data $86.1 (i32.const 6376) "\01\00\00\00\12\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08") + (data $87 (i32.const 6412) "\1c") + (data $87.1 (i32.const 6424) "\01\00\00\00\04\00\00\00\00\00\c0\7f") + (data $88 (i32.const 6444) "\1c") + (data $88.1 (i32.const 6456) "\01\00\00\00\08") + (data $88.2 (i32.const 6470) "\f8\7f") + (data $89 (i32.const 6476) ",") + (data $89.1 (i32.const 6488) "\01\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02") + (data $90 (i32.const 6524) "\1c") + (data $90.1 (i32.const 6536) "\01\00\00\00\04\00\00\00\00\00\c0\7f") + (data $91 (i32.const 6556) "\1c") + (data $91.1 (i32.const 6568) "\01\00\00\00\08") + (data $91.2 (i32.const 6582) "\f8\7f") + (data $92 (i32.const 6588) ",") + (data $92.1 (i32.const 6600) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $93 (i32.const 6636) ",") + (data $93.1 (i32.const 6648) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $94 (i32.const 6684) "\1c") + (data $94.1 (i32.const 6696) "\01") + (data $95 (i32.const 6716) ",") + (data $95.1 (i32.const 6728) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $96 (i32.const 6764) "\1c") + (data $96.1 (i32.const 6776) "\01") + (data $97 (i32.const 6796) ",") + (data $97.1 (i32.const 6808) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $98 (i32.const 6844) ",") + (data $98.1 (i32.const 6856) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $99 (i32.const 6892) "\1c") + (data $99.1 (i32.const 6904) "\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05") + (data $100 (i32.const 6924) "\1c") + (data $100.1 (i32.const 6936) "\01\00\00\00\08\00\00\00\01\00\00\00\02") + (data $101 (i32.const 6956) ",") + (data $101.1 (i32.const 6968) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $102 (i32.const 7004) "\1c") + (data $102.1 (i32.const 7016) "\01\00\00\00\08\00\00\00\03\00\00\00\04") + (data $103 (i32.const 7036) "\1c") + (data $103.1 (i32.const 7048) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05") + (data $104 (i32.const 7068) ",") + (data $104.1 (i32.const 7080) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $105 (i32.const 7116) "\1c") + (data $105.1 (i32.const 7128) "\01\00\00\00\04\00\00\00\01") + (data $106 (i32.const 7148) ",") + (data $106.1 (i32.const 7160) "\01\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $107 (i32.const 7196) ",") + (data $107.1 (i32.const 7208) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $108 (i32.const 7244) "\1c") + (data $108.1 (i32.const 7256) "\01\00\00\00\04\00\00\00\05") + (data $109 (i32.const 7276) ",") + (data $109.1 (i32.const 7288) "\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") + (data $110 (i32.const 7324) ",") + (data $110.1 (i32.const 7336) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $111 (i32.const 7372) "\1c") + (data $111.1 (i32.const 7384) "\01\00\00\00\08\00\00\00\04\00\00\00\05") + (data $112 (i32.const 7404) "\1c") + (data $112.1 (i32.const 7416) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $113 (i32.const 7436) ",") + (data $113.1 (i32.const 7448) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $114 (i32.const 7484) "\1c") + (data $114.1 (i32.const 7496) "\01\00\00\00\04\00\00\00\04") + (data $115 (i32.const 7516) ",") + (data $115.1 (i32.const 7528) "\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05") + (data $116 (i32.const 7564) ",") + (data $116.1 (i32.const 7576) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $117 (i32.const 7612) "\1c") + (data $117.1 (i32.const 7624) "\01\00\00\00\04\00\00\00\01") + (data $118 (i32.const 7644) ",") + (data $118.1 (i32.const 7656) "\01\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $119 (i32.const 7692) ",") + (data $119.1 (i32.const 7704) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $120 (i32.const 7740) "\1c") + (data $120.1 (i32.const 7752) "\01") + (data $121 (i32.const 7772) ",") + (data $121.1 (i32.const 7784) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $122 (i32.const 7820) ",") + (data $122.1 (i32.const 7832) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $123 (i32.const 7868) "\1c") + (data $123.1 (i32.const 7880) "\01") + (data $124 (i32.const 7900) ",") + (data $124.1 (i32.const 7912) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $125 (i32.const 7948) ",") + (data $125.1 (i32.const 7960) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $126 (i32.const 7996) "\1c") + (data $126.1 (i32.const 8008) "\01") + (data $127 (i32.const 8028) ",") + (data $127.1 (i32.const 8040) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $128 (i32.const 8076) ",") + (data $128.1 (i32.const 8088) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $129 (i32.const 8124) "\1c") + (data $129.1 (i32.const 8136) "\01") + (data $130 (i32.const 8156) ",") + (data $130.1 (i32.const 8168) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $131 (i32.const 8204) ",") + (data $131.1 (i32.const 8216) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $132 (i32.const 8252) "\1c") + (data $132.1 (i32.const 8264) "\01") + (data $133 (i32.const 8284) ",") + (data $133.1 (i32.const 8296) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $134 (i32.const 8332) "\1c") + (data $134.1 (i32.const 8344) "\01") + (data $135 (i32.const 8364) "|") + (data $135.1 (i32.const 8376) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $136 (i32.const 8492) "|") + (data $136.1 (i32.const 8504) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") + (data $137 (i32.const 8620) "\1c") + (data $137.1 (i32.const 8632) "\0e\00\00\00\08\00\00\00\01") + (data $138 (i32.const 8652) "\1c") + (data $138.1 (i32.const 8664) "\0e\00\00\00\08\00\00\00\02") + (data $139 (i32.const 8684) "\1c") + (data $139.1 (i32.const 8696) "\0e\00\00\00\08\00\00\00\03") + (data $140 (i32.const 8716) "\1c") + (data $140.1 (i32.const 8728) "\0e\00\00\00\08\00\00\00\04") + (data $141 (i32.const 8748) "\1c") + (data $141.1 (i32.const 8760) "\0e\00\00\00\08\00\00\00\05") + (data $142 (i32.const 8780) "\1c") + (data $142.1 (i32.const 8792) "\0e\00\00\00\08\00\00\00\06") + (data $143 (i32.const 8812) ",") + (data $143.1 (i32.const 8824) "\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data $144 (i32.const 8860) "\1c") + (data $144.1 (i32.const 8872) "\0e\00\00\00\08\00\00\00\07") + (data $145 (i32.const 8892) "\1c") + (data $145.1 (i32.const 8904) "\0e\00\00\00\08\00\00\00\08") + (data $146 (i32.const 8924) "\1c") + (data $146.1 (i32.const 8936) "\0e\00\00\00\08\00\00\00\t") + (data $147 (i32.const 8956) "\1c") + (data $147.1 (i32.const 8968) "\0e\00\00\00\08\00\00\00\n") + (data $148 (i32.const 8988) "\1c") + (data $148.1 (i32.const 9000) "\0e\00\00\00\08\00\00\00\0b") + (data $149 (i32.const 9020) "\1c") + (data $149.1 (i32.const 9032) "\0e\00\00\00\08\00\00\00\0c") + (data $150 (i32.const 9052) "\1c") + (data $150.1 (i32.const 9064) "\0e\00\00\00\08\00\00\00\r") + (data $151 (i32.const 9084) "\1c") + (data $151.1 (i32.const 9096) "\0e\00\00\00\08\00\00\00\0e") + (data $152 (i32.const 9116) "\1c") + (data $152.1 (i32.const 9128) "\0e\00\00\00\08\00\00\00\0f") + (data $153 (i32.const 9148) "\1c") + (data $153.1 (i32.const 9160) "\0e\00\00\00\08\00\00\00\10") + (data $154 (i32.const 9180) "\1c") + (data $154.1 (i32.const 9192) "\0e\00\00\00\08\00\00\00\11") + (data $155 (i32.const 9212) "\1c") + (data $155.1 (i32.const 9224) "\0e\00\00\00\08\00\00\00\12") + (data $156 (i32.const 9244) "\1c") + (data $156.1 (i32.const 9256) "\0e\00\00\00\08\00\00\00\13") + (data $157 (i32.const 9276) "\1c") + (data $157.1 (i32.const 9288) "\0e\00\00\00\08\00\00\00\14") + (data $158 (i32.const 9308) "\1c") + (data $158.1 (i32.const 9320) "\0f\00\00\00\08\00\00\00\15") + (data $159 (i32.const 9340) "\1c") + (data $159.1 (i32.const 9352) "\0f\00\00\00\08\00\00\00\16") + (data $160 (i32.const 9372) "\1c") + (data $160.1 (i32.const 9384) "\0f\00\00\00\08\00\00\00\17") + (data $161 (i32.const 9404) "\1c") + (data $161.1 (i32.const 9416) "\0f\00\00\00\08\00\00\00\18") + (data $162 (i32.const 9436) "\1c") + (data $162.1 (i32.const 9448) "\0f\00\00\00\08\00\00\00\19") + (data $163 (i32.const 9468) "\1c") + (data $163.1 (i32.const 9480) "\11\00\00\00\08\00\00\00\1a") + (data $164 (i32.const 9500) "\1c") + (data $164.1 (i32.const 9512) "\12\00\00\00\08\00\00\00\1b") + (data $165 (i32.const 9532) "\1c") + (data $165.1 (i32.const 9544) "\13\00\00\00\08\00\00\00\1c") + (data $166 (i32.const 9564) "\1c") + (data $166.1 (i32.const 9576) "\13\00\00\00\08\00\00\00\1d") + (data $167 (i32.const 9596) "\1c") + (data $167.1 (i32.const 9608) "\13\00\00\00\08\00\00\00\1e") + (data $168 (i32.const 9628) "\1c") + (data $168.1 (i32.const 9640) "\0e\00\00\00\08\00\00\00\1f") + (data $169 (i32.const 9660) "\1c") + (data $169.1 (i32.const 9672) "\0e\00\00\00\08\00\00\00 ") + (data $170 (i32.const 9692) "\1c") + (data $170.1 (i32.const 9704) "\0e\00\00\00\08\00\00\00!") + (data $171 (i32.const 9724) "\1c") + (data $171.1 (i32.const 9736) "\0e\00\00\00\08\00\00\00\"") + (data $172 (i32.const 9756) "\1c") + (data $172.1 (i32.const 9768) "\14\00\00\00\08\00\00\00#") + (data $173 (i32.const 9788) "\1c") + (data $173.1 (i32.const 9800) "\14\00\00\00\08\00\00\00$") + (data $174 (i32.const 9820) "\1c") + (data $174.1 (i32.const 9832) "\15\00\00\00\08\00\00\00%") + (data $175 (i32.const 9852) "\1c") + (data $175.1 (i32.const 9864) "\15\00\00\00\08\00\00\00&") + (data $176 (i32.const 9884) "\1c") + (data $176.1 (i32.const 9896) "\14\00\00\00\08\00\00\00\'") + (data $177 (i32.const 9916) "\1c") + (data $177.1 (i32.const 9928) "\14\00\00\00\08\00\00\00(") + (data $178 (i32.const 9948) "\1c") + (data $178.1 (i32.const 9960) "\14\00\00\00\08\00\00\00)") + (data $179 (i32.const 9980) "\1c") + (data $179.1 (i32.const 9992) "\14\00\00\00\08\00\00\00*") + (data $180 (i32.const 10012) "\1c") + (data $180.1 (i32.const 10024) "\14\00\00\00\08\00\00\00+") + (data $181 (i32.const 10044) "\1c") + (data $181.1 (i32.const 10056) "\15\00\00\00\08\00\00\00,") + (data $182 (i32.const 10076) "\1c") + (data $182.1 (i32.const 10088) "\15\00\00\00\08\00\00\00-") + (data $183 (i32.const 10108) "\1c") + (data $183.1 (i32.const 10120) "\14\00\00\00\08\00\00\00.") + (data $184 (i32.const 10140) "\1c") + (data $184.1 (i32.const 10152) "\14\00\00\00\08\00\00\00/") + (data $185 (i32.const 10172) "\1c") + (data $185.1 (i32.const 10184) "\14\00\00\00\08\00\00\000") + (data $186 (i32.const 10204) "\bc") + (data $186.1 (i32.const 10216) "\02\00\00\00\ac\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?") + (data $187 (i32.const 10396) "\1c") + (data $187.1 (i32.const 10408) "\01\00\00\00\0c\00\00\00\00\00\00@\00\00\80\bf") + (data $188 (i32.const 10428) "\1c") + (data $188.1 (i32.const 10440) "\18\00\00\00\08\00\00\001") + (data $189 (i32.const 10460) "\1c") + (data $189.1 (i32.const 10472) "\01\00\00\00\0c\00\00\00\00\00\80\bf\00\00\00\00\00\00\00@") + (data $190 (i32.const 10492) "<") + (data $190.1 (i32.const 10504) "\01\00\00\00 \00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f") + (data $191 (i32.const 10556) "<") + (data $191.1 (i32.const 10568) "\01\00\00\00 \00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f") + (data $192 (i32.const 10620) "\\") + (data $192.1 (i32.const 10632) "\01\00\00\00@") + (data $192.2 (i32.const 10646) "\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?") + (data $192.3 (i32.const 10686) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") + (data $193 (i32.const 10716) "\1c") + (data $193.1 (i32.const 10728) "\19\00\00\00\08\00\00\002") + (data $194 (i32.const 10748) "\\") + (data $194.1 (i32.const 10760) "\01\00\00\00@") + (data $194.2 (i32.const 10774) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") + (data $194.3 (i32.const 10806) "\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") + (data $195 (i32.const 10844) ",") + (data $195.1 (i32.const 10856) "\01\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") + (data $196 (i32.const 10892) "\1c") + (data $196.1 (i32.const 10904) "\1a\00\00\00\08\00\00\003") + (data $197 (i32.const 10924) ",") + (data $197.1 (i32.const 10936) "\01\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") + (data $198 (i32.const 10972) ",") + (data $198.1 (i32.const 10984) "\01\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") + (data $199 (i32.const 11020) "\1c") + (data $199.1 (i32.const 11032) "\1b\00\00\00\08\00\00\004") (data $200 (i32.const 11052) ",") - (data $200.1 (i32.const 11064) "\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data $200.1 (i32.const 11064) "\01\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") (data $201 (i32.const 11100) "\1c") - (data $201.1 (i32.const 11112) "\1a\00\00\00\08\00\00\005") + (data $201.1 (i32.const 11112) "\01") (data $202 (i32.const 11132) "\1c") (data $202.1 (i32.const 11144) "\01\00\00\00\04\00\00\00\01") (data $203 (i32.const 11164) "\1c") - (data $203.1 (i32.const 11176) "\01\00\00\00\08\00\00\00\01\00\00\00\02") - (data $204 (i32.const 11196) "\1c") - (data $204.1 (i32.const 11208) "\1c\00\00\00\08\00\00\006") - (data $205 (i32.const 11228) "\1c") - (data $205.1 (i32.const 11240) "\1a\00\00\00\08\00\00\007") - (data $206 (i32.const 11260) "\1c") - (data $206.1 (i32.const 11272) "\1a\00\00\00\08\00\00\008") - (data $207 (i32.const 11292) "\1c") - (data $207.1 (i32.const 11304) "\1a\00\00\00\08\00\00\009") - (data $208 (i32.const 11324) "\1c") - (data $208.1 (i32.const 11336) "\1a\00\00\00\08\00\00\00:") - (data $209 (i32.const 11356) "\1c") - (data $209.1 (i32.const 11368) "\1e\00\00\00\08\00\00\00;") - (data $210 (i32.const 11388) "\1c") - (data $210.1 (i32.const 11400) "!\00\00\00\08\00\00\00<") - (data $211 (i32.const 11420) "\1c") - (data $211.1 (i32.const 11432) "\02\00\00\00\02\00\00\00a") - (data $212 (i32.const 11452) "\1c") - (data $212.1 (i32.const 11464) "\02\00\00\00\02\00\00\00b") - (data $213 (i32.const 11484) "\1c") - (data $213.1 (i32.const 11496) "\02\00\00\00\04\00\00\00a\00b") - (data $214 (i32.const 11516) "\1c") - (data $214.1 (i32.const 11528) "\02\00\00\00\04\00\00\00b\00a") - (data $215 (i32.const 11548) "\1c") - (data $215.1 (i32.const 11560) "\02") - (data $216 (i32.const 11580) ",") - (data $216.1 (i32.const 11592) "\01\00\00\00\1c\00\00\00\b0,\00\00\d0,\00\00\b0,\00\00\f0,\00\00\10-\00\000-") - (data $217 (i32.const 11628) ",") - (data $217.1 (i32.const 11640) "\01\00\00\00\1c\00\00\000-\00\00\b0,\00\00\b0,\00\00\f0,\00\00\d0,\00\00\10-") + (data $203.1 (i32.const 11176) "\01\00\00\00\08\00\00\00\02\00\00\00\01") + (data $204 (i32.const 11196) ",") + (data $204.1 (i32.const 11208) "\01\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01") + (data $205 (i32.const 11244) ",") + (data $205.1 (i32.const 11256) "\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data $206 (i32.const 11292) "\1c") + (data $206.1 (i32.const 11304) "\1a\00\00\00\08\00\00\005") + (data $207 (i32.const 11324) "\1c") + (data $207.1 (i32.const 11336) "\01\00\00\00\04\00\00\00\01") + (data $208 (i32.const 11356) "\1c") + (data $208.1 (i32.const 11368) "\01\00\00\00\08\00\00\00\01\00\00\00\02") + (data $209 (i32.const 11388) "\1c") + (data $209.1 (i32.const 11400) "\1c\00\00\00\08\00\00\006") + (data $210 (i32.const 11420) "\1c") + (data $210.1 (i32.const 11432) "\1a\00\00\00\08\00\00\007") + (data $211 (i32.const 11452) "\1c") + (data $211.1 (i32.const 11464) "\1a\00\00\00\08\00\00\008") + (data $212 (i32.const 11484) "\1c") + (data $212.1 (i32.const 11496) "\1a\00\00\00\08\00\00\009") + (data $213 (i32.const 11516) "\1c") + (data $213.1 (i32.const 11528) "\1a\00\00\00\08\00\00\00:") + (data $214 (i32.const 11548) "\1c") + (data $214.1 (i32.const 11560) "\1e\00\00\00\08\00\00\00;") + (data $215 (i32.const 11580) "\1c") + (data $215.1 (i32.const 11592) "!\00\00\00\08\00\00\00<") + (data $216 (i32.const 11612) "\1c") + (data $216.1 (i32.const 11624) "\02\00\00\00\02\00\00\00a") + (data $217 (i32.const 11644) "\1c") + (data $217.1 (i32.const 11656) "\02\00\00\00\02\00\00\00b") (data $218 (i32.const 11676) "\1c") - (data $218.1 (i32.const 11688) "#\00\00\00\08\00\00\00=") + (data $218.1 (i32.const 11688) "\02\00\00\00\04\00\00\00a\00b") (data $219 (i32.const 11708) "\1c") - (data $219.1 (i32.const 11720) "$\00\00\00\08\00\00\00>") - (data $220 (i32.const 11740) "\1c") - (data $220.1 (i32.const 11752) "\01\00\00\00\02\00\00\00\01") - (data $221 (i32.const 11772) "\1c") - (data $221.1 (i32.const 11784) "\02\00\00\00\08\00\00\00t\00r\00u\00e") - (data $222 (i32.const 11804) "\1c") - (data $222.1 (i32.const 11816) "\02\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data $223 (i32.const 11836) "\1c") - (data $223.1 (i32.const 11848) "\02\00\00\00\02\00\00\00,") - (data $224 (i32.const 11868) ",") - (data $224.1 (i32.const 11880) "\02\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e") - (data $225 (i32.const 11916) "\1c") - (data $225.1 (i32.const 11928) "\01\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data $226 (i32.const 11948) "\1c") - (data $226.1 (i32.const 11960) "\02\00\00\00\n\00\00\001\00-\002\00-\003") - (data $227 (i32.const 11980) "\1c") - (data $227.1 (i32.const 11992) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data $228 (i32.const 12012) "\1c") - (data $228.1 (i32.const 12024) "\02\00\00\00\02\00\00\00-") - (data $229 (i32.const 12044) "\1c") - (data $229.1 (i32.const 12056) "\01\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80") - (data $230 (i32.const 12076) "\1c") - (data $230.1 (i32.const 12088) "\02\00\00\00\04\00\00\00_\00_") - (data $231 (i32.const 12108) "L") - (data $231.1 (i32.const 12120) "\02\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008") - (data $232 (i32.const 12188) "L") - (data $232.1 (i32.const 12200) "\01\00\00\000") - (data $232.2 (i32.const 12222) "\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") - (data $233 (i32.const 12268) "\1c") - (data $233.1 (i32.const 12280) "\02\00\00\00\04\00\00\00,\00 ") - (data $234 (i32.const 12300) "\1c") - (data $234.1 (i32.const 12312) "\02\00\00\00\06\00\00\000\00.\000") - (data $235 (i32.const 12332) "\1c") - (data $235.1 (i32.const 12344) "\02\00\00\00\06\00\00\00N\00a\00N") - (data $236 (i32.const 12364) ",") - (data $236.1 (i32.const 12376) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data $237 (i32.const 12412) ",") - (data $237.1 (i32.const 12424) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data $239 (i32.const 12520) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") - (data $248 (i32.const 13868) "\1c") - (data $248.1 (i32.const 13880) "\01") - (data $249 (i32.const 13900) "\1c") - (data $249.1 (i32.const 13912) "\01\00\00\00\04\00\00\00\01") - (data $250 (i32.const 13932) "\1c") - (data $250.1 (i32.const 13944) "\01\00\00\00\08\00\00\00\01\00\00\00\02") - (data $251 (i32.const 13964) ",") - (data $251.1 (i32.const 13976) "\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data $252 (i32.const 14012) "\1c") - (data $252.1 (i32.const 14024) "\02\00\00\00\06\00\00\001\00,\002") - (data $253 (i32.const 14044) ",") - (data $253.1 (i32.const 14056) "\02\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003") + (data $219.1 (i32.const 11720) "\02\00\00\00\04\00\00\00b\00a") + (data $220 (i32.const 11740) ",") + (data $220.1 (i32.const 11752) "\01\00\00\00\1c\00\00\00p-\00\00\90-\00\00p-\00\00\b0-\00\00\d0-\00\00`\04") + (data $221 (i32.const 11788) ",") + (data $221.1 (i32.const 11800) "\01\00\00\00\1c\00\00\00`\04\00\00p-\00\00p-\00\00\b0-\00\00\90-\00\00\d0-") + (data $222 (i32.const 11836) "\1c") + (data $222.1 (i32.const 11848) "#\00\00\00\08\00\00\00=") + (data $223 (i32.const 11868) "\1c") + (data $223.1 (i32.const 11880) "$\00\00\00\08\00\00\00>") + (data $224 (i32.const 11900) "\1c") + (data $224.1 (i32.const 11912) "\01\00\00\00\02\00\00\00\01") + (data $225 (i32.const 11932) "\1c") + (data $225.1 (i32.const 11944) "\02\00\00\00\08\00\00\00t\00r\00u\00e") + (data $226 (i32.const 11964) "\1c") + (data $226.1 (i32.const 11976) "\02\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data $227 (i32.const 11996) "\1c") + (data $227.1 (i32.const 12008) "\02\00\00\00\02\00\00\00,") + (data $228 (i32.const 12028) ",") + (data $228.1 (i32.const 12040) "\02\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e") + (data $229 (i32.const 12076) "\1c") + (data $229.1 (i32.const 12088) "\01\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") + (data $230 (i32.const 12108) "\1c") + (data $230.1 (i32.const 12120) "\02\00\00\00\n\00\00\001\00-\002\00-\003") + (data $231 (i32.const 12140) "\1c") + (data $231.1 (i32.const 12152) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $232 (i32.const 12172) "\1c") + (data $232.1 (i32.const 12184) "\02\00\00\00\02\00\00\00-") + (data $233 (i32.const 12204) "\1c") + (data $233.1 (i32.const 12216) "\01\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80") + (data $234 (i32.const 12236) "\1c") + (data $234.1 (i32.const 12248) "\02\00\00\00\04\00\00\00_\00_") + (data $235 (i32.const 12268) "L") + (data $235.1 (i32.const 12280) "\02\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008") + (data $236 (i32.const 12348) "L") + (data $236.1 (i32.const 12360) "\01\00\00\000") + (data $236.2 (i32.const 12382) "\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") + (data $237 (i32.const 12428) "\1c") + (data $237.1 (i32.const 12440) "\02\00\00\00\04\00\00\00,\00 ") + (data $238 (i32.const 12460) "\1c") + (data $238.1 (i32.const 12472) "\02\00\00\00\06\00\00\000\00.\000") + (data $239 (i32.const 12492) "\1c") + (data $239.1 (i32.const 12504) "\02\00\00\00\06\00\00\00N\00a\00N") + (data $240 (i32.const 12524) ",") + (data $240.1 (i32.const 12536) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data $241 (i32.const 12572) ",") + (data $241.1 (i32.const 12584) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data $243 (i32.const 12680) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") + (data $252 (i32.const 14028) "\1c") + (data $252.1 (i32.const 14040) "\01") + (data $253 (i32.const 14060) "\1c") + (data $253.1 (i32.const 14072) "\01\00\00\00\04\00\00\00\01") (data $254 (i32.const 14092) "\1c") - (data $254.1 (i32.const 14104) "\01\00\00\00\03\00\00\00\01\ff") - (data $255 (i32.const 14124) "\1c") - (data $255.1 (i32.const 14136) "\02\00\00\00\0c\00\00\001\00,\00-\001\00,\000") - (data $256 (i32.const 14156) "\1c") - (data $256.1 (i32.const 14168) "\01\00\00\00\03\00\00\00\80\81\80") - (data $257 (i32.const 14188) ",") - (data $257.1 (i32.const 14200) "\02\00\00\00\1c\00\00\00-\001\002\008\00,\00-\001\002\007\00,\00-\001\002\008") - (data $258 (i32.const 14236) "\1c") - (data $258.1 (i32.const 14248) "\01\00\00\00\06\00\00\00\01\00\ff\ff") - (data $259 (i32.const 14268) ",") - (data $259.1 (i32.const 14280) "\02\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000") + (data $254.1 (i32.const 14104) "\01\00\00\00\08\00\00\00\01\00\00\00\02") + (data $255 (i32.const 14124) ",") + (data $255.1 (i32.const 14136) "\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data $256 (i32.const 14172) "\1c") + (data $256.1 (i32.const 14184) "\02\00\00\00\06\00\00\001\00,\002") + (data $257 (i32.const 14204) ",") + (data $257.1 (i32.const 14216) "\02\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003") + (data $258 (i32.const 14252) "\1c") + (data $258.1 (i32.const 14264) "\01\00\00\00\03\00\00\00\01\ff") + (data $259 (i32.const 14284) "\1c") + (data $259.1 (i32.const 14296) "\02\00\00\00\0c\00\00\001\00,\00-\001\00,\000") (data $260 (i32.const 14316) "\1c") - (data $260.1 (i32.const 14328) "\01\00\00\00\04\00\00\00\00\80\01\ff") + (data $260.1 (i32.const 14328) "\01\00\00\00\03\00\00\00\80\81\80") (data $261 (i32.const 14348) ",") - (data $261.1 (i32.const 14360) "\02\00\00\00\16\00\00\00-\003\002\007\006\008\00,\00-\002\005\005") + (data $261.1 (i32.const 14360) "\02\00\00\00\1c\00\00\00-\001\002\008\00,\00-\001\002\007\00,\00-\001\002\008") (data $262 (i32.const 14396) "\1c") - (data $262.1 (i32.const 14408) "\01\00\00\00\08\00\00\00\00\00\00\80\80\ff\ff\ff") - (data $263 (i32.const 14428) "<") - (data $263.1 (i32.const 14440) "\02\00\00\00 \00\00\00-\002\001\004\007\004\008\003\006\004\008\00,\00-\001\002\008") - (data $264 (i32.const 14492) ",") - (data $264.1 (i32.const 14504) "\01\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") - (data $265 (i32.const 14540) "L") - (data $265.1 (i32.const 14552) "\02\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000") - (data $266 (i32.const 14620) "<") - (data $266.1 (i32.const 14632) "\01\00\00\00(\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") - (data $267 (i32.const 14684) "\9c") - (data $267.1 (i32.const 14696) "\02\00\00\00~\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data $268 (i32.const 14844) ",") - (data $268.1 (i32.const 14856) "\01\00\00\00\1c\00\00\000-\00\00\b0,\00\00\b0,\00\00\f0,\00\00\d0,\00\00\10-") - (data $269 (i32.const 14892) ",") - (data $269.1 (i32.const 14904) "\02\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") - (data $270 (i32.const 14940) "\1c") - (data $270.1 (i32.const 14952) "\02\00\00\00\02\00\00\002") - (data $271 (i32.const 14972) "\1c") - (data $271.1 (i32.const 14984) "\02\00\00\00\02\00\00\004") + (data $262.1 (i32.const 14408) "\01\00\00\00\06\00\00\00\01\00\ff\ff") + (data $263 (i32.const 14428) ",") + (data $263.1 (i32.const 14440) "\02\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000") + (data $264 (i32.const 14476) "\1c") + (data $264.1 (i32.const 14488) "\01\00\00\00\04\00\00\00\00\80\01\ff") + (data $265 (i32.const 14508) ",") + (data $265.1 (i32.const 14520) "\02\00\00\00\16\00\00\00-\003\002\007\006\008\00,\00-\002\005\005") + (data $266 (i32.const 14556) "\1c") + (data $266.1 (i32.const 14568) "\01\00\00\00\08\00\00\00\00\00\00\80\80\ff\ff\ff") + (data $267 (i32.const 14588) "<") + (data $267.1 (i32.const 14600) "\02\00\00\00 \00\00\00-\002\001\004\007\004\008\003\006\004\008\00,\00-\001\002\008") + (data $268 (i32.const 14652) ",") + (data $268.1 (i32.const 14664) "\01\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") + (data $269 (i32.const 14700) "L") + (data $269.1 (i32.const 14712) "\02\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000") + (data $270 (i32.const 14780) "<") + (data $270.1 (i32.const 14792) "\01\00\00\00(\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") + (data $271 (i32.const 14844) "\9c") + (data $271.1 (i32.const 14856) "\02\00\00\00~\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") (data $272 (i32.const 15004) ",") - (data $272.1 (i32.const 15016) "\01\00\00\00\10\00\00\00\005\00\00p:\00\00\00\00\00\00\90:") - (data $273 (i32.const 15052) "\1c") - (data $273.1 (i32.const 15064) "\02\00\00\00\0c\00\00\001\00,\002\00,\00,\004") - (data $274 (i32.const 15084) "\1c") - (data $274.1 (i32.const 15096) "\01\00\00\00\08\00\00\00\01\00\00\00\02") - (data $275 (i32.const 15116) "\1c") - (data $275.1 (i32.const 15128) "\01\00\00\00\08\00\00\00\03\00\00\00\04") - (data $276 (i32.const 15148) ",") - (data $276.1 (i32.const 15160) "\02\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") - (data $277 (i32.const 15196) "\1c") - (data $277.1 (i32.const 15208) "\01\00\00\00\02\00\00\00\01\02") - (data $278 (i32.const 15228) "\1c") - (data $278.1 (i32.const 15240) "\01\00\00\00\02\00\00\00\03\04") - (data $279 (i32.const 15260) "\1c") - (data $279.1 (i32.const 15272) "\01\00\00\00\04\00\00\00\01") - (data $280 (i32.const 15292) "\1c") - (data $280.1 (i32.const 15304) "\01\00\00\00\04") - (data $281 (i32.const 15324) "\1c") - (data $281.1 (i32.const 15336) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data $282 (i32.const 15356) "\1c") - (data $282.1 (i32.const 15368) "\01\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06") - (data $283 (i32.const 15388) "\1c") - (data $283.1 (i32.const 15400) "\01\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t") - (data $284 (i32.const 15420) "\1c") - (data $284.1 (i32.const 15432) "\02\00\00\00\06\00\00\00o\00n\00e") - (data $285 (i32.const 15452) "\1c") - (data $285.1 (i32.const 15464) "\01\00\00\00\04\00\00\00P<") - (data $286 (i32.const 15484) "\1c") - (data $286.1 (i32.const 15496) "\02\00\00\00\06\00\00\00t\00w\00o") - (data $287 (i32.const 15516) "\1c") - (data $287.1 (i32.const 15528) "\02\00\00\00\n\00\00\00t\00h\00r\00e\00e") - (data $288 (i32.const 15548) "\1c") - (data $288.1 (i32.const 15560) "\01\00\00\00\0c\00\00\00\90<\00\00\00\00\00\00\b0<") - (data $289 (i32.const 15580) "\1c") - (data $289.1 (i32.const 15592) "\02\00\00\00\08\00\00\00f\00o\00u\00r") - (data $290 (i32.const 15612) "\1c") - (data $290.1 (i32.const 15624) "\02\00\00\00\08\00\00\00f\00i\00v\00e") - (data $291 (i32.const 15644) "\1c") - (data $291.1 (i32.const 15656) "\02\00\00\00\06\00\00\00s\00i\00x") - (data $292 (i32.const 15676) "\1c") - (data $292.1 (i32.const 15688) "\01\00\00\00\0c\00\00\00\f0<\00\00\10=\00\000=") - (data $293 (i32.const 15708) "\1c") - (data $293.1 (i32.const 15720) "\02\00\00\00\n\00\00\00s\00e\00v\00e\00n") - (data $294 (i32.const 15740) "\1c") - (data $294.1 (i32.const 15752) "\01\00\00\00\04\00\00\00p=") - (data $295 (i32.const 15772) "<") - (data $295.1 (i32.const 15784) "\01\00\00\00 \00\00\00P<\00\00\90<\00\00\00\00\00\00\b0<\00\00\f0<\00\00\10=\00\000=\00\00p=") + (data $272.1 (i32.const 15016) "\01\00\00\00\1c\00\00\00`\04\00\00p-\00\00p-\00\00\b0-\00\00\90-\00\00\d0-") + (data $273 (i32.const 15052) ",") + (data $273.1 (i32.const 15064) "\02\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") + (data $274 (i32.const 15100) "\1c") + (data $274.1 (i32.const 15112) "\02\00\00\00\02\00\00\002") + (data $275 (i32.const 15132) "\1c") + (data $275.1 (i32.const 15144) "\02\00\00\00\02\00\00\004") + (data $276 (i32.const 15164) ",") + (data $276.1 (i32.const 15176) "\01\00\00\00\10\00\00\00\a05\00\00\10;\00\00\00\00\00\000;") + (data $277 (i32.const 15212) "\1c") + (data $277.1 (i32.const 15224) "\02\00\00\00\0c\00\00\001\00,\002\00,\00,\004") + (data $278 (i32.const 15244) "\1c") + (data $278.1 (i32.const 15256) "\01\00\00\00\08\00\00\00\01\00\00\00\02") + (data $279 (i32.const 15276) "\1c") + (data $279.1 (i32.const 15288) "\01\00\00\00\08\00\00\00\03\00\00\00\04") + (data $280 (i32.const 15308) ",") + (data $280.1 (i32.const 15320) "\02\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") + (data $281 (i32.const 15356) "\1c") + (data $281.1 (i32.const 15368) "\01\00\00\00\02\00\00\00\01\02") + (data $282 (i32.const 15388) "\1c") + (data $282.1 (i32.const 15400) "\01\00\00\00\02\00\00\00\03\04") + (data $283 (i32.const 15420) "\1c") + (data $283.1 (i32.const 15432) "\01\00\00\00\04\00\00\00\01") + (data $284 (i32.const 15452) "\1c") + (data $284.1 (i32.const 15464) "\01\00\00\00\04") + (data $285 (i32.const 15484) "\1c") + (data $285.1 (i32.const 15496) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $286 (i32.const 15516) "\1c") + (data $286.1 (i32.const 15528) "\01\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06") + (data $287 (i32.const 15548) "\1c") + (data $287.1 (i32.const 15560) "\01\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t") + (data $288 (i32.const 15580) "\1c") + (data $288.1 (i32.const 15592) "\02\00\00\00\06\00\00\00o\00n\00e") + (data $289 (i32.const 15612) "\1c") + (data $289.1 (i32.const 15624) "\01\00\00\00\04\00\00\00\f0<") + (data $290 (i32.const 15644) "\1c") + (data $290.1 (i32.const 15656) "\02\00\00\00\06\00\00\00t\00w\00o") + (data $291 (i32.const 15676) "\1c") + (data $291.1 (i32.const 15688) "\02\00\00\00\n\00\00\00t\00h\00r\00e\00e") + (data $292 (i32.const 15708) "\1c") + (data $292.1 (i32.const 15720) "\01\00\00\00\0c\00\00\000=\00\00\00\00\00\00P=") + (data $293 (i32.const 15740) "\1c") + (data $293.1 (i32.const 15752) "\02\00\00\00\08\00\00\00f\00o\00u\00r") + (data $294 (i32.const 15772) "\1c") + (data $294.1 (i32.const 15784) "\02\00\00\00\08\00\00\00f\00i\00v\00e") + (data $295 (i32.const 15804) "\1c") + (data $295.1 (i32.const 15816) "\02\00\00\00\06\00\00\00s\00i\00x") (data $296 (i32.const 15836) "\1c") - (data $296.1 (i32.const 15848) "\01") + (data $296.1 (i32.const 15848) "\01\00\00\00\0c\00\00\00\90=\00\00\b0=\00\00\d0=") (data $297 (i32.const 15868) "\1c") - (data $297.1 (i32.const 15880) "\01") + (data $297.1 (i32.const 15880) "\02\00\00\00\n\00\00\00s\00e\00v\00e\00n") (data $298 (i32.const 15900) "\1c") - (data $298.1 (i32.const 15912) "\01\00\00\00\04\00\00\00\01") - (data $299 (i32.const 15932) "\1c") - (data $299.1 (i32.const 15944) "\01\00\00\00\04\00\00\00\02") - (data $300 (i32.const 15964) "\1c") - (data $300.1 (i32.const 15976) ".\00\00\00\08\00\00\00?") - (data $301 (i32.const 16000) "/\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00 \00\00\00A\00\00\00B\00\00\00\02\01\00\00\02\19\00\00\02A\00\00\82\00\00\00\02\1a\00\00\02a") - (data $301.1 (i32.const 16068) "\02A") - (data $301.2 (i32.const 16092) " \00\00\00\02A") - (data $301.3 (i32.const 16120) "\02A\00\00\00\00\00\00 \00\00\00\02A\00\00\00\00\00\00\02a") - (data $301.4 (i32.const 16152) "B\00\00\00B\08\00\00\82\08\00\00\02\02\00\00\02\n\00\00\02A\00\00\02A\00\00\02A\00\00\02A") + (data $298.1 (i32.const 15912) "\01\00\00\00\04\00\00\00\10>") + (data $299 (i32.const 15932) "<") + (data $299.1 (i32.const 15944) "\01\00\00\00 \00\00\00\f0<\00\000=\00\00\00\00\00\00P=\00\00\90=\00\00\b0=\00\00\d0=\00\00\10>") + (data $300 (i32.const 15996) "\1c") + (data $300.1 (i32.const 16008) "\01") + (data $301 (i32.const 16028) "\1c") + (data $301.1 (i32.const 16040) "\01") + (data $302 (i32.const 16060) "\1c") + (data $302.1 (i32.const 16072) "\01\00\00\00\04\00\00\00\01") + (data $303 (i32.const 16092) "\1c") + (data $303.1 (i32.const 16104) "\01\00\00\00\04\00\00\00\02") + (data $304 (i32.const 16124) "\1c") + (data $304.1 (i32.const 16136) ".\00\00\00\08\00\00\00?") + (data $305 (i32.const 16160) "/\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00 \00\00\00A\00\00\00B\00\00\00\02\01\00\00\02\19\00\00\02A\00\00\82\00\00\00\02\1a\00\00\02a") + (data $305.1 (i32.const 16228) "\02A") + (data $305.2 (i32.const 16252) " \00\00\00\02A") + (data $305.3 (i32.const 16280) "\02A\00\00\00\00\00\00 \00\00\00\02A\00\00\00\00\00\00\02a") + (data $305.4 (i32.const 16312) "B\00\00\00B\08\00\00\82\08\00\00\02\02\00\00\02\n\00\00\02A\00\00\02A\00\00\02A\00\00\02A") (table $0 64 64 funcref) (elem $0 (i32.const 1) $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|2 $start:std/array~anonymous|5 $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|5 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|18 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|20 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|30 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|34 $start:std/array~anonymous|34 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|34 $start:std/array~anonymous|40 $start:std/array~anonymous|34 $start:std/array~anonymous|34 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|34 $start:std/array~anonymous|40 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/array/assertStableSortedForComplexObjects~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|49 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|49 $start:std/array~anonymous|52 $std/array/assertStableSortedForComplexObjects~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $start:std/array~anonymous|54) (export "memory" (memory $0)) @@ -669,7 +676,7 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 10032 + i32.const 10224 call $~lib/rt/itcms/__visit global.get $std/array/inputStabArr local.tee $0 @@ -685,17 +692,17 @@ end i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3424 call $~lib/rt/itcms/__visit - i32.const 2640 + i32.const 4608 call $~lib/rt/itcms/__visit - i32.const 6416 + i32.const 8384 call $~lib/rt/itcms/__visit i32.const 1152 call $~lib/rt/itcms/__visit - i32.const 8144 + i32.const 2208 call $~lib/rt/itcms/__visit - i32.const 9200 + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -758,7 +765,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$731 + block $__inlined_func$~lib/rt/itcms/Object#unlink$734 local.get $0 i32.load offset=4 i32.const -4 @@ -770,7 +777,7 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 48960 + i32.const 49120 i32.lt_u i32.and i32.eqz @@ -782,7 +789,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$731 + br $__inlined_func$~lib/rt/itcms/Object#unlink$734 end local.get $0 i32.load offset=8 @@ -819,7 +826,7 @@ i32.const 1 else local.get $1 - i32.const 16000 + i32.const 16160 i32.load i32.gt_u if @@ -833,7 +840,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 16004 + i32.const 16164 i32.add i32.load i32.const 32 @@ -1417,10 +1424,10 @@ if unreachable end - i32.const 48960 + i32.const 49120 i32.const 0 i32.store - i32.const 50528 + i32.const 50688 i32.const 0 i32.store loop $for-loop|0 @@ -1431,7 +1438,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 48960 + i32.const 49120 i32.add i32.const 0 i32.store offset=4 @@ -1449,7 +1456,7 @@ i32.add i32.const 2 i32.shl - i32.const 48960 + i32.const 49120 i32.add i32.const 0 i32.store offset=96 @@ -1467,21 +1474,21 @@ br $for-loop|0 end end - i32.const 48960 - i32.const 50532 + i32.const 49120 + i32.const 50692 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 48960 + i32.const 49120 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 - i32.const 48960 + i32.const 49120 i32.lt_u if return @@ -1609,7 +1616,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 48960 + i32.const 49120 i32.lt_u if local.get $0 @@ -1705,7 +1712,7 @@ unreachable end local.get $0 - i32.const 48960 + i32.const 49120 i32.lt_u if local.get $0 @@ -2094,7 +2101,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$68 + block $__inlined_func$~lib/rt/itcms/interrupt$69 i32.const 2048 local.set $2 loop $do-loop|0 @@ -2115,7 +2122,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$68 + br $__inlined_func$~lib/rt/itcms/interrupt$69 end local.get $2 i32.const 0 @@ -2191,6 +2198,110 @@ memory.fill local.get $1 ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 @@ -2300,110 +2411,6 @@ i32.add global.set $std/array/i ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 7724 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 7724 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 7724 - i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 7724 - i32.add - i32.load - i32.store - else - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 - end - ) (func $start:std/array~anonymous|25 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 @@ -2951,7 +2958,7 @@ global.set $~argumentsLength local.get $4 local.get $7 - i32.const 10544 + i32.const 10736 i32.load call_indirect (type $6) i32.const 0 @@ -2984,7 +2991,7 @@ global.set $~argumentsLength local.get $7 local.get $4 - i32.const 10544 + i32.const 10736 i32.load call_indirect (type $6) i32.const 0 @@ -3026,7 +3033,7 @@ global.set $~argumentsLength local.get $4 local.get $5 - i32.const 10544 + i32.const 10736 i32.load call_indirect (type $6) i32.const 0 @@ -3087,7 +3094,7 @@ f64.load i32.const 2 global.set $~argumentsLength - i32.const 10544 + i32.const 10736 i32.load call_indirect (type $6) i32.const 0 @@ -3109,7 +3116,7 @@ f64.load i32.const 2 global.set $~argumentsLength - i32.const 10544 + i32.const 10736 i32.load call_indirect (type $6) i32.const 31 @@ -3180,7 +3187,7 @@ f64.load i32.const 2 global.set $~argumentsLength - i32.const 10544 + i32.const 10736 i32.load call_indirect (type $6) i32.const 0 @@ -3287,7 +3294,7 @@ global.set $~argumentsLength local.get $6 local.get $7 - i32.const 10544 + i32.const 10736 i32.load call_indirect (type $6) i32.const 0 @@ -3824,7 +3831,7 @@ global.set $~argumentsLength local.get $3 local.get $5 - i32.const 10848 + i32.const 11040 i32.load call_indirect (type $0) i32.const 0 @@ -3857,7 +3864,7 @@ global.set $~argumentsLength local.get $7 local.get $3 - i32.const 10848 + i32.const 11040 i32.load call_indirect (type $0) i32.const 0 @@ -3899,7 +3906,7 @@ global.set $~argumentsLength local.get $7 local.get $4 - i32.const 10848 + i32.const 11040 i32.load call_indirect (type $0) i32.const 0 @@ -3959,7 +3966,7 @@ i32.load i32.const 2 global.set $~argumentsLength - i32.const 10848 + i32.const 11040 i32.load call_indirect (type $0) i32.const 0 @@ -3981,7 +3988,7 @@ i32.load i32.const 2 global.set $~argumentsLength - i32.const 10848 + i32.const 11040 i32.load call_indirect (type $0) i32.const 31 @@ -4052,7 +4059,7 @@ i32.load i32.const 2 global.set $~argumentsLength - i32.const 10848 + i32.const 11040 i32.load call_indirect (type $0) i32.const 0 @@ -4157,7 +4164,7 @@ global.set $~argumentsLength local.get $6 local.get $7 - i32.const 10848 + i32.const 11040 i32.load call_indirect (type $0) i32.const 0 @@ -4695,7 +4702,7 @@ local.get $7 i32.const 2 i32.shl - i32.const 13392 + i32.const 13552 i32.add i64.load32_u local.get $2 @@ -4818,7 +4825,7 @@ i32.sub i32.const 2 i32.shl - i32.const 13392 + i32.const 13552 i32.add i64.load32_u i64.mul @@ -5325,14 +5332,14 @@ i32.sub global.set $~lib/util/number/_K local.get $9 - i32.const 12520 + i32.const 12680 i32.add i64.load global.set $~lib/util/number/_frc_pow local.get $5 i32.const 1 i32.shl - i32.const 13216 + i32.const 13376 i32.add i32.load16_s global.set $~lib/util/number/_exp_pow @@ -5854,7 +5861,7 @@ i32.div_u i32.const 2 i32.shl - i32.const 7724 + i32.const 1788 i32.add i64.load32_u local.get $4 @@ -5862,7 +5869,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 7724 + i32.const 1788 i32.add i64.load32_u i64.const 32 @@ -5885,7 +5892,7 @@ i32.div_u i32.const 2 i32.shl - i32.const 7724 + i32.const 1788 i32.add i64.load32_u local.get $3 @@ -5893,7 +5900,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 7724 + i32.const 1788 i32.add i64.load32_u i64.const 32 @@ -6233,164 +6240,214 @@ call $~lib/util/number/utoa32_dec_lut local.get $2 ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/array + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - block $folding-inner4 - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $std/array/Proxy - block $std/array/Dim - block $~lib/typedarray/Uint8Array - block $std/array/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $std/array/Ref $~lib/typedarray/Uint8Array $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $std/array/Dim $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $std/array/Proxy $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - br $folding-inner4 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16352 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16352 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$739 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl + i32.const 8 i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - br $folding-inner4 + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$739 end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - return end - i32.const 48992 - i32.const 49040 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 49152 + i32.const 49200 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16352 + i32.lt_s + if + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.const 1056 local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~start - global.get $~started + select + local.tee $0 + i32.store + local.get $1 if - return + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/util/number/utoa32 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/util/number/utoa32 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store end - i32.const 1 - global.set $~started - call $start:std/array + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/array/Array#constructor (param $0 i32) (result i32) (local $1 i32) @@ -6401,11 +6458,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6455,8 +6512,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1056 - i32.const 1104 + i32.const 3424 + i32.const 3472 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -6520,11 +6577,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6558,11 +6615,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6632,11 +6689,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6661,11 +6718,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6683,7 +6740,7 @@ i32.ge_u if i32.const 1344 - i32.const 1104 + i32.const 3472 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -6711,11 +6768,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6794,11 +6851,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6844,11 +6901,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6896,7 +6953,7 @@ i32.lt_s select local.set $0 - block $__inlined_func$~lib/util/bytes/FILL$139 + block $__inlined_func$~lib/util/bytes/FILL$136 local.get $1 i32.eqz local.get $1 @@ -6921,7 +6978,7 @@ i32.shl memory.fill end - br $__inlined_func$~lib/util/bytes/FILL$139 + br $__inlined_func$~lib/util/bytes/FILL$136 end loop $for-loop|0 local.get $0 @@ -6954,11 +7011,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6976,7 +7033,7 @@ i32.ge_u if i32.const 1344 - i32.const 1104 + i32.const 3472 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -7006,11 +7063,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7089,11 +7146,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7139,11 +7196,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7191,7 +7248,7 @@ i32.lt_s select local.set $0 - block $__inlined_func$~lib/util/bytes/FILL$148 + block $__inlined_func$~lib/util/bytes/FILL$145 local.get $1 i32.reinterpret_f32 i32.eqz @@ -7213,7 +7270,7 @@ i32.shl memory.fill end - br $__inlined_func$~lib/util/bytes/FILL$148 + br $__inlined_func$~lib/util/bytes/FILL$145 end loop $for-loop|0 local.get $0 @@ -7247,11 +7304,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7269,7 +7326,7 @@ i32.ge_u if i32.const 1344 - i32.const 1104 + i32.const 3472 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -7300,11 +7357,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7432,11 +7489,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7481,11 +7538,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7524,11 +7581,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7552,8 +7609,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1056 - i32.const 1104 + i32.const 3424 + i32.const 3472 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -7593,7 +7650,7 @@ select local.set $1 end - block $__inlined_func$~lib/rt/itcms/__renew$653 + block $__inlined_func$~lib/rt/itcms/__renew$648 local.get $3 i32.const 20 i32.sub @@ -7611,7 +7668,7 @@ i32.store offset=16 local.get $3 local.set $2 - br $__inlined_func$~lib/rt/itcms/__renew$653 + br $__inlined_func$~lib/rt/itcms/__renew$648 end local.get $1 local.get $4 @@ -7661,11 +7718,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7714,11 +7771,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7736,7 +7793,7 @@ i32.ge_u if i32.const 1344 - i32.const 1104 + i32.const 3472 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -7765,11 +7822,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7787,8 +7844,8 @@ i32.const 0 i32.le_s if - i32.const 2640 - i32.const 1104 + i32.const 4608 + i32.const 3472 i32.const 271 i32.const 18 call $~lib/builtins/abort @@ -7825,11 +7882,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7851,7 +7908,7 @@ i32.lt_s if i32.const 1344 - i32.const 1104 + i32.const 3472 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -7898,11 +7955,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7929,7 +7986,7 @@ i32.ge_u if i32.const 1344 - i32.const 1104 + i32.const 3472 i32.const 143 i32.const 33 call $~lib/builtins/abort @@ -7960,11 +8017,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7991,8 +8048,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1056 - i32.const 1104 + i32.const 3424 + i32.const 3472 i32.const 224 i32.const 60 call $~lib/builtins/abort @@ -8049,11 +8106,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8180,11 +8237,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8227,11 +8284,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8315,11 +8372,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8376,11 +8433,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8485,11 +8542,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8539,11 +8596,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8708,11 +8765,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8835,11 +8892,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8857,7 +8914,7 @@ i32.ge_u if i32.const 1344 - i32.const 1104 + i32.const 3472 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -8885,11 +8942,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8979,11 +9036,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9070,11 +9127,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9118,11 +9175,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9155,11 +9212,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9278,11 +9335,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9327,11 +9384,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9449,11 +9506,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9471,7 +9528,7 @@ i32.ge_u if i32.const 1344 - i32.const 1104 + i32.const 3472 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -9493,8 +9550,8 @@ local.get $0 i32.eqz if - i32.const 6416 - i32.const 1104 + i32.const 8384 + i32.const 3472 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -9512,11 +9569,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9534,7 +9591,7 @@ i32.ge_u if i32.const 1344 - i32.const 1104 + i32.const 3472 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -9566,11 +9623,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9592,7 +9649,7 @@ i32.lt_s if i32.const 1344 - i32.const 1104 + i32.const 3472 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -9637,11 +9694,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9718,11 +9775,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9751,11 +9808,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9786,11 +9843,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9862,11 +9919,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9944,11 +10001,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9977,11 +10034,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10013,11 +10070,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10094,11 +10151,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10127,11 +10184,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10163,11 +10220,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10235,11 +10292,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10269,11 +10326,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10304,11 +10361,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10412,7 +10469,7 @@ i32.and if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 767 i32.const 7 call $~lib/builtins/abort @@ -10429,11 +10486,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10469,11 +10526,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10564,11 +10621,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10603,11 +10660,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10694,11 +10751,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10731,11 +10788,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10771,11 +10828,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10848,11 +10905,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10881,11 +10938,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10916,11 +10973,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10988,7 +11045,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -11009,7 +11066,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -11050,8 +11107,8 @@ local.get $0 return end - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11079,11 +11136,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11502,7 +11559,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -11519,10 +11576,10 @@ end unreachable end - i32.const 10256 + i32.const 10448 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 10256 + i32.const 10448 i32.store end global.get $~lib/memory/__stack_pointer @@ -11536,7 +11593,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -11567,8 +11624,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11596,11 +11653,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11643,7 +11700,7 @@ local.get $16 local.get $16 local.get $17 - i32.const 10544 + i32.const 10736 i32.load call_indirect (type $6) i32.const 0 @@ -11662,7 +11719,7 @@ select local.tee $16 local.get $8 - i32.const 10544 + i32.const 10736 i32.load call_indirect (type $6) i32.const 0 @@ -11694,7 +11751,7 @@ local.get $8 local.get $8 local.get $16 - i32.const 10544 + i32.const 10736 i32.load call_indirect (type $6) i32.const 0 @@ -11711,7 +11768,7 @@ br $folding-inner0 end global.get $~lib/memory/__stack_pointer - i32.const 10544 + i32.const 10736 i32.store local.get $0 i32.const 0 @@ -11780,7 +11837,7 @@ i32.add local.set $12 global.get $~lib/memory/__stack_pointer - i32.const 10544 + i32.const 10736 i32.store local.get $0 i32.const 0 @@ -11797,7 +11854,7 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 10544 + i32.const 10736 i32.store local.get $0 i32.const 0 @@ -11821,7 +11878,7 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 10544 + i32.const 10736 i32.store local.get $0 local.get $3 @@ -11840,7 +11897,7 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 10544 + i32.const 10736 i32.store local.get $0 local.get $5 @@ -11908,7 +11965,7 @@ i32.add local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 10544 + i32.const 10736 i32.store local.get $0 local.get $7 @@ -11973,7 +12030,7 @@ i32.add local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 10544 + i32.const 10736 i32.store local.get $0 local.get $3 @@ -12011,11 +12068,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12033,7 +12090,7 @@ i32.ge_u if i32.const 1344 - i32.const 1104 + i32.const 3472 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -12073,11 +12130,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12495,11 +12552,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12548,11 +12605,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12595,7 +12652,7 @@ local.get $1 local.get $1 local.get $2 - i32.const 10848 + i32.const 11040 i32.load call_indirect (type $0) i32.const 0 @@ -12614,7 +12671,7 @@ select local.tee $1 local.get $4 - i32.const 10848 + i32.const 11040 i32.load call_indirect (type $0) i32.const 0 @@ -12646,7 +12703,7 @@ local.get $1 local.get $1 local.get $2 - i32.const 10848 + i32.const 11040 i32.load call_indirect (type $0) i32.const 0 @@ -12663,7 +12720,7 @@ br $folding-inner0 end global.get $~lib/memory/__stack_pointer - i32.const 10848 + i32.const 11040 i32.store local.get $0 i32.const 0 @@ -12732,7 +12789,7 @@ i32.add local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 10848 + i32.const 11040 i32.store local.get $0 i32.const 0 @@ -12749,7 +12806,7 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 10848 + i32.const 11040 i32.store local.get $0 i32.const 0 @@ -12773,7 +12830,7 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 10848 + i32.const 11040 i32.store local.get $0 local.get $4 @@ -12792,7 +12849,7 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 10848 + i32.const 11040 i32.store local.get $0 local.get $5 @@ -12860,7 +12917,7 @@ i32.add local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 10848 + i32.const 11040 i32.store local.get $0 local.get $7 @@ -12925,7 +12982,7 @@ i32.add local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 10848 + i32.const 11040 i32.store local.get $0 local.get $3 @@ -12964,11 +13021,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13019,11 +13076,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13077,7 +13134,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -13086,7 +13143,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=8 - block $__inlined_func$std/array/isSorted$658 (result i32) + block $__inlined_func$std/array/isSorted$653 (result i32) global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 @@ -13108,7 +13165,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -13154,7 +13211,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isSorted$658 + br $__inlined_func$std/array/isSorted$653 end local.get $0 i32.const 1 @@ -13172,7 +13229,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1080 i32.const 3 call $~lib/builtins/abort @@ -13184,8 +13241,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13197,11 +13254,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13214,10 +13271,10 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11120 + i32.const 11312 i32.store offset=4 local.get $0 - i32.const 11120 + i32.const 11312 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer i32.const 8 @@ -13230,11 +13287,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13270,11 +13327,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13482,11 +13539,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13677,11 +13734,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13846,11 +13903,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14300,11 +14357,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14340,11 +14397,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14382,7 +14439,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -14391,7 +14448,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=8 - block $__inlined_func$std/array/isSorted<~lib/array/Array>$660 (result i32) + block $__inlined_func$std/array/isSorted<~lib/array/Array>$655 (result i32) global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 @@ -14413,7 +14470,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 local.get $1 @@ -14474,7 +14531,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isSorted<~lib/array/Array>$660 + br $__inlined_func$std/array/isSorted<~lib/array/Array>$655 end local.get $1 i32.const 1 @@ -14492,7 +14549,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1080 i32.const 3 call $~lib/builtins/abort @@ -14504,8 +14561,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14522,11 +14579,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14706,11 +14763,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14854,109 +14911,6 @@ global.set $~lib/memory/__stack_pointer i32.const 0 ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.tee $2 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $__inlined_func$~lib/string/String#concat$736 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $4 - local.get $3 - i32.add - local.tee $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - local.set $0 - br $__inlined_func$~lib/string/String#concat$736 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $3 - memory.copy - local.get $0 - local.get $3 - i32.add - local.get $1 - local.get $4 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -14966,11 +14920,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15027,7 +14981,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 return end local.get $3 @@ -15077,7 +15031,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -15103,13 +15057,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$738 + block $__inlined_func$~lib/util/string/joinIntegerArray$741 local.get $0 i32.const 1 i32.sub @@ -15121,9 +15075,9 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$738 + br $__inlined_func$~lib/util/string/joinIntegerArray$741 end local.get $7 i32.eqz @@ -15136,7 +15090,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$738 + br $__inlined_func$~lib/util/string/joinIntegerArray$741 end global.get $~lib/memory/__stack_pointer local.get $1 @@ -15235,7 +15189,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$738 + br $__inlined_func$~lib/util/string/joinIntegerArray$741 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -15249,8 +15203,8 @@ local.get $0 return end - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15269,7 +15223,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -15295,13 +15249,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$739 + block $__inlined_func$~lib/util/string/joinIntegerArray$742 local.get $0 i32.const 1 i32.sub @@ -15313,9 +15267,9 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$739 + br $__inlined_func$~lib/util/string/joinIntegerArray$742 end local.get $7 i32.eqz @@ -15328,7 +15282,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$739 + br $__inlined_func$~lib/util/string/joinIntegerArray$742 end global.get $~lib/memory/__stack_pointer local.get $1 @@ -15427,7 +15381,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$739 + br $__inlined_func$~lib/util/string/joinIntegerArray$742 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -15441,8 +15395,8 @@ local.get $0 return end - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15462,7 +15416,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -15479,7 +15433,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 return end local.get $7 @@ -15493,13 +15447,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 12320 + i32.const 12480 local.set $0 block $~lib/util/number/dtoa_impl|inlined.0 local.get $3 @@ -15512,14 +15466,14 @@ f64.const 0 f64.ne if - i32.const 12352 + i32.const 12512 local.set $0 local.get $3 local.get $3 f64.ne br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 12384 - i32.const 12432 + i32.const 12544 + i32.const 12592 local.get $3 f64.const 0 f64.lt @@ -15527,7 +15481,7 @@ local.set $0 br $~lib/util/number/dtoa_impl|inlined.0 end - i32.const 12464 + i32.const 12624 local.get $3 call $~lib/util/number/dtoa_core i32.const 1 @@ -15540,7 +15494,7 @@ local.tee $0 i32.store local.get $0 - i32.const 12464 + i32.const 12624 local.get $1 memory.copy end @@ -15551,10 +15505,10 @@ br $folding-inner1 end global.get $~lib/memory/__stack_pointer - i32.const 12288 + i32.const 12448 i32.store global.get $~lib/memory/__stack_pointer - i32.const 12284 + i32.const 12444 i32.load i32.const 1 i32.shr_u @@ -15599,7 +15553,7 @@ i32.const 1 i32.shl i32.add - i32.const 12288 + i32.const 12448 local.get $1 i32.const 1 i32.shl @@ -15650,8 +15604,8 @@ local.get $6 return end - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15674,11 +15628,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15701,7 +15655,7 @@ i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 return end local.get $5 @@ -15717,7 +15671,7 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 11568 + i32.const 1120 local.get $0 select return @@ -15888,11 +15842,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15933,7 +15887,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -15952,15 +15906,15 @@ i32.load offset=12 local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store - block $__inlined_func$~lib/util/string/joinReferenceArray$4 (result i32) + block $__inlined_func$~lib/util/string/joinReferenceArray$1 (result i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -15978,8 +15932,8 @@ i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 - br $__inlined_func$~lib/util/string/joinReferenceArray$4 + i32.const 1120 + br $__inlined_func$~lib/util/string/joinReferenceArray$1 end local.get $2 i32.eqz @@ -15994,25 +15948,25 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - i32.const 13632 + i32.const 13792 else - i32.const 11568 + i32.const 1120 end global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinReferenceArray$4 + br $__inlined_func$~lib/util/string/joinReferenceArray$1 end - i32.const 11568 + i32.const 1120 local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store offset=4 - i32.const 11852 + i32.const 12012 i32.load i32.const 1 i32.shr_u @@ -16040,11 +15994,11 @@ local.get $3 i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 13632 + i32.const 13792 i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 13632 + i32.const 13792 call $~lib/string/String.__concat local.tee $0 i32.store offset=8 @@ -16055,11 +16009,11 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 11856 + i32.const 12016 call $~lib/string/String.__concat local.tee $0 i32.store offset=8 @@ -16089,11 +16043,11 @@ local.get $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 13632 + i32.const 13792 i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 13632 + i32.const 13792 call $~lib/string/String.__concat local.tee $0 i32.store offset=8 @@ -16110,8 +16064,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16123,11 +16077,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16140,7 +16094,7 @@ local.get $0 i32.store local.get $0 - i32.const 11856 + i32.const 12016 call $~lib/array/Array#join global.get $~lib/memory/__stack_pointer i32.const 4 @@ -16160,7 +16114,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -16174,7 +16128,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -16193,20 +16147,20 @@ i32.load offset=12 local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$740 + block $__inlined_func$~lib/util/string/joinIntegerArray$743 local.get $0 i32.const 1 i32.sub @@ -16218,9 +16172,9 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$740 + br $__inlined_func$~lib/util/string/joinIntegerArray$743 end local.get $6 i32.eqz @@ -16233,13 +16187,13 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$740 + br $__inlined_func$~lib/util/string/joinIntegerArray$743 end global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11852 + i32.const 12012 i32.load i32.const 1 i32.shr_u @@ -16282,7 +16236,7 @@ i32.const 1 i32.shl i32.add - i32.const 11856 + i32.const 12016 local.get $4 i32.const 1 i32.shl @@ -16326,7 +16280,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$740 + br $__inlined_func$~lib/util/string/joinIntegerArray$743 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -16344,8 +16298,8 @@ local.get $0 return end - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16365,7 +16319,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -16382,7 +16336,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 return end local.get $7 @@ -16396,13 +16350,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/util/number/utoa64$485 + block $__inlined_func$~lib/util/number/utoa64$480 local.get $3 i64.eqz if @@ -16410,9 +16364,9 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 7712 + i32.const 1776 local.set $1 - br $__inlined_func$~lib/util/number/utoa64$485 + br $__inlined_func$~lib/util/number/utoa64$480 end local.get $3 i64.const 4294967295 @@ -16550,10 +16504,10 @@ br $folding-inner1 end global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11852 + i32.const 12012 i32.load i32.const 1 i32.shr_u @@ -16598,7 +16552,7 @@ i32.const 1 i32.shl i32.add - i32.const 11856 + i32.const 12016 local.get $1 i32.const 1 i32.shl @@ -16649,8 +16603,8 @@ local.get $6 return end - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16668,11 +16622,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16685,7 +16639,7 @@ local.get $0 i32.store local.get $0 - i32.const 11856 + i32.const 12016 call $~lib/array/Array<~lib/string/String|null>#join global.get $~lib/memory/__stack_pointer i32.const 4 @@ -16705,7 +16659,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -16719,7 +16673,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -16738,20 +16692,20 @@ i32.load offset=12 local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$743 + block $__inlined_func$~lib/util/string/joinIntegerArray$746 local.get $0 i32.const 1 i32.sub @@ -16763,9 +16717,9 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$743 + br $__inlined_func$~lib/util/string/joinIntegerArray$746 end local.get $6 i32.eqz @@ -16778,13 +16732,13 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$743 + br $__inlined_func$~lib/util/string/joinIntegerArray$746 end global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11852 + i32.const 12012 i32.load i32.const 1 i32.shr_u @@ -16827,7 +16781,7 @@ i32.const 1 i32.shl i32.add - i32.const 11856 + i32.const 12016 local.get $4 i32.const 1 i32.shl @@ -16871,7 +16825,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$743 + br $__inlined_func$~lib/util/string/joinIntegerArray$746 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -16889,8 +16843,8 @@ local.get $0 return end - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16902,11 +16856,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16919,7 +16873,7 @@ local.get $0 i32.store local.get $0 - i32.const 11856 + i32.const 12016 call $~lib/array/Array#join global.get $~lib/memory/__stack_pointer i32.const 4 @@ -16939,7 +16893,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -16953,7 +16907,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -16972,15 +16926,15 @@ i32.load offset=12 local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store - block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$5 (result i32) + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$2 (result i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -16998,8 +16952,8 @@ i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$5 + i32.const 1120 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$2 end local.get $4 i32.eqz @@ -17017,23 +16971,23 @@ local.get $0 call $~lib/array/Array#toString else - i32.const 11568 + i32.const 1120 end global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$5 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$2 end - i32.const 11568 + i32.const 1120 local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store offset=4 - i32.const 11852 + i32.const 12012 i32.load i32.const 1 i32.shr_u @@ -17079,11 +17033,11 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 11856 + i32.const 12016 call $~lib/string/String.__concat local.tee $0 i32.store offset=8 @@ -17141,8 +17095,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17160,11 +17114,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17299,11 +17253,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17321,7 +17275,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1267 i32.const 5 call $~lib/builtins/abort @@ -17342,7 +17296,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1269 i32.const 5 call $~lib/builtins/abort @@ -17376,7 +17330,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner2 global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -17386,7 +17340,7 @@ memory.size i32.const 16 i32.shl - i32.const 48960 + i32.const 49120 i32.sub i32.const 1 i32.shr_u @@ -17429,7 +17383,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -17450,7 +17404,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -17543,7 +17497,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 53 i32.const 3 call $~lib/builtins/abort @@ -17553,7 +17507,7 @@ i32.const 5 i32.const 0 i32.const 7 - i32.const 1696 + i32.const 3664 call $~lib/rt/__newArray local.tee $2 i32.store offset=4 @@ -17571,7 +17525,7 @@ i32.const 5 i32.const 0 i32.const 7 - i32.const 1728 + i32.const 3696 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -17583,7 +17537,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -17604,7 +17558,7 @@ i32.const 5 i32.const 0 i32.const 7 - i32.const 1760 + i32.const 3728 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -17616,7 +17570,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -17636,7 +17590,7 @@ i32.const 5 i32.const 0 i32.const 7 - i32.const 1792 + i32.const 3760 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -17648,7 +17602,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -17669,7 +17623,7 @@ i32.const 5 i32.const 0 i32.const 7 - i32.const 1824 + i32.const 3792 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -17681,7 +17635,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 70 i32.const 3 call $~lib/builtins/abort @@ -17701,7 +17655,7 @@ i32.const 5 i32.const 0 i32.const 7 - i32.const 1856 + i32.const 3824 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -17713,7 +17667,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 73 i32.const 3 call $~lib/builtins/abort @@ -17734,7 +17688,7 @@ i32.const 5 i32.const 0 i32.const 7 - i32.const 1888 + i32.const 3856 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -17746,7 +17700,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 76 i32.const 3 call $~lib/builtins/abort @@ -17756,7 +17710,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 1920 + i32.const 3888 call $~lib/rt/__newArray local.tee $2 i32.store offset=12 @@ -17774,7 +17728,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 1968 + i32.const 3936 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -17786,7 +17740,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -17807,7 +17761,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 2016 + i32.const 3984 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -17819,7 +17773,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 86 i32.const 3 call $~lib/builtins/abort @@ -17839,7 +17793,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 2064 + i32.const 4032 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -17851,7 +17805,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 89 i32.const 3 call $~lib/builtins/abort @@ -17872,7 +17826,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 2112 + i32.const 4080 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -17884,7 +17838,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 92 i32.const 3 call $~lib/builtins/abort @@ -17904,7 +17858,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 2160 + i32.const 4128 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -17916,7 +17870,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 95 i32.const 3 call $~lib/builtins/abort @@ -17937,7 +17891,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 2208 + i32.const 4176 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -17949,7 +17903,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -17959,7 +17913,7 @@ i32.const 5 i32.const 2 i32.const 9 - i32.const 2256 + i32.const 4224 call $~lib/rt/__newArray local.tee $2 i32.store offset=16 @@ -17977,7 +17931,7 @@ i32.const 5 i32.const 2 i32.const 9 - i32.const 2304 + i32.const 4272 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -17989,7 +17943,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 105 i32.const 3 call $~lib/builtins/abort @@ -18010,7 +17964,7 @@ i32.const 5 i32.const 2 i32.const 9 - i32.const 2352 + i32.const 4320 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -18022,7 +17976,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -18042,7 +17996,7 @@ i32.const 5 i32.const 2 i32.const 9 - i32.const 2400 + i32.const 4368 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -18054,7 +18008,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 111 i32.const 3 call $~lib/builtins/abort @@ -18075,7 +18029,7 @@ i32.const 5 i32.const 2 i32.const 9 - i32.const 2448 + i32.const 4416 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -18087,7 +18041,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -18107,7 +18061,7 @@ i32.const 5 i32.const 2 i32.const 9 - i32.const 2496 + i32.const 4464 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -18119,7 +18073,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 117 i32.const 3 call $~lib/builtins/abort @@ -18140,7 +18094,7 @@ i32.const 5 i32.const 2 i32.const 9 - i32.const 2544 + i32.const 4512 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -18152,7 +18106,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 120 i32.const 3 call $~lib/builtins/abort @@ -18173,7 +18127,7 @@ i32.const 5 i32.const 2 i32.const 9 - i32.const 2592 + i32.const 4560 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -18185,7 +18139,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 123 i32.const 3 call $~lib/builtins/abort @@ -18199,7 +18153,7 @@ call $~lib/array/Array#get:length if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 129 i32.const 3 call $~lib/builtins/abort @@ -18215,7 +18169,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 130 i32.const 3 call $~lib/builtins/abort @@ -18239,7 +18193,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 134 i32.const 3 call $~lib/builtins/abort @@ -18255,7 +18209,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 135 i32.const 3 call $~lib/builtins/abort @@ -18271,7 +18225,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 136 i32.const 3 call $~lib/builtins/abort @@ -18287,7 +18241,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 140 i32.const 3 call $~lib/builtins/abort @@ -18301,7 +18255,7 @@ call $~lib/array/Array#get:length if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 141 i32.const 3 call $~lib/builtins/abort @@ -18317,7 +18271,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 142 i32.const 3 call $~lib/builtins/abort @@ -18340,7 +18294,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 146 i32.const 3 call $~lib/builtins/abort @@ -18356,7 +18310,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 147 i32.const 3 call $~lib/builtins/abort @@ -18373,7 +18327,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 148 i32.const 3 call $~lib/builtins/abort @@ -18396,7 +18350,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 152 i32.const 3 call $~lib/builtins/abort @@ -18412,7 +18366,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 153 i32.const 3 call $~lib/builtins/abort @@ -18429,7 +18383,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 154 i32.const 3 call $~lib/builtins/abort @@ -18446,7 +18400,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 155 i32.const 3 call $~lib/builtins/abort @@ -18469,7 +18423,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 159 i32.const 3 call $~lib/builtins/abort @@ -18485,7 +18439,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 160 i32.const 3 call $~lib/builtins/abort @@ -18502,7 +18456,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 161 i32.const 3 call $~lib/builtins/abort @@ -18519,7 +18473,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 162 i32.const 3 call $~lib/builtins/abort @@ -18536,7 +18490,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 163 i32.const 3 call $~lib/builtins/abort @@ -18571,7 +18525,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -18598,7 +18552,7 @@ call $~lib/array/Array#get:length if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 171 i32.const 3 call $~lib/builtins/abort @@ -18608,7 +18562,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 2688 + i32.const 4656 call $~lib/rt/__newArray local.tee $2 i32.store offset=28 @@ -18622,7 +18576,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 179 i32.const 3 call $~lib/builtins/abort @@ -18638,7 +18592,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 180 i32.const 3 call $~lib/builtins/abort @@ -18654,7 +18608,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 181 i32.const 3 call $~lib/builtins/abort @@ -18670,7 +18624,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 182 i32.const 3 call $~lib/builtins/abort @@ -18704,7 +18658,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 191 i32.const 3 call $~lib/builtins/abort @@ -18720,7 +18674,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 192 i32.const 3 call $~lib/builtins/abort @@ -18735,7 +18689,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 193 i32.const 3 call $~lib/builtins/abort @@ -18747,7 +18701,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 2736 + i32.const 4704 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -18767,7 +18721,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 196 i32.const 3 call $~lib/builtins/abort @@ -18783,7 +18737,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 198 i32.const 3 call $~lib/builtins/abort @@ -18799,7 +18753,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 199 i32.const 3 call $~lib/builtins/abort @@ -18815,7 +18769,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 200 i32.const 3 call $~lib/builtins/abort @@ -18856,7 +18810,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 207 i32.const 3 call $~lib/builtins/abort @@ -18871,7 +18825,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 208 i32.const 3 call $~lib/builtins/abort @@ -18886,7 +18840,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 209 i32.const 3 call $~lib/builtins/abort @@ -18902,7 +18856,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 210 i32.const 3 call $~lib/builtins/abort @@ -18918,7 +18872,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 211 i32.const 3 call $~lib/builtins/abort @@ -18934,7 +18888,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 212 i32.const 3 call $~lib/builtins/abort @@ -18950,7 +18904,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 213 i32.const 3 call $~lib/builtins/abort @@ -18966,7 +18920,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 214 i32.const 3 call $~lib/builtins/abort @@ -18987,7 +18941,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 217 i32.const 3 call $~lib/builtins/abort @@ -18997,7 +18951,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 2768 + i32.const 4736 call $~lib/rt/__newArray local.tee $2 i32.store offset=40 @@ -19008,7 +18962,7 @@ call $~lib/array/Array#get:length if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 225 i32.const 3 call $~lib/builtins/abort @@ -19036,7 +18990,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 227 i32.const 3 call $~lib/builtins/abort @@ -19049,7 +19003,7 @@ call $~lib/array/Array#get:length if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 228 i32.const 3 call $~lib/builtins/abort @@ -19059,7 +19013,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2800 + i32.const 4768 call $~lib/rt/__newArray local.tee $2 i32.store offset=44 @@ -19079,7 +19033,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2848 + i32.const 4816 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -19092,7 +19046,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 235 i32.const 3 call $~lib/builtins/abort @@ -19102,7 +19056,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2896 + i32.const 4864 call $~lib/rt/__newArray local.tee $2 i32.store offset=44 @@ -19122,7 +19076,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2944 + i32.const 4912 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -19135,7 +19089,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 237 i32.const 3 call $~lib/builtins/abort @@ -19145,7 +19099,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 2992 + i32.const 4960 call $~lib/rt/__newArray local.tee $2 i32.store offset=44 @@ -19165,7 +19119,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3040 + i32.const 5008 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -19178,7 +19132,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 239 i32.const 3 call $~lib/builtins/abort @@ -19188,7 +19142,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3088 + i32.const 5056 call $~lib/rt/__newArray local.tee $2 i32.store offset=44 @@ -19208,7 +19162,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3136 + i32.const 5104 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -19221,7 +19175,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 241 i32.const 3 call $~lib/builtins/abort @@ -19231,7 +19185,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3184 + i32.const 5152 call $~lib/rt/__newArray local.tee $2 i32.store offset=44 @@ -19250,7 +19204,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3232 + i32.const 5200 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -19263,7 +19217,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 243 i32.const 3 call $~lib/builtins/abort @@ -19273,7 +19227,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3280 + i32.const 5248 call $~lib/rt/__newArray local.tee $2 i32.store offset=44 @@ -19292,7 +19246,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3328 + i32.const 5296 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -19305,7 +19259,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 245 i32.const 3 call $~lib/builtins/abort @@ -19315,7 +19269,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3376 + i32.const 5344 call $~lib/rt/__newArray local.tee $2 i32.store offset=44 @@ -19334,7 +19288,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3424 + i32.const 5392 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -19347,7 +19301,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 247 i32.const 3 call $~lib/builtins/abort @@ -19357,7 +19311,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3472 + i32.const 5440 call $~lib/rt/__newArray local.tee $2 i32.store offset=44 @@ -19377,7 +19331,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3520 + i32.const 5488 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -19390,7 +19344,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 249 i32.const 3 call $~lib/builtins/abort @@ -19400,7 +19354,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3568 + i32.const 5536 call $~lib/rt/__newArray local.tee $2 i32.store offset=44 @@ -19419,7 +19373,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3616 + i32.const 5584 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -19432,7 +19386,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 251 i32.const 3 call $~lib/builtins/abort @@ -19442,7 +19396,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3664 + i32.const 5632 call $~lib/rt/__newArray local.tee $2 i32.store offset=44 @@ -19461,7 +19415,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3712 + i32.const 5680 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -19474,7 +19428,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 253 i32.const 3 call $~lib/builtins/abort @@ -19484,7 +19438,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3760 + i32.const 5728 call $~lib/rt/__newArray local.tee $2 i32.store offset=44 @@ -19503,7 +19457,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3808 + i32.const 5776 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -19516,7 +19470,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 255 i32.const 3 call $~lib/builtins/abort @@ -19526,7 +19480,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3856 + i32.const 5824 call $~lib/rt/__newArray local.tee $2 i32.store offset=44 @@ -19546,7 +19500,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3904 + i32.const 5872 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -19559,7 +19513,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 257 i32.const 3 call $~lib/builtins/abort @@ -19582,7 +19536,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 265 i32.const 3 call $~lib/builtins/abort @@ -19598,7 +19552,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 266 i32.const 3 call $~lib/builtins/abort @@ -19615,7 +19569,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 267 i32.const 3 call $~lib/builtins/abort @@ -19632,7 +19586,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 268 i32.const 3 call $~lib/builtins/abort @@ -19649,7 +19603,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 269 i32.const 3 call $~lib/builtins/abort @@ -19666,7 +19620,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 270 i32.const 3 call $~lib/builtins/abort @@ -19689,7 +19643,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 274 i32.const 3 call $~lib/builtins/abort @@ -19705,7 +19659,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 275 i32.const 3 call $~lib/builtins/abort @@ -19722,7 +19676,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 276 i32.const 3 call $~lib/builtins/abort @@ -19739,7 +19693,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 277 i32.const 3 call $~lib/builtins/abort @@ -19756,7 +19710,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 278 i32.const 3 call $~lib/builtins/abort @@ -19773,7 +19727,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 279 i32.const 3 call $~lib/builtins/abort @@ -19790,7 +19744,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 280 i32.const 3 call $~lib/builtins/abort @@ -19805,7 +19759,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -19820,8 +19774,8 @@ i32.const 0 i32.le_s if - i32.const 2640 - i32.const 1104 + i32.const 4608 + i32.const 3472 i32.const 330 i32.const 18 call $~lib/builtins/abort @@ -19867,7 +19821,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 289 i32.const 3 call $~lib/builtins/abort @@ -19883,7 +19837,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 290 i32.const 3 call $~lib/builtins/abort @@ -19899,7 +19853,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 291 i32.const 3 call $~lib/builtins/abort @@ -19916,7 +19870,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 292 i32.const 3 call $~lib/builtins/abort @@ -19933,7 +19887,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 293 i32.const 3 call $~lib/builtins/abort @@ -19950,7 +19904,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 294 i32.const 3 call $~lib/builtins/abort @@ -19967,7 +19921,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 295 i32.const 3 call $~lib/builtins/abort @@ -19985,7 +19939,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 299 i32.const 3 call $~lib/builtins/abort @@ -20001,7 +19955,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 300 i32.const 3 call $~lib/builtins/abort @@ -20017,7 +19971,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 301 i32.const 3 call $~lib/builtins/abort @@ -20034,7 +19988,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 302 i32.const 3 call $~lib/builtins/abort @@ -20051,7 +20005,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 303 i32.const 3 call $~lib/builtins/abort @@ -20068,7 +20022,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 304 i32.const 3 call $~lib/builtins/abort @@ -20078,7 +20032,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 3952 + i32.const 5920 call $~lib/rt/__newArray local.tee $2 i32.store offset=52 @@ -20099,7 +20053,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 4000 + i32.const 5968 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -20112,7 +20066,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 314 i32.const 3 call $~lib/builtins/abort @@ -20134,7 +20088,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 4032 + i32.const 6000 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -20147,7 +20101,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 317 i32.const 3 call $~lib/builtins/abort @@ -20169,7 +20123,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 4064 + i32.const 6032 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -20182,7 +20136,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 320 i32.const 3 call $~lib/builtins/abort @@ -20212,7 +20166,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -20235,7 +20189,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 4112 + i32.const 6080 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -20248,7 +20202,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 326 i32.const 3 call $~lib/builtins/abort @@ -20270,7 +20224,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 4144 + i32.const 6112 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -20283,7 +20237,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 329 i32.const 3 call $~lib/builtins/abort @@ -20305,7 +20259,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 4176 + i32.const 6144 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -20318,7 +20272,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 332 i32.const 3 call $~lib/builtins/abort @@ -20339,7 +20293,7 @@ call $~lib/array/Array#get:length if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 334 i32.const 3 call $~lib/builtins/abort @@ -20361,7 +20315,7 @@ call $~lib/array/Array#get:length if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 335 i32.const 3 call $~lib/builtins/abort @@ -20376,7 +20330,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -20454,7 +20408,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 343 i32.const 3 call $~lib/builtins/abort @@ -20470,7 +20424,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -20487,7 +20441,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 345 i32.const 3 call $~lib/builtins/abort @@ -20504,7 +20458,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 346 i32.const 3 call $~lib/builtins/abort @@ -20521,7 +20475,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 347 i32.const 3 call $~lib/builtins/abort @@ -20545,7 +20499,7 @@ i32.const 4 i32.const 0 i32.const 7 - i32.const 4208 + i32.const 6176 call $~lib/rt/__newArray local.set $4 global.get $~lib/memory/__stack_pointer @@ -20584,7 +20538,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 354 i32.const 5 call $~lib/builtins/abort @@ -20601,7 +20555,7 @@ i32.const 8 i32.const 0 i32.const 7 - i32.const 4240 + i32.const 6208 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -20642,7 +20596,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 359 i32.const 5 call $~lib/builtins/abort @@ -20659,7 +20613,7 @@ i32.const 17 i32.const 0 i32.const 7 - i32.const 4272 + i32.const 6240 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -20700,7 +20654,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 364 i32.const 5 call $~lib/builtins/abort @@ -20717,7 +20671,7 @@ i32.const 7 i32.const 1 i32.const 11 - i32.const 4320 + i32.const 6288 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -20758,7 +20712,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 369 i32.const 5 call $~lib/builtins/abort @@ -20775,7 +20729,7 @@ i32.const 8 i32.const 1 i32.const 11 - i32.const 4368 + i32.const 6336 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -20816,7 +20770,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 374 i32.const 5 call $~lib/builtins/abort @@ -20833,7 +20787,7 @@ i32.const 9 i32.const 1 i32.const 11 - i32.const 4416 + i32.const 6384 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -20874,7 +20828,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 379 i32.const 5 call $~lib/builtins/abort @@ -20899,7 +20853,7 @@ global.get $std/array/i if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 387 i32.const 3 call $~lib/builtins/abort @@ -20919,7 +20873,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -20939,7 +20893,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -20959,7 +20913,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 396 i32.const 3 call $~lib/builtins/abort @@ -20979,7 +20933,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 399 i32.const 3 call $~lib/builtins/abort @@ -20999,7 +20953,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 402 i32.const 3 call $~lib/builtins/abort @@ -21019,7 +20973,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 405 i32.const 3 call $~lib/builtins/abort @@ -21039,7 +20993,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 408 i32.const 3 call $~lib/builtins/abort @@ -21059,7 +21013,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 411 i32.const 3 call $~lib/builtins/abort @@ -21079,7 +21033,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -21088,7 +21042,7 @@ i32.const 1 i32.const 2 i32.const 9 - i32.const 4464 + i32.const 6432 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -21101,7 +21055,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -21110,7 +21064,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store - block $__inlined_func$~lib/array/Array#indexOf$714 + block $__inlined_func$~lib/array/Array#indexOf$707 local.get $2 i32.load offset=12 local.tee $4 @@ -21126,7 +21080,7 @@ global.set $~lib/memory/__stack_pointer i32.const -1 local.set $0 - br $__inlined_func$~lib/array/Array#indexOf$714 + br $__inlined_func$~lib/array/Array#indexOf$707 end global.get $~lib/memory/__stack_pointer local.get $2 @@ -21152,7 +21106,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/array/Array#indexOf$714 + br $__inlined_func$~lib/array/Array#indexOf$707 end local.get $0 i32.const 1 @@ -21173,7 +21127,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -21182,7 +21136,7 @@ i32.const 1 i32.const 3 i32.const 12 - i32.const 4496 + i32.const 6464 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -21195,7 +21149,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -21204,7 +21158,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store - block $__inlined_func$~lib/array/Array#indexOf$715 + block $__inlined_func$~lib/array/Array#indexOf$708 local.get $2 i32.load offset=12 local.tee $4 @@ -21220,7 +21174,7 @@ global.set $~lib/memory/__stack_pointer i32.const -1 local.set $0 - br $__inlined_func$~lib/array/Array#indexOf$715 + br $__inlined_func$~lib/array/Array#indexOf$708 end global.get $~lib/memory/__stack_pointer local.get $2 @@ -21246,7 +21200,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/array/Array#indexOf$715 + br $__inlined_func$~lib/array/Array#indexOf$708 end local.get $0 i32.const 1 @@ -21267,7 +21221,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -21277,7 +21231,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 4528 + i32.const 6496 call $~lib/rt/__newArray local.tee $0 i32.store offset=84 @@ -21293,7 +21247,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 424 i32.const 3 call $~lib/builtins/abort @@ -21311,7 +21265,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 425 i32.const 3 call $~lib/builtins/abort @@ -21328,7 +21282,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 426 i32.const 3 call $~lib/builtins/abort @@ -21343,7 +21297,7 @@ call $~lib/array/Array#lastIndexOf if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 427 i32.const 3 call $~lib/builtins/abort @@ -21358,7 +21312,7 @@ call $~lib/array/Array#lastIndexOf if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 428 i32.const 3 call $~lib/builtins/abort @@ -21375,7 +21329,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 429 i32.const 3 call $~lib/builtins/abort @@ -21393,7 +21347,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 437 i32.const 3 call $~lib/builtins/abort @@ -21411,7 +21365,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -21427,7 +21381,7 @@ call $~lib/array/Array#includes if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 443 i32.const 3 call $~lib/builtins/abort @@ -21443,7 +21397,7 @@ call $~lib/array/Array#includes if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 446 i32.const 3 call $~lib/builtins/abort @@ -21461,7 +21415,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 449 i32.const 3 call $~lib/builtins/abort @@ -21479,7 +21433,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 452 i32.const 3 call $~lib/builtins/abort @@ -21497,7 +21451,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 455 i32.const 3 call $~lib/builtins/abort @@ -21515,7 +21469,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 458 i32.const 3 call $~lib/builtins/abort @@ -21533,7 +21487,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 461 i32.const 3 call $~lib/builtins/abort @@ -21551,17 +21505,17 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 464 i32.const 3 call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#includes$716 (result i32) + block $__inlined_func$~lib/array/Array#includes$709 (result i32) i32.const 1 i32.const 2 i32.const 9 - i32.const 4576 + i32.const 6544 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -21574,7 +21528,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -21597,7 +21551,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$~lib/array/Array#includes$716 + br $__inlined_func$~lib/array/Array#includes$709 end global.get $~lib/memory/__stack_pointer local.get $2 @@ -21625,7 +21579,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1 - br $__inlined_func$~lib/array/Array#includes$716 + br $__inlined_func$~lib/array/Array#includes$709 end local.get $0 i32.const 1 @@ -21643,17 +21597,17 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 466 i32.const 3 call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#includes$717 (result i32) + block $__inlined_func$~lib/array/Array#includes$710 (result i32) i32.const 1 i32.const 3 i32.const 12 - i32.const 4608 + i32.const 6576 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -21666,7 +21620,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -21689,7 +21643,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$~lib/array/Array#includes$717 + br $__inlined_func$~lib/array/Array#includes$710 end global.get $~lib/memory/__stack_pointer local.get $2 @@ -21717,7 +21671,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1 - br $__inlined_func$~lib/array/Array#includes$717 + br $__inlined_func$~lib/array/Array#includes$710 end local.get $0 i32.const 1 @@ -21735,7 +21689,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 467 i32.const 3 call $~lib/builtins/abort @@ -21760,7 +21714,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 471 i32.const 3 call $~lib/builtins/abort @@ -21776,7 +21730,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 472 i32.const 3 call $~lib/builtins/abort @@ -21793,7 +21747,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 473 i32.const 3 call $~lib/builtins/abort @@ -21810,7 +21764,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 474 i32.const 3 call $~lib/builtins/abort @@ -21820,7 +21774,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 4640 + i32.const 6608 call $~lib/rt/__newArray local.tee $0 i32.store offset=88 @@ -21839,7 +21793,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 4688 + i32.const 6656 call $~lib/rt/__newArray local.set $4 global.get $~lib/memory/__stack_pointer @@ -21852,7 +21806,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 481 i32.const 3 call $~lib/builtins/abort @@ -21864,7 +21818,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 4736 + i32.const 6704 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -21877,7 +21831,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 482 i32.const 3 call $~lib/builtins/abort @@ -21887,7 +21841,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 4768 + i32.const 6736 call $~lib/rt/__newArray local.tee $0 i32.store offset=88 @@ -21905,7 +21859,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 4816 + i32.const 6784 call $~lib/rt/__newArray local.set $4 global.get $~lib/memory/__stack_pointer @@ -21918,7 +21872,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 485 i32.const 3 call $~lib/builtins/abort @@ -21930,7 +21884,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 4848 + i32.const 6816 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -21943,7 +21897,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 486 i32.const 3 call $~lib/builtins/abort @@ -21953,7 +21907,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 4896 + i32.const 6864 call $~lib/rt/__newArray local.tee $0 i32.store offset=88 @@ -21972,7 +21926,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 4944 + i32.const 6912 call $~lib/rt/__newArray local.set $4 global.get $~lib/memory/__stack_pointer @@ -21985,7 +21939,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 489 i32.const 3 call $~lib/builtins/abort @@ -21997,7 +21951,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 4976 + i32.const 6944 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -22010,7 +21964,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 490 i32.const 3 call $~lib/builtins/abort @@ -22020,7 +21974,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 5008 + i32.const 6976 call $~lib/rt/__newArray local.tee $0 i32.store offset=88 @@ -22038,7 +21992,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 5056 + i32.const 7024 call $~lib/rt/__newArray local.set $4 global.get $~lib/memory/__stack_pointer @@ -22051,7 +22005,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 493 i32.const 3 call $~lib/builtins/abort @@ -22063,7 +22017,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 5088 + i32.const 7056 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -22076,7 +22030,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 494 i32.const 3 call $~lib/builtins/abort @@ -22086,7 +22040,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 5120 + i32.const 7088 call $~lib/rt/__newArray local.tee $0 i32.store offset=88 @@ -22104,7 +22058,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 5168 + i32.const 7136 call $~lib/rt/__newArray local.set $4 global.get $~lib/memory/__stack_pointer @@ -22117,7 +22071,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 497 i32.const 3 call $~lib/builtins/abort @@ -22129,7 +22083,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 5200 + i32.const 7168 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -22142,7 +22096,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 498 i32.const 3 call $~lib/builtins/abort @@ -22152,7 +22106,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 5248 + i32.const 7216 call $~lib/rt/__newArray local.tee $0 i32.store offset=88 @@ -22171,7 +22125,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 5296 + i32.const 7264 call $~lib/rt/__newArray local.set $4 global.get $~lib/memory/__stack_pointer @@ -22184,7 +22138,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 501 i32.const 3 call $~lib/builtins/abort @@ -22196,7 +22150,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 5328 + i32.const 7296 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -22209,7 +22163,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 502 i32.const 3 call $~lib/builtins/abort @@ -22219,7 +22173,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 5376 + i32.const 7344 call $~lib/rt/__newArray local.tee $0 i32.store offset=88 @@ -22238,7 +22192,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 5424 + i32.const 7392 call $~lib/rt/__newArray local.set $4 global.get $~lib/memory/__stack_pointer @@ -22251,7 +22205,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 505 i32.const 3 call $~lib/builtins/abort @@ -22263,7 +22217,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 5456 + i32.const 7424 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -22276,7 +22230,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 506 i32.const 3 call $~lib/builtins/abort @@ -22286,7 +22240,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 5488 + i32.const 7456 call $~lib/rt/__newArray local.tee $0 i32.store offset=88 @@ -22304,7 +22258,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 5536 + i32.const 7504 call $~lib/rt/__newArray local.set $4 global.get $~lib/memory/__stack_pointer @@ -22317,7 +22271,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 509 i32.const 3 call $~lib/builtins/abort @@ -22329,7 +22283,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 5568 + i32.const 7536 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -22342,7 +22296,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 510 i32.const 3 call $~lib/builtins/abort @@ -22352,7 +22306,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 5616 + i32.const 7584 call $~lib/rt/__newArray local.tee $0 i32.store offset=88 @@ -22370,7 +22324,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 5664 + i32.const 7632 call $~lib/rt/__newArray local.set $4 global.get $~lib/memory/__stack_pointer @@ -22383,7 +22337,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 513 i32.const 3 call $~lib/builtins/abort @@ -22395,7 +22349,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 5696 + i32.const 7664 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -22408,7 +22362,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 514 i32.const 3 call $~lib/builtins/abort @@ -22418,7 +22372,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 5744 + i32.const 7712 call $~lib/rt/__newArray local.tee $0 i32.store offset=88 @@ -22436,7 +22390,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 5792 + i32.const 7760 call $~lib/rt/__newArray local.set $4 global.get $~lib/memory/__stack_pointer @@ -22449,7 +22403,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 517 i32.const 3 call $~lib/builtins/abort @@ -22461,7 +22415,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 5824 + i32.const 7792 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -22474,7 +22428,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 518 i32.const 3 call $~lib/builtins/abort @@ -22484,7 +22438,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 5872 + i32.const 7840 call $~lib/rt/__newArray local.tee $0 i32.store offset=88 @@ -22502,7 +22456,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 5920 + i32.const 7888 call $~lib/rt/__newArray local.set $4 global.get $~lib/memory/__stack_pointer @@ -22515,7 +22469,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 521 i32.const 3 call $~lib/builtins/abort @@ -22527,7 +22481,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 5952 + i32.const 7920 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -22540,7 +22494,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 522 i32.const 3 call $~lib/builtins/abort @@ -22550,7 +22504,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 6000 + i32.const 7968 call $~lib/rt/__newArray local.tee $0 i32.store offset=88 @@ -22568,7 +22522,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 6048 + i32.const 8016 call $~lib/rt/__newArray local.set $4 global.get $~lib/memory/__stack_pointer @@ -22581,7 +22535,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 525 i32.const 3 call $~lib/builtins/abort @@ -22593,7 +22547,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 6080 + i32.const 8048 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -22606,7 +22560,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 526 i32.const 3 call $~lib/builtins/abort @@ -22616,7 +22570,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 6128 + i32.const 8096 call $~lib/rt/__newArray local.tee $0 i32.store offset=88 @@ -22634,7 +22588,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 6176 + i32.const 8144 call $~lib/rt/__newArray local.set $4 global.get $~lib/memory/__stack_pointer @@ -22647,7 +22601,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -22659,7 +22613,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 6208 + i32.const 8176 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -22672,7 +22626,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -22682,7 +22636,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 6256 + i32.const 8224 call $~lib/rt/__newArray local.tee $0 i32.store offset=88 @@ -22700,7 +22654,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 6304 + i32.const 8272 call $~lib/rt/__newArray local.set $4 global.get $~lib/memory/__stack_pointer @@ -22713,7 +22667,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 533 i32.const 3 call $~lib/builtins/abort @@ -22725,7 +22679,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 6336 + i32.const 8304 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -22738,7 +22692,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 534 i32.const 3 call $~lib/builtins/abort @@ -22748,7 +22702,7 @@ i32.const 0 i32.const 2 i32.const 10 - i32.const 6384 + i32.const 8352 call $~lib/rt/__newArray local.tee $0 i32.store offset=92 @@ -22768,7 +22722,7 @@ call $~lib/array/Array#get:length if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 538 i32.const 3 call $~lib/builtins/abort @@ -22781,7 +22735,7 @@ call $~lib/array/Array#get:length if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 539 i32.const 3 call $~lib/builtins/abort @@ -22841,7 +22795,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 544 i32.const 3 call $~lib/builtins/abort @@ -22863,7 +22817,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 545 i32.const 3 call $~lib/builtins/abort @@ -22885,7 +22839,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 546 i32.const 3 call $~lib/builtins/abort @@ -22900,7 +22854,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 548 i32.const 3 call $~lib/builtins/abort @@ -22922,7 +22876,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 549 i32.const 3 call $~lib/builtins/abort @@ -22944,7 +22898,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 550 i32.const 3 call $~lib/builtins/abort @@ -22966,7 +22920,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 551 i32.const 3 call $~lib/builtins/abort @@ -23006,7 +22960,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -23110,7 +23064,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 556 i32.const 3 call $~lib/builtins/abort @@ -23128,8 +23082,8 @@ local.get $0 i32.eqz if - i32.const 6544 - i32.const 1552 + i32.const 8512 + i32.const 3520 i32.const 557 i32.const 10 call $~lib/builtins/abort @@ -23144,7 +23098,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -23159,7 +23113,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -23173,7 +23127,7 @@ call $~lib/array/Array#__get if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 560 i32.const 3 call $~lib/builtins/abort @@ -23191,8 +23145,8 @@ local.get $0 i32.eqz if - i32.const 6544 - i32.const 1552 + i32.const 8512 + i32.const 3520 i32.const 561 i32.const 10 call $~lib/builtins/abort @@ -23207,7 +23161,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -23250,16 +23204,16 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 6672 + i32.const 8640 i32.store offset=8 local.get $0 - i32.const 6672 + i32.const 8640 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 574 i32.const 3 call $~lib/builtins/abort @@ -23270,10 +23224,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 6704 + i32.const 8672 i32.store offset=8 local.get $0 - i32.const 6704 + i32.const 8672 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -23281,7 +23235,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -23292,10 +23246,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 6736 + i32.const 8704 i32.store offset=8 local.get $0 - i32.const 6736 + i32.const 8704 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -23303,7 +23257,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 580 i32.const 3 call $~lib/builtins/abort @@ -23314,10 +23268,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 6768 + i32.const 8736 i32.store offset=8 local.get $0 - i32.const 6768 + i32.const 8736 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -23325,7 +23279,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 588 i32.const 3 call $~lib/builtins/abort @@ -23341,7 +23295,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 589 i32.const 3 call $~lib/builtins/abort @@ -23352,10 +23306,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 6800 + i32.const 8768 i32.store offset=8 local.get $0 - i32.const 6800 + i32.const 8768 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -23363,7 +23317,7 @@ i32.eq if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 591 i32.const 3 call $~lib/builtins/abort @@ -23402,10 +23356,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 6832 + i32.const 8800 i32.store offset=8 local.get $0 - i32.const 6832 + i32.const 8800 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -23413,7 +23367,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -23429,7 +23383,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -23453,7 +23407,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 6864 + i32.const 8832 call $~lib/rt/__newArray local.tee $0 i32.store offset=124 @@ -23461,16 +23415,16 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 6912 + i32.const 8880 i32.store offset=8 local.get $0 - i32.const 6912 + i32.const 8880 call $~lib/array/Array#findLastIndex global.set $std/array/i global.get $std/array/i if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -23480,10 +23434,10 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 6944 + i32.const 8912 i32.store offset=8 local.get $0 - i32.const 6944 + i32.const 8912 call $~lib/array/Array#findLastIndex global.set $std/array/i global.get $std/array/i @@ -23491,7 +23445,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -23501,10 +23455,10 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 6976 + i32.const 8944 i32.store offset=8 local.get $0 - i32.const 6976 + i32.const 8944 call $~lib/array/Array#findLastIndex global.set $std/array/i global.get $std/array/i @@ -23512,7 +23466,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 624 i32.const 3 call $~lib/builtins/abort @@ -23522,10 +23476,10 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7008 + i32.const 8976 i32.store offset=8 local.get $0 - i32.const 7008 + i32.const 8976 call $~lib/array/Array#findLastIndex global.set $std/array/i global.get $std/array/i @@ -23533,7 +23487,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -23544,16 +23498,16 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7040 + i32.const 9008 i32.store offset=8 local.get $0 - i32.const 7040 + i32.const 9008 call $~lib/array/Array#every i32.const 1 i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 640 i32.const 3 call $~lib/builtins/abort @@ -23564,14 +23518,14 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7072 + i32.const 9040 i32.store offset=8 local.get $0 - i32.const 7072 + i32.const 9040 call $~lib/array/Array#every if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 643 i32.const 3 call $~lib/builtins/abort @@ -23582,16 +23536,16 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7104 + i32.const 9072 i32.store offset=8 local.get $0 - i32.const 7104 + i32.const 9072 call $~lib/array/Array#every i32.const 1 i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 651 i32.const 3 call $~lib/builtins/abort @@ -23607,7 +23561,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 652 i32.const 3 call $~lib/builtins/abort @@ -23618,14 +23572,14 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7136 + i32.const 9104 i32.store offset=8 local.get $0 - i32.const 7136 + i32.const 9104 call $~lib/array/Array#every if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 654 i32.const 3 call $~lib/builtins/abort @@ -23664,16 +23618,16 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7168 + i32.const 9136 i32.store offset=8 local.get $0 - i32.const 7168 + i32.const 9136 call $~lib/array/Array#every i32.const 1 i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 667 i32.const 3 call $~lib/builtins/abort @@ -23689,7 +23643,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 668 i32.const 3 call $~lib/builtins/abort @@ -23714,16 +23668,16 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7200 + i32.const 9168 i32.store offset=8 local.get $0 - i32.const 7200 + i32.const 9168 call $~lib/array/Array#some i32.const 1 i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 678 i32.const 3 call $~lib/builtins/abort @@ -23734,14 +23688,14 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7232 + i32.const 9200 i32.store offset=8 local.get $0 - i32.const 7232 + i32.const 9200 call $~lib/array/Array#some if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 681 i32.const 3 call $~lib/builtins/abort @@ -23752,14 +23706,14 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7264 + i32.const 9232 i32.store offset=8 local.get $0 - i32.const 7264 + i32.const 9232 call $~lib/array/Array#some if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 689 i32.const 3 call $~lib/builtins/abort @@ -23775,7 +23729,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 690 i32.const 3 call $~lib/builtins/abort @@ -23786,16 +23740,16 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7296 + i32.const 9264 i32.store offset=8 local.get $0 - i32.const 7296 + i32.const 9264 call $~lib/array/Array#some i32.const 1 i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 692 i32.const 3 call $~lib/builtins/abort @@ -23834,14 +23788,14 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7328 + i32.const 9296 i32.store offset=8 local.get $0 - i32.const 7328 + i32.const 9296 call $~lib/array/Array#some if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 705 i32.const 3 call $~lib/builtins/abort @@ -23857,7 +23811,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 706 i32.const 3 call $~lib/builtins/abort @@ -23884,17 +23838,17 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7360 + i32.const 9328 i32.store offset=8 local.get $0 - i32.const 7360 + i32.const 9328 call $~lib/array/Array#forEach global.get $std/array/i i32.const 6 i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 717 i32.const 3 call $~lib/builtins/abort @@ -23907,17 +23861,17 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7392 + i32.const 9360 i32.store offset=8 local.get $0 - i32.const 7392 + i32.const 9360 call $~lib/array/Array#forEach global.get $std/array/i i32.const 6 i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 726 i32.const 3 call $~lib/builtins/abort @@ -23933,7 +23887,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 727 i32.const 3 call $~lib/builtins/abort @@ -23946,17 +23900,17 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7424 + i32.const 9392 i32.store offset=8 local.get $0 - i32.const 7424 + i32.const 9392 call $~lib/array/Array#forEach global.get $std/array/i i32.const 406 i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 730 i32.const 3 call $~lib/builtins/abort @@ -23997,17 +23951,17 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7456 + i32.const 9424 i32.store offset=8 local.get $0 - i32.const 7456 + i32.const 9424 call $~lib/array/Array#forEach global.get $std/array/i i32.const 1 i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 744 i32.const 3 call $~lib/builtins/abort @@ -24023,7 +23977,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 745 i32.const 3 call $~lib/builtins/abort @@ -24048,10 +24002,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7488 + i32.const 9456 i32.store offset=8 local.get $0 - i32.const 7488 + i32.const 9456 call $~lib/array/Array#forEach global.get $~lib/memory/__stack_pointer global.get $std/array/arr @@ -24063,7 +24017,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 770 i32.const 3 call $~lib/builtins/abort @@ -24124,14 +24078,14 @@ local.tee $2 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9296 + i32.const 9488 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -24197,7 +24151,7 @@ local.get $12 local.get $4 local.get $2 - i32.const 9296 + i32.const 9488 i32.load call_indirect (type $1) local.tee $12 @@ -24230,14 +24184,14 @@ local.tee $2 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9328 + i32.const 9520 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -24305,7 +24259,7 @@ local.get $12 local.get $4 local.get $2 - i32.const 9328 + i32.const 9520 i32.load call_indirect (type $15) f32.store @@ -24331,7 +24285,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 786 i32.const 3 call $~lib/builtins/abort @@ -24354,7 +24308,7 @@ f32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 787 i32.const 3 call $~lib/builtins/abort @@ -24367,17 +24321,17 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9360 + i32.const 9552 i32.store offset=8 local.get $0 - i32.const 9360 + i32.const 9552 call $~lib/array/Array#map global.get $std/array/i i32.const 6 i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 796 i32.const 3 call $~lib/builtins/abort @@ -24393,7 +24347,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 797 i32.const 3 call $~lib/builtins/abort @@ -24406,17 +24360,17 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9392 + i32.const 9584 i32.store offset=8 local.get $0 - i32.const 9392 + i32.const 9584 call $~lib/array/Array#map global.get $std/array/i i32.const 406 i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 804 i32.const 3 call $~lib/builtins/abort @@ -24457,17 +24411,17 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9424 + i32.const 9616 i32.store offset=8 local.get $0 - i32.const 9424 + i32.const 9616 call $~lib/array/Array#map global.get $std/array/i i32.const 1 i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 819 i32.const 3 call $~lib/builtins/abort @@ -24483,7 +24437,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 820 i32.const 3 call $~lib/builtins/abort @@ -24508,11 +24462,11 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9456 + i32.const 9648 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 9456 + i32.const 9648 call $~lib/array/Array#filter local.tee $0 i32.store offset=136 @@ -24525,7 +24479,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 830 i32.const 3 call $~lib/builtins/abort @@ -24538,10 +24492,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9488 + i32.const 9680 i32.store offset=8 local.get $0 - i32.const 9488 + i32.const 9680 call $~lib/array/Array#filter drop global.get $std/array/i @@ -24549,7 +24503,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 839 i32.const 3 call $~lib/builtins/abort @@ -24565,7 +24519,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 840 i32.const 3 call $~lib/builtins/abort @@ -24578,10 +24532,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9520 + i32.const 9712 i32.store offset=8 local.get $0 - i32.const 9520 + i32.const 9712 call $~lib/array/Array#filter drop global.get $std/array/i @@ -24589,7 +24543,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 847 i32.const 3 call $~lib/builtins/abort @@ -24630,10 +24584,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9552 + i32.const 9744 i32.store offset=8 local.get $0 - i32.const 9552 + i32.const 9744 call $~lib/array/Array#filter drop global.get $std/array/i @@ -24641,7 +24595,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 862 i32.const 3 call $~lib/builtins/abort @@ -24657,7 +24611,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 863 i32.const 3 call $~lib/builtins/abort @@ -24682,10 +24636,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9776 i32.store offset=8 local.get $0 - i32.const 9584 + i32.const 9776 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -24694,7 +24648,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 873 i32.const 3 call $~lib/builtins/abort @@ -24705,10 +24659,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9616 + i32.const 9808 i32.store offset=8 local.get $0 - i32.const 9616 + i32.const 9808 i32.const 4 call $~lib/array/Array#reduce global.set $std/array/i @@ -24717,7 +24671,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 877 i32.const 3 call $~lib/builtins/abort @@ -24728,16 +24682,16 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9648 + i32.const 9840 i32.store offset=8 local.get $0 - i32.const 9648 + i32.const 9840 i32.const 0 call $~lib/array/Array#reduce i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 880 i32.const 3 call $~lib/builtins/abort @@ -24748,15 +24702,15 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9680 + i32.const 9872 i32.store offset=8 local.get $0 - i32.const 9680 + i32.const 9872 i32.const 0 call $~lib/array/Array#reduce if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 883 i32.const 3 call $~lib/builtins/abort @@ -24767,10 +24721,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9712 + i32.const 9904 i32.store offset=8 local.get $0 - i32.const 9712 + i32.const 9904 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -24779,7 +24733,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -24795,7 +24749,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 892 i32.const 3 call $~lib/builtins/abort @@ -24806,10 +24760,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9744 + i32.const 9936 i32.store offset=8 local.get $0 - i32.const 9744 + i32.const 9936 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -24818,7 +24772,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 894 i32.const 3 call $~lib/builtins/abort @@ -24857,10 +24811,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9776 + i32.const 9968 i32.store offset=8 local.get $0 - i32.const 9776 + i32.const 9968 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -24869,7 +24823,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 907 i32.const 3 call $~lib/builtins/abort @@ -24885,7 +24839,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 908 i32.const 3 call $~lib/builtins/abort @@ -24910,10 +24864,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9808 + i32.const 10000 i32.store offset=8 local.get $0 - i32.const 9808 + i32.const 10000 i32.const 0 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -24922,7 +24876,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 918 i32.const 3 call $~lib/builtins/abort @@ -24933,10 +24887,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9840 + i32.const 10032 i32.store offset=8 local.get $0 - i32.const 9840 + i32.const 10032 i32.const 4 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -24945,7 +24899,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 922 i32.const 3 call $~lib/builtins/abort @@ -24956,16 +24910,16 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9872 + i32.const 10064 i32.store offset=8 local.get $0 - i32.const 9872 + i32.const 10064 i32.const 0 call $~lib/array/Array#reduceRight i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 925 i32.const 3 call $~lib/builtins/abort @@ -24976,15 +24930,15 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9904 + i32.const 10096 i32.store offset=8 local.get $0 - i32.const 9904 + i32.const 10096 i32.const 0 call $~lib/array/Array#reduceRight if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 928 i32.const 3 call $~lib/builtins/abort @@ -24995,10 +24949,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9936 + i32.const 10128 i32.store offset=8 local.get $0 - i32.const 9936 + i32.const 10128 i32.const 0 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -25007,7 +24961,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 936 i32.const 3 call $~lib/builtins/abort @@ -25023,7 +24977,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 937 i32.const 3 call $~lib/builtins/abort @@ -25034,10 +24988,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9968 + i32.const 10160 i32.store offset=8 local.get $0 - i32.const 9968 + i32.const 10160 i32.const 0 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -25046,7 +25000,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 939 i32.const 3 call $~lib/builtins/abort @@ -25085,10 +25039,10 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10000 + i32.const 10192 i32.store offset=8 local.get $0 - i32.const 10000 + i32.const 10192 i32.const 0 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -25097,7 +25051,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 952 i32.const 3 call $~lib/builtins/abort @@ -25111,7 +25065,7 @@ call $~lib/array/Array#get:length if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 953 i32.const 3 call $~lib/builtins/abort @@ -25701,7 +25655,7 @@ i32.const 3 i32.const 2 i32.const 9 - i32.const 10224 + i32.const 10416 call $~lib/rt/__newArray local.tee $0 i32.store offset=244 @@ -25718,7 +25672,7 @@ i32.const 3 i32.const 2 i32.const 9 - i32.const 10288 + i32.const 10480 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -25730,7 +25684,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1091 i32.const 3 call $~lib/builtins/abort @@ -25740,7 +25694,7 @@ i32.const 8 i32.const 2 i32.const 9 - i32.const 10320 + i32.const 10512 call $~lib/rt/__newArray local.tee $0 i32.store offset=248 @@ -25757,7 +25711,7 @@ i32.const 8 i32.const 2 i32.const 9 - i32.const 10384 + i32.const 10576 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -25769,7 +25723,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1095 i32.const 3 call $~lib/builtins/abort @@ -25779,7 +25733,7 @@ i32.const 8 i32.const 3 i32.const 12 - i32.const 10448 + i32.const 10640 call $~lib/rt/__newArray local.tee $2 i32.store offset=252 @@ -25793,7 +25747,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -25803,20 +25757,20 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 10544 + i32.const 10736 i32.store global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10544 + i32.const 10736 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -25833,7 +25787,7 @@ local.get $2 i32.load offset=12 global.get $~lib/memory/__stack_pointer - i32.const 10544 + i32.const 10736 i32.store call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer @@ -25850,13 +25804,13 @@ i32.const 8 i32.const 3 i32.const 12 - i32.const 10576 + i32.const 10768 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$7 (result i32) + block $__inlined_func$std/array/isArraysEqual$4 (result i32) i32.const 0 local.set $0 global.get $~lib/memory/__stack_pointer @@ -25864,7 +25818,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -25972,7 +25926,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isArraysEqual$7 + br $__inlined_func$std/array/isArraysEqual$4 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -25983,7 +25937,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1099 i32.const 3 call $~lib/builtins/abort @@ -25993,7 +25947,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 10672 + i32.const 10864 call $~lib/rt/__newArray local.tee $0 i32.store offset=256 @@ -26007,7 +25961,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -26017,16 +25971,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 10720 + i32.const 10912 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10720 + i32.const 10912 i32.store offset=8 local.get $0 - i32.const 10720 + i32.const 10912 call $~lib/array/Array#sort drop global.get $~lib/memory/__stack_pointer @@ -26039,7 +25993,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 10752 + i32.const 10944 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -26052,7 +26006,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1103 i32.const 3 call $~lib/builtins/abort @@ -26062,7 +26016,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 10800 + i32.const 10992 call $~lib/rt/__newArray local.tee $0 i32.store offset=260 @@ -26076,7 +26030,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -26086,20 +26040,20 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 10848 + i32.const 11040 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10848 + i32.const 11040 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -26116,7 +26070,7 @@ local.get $0 i32.load offset=12 global.get $~lib/memory/__stack_pointer - i32.const 10848 + i32.const 11040 i32.store call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer @@ -26133,7 +26087,7 @@ i32.const 5 i32.const 2 i32.const 8 - i32.const 10880 + i32.const 11072 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -26145,7 +26099,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1107 i32.const 3 call $~lib/builtins/abort @@ -26155,7 +26109,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 10928 + i32.const 11120 call $~lib/rt/__newArray local.tee $4 i32.store offset=264 @@ -26163,7 +26117,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 10960 + i32.const 11152 call $~lib/rt/__newArray local.tee $8 i32.store offset=268 @@ -26171,7 +26125,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 10992 + i32.const 11184 call $~lib/rt/__newArray local.tee $9 i32.store offset=272 @@ -26179,7 +26133,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 11024 + i32.const 11216 call $~lib/rt/__newArray local.tee $10 i32.store offset=276 @@ -26187,7 +26141,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 11072 + i32.const 11264 call $~lib/rt/__newArray local.tee $11 i32.store offset=280 @@ -26232,7 +26186,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 11152 + i32.const 11344 call $~lib/rt/__newArray local.set $4 global.get $~lib/memory/__stack_pointer @@ -26245,7 +26199,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1127 i32.const 3 call $~lib/builtins/abort @@ -26262,7 +26216,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 11184 + i32.const 11376 call $~lib/rt/__newArray local.set $4 global.get $~lib/memory/__stack_pointer @@ -26275,7 +26229,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1130 i32.const 3 call $~lib/builtins/abort @@ -26299,7 +26253,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1133 i32.const 3 call $~lib/builtins/abort @@ -26323,7 +26277,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1136 i32.const 3 call $~lib/builtins/abort @@ -26347,7 +26301,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1139 i32.const 3 call $~lib/builtins/abort @@ -26371,7 +26325,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1142 i32.const 3 call $~lib/builtins/abort @@ -26395,7 +26349,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1145 i32.const 3 call $~lib/builtins/abort @@ -26411,7 +26365,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -26430,7 +26384,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -26444,7 +26398,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -26538,10 +26492,10 @@ local.get $9 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11216 + i32.const 11408 i32.store offset=4 local.get $9 - i32.const 11216 + i32.const 11408 call $~lib/array/Array#sort local.tee $0 i32.store offset=12 @@ -26622,7 +26576,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1076 i32.const 3 call $~lib/builtins/abort @@ -26646,37 +26600,37 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11248 + i32.const 11440 i32.store offset=8 local.get $0 - i32.const 11248 + i32.const 11440 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11280 + i32.const 11472 i32.store offset=8 local.get $0 - i32.const 11280 + i32.const 11472 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11312 + i32.const 11504 i32.store offset=8 local.get $1 - i32.const 11312 + i32.const 11504 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11344 + i32.const 11536 i32.store offset=8 local.get $1 - i32.const 11344 + i32.const 11536 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -26684,7 +26638,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -26699,7 +26653,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -26833,10 +26787,10 @@ local.get $2 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11376 + i32.const 11568 i32.store offset=8 local.get $2 - i32.const 11376 + i32.const 11568 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -26844,7 +26798,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -26859,7 +26813,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -26960,7 +26914,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27008,16 +26962,16 @@ local.get $2 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11408 + i32.const 11600 i32.store offset=8 local.get $2 - i32.const 11408 + i32.const 11600 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer i32.const 7 i32.const 2 i32.const 34 - i32.const 11600 + i32.const 11760 call $~lib/rt/__newArray local.tee $0 i32.store offset=320 @@ -27025,7 +26979,7 @@ i32.const 7 i32.const 2 i32.const 34 - i32.const 11648 + i32.const 11808 call $~lib/rt/__newArray local.tee $2 i32.store offset=324 @@ -27039,7 +26993,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27049,20 +27003,20 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 11696 + i32.const 11856 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11696 + i32.const 11856 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27071,29 +27025,29 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=8 - block $__inlined_func$std/array/isSorted<~lib/string/String|null>$662 (result i32) + block $__inlined_func$std/array/isSorted<~lib/string/String|null>$657 (result i32) global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 11696 + i32.const 11856 i32.store offset=12 local.get $0 - i32.const 11696 + i32.const 11856 call $~lib/array/Array#sort local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11696 + i32.const 11856 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27141,7 +27095,7 @@ global.set $~argumentsLength local.get $9 local.get $10 - i32.const 11696 + i32.const 11856 i32.load call_indirect (type $0) i32.const 0 @@ -27152,7 +27106,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isSorted<~lib/string/String|null>$662 + br $__inlined_func$std/array/isSorted<~lib/string/String|null>$657 end local.get $1 i32.const 1 @@ -27170,7 +27124,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1080 i32.const 3 call $~lib/builtins/abort @@ -27184,7 +27138,7 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 (result i32) + block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$751 (result i32) global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -27196,7 +27150,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27224,7 +27178,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$751 end local.get $0 local.get $2 @@ -27235,7 +27189,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1 - br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$751 end i32.const 0 local.set $1 @@ -27269,7 +27223,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27295,7 +27249,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$751 end local.get $1 i32.const 1 @@ -27313,7 +27267,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1184 i32.const 3 call $~lib/builtins/abort @@ -27325,7 +27279,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27340,7 +27294,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27446,7 +27400,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27455,10 +27409,10 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - i32.const 11568 + i32.const 1120 local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 i32.store i32.const 0 local.set $1 @@ -27472,7 +27426,7 @@ i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/math/NativeMath.random - i32.const 10028 + i32.const 10220 i32.load i32.const 1 i32.shr_u @@ -27486,18 +27440,18 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 10032 + i32.const 10224 i32.store - block $__inlined_func$~lib/string/String#charAt$737 + block $__inlined_func$~lib/string/String#charAt$740 local.get $12 - i32.const 10028 + i32.const 10220 i32.load i32.const 1 i32.shr_u @@ -27507,9 +27461,9 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 local.set $2 - br $__inlined_func$~lib/string/String#charAt$737 + br $__inlined_func$~lib/string/String#charAt$740 end global.get $~lib/memory/__stack_pointer i32.const 2 @@ -27521,7 +27475,7 @@ local.get $12 i32.const 1 i32.shl - i32.const 10032 + i32.const 10224 i32.add i32.load16_u i32.store16 @@ -27579,7 +27533,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27589,16 +27543,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 11728 + i32.const 11888 i32.store global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11728 + i32.const 11888 i32.store offset=8 local.get $9 - i32.const 11728 + i32.const 11888 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer i32.const 12 @@ -27607,7 +27561,7 @@ i32.const 2 i32.const 0 i32.const 37 - i32.const 11760 + i32.const 11920 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -27618,7 +27572,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27637,7 +27591,7 @@ i32.load offset=12 local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store i32.const 0 local.set $1 @@ -27648,13 +27602,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinBooleanArray$12 + block $__inlined_func$~lib/util/string/joinBooleanArray$9 local.get $0 i32.const 1 i32.sub @@ -27666,16 +27620,16 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 local.set $2 - br $__inlined_func$~lib/util/string/joinBooleanArray$12 + br $__inlined_func$~lib/util/string/joinBooleanArray$9 end block $folding-inner07 local.get $0 i32.eqz if - i32.const 11792 - i32.const 11824 + i32.const 11952 + i32.const 11984 local.get $8 i32.load8_u select @@ -27683,10 +27637,10 @@ br $folding-inner07 end global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11852 + i32.const 12012 i32.load i32.const 1 i32.shr_u @@ -27723,8 +27677,8 @@ i32.const 1 i32.shl i32.add - i32.const 11792 - i32.const 11824 + i32.const 11952 + i32.const 11984 local.get $11 select local.get $12 @@ -27742,7 +27696,7 @@ i32.const 1 i32.shl i32.add - i32.const 11856 + i32.const 12016 local.get $9 i32.const 1 i32.shl @@ -27773,8 +27727,8 @@ i32.const 1 i32.shl i32.add - i32.const 11792 - i32.const 11824 + i32.const 11952 + i32.const 11984 local.get $0 select local.get $4 @@ -27801,7 +27755,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinBooleanArray$12 + br $__inlined_func$~lib/util/string/joinBooleanArray$9 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -27816,12 +27770,12 @@ local.get $2 i32.store local.get $2 - i32.const 11888 + i32.const 12048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1193 i32.const 3 call $~lib/builtins/abort @@ -27830,26 +27784,26 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 11936 + i32.const 12096 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.const 11568 + i32.const 1120 call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 11968 + i32.const 12128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1194 i32.const 3 call $~lib/builtins/abort @@ -27858,26 +27812,26 @@ i32.const 3 i32.const 2 i32.const 8 - i32.const 12000 + i32.const 12160 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.const 12032 + i32.const 12192 call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 11968 + i32.const 12128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1195 i32.const 3 call $~lib/builtins/abort @@ -27886,26 +27840,26 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 12064 + i32.const 12224 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.const 12096 + i32.const 12256 call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 12128 + i32.const 12288 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1196 i32.const 3 call $~lib/builtins/abort @@ -27914,7 +27868,7 @@ i32.const 6 i32.const 3 i32.const 12 - i32.const 12208 + i32.const 12368 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -27925,7 +27879,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -27942,7 +27896,7 @@ local.get $0 i32.load offset=12 global.get $~lib/memory/__stack_pointer - i32.const 12288 + i32.const 12448 i32.store call $~lib/util/string/joinFloatArray local.set $0 @@ -27954,12 +27908,12 @@ local.get $0 i32.store local.get $0 - i32.const 13456 + i32.const 13616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1197 i32.const 3 call $~lib/builtins/abort @@ -27968,26 +27922,26 @@ i32.const 3 i32.const 2 i32.const 34 - i32.const 13600 + i32.const 13760 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.const 11568 + i32.const 1120 call $~lib/array/Array<~lib/string/String|null>#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 13568 + i32.const 13728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1198 i32.const 3 call $~lib/builtins/abort @@ -28028,12 +27982,12 @@ local.get $0 i32.store local.get $0 - i32.const 13696 + i32.const 13856 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1200 i32.const 3 call $~lib/builtins/abort @@ -28070,12 +28024,12 @@ local.get $0 i32.store local.get $0 - i32.const 13792 + i32.const 13952 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1203 i32.const 3 call $~lib/builtins/abort @@ -28085,7 +28039,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 13888 + i32.const 14048 call $~lib/rt/__newArray local.tee $0 i32.store offset=348 @@ -28093,7 +28047,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 13920 + i32.const 14080 call $~lib/rt/__newArray local.tee $1 i32.store offset=352 @@ -28101,7 +28055,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 13952 + i32.const 14112 call $~lib/rt/__newArray local.tee $2 i32.store offset=356 @@ -28109,7 +28063,7 @@ i32.const 4 i32.const 2 i32.const 4 - i32.const 13984 + i32.const 14144 call $~lib/rt/__newArray local.tee $4 i32.store offset=360 @@ -28123,12 +28077,12 @@ local.get $0 i32.store local.get $0 - i32.const 11568 + i32.const 1120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1213 i32.const 3 call $~lib/builtins/abort @@ -28144,12 +28098,12 @@ local.get $0 i32.store local.get $0 - i32.const 13568 + i32.const 13728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1214 i32.const 3 call $~lib/builtins/abort @@ -28165,12 +28119,12 @@ local.get $0 i32.store local.get $0 - i32.const 14032 + i32.const 14192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1215 i32.const 3 call $~lib/builtins/abort @@ -28186,12 +28140,12 @@ local.get $0 i32.store local.get $0 - i32.const 14064 + i32.const 14224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1216 i32.const 3 call $~lib/builtins/abort @@ -28200,7 +28154,7 @@ i32.const 3 i32.const 0 i32.const 38 - i32.const 14112 + i32.const 14272 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -28213,12 +28167,12 @@ local.get $0 i32.store local.get $0 - i32.const 14144 + i32.const 14304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1218 i32.const 3 call $~lib/builtins/abort @@ -28227,7 +28181,7 @@ i32.const 3 i32.const 0 i32.const 38 - i32.const 14176 + i32.const 14336 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -28240,12 +28194,12 @@ local.get $0 i32.store local.get $0 - i32.const 14208 + i32.const 14368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1219 i32.const 3 call $~lib/builtins/abort @@ -28254,7 +28208,7 @@ i32.const 3 i32.const 1 i32.const 11 - i32.const 14256 + i32.const 14416 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -28267,7 +28221,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -28281,7 +28235,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -28300,20 +28254,20 @@ i32.load offset=12 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$741 + block $__inlined_func$~lib/util/string/joinIntegerArray$744 local.get $1 i32.const 1 i32.sub @@ -28325,9 +28279,9 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 local.set $2 - br $__inlined_func$~lib/util/string/joinIntegerArray$741 + br $__inlined_func$~lib/util/string/joinIntegerArray$744 end local.get $1 i32.eqz @@ -28340,13 +28294,13 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$741 + br $__inlined_func$~lib/util/string/joinIntegerArray$744 end global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11852 + i32.const 12012 i32.load i32.const 1 i32.shr_u @@ -28391,7 +28345,7 @@ i32.const 1 i32.shl i32.add - i32.const 11856 + i32.const 12016 local.get $8 i32.const 1 i32.shl @@ -28437,7 +28391,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$741 + br $__inlined_func$~lib/util/string/joinIntegerArray$744 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -28456,12 +28410,12 @@ local.get $2 i32.store local.get $2 - i32.const 14288 + i32.const 14448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1220 i32.const 3 call $~lib/builtins/abort @@ -28470,7 +28424,7 @@ i32.const 2 i32.const 1 i32.const 39 - i32.const 14336 + i32.const 14496 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -28485,7 +28439,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -28499,7 +28453,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -28518,20 +28472,20 @@ i32.load offset=12 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$742 + block $__inlined_func$~lib/util/string/joinIntegerArray$745 local.get $1 i32.const 1 i32.sub @@ -28543,9 +28497,9 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 local.set $2 - br $__inlined_func$~lib/util/string/joinIntegerArray$742 + br $__inlined_func$~lib/util/string/joinIntegerArray$745 end local.get $1 i32.eqz @@ -28558,13 +28512,13 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$742 + br $__inlined_func$~lib/util/string/joinIntegerArray$745 end global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11852 + i32.const 12012 i32.load i32.const 1 i32.shr_u @@ -28609,7 +28563,7 @@ i32.const 1 i32.shl i32.add - i32.const 11856 + i32.const 12016 local.get $8 i32.const 1 i32.shl @@ -28655,7 +28609,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$742 + br $__inlined_func$~lib/util/string/joinIntegerArray$745 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -28674,12 +28628,12 @@ local.get $2 i32.store local.get $2 - i32.const 14368 + i32.const 14528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1221 i32.const 3 call $~lib/builtins/abort @@ -28688,7 +28642,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 14416 + i32.const 14576 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -28701,12 +28655,12 @@ local.get $0 i32.store local.get $0 - i32.const 14448 + i32.const 14608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1222 i32.const 3 call $~lib/builtins/abort @@ -28715,7 +28669,7 @@ i32.const 3 i32.const 3 i32.const 40 - i32.const 14512 + i32.const 14672 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -28726,7 +28680,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -28740,7 +28694,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -28757,7 +28711,7 @@ local.get $0 i32.load offset=12 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store call $~lib/util/string/joinIntegerArray local.set $0 @@ -28773,12 +28727,12 @@ local.get $0 i32.store local.get $0 - i32.const 14560 + i32.const 14720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1223 i32.const 3 call $~lib/builtins/abort @@ -28787,7 +28741,7 @@ i32.const 5 i32.const 3 i32.const 41 - i32.const 14640 + i32.const 14800 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -28798,7 +28752,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -28812,7 +28766,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -28831,7 +28785,7 @@ i32.load offset=12 local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store i32.const 0 local.set $0 @@ -28842,13 +28796,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$13 + block $__inlined_func$~lib/util/string/joinIntegerArray$10 local.get $2 i32.const 1 i32.sub @@ -28860,9 +28814,9 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 local.set $2 - br $__inlined_func$~lib/util/string/joinIntegerArray$13 + br $__inlined_func$~lib/util/string/joinIntegerArray$10 end block $folding-inner09 local.get $4 @@ -28878,7 +28832,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -28891,7 +28845,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 7712 + i32.const 1776 br $__inlined_func$~lib/util/number/itoa64$4 end i64.const 0 @@ -29058,10 +29012,10 @@ br $folding-inner09 end global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11852 + i32.const 12012 i32.load i32.const 1 i32.shr_u @@ -29106,7 +29060,7 @@ i32.const 1 i32.shl i32.add - i32.const 11856 + i32.const 12016 local.get $8 i32.const 1 i32.shl @@ -29154,7 +29108,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$13 + br $__inlined_func$~lib/util/string/joinIntegerArray$10 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -29173,12 +29127,12 @@ local.get $2 i32.store local.get $2 - i32.const 14704 + i32.const 14864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1224 i32.const 3 call $~lib/builtins/abort @@ -29188,7 +29142,7 @@ i32.const 7 i32.const 2 i32.const 34 - i32.const 14864 + i32.const 15024 call $~lib/rt/__newArray local.tee $0 i32.store offset=364 @@ -29202,12 +29156,12 @@ local.get $0 i32.store local.get $0 - i32.const 14912 + i32.const 15072 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1231 i32.const 3 call $~lib/builtins/abort @@ -29216,7 +29170,7 @@ i32.const 4 i32.const 2 i32.const 34 - i32.const 15024 + i32.const 15184 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -29229,12 +29183,12 @@ local.get $0 i32.store local.get $0 - i32.const 15072 + i32.const 15232 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1232 i32.const 3 call $~lib/builtins/abort @@ -29254,7 +29208,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 15104 + i32.const 15264 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -29262,7 +29216,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 15136 + i32.const 15296 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -29275,7 +29229,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -29289,7 +29243,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -29308,7 +29262,7 @@ i32.load offset=12 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store i32.const 0 local.set $0 @@ -29317,14 +29271,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 20 memory.fill - block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$14 + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$11 local.get $1 i32.const 1 i32.sub @@ -29336,9 +29290,9 @@ i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 local.set $2 - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$14 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$11 end local.get $1 i32.eqz @@ -29356,24 +29310,24 @@ local.get $0 call $~lib/array/Array#toString else - i32.const 11568 + i32.const 1120 end local.set $2 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$14 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$11 end - i32.const 11568 + i32.const 1120 local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store offset=4 - i32.const 11852 + i32.const 12012 i32.load i32.const 1 i32.shr_u @@ -29419,11 +29373,11 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 11856 + i32.const 12016 call $~lib/string/String.__concat local.tee $2 i32.store offset=8 @@ -29482,12 +29436,12 @@ local.get $2 i32.store local.get $2 - i32.const 15168 + i32.const 15328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1235 i32.const 3 call $~lib/builtins/abort @@ -29507,7 +29461,7 @@ i32.const 2 i32.const 0 i32.const 7 - i32.const 15216 + i32.const 15376 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -29515,7 +29469,7 @@ i32.const 2 i32.const 0 i32.const 7 - i32.const 15248 + i32.const 15408 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -29528,7 +29482,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -29542,7 +29496,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -29561,7 +29515,7 @@ i32.load offset=12 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store i32.const 0 local.set $0 @@ -29570,14 +29524,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 20 memory.fill - block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$15 + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$12 local.get $1 i32.const 1 i32.sub @@ -29589,9 +29543,9 @@ i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 local.set $2 - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$15 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$12 end local.get $1 i32.eqz @@ -29609,24 +29563,24 @@ local.get $0 call $~lib/array/Array#toString else - i32.const 11568 + i32.const 1120 end local.set $2 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$15 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$12 end - i32.const 11568 + i32.const 1120 local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store offset=4 - i32.const 11852 + i32.const 12012 i32.load i32.const 1 i32.shr_u @@ -29672,11 +29626,11 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 11856 + i32.const 12016 call $~lib/string/String.__concat local.tee $2 i32.store offset=8 @@ -29735,12 +29689,12 @@ local.get $2 i32.store local.get $2 - i32.const 15168 + i32.const 15328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1238 i32.const 3 call $~lib/builtins/abort @@ -29768,7 +29722,7 @@ i32.const 1 i32.const 2 i32.const 8 - i32.const 15280 + i32.const 15440 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -29785,7 +29739,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -29799,7 +29753,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -29818,7 +29772,7 @@ i32.load offset=12 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store i32.const 0 local.set $0 @@ -29827,14 +29781,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 20 memory.fill - block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$16 + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$13 local.get $1 i32.const 1 i32.sub @@ -29846,9 +29800,9 @@ i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 local.set $2 - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$16 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$13 end local.get $1 i32.eqz @@ -29866,24 +29820,24 @@ local.get $0 call $~lib/array/Array<~lib/array/Array>#toString else - i32.const 11568 + i32.const 1120 end local.set $2 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$16 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$13 end - i32.const 11568 + i32.const 1120 local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 11568 + i32.const 1120 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store offset=4 - i32.const 11852 + i32.const 12012 i32.load i32.const 1 i32.shr_u @@ -29929,11 +29883,11 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 12016 i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 11856 + i32.const 12016 call $~lib/string/String.__concat local.tee $2 i32.store offset=8 @@ -29992,12 +29946,12 @@ local.get $2 i32.store local.get $2 - i32.const 13568 + i32.const 13728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1241 i32.const 3 call $~lib/builtins/abort @@ -30017,7 +29971,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 15312 + i32.const 15472 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30025,7 +29979,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 15344 + i32.const 15504 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30033,7 +29987,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 15376 + i32.const 15536 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30041,7 +29995,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 15408 + i32.const 15568 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30063,7 +30017,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1248 i32.const 3 call $~lib/builtins/abort @@ -30086,7 +30040,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1250 i32.const 5 call $~lib/builtins/abort @@ -30113,7 +30067,7 @@ i32.const 1 i32.const 2 i32.const 34 - i32.const 15472 + i32.const 15632 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30121,7 +30075,7 @@ i32.const 3 i32.const 2 i32.const 34 - i32.const 15568 + i32.const 15728 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30129,7 +30083,7 @@ i32.const 3 i32.const 2 i32.const 34 - i32.const 15696 + i32.const 15856 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30137,7 +30091,7 @@ i32.const 1 i32.const 2 i32.const 34 - i32.const 15760 + i32.const 15920 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30151,7 +30105,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -30308,7 +30262,7 @@ i32.const 8 i32.const 2 i32.const 34 - i32.const 15792 + i32.const 15952 call $~lib/rt/__newArray local.tee $1 i32.store offset=420 @@ -30321,7 +30275,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1256 i32.const 3 call $~lib/builtins/abort @@ -30364,7 +30318,7 @@ i32.eqz if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1258 i32.const 5 call $~lib/builtins/abort @@ -30391,7 +30345,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 15856 + i32.const 16016 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30399,7 +30353,7 @@ i32.const 0 i32.const 2 i32.const 4 - i32.const 15888 + i32.const 16048 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30417,7 +30371,7 @@ call $~lib/array/Array#get:length if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1262 i32.const 3 call $~lib/builtins/abort @@ -30437,7 +30391,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 15920 + i32.const 16080 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30445,7 +30399,7 @@ i32.const 1 i32.const 2 i32.const 4 - i32.const 15952 + i32.const 16112 call $~lib/rt/__newArray call $~lib/array/Array#__set local.get $1 @@ -30455,14 +30409,14 @@ local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15984 + i32.const 16144 i32.store offset=48 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -30528,7 +30482,7 @@ local.get $10 local.get $4 local.get $1 - i32.const 15984 + i32.const 16144 i32.load call_indirect (type $1) local.tee $10 @@ -30569,7 +30523,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1272 i32.const 3 call $~lib/builtins/abort @@ -30585,7 +30539,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1273 i32.const 3 call $~lib/builtins/abort @@ -30601,7 +30555,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1274 i32.const 3 call $~lib/builtins/abort @@ -30617,7 +30571,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1275 i32.const 3 call $~lib/builtins/abort @@ -30633,7 +30587,7 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 3520 i32.const 1276 i32.const 3 call $~lib/builtins/abort @@ -30645,7 +30599,7 @@ global.set $std/array/inputStabArr i32.const 0 global.set $std/array/outputStabArr - i32.const 48960 + i32.const 49120 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 @@ -30686,13 +30640,108 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/util/number/utoa32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16352 + i32.lt_s + if + i32.const 49152 + i32.const 49200 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) @@ -30701,11 +30750,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30765,11 +30814,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16192 + i32.const 16352 i32.lt_s if - i32.const 48992 - i32.const 49040 + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30785,7 +30834,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 7712 + i32.const 1776 return end global.get $~lib/memory/__stack_pointer @@ -30873,99 +30922,154 @@ global.set $~lib/memory/__stack_pointer local.get $3 ) - (func $~lib/util/number/utoa32 (param $0 i32) (result i32) + (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 + (local $3 i32) + block $folding-inner4 + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $std/array/Proxy + block $std/array/Dim + block $~lib/typedarray/Uint8Array + block $std/array/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $std/array/Ref $~lib/typedarray/Uint8Array $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $std/array/Dim $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $std/array/Proxy $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16352 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16352 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16352 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49152 + i32.const 49200 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7712 - return - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 i32.store - local.get $1 local.get $0 - local.get $2 - call $~lib/util/number/utoa32_dec_lut + i32.load + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 ) ) diff --git a/tests/compiler/std/arraybuffer.debug.wat b/tests/compiler/std/arraybuffer.debug.wat index ed31bd6c6a..2d8f4c0521 100644 --- a/tests/compiler/std/arraybuffer.debug.wat +++ b/tests/compiler/std/arraybuffer.debug.wat @@ -1,16 +1,18 @@ (module (type $0 (func (param i32 i32))) (type $1 (func (param i32) (result i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) (type $6 (func (param i32 i32 i32) (result i32))) (type $7 (func (param i32 i32 i32 i32) (result i32))) - (type $8 (func (param i32 i32 i32 i32))) - (type $9 (func (param i32 i32 i64) (result i32))) - (type $10 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (result i32))) + (type $10 (func (param i32 i64 i32))) + (type $11 (func (param i64 i32) (result i32))) + (type $12 (func (param i32 i64 i32 i32))) + (type $13 (func (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)) @@ -25,31 +27,56 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/native/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 760)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33528)) - (global $~lib/memory/__heap_base i32 (i32.const 33528)) + (global $~lib/rt/__rtti_base i32 (i32.const 2656)) + (global $~lib/memory/__data_end i32 (i32.const 2728)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35496)) + (global $~lib/memory/__heap_base i32 (i32.const 35496)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $3 (i32.const 188) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 460) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 524) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 588) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") - (data $12 (i32.const 620) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 688) "\11\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $20 (i32.const 2428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $21 (i32.const 2492) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data $23 (i32.const 2588) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2656) "\11\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -114,7 +141,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 192 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -184,7 +211,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 192 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -201,7 +228,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 192 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -231,8 +258,8 @@ i32.load i32.gt_u if - i32.const 336 - i32.const 400 + i32.const 320 + i32.const 384 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -300,7 +327,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 208 + i32.const 192 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -452,7 +479,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -472,7 +499,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -535,7 +562,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -688,7 +715,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -705,7 +732,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -794,7 +821,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -837,7 +864,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -855,7 +882,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -923,7 +950,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1040,7 +1067,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1086,7 +1113,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1118,7 +1145,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1362,7 +1389,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1582,7 +1609,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 192 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1690,8 +1717,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 144 - i32.const 480 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1793,7 +1820,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1864,7 +1891,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2021,7 +2048,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2136,7 +2163,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2156,7 +2183,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2204,8 +2231,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 144 - i32.const 208 + i32.const 128 + i32.const 192 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2250,9 +2277,421 @@ local.get $ptr return ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) local.get $this - i32.load offset=16 + local.get $radix + call $~lib/util/number/utoa32 + return ) (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $this i32) (result i32) local.get $this @@ -2422,7 +2861,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 192 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2667,225 +3106,226 @@ i32.const 0 drop ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 336 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 144 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + (func $~start + call $start:std/arraybuffer ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35520 + i32.const 35568 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/typedarray/Int8Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint8ClampedArray~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint16Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Int32Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint32Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Int64Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint64Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Float64Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/dataview/DataView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/dataview/DataView - block $~lib/typedarray/Float64Array - block $~lib/typedarray/Float32Array - block $~lib/typedarray/Uint64Array - block $~lib/typedarray/Int64Array - block $~lib/typedarray/Uint32Array - block $~lib/typedarray/Int32Array - block $~lib/typedarray/Uint16Array - block $~lib/typedarray/Int16Array - block $~lib/typedarray/Uint8ClampedArray - block $~lib/typedarray/Uint8Array - block $~lib/typedarray/Int8Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/typedarray/Int8Array $~lib/typedarray/Uint8Array $~lib/typedarray/Uint8ClampedArray $~lib/typedarray/Int16Array $~lib/typedarray/Uint16Array $~lib/typedarray/Int32Array $~lib/typedarray/Uint32Array $~lib/typedarray/Int64Array $~lib/typedarray/Uint64Array $~lib/typedarray/Float32Array $~lib/typedarray/Float64Array $~lib/dataview/DataView $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Int8Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Int16Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint16Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Int32Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint32Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Int64Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint64Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Float32Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Float64Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/dataview/DataView~visit + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - unreachable + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~start - call $start:std/arraybuffer + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33552 - i32.const 33600 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/arraybuffer/ArrayBuffer#slice (param $this i32) (param $begin i32) (param $end i32) (result i32) (local $length i32) @@ -3054,8 +3494,8 @@ i32.shr_u i32.gt_u if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 19 i32.const 57 call $~lib/builtins/abort @@ -3255,8 +3695,8 @@ i32.gt_u i32.or if - i32.const 32 - i32.const 640 + i32.const 2400 + i32.const 2608 i32.const 25 i32.const 7 call $~lib/builtins/abort @@ -3381,13 +3821,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 256 + i32.const 240 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 288 + i32.const 272 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 432 + i32.const 416 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer @@ -3408,7 +3848,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 4 i32.const 3 call $~lib/builtins/abort @@ -3438,7 +3878,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 3 call $~lib/builtins/abort @@ -3450,7 +3890,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 9 i32.const 3 call $~lib/builtins/abort @@ -3480,7 +3920,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 13 i32.const 3 call $~lib/builtins/abort @@ -3510,7 +3950,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 17 i32.const 3 call $~lib/builtins/abort @@ -3540,7 +3980,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -3570,7 +4010,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 25 i32.const 3 call $~lib/builtins/abort @@ -3600,7 +4040,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 29 i32.const 3 call $~lib/builtins/abort @@ -3630,7 +4070,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -3660,7 +4100,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -3672,7 +4112,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 38 i32.const 3 call $~lib/builtins/abort @@ -3684,7 +4124,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 40 i32.const 3 call $~lib/builtins/abort @@ -3696,7 +4136,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 3 call $~lib/builtins/abort @@ -3708,7 +4148,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -3720,7 +4160,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -3732,7 +4172,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -3744,7 +4184,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -3759,7 +4199,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 608 + i32.const 2576 call $~lib/rt/__newArray local.set $4 global.get $~lib/memory/__stack_pointer @@ -3771,7 +4211,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 48 i32.const 3 call $~lib/builtins/abort @@ -3787,7 +4227,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -3805,7 +4245,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 50 i32.const 3 call $~lib/builtins/abort @@ -3838,7 +4278,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 51 i32.const 3 call $~lib/builtins/abort @@ -3852,8 +4292,18 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3862,21 +4312,132 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $12 + return ) (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) (local $buffer i32) @@ -3893,8 +4454,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 52 i32.const 43 call $~lib/builtins/abort @@ -3972,4 +4533,240 @@ local.get $7 return ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2400 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/typedarray/Int8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint8ClampedArray~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint16Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Float64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/dataview/DataView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/dataview/DataView + block $~lib/typedarray/Float64Array + block $~lib/typedarray/Float32Array + block $~lib/typedarray/Uint64Array + block $~lib/typedarray/Int64Array + block $~lib/typedarray/Uint32Array + block $~lib/typedarray/Int32Array + block $~lib/typedarray/Uint16Array + block $~lib/typedarray/Int16Array + block $~lib/typedarray/Uint8ClampedArray + block $~lib/typedarray/Uint8Array + block $~lib/typedarray/Int8Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/typedarray/Int8Array $~lib/typedarray/Uint8Array $~lib/typedarray/Uint8ClampedArray $~lib/typedarray/Int16Array $~lib/typedarray/Uint16Array $~lib/typedarray/Int32Array $~lib/typedarray/Uint32Array $~lib/typedarray/Int64Array $~lib/typedarray/Uint64Array $~lib/typedarray/Float32Array $~lib/typedarray/Float64Array $~lib/dataview/DataView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int16Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint16Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/dataview/DataView~visit + return + end + unreachable + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/std/arraybuffer.release.wat b/tests/compiler/std/arraybuffer.release.wat index 19c0a0192a..09cafe64e7 100644 --- a/tests/compiler/std/arraybuffer.release.wat +++ b/tests/compiler/std/arraybuffer.release.wat @@ -1,13 +1,13 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32 i64))) + (type $5 (func (result i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i32) (result i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,39 +18,64 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34552)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36520)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $1 (i32.const 1084) "<") - (data $1.1 (i32.const 1096) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data $2 (i32.const 1148) "<") - (data $2.1 (i32.const 1160) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $3 (i32.const 1212) "<") - (data $3.1 (i32.const 1224) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $6 (i32.const 1340) "<") - (data $6.1 (i32.const 1352) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $7 (i32.const 1404) ",") - (data $7.1 (i32.const 1416) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $9 (i32.const 1484) "<") - (data $9.1 (i32.const 1496) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $10 (i32.const 1548) "<") - (data $10.1 (i32.const 1560) "\02\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data $11 (i32.const 1612) "\1c") - (data $11.1 (i32.const 1624) "\01\00\00\00\08\00\00\00\01\00\00\00\02") - (data $12 (i32.const 1644) "<") - (data $12.1 (i32.const 1656) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") - (data $13 (i32.const 1712) "\11\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $20 (i32.const 3452) "<") + (data $20.1 (i32.const 3464) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $21 (i32.const 3516) "<") + (data $21.1 (i32.const 3528) "\02\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $22 (i32.const 3580) "\1c") + (data $22.1 (i32.const 3592) "\01\00\00\00\08\00\00\00\01\00\00\00\02") + (data $23 (i32.const 3612) "<") + (data $23.1 (i32.const 3624) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (data $24 (i32.const 3680) "\11\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1360 + i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3424 + call $~lib/rt/itcms/__visit + i32.const 1152 call $~lib/rt/itcms/__visit - i32.const 1168 + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -71,7 +96,7 @@ i32.ne if i32.const 0 - i32.const 1232 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -104,7 +129,7 @@ i32.eqz if i32.const 0 - i32.const 1232 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -113,7 +138,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$185 + block $__inlined_func$~lib/rt/itcms/Object#unlink$198 local.get $0 i32.load offset=4 i32.const -4 @@ -125,19 +150,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34552 + i32.const 36520 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1232 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$185 + br $__inlined_func$~lib/rt/itcms/Object#unlink$198 end local.get $0 i32.load offset=8 @@ -145,7 +170,7 @@ i32.eqz if i32.const 0 - i32.const 1232 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -174,12 +199,12 @@ i32.const 1 else local.get $1 - i32.const 1712 + i32.const 3680 i32.load i32.gt_u if - i32.const 1360 - i32.const 1424 + i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -188,7 +213,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1716 + i32.const 3684 i32.add i32.load i32.const 32 @@ -259,7 +284,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -273,7 +298,7 @@ i32.lt_u if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -319,7 +344,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -402,7 +427,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -416,7 +441,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -477,7 +502,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -510,7 +535,7 @@ i32.lt_u if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -525,7 +550,7 @@ i32.ne if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -576,7 +601,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -648,7 +673,7 @@ i64.lt_u if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -673,7 +698,7 @@ i32.gt_u if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -700,7 +725,7 @@ i32.gt_u if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -772,10 +797,10 @@ if unreachable end - i32.const 34560 + i32.const 36528 i32.const 0 i32.store - i32.const 36128 + i32.const 38096 i32.const 0 i32.store loop $for-loop|0 @@ -786,7 +811,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34560 + i32.const 36528 i32.add i32.const 0 i32.store offset=4 @@ -804,7 +829,7 @@ i32.add i32.const 2 i32.shl - i32.const 34560 + i32.const 36528 i32.add i32.const 0 i32.store offset=96 @@ -822,14 +847,14 @@ br $for-loop|0 end end - i32.const 34560 - i32.const 36132 + i32.const 36528 + i32.const 38100 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34560 + i32.const 36528 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -914,7 +939,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34552 + i32.const 36520 i32.lt_u if local.get $0 @@ -1003,14 +1028,14 @@ i32.ne if i32.const 0 - i32.const 1232 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34552 + i32.const 36520 i32.lt_u if local.get $0 @@ -1033,7 +1058,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34552 + i32.const 36520 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1062,7 +1087,7 @@ end if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1146,7 +1171,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1198,7 +1223,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1230,8 +1255,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1168 - i32.const 1232 + i32.const 1152 + i32.const 1216 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1241,7 +1266,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1262,7 +1287,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end local.get $2 i32.const 0 @@ -1295,8 +1320,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1168 - i32.const 1504 + i32.const 1152 + i32.const 1488 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1398,7 +1423,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1413,7 +1438,7 @@ i32.gt_u if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1432,7 +1457,7 @@ i32.and if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1537,6 +1562,204 @@ memory.fill local.get $1 ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3752 + i32.lt_s + if + i32.const 36544 + i32.const 36592 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) local.get $1 i32.eqz @@ -1547,7 +1770,7 @@ i32.eqz if i32.const 0 - i32.const 1232 + i32.const 1216 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1591,63 +1814,208 @@ end end ) - (func $~lib/rt/__visit_members (param $0 i32) + (func $~start + call $start:std/arraybuffer + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - block $invalid - block $~lib/array/Array - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $~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-inner0 $invalid - end - return - end - return - end - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 3752 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3752 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$203 + local.get $1 + i32.const 20 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1784 - i32.lt_s + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz if - i32.const 34576 - i32.const 34624 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$203 end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 local.get $0 - i32.load - call $~lib/rt/itcms/__visit + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36544 + i32.const 36592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3752 + i32.lt_s + if + i32.const 36544 + i32.const 36592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - call $start:std/arraybuffer + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -1656,11 +2024,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1784 + i32.const 3752 i32.lt_s if - i32.const 34576 - i32.const 34624 + i32.const 36544 + i32.const 36592 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1753,11 +2121,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1784 + i32.const 3752 i32.lt_s if - i32.const 34576 - i32.const 34624 + i32.const 36544 + i32.const 36592 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1805,8 +2173,8 @@ i32.shr_u i32.eqz if - i32.const 1056 - i32.const 1104 + i32.const 3424 + i32.const 3472 i32.const 19 i32.const 57 call $~lib/builtins/abort @@ -1861,7 +2229,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1784 + i32.const 3752 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -1871,34 +2239,34 @@ memory.size i32.const 16 i32.shl - i32.const 34552 + i32.const 36520 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1284 - i32.const 1280 + i32.const 1268 + i32.const 1264 i32.store - i32.const 1288 - i32.const 1280 + i32.const 1272 + i32.const 1264 i32.store - i32.const 1280 + i32.const 1264 global.set $~lib/rt/itcms/pinSpace - i32.const 1316 - i32.const 1312 + i32.const 1300 + i32.const 1296 i32.store - i32.const 1320 - i32.const 1312 + i32.const 1304 + i32.const 1296 i32.store - i32.const 1312 + i32.const 1296 global.set $~lib/rt/itcms/toSpace - i32.const 1460 - i32.const 1456 + i32.const 1444 + i32.const 1440 i32.store - i32.const 1464 - i32.const 1456 + i32.const 1448 + i32.const 1440 i32.store - i32.const 1456 + i32.const 1440 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1906,7 +2274,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1784 + i32.const 3752 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -1935,7 +2303,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 4 i32.const 3 call $~lib/builtins/abort @@ -1962,7 +2330,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 3 call $~lib/builtins/abort @@ -1973,7 +2341,7 @@ i32.eq if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 9 i32.const 3 call $~lib/builtins/abort @@ -2000,7 +2368,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 13 i32.const 3 call $~lib/builtins/abort @@ -2027,7 +2395,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 17 i32.const 3 call $~lib/builtins/abort @@ -2054,7 +2422,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -2081,7 +2449,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 25 i32.const 3 call $~lib/builtins/abort @@ -2108,7 +2476,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 29 i32.const 3 call $~lib/builtins/abort @@ -2135,7 +2503,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -2160,7 +2528,7 @@ i32.load offset=16 if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -2170,7 +2538,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 38 i32.const 3 call $~lib/builtins/abort @@ -2182,7 +2550,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1784 + i32.const 3752 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2214,7 +2582,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1784 + i32.const 3752 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2225,7 +2593,7 @@ i32.const 1 call $~lib/rt/itcms/__new local.tee $2 - i32.const 1632 + i32.const 3600 i64.load align=1 i64.store align=1 local.get $2 @@ -2263,7 +2631,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1784 + i32.const 3752 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2306,7 +2674,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner00 global.get $~lib/memory/__stack_pointer - i32.const 1784 + i32.const 3752 i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer @@ -2331,7 +2699,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1784 + i32.const 3752 i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer @@ -2381,8 +2749,8 @@ i32.gt_u i32.or if - i32.const 1056 - i32.const 1664 + i32.const 3424 + i32.const 3632 i32.const 25 i32.const 7 call $~lib/builtins/abort @@ -2429,7 +2797,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - i32.const 34552 + i32.const 36520 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 @@ -2470,11 +2838,66 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34576 - i32.const 34624 + i32.const 36544 + i32.const 36592 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $~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-inner0 $invalid + end + return + end + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3752 + i32.lt_s + if + i32.const 36544 + i32.const 36592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) ) diff --git a/tests/compiler/std/console.debug.wat b/tests/compiler/std/console.debug.wat index 2bd7371986..69be587513 100644 --- a/tests/compiler/std/console.debug.wat +++ b/tests/compiler/std/console.debug.wat @@ -1,8 +1,16 @@ (module (type $0 (func (param i32))) - (type $1 (func)) + (type $1 (func (param i32) (result i32))) (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (import "env" "console.assert" (func $~lib/bindings/dom/console.assert (param i32 i32))) (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) (import "env" "console.debug" (func $~lib/bindings/dom/console.debug (param i32))) @@ -12,10 +20,25 @@ (import "env" "console.time" (func $~lib/bindings/dom/console.time (param i32))) (import "env" "console.timeLog" (func $~lib/bindings/dom/console.timeLog (param i32))) (import "env" "console.timeEnd" (func $~lib/bindings/dom/console.timeEnd (param i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__data_end i32 (i32.const 588)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33356)) (global $~lib/memory/__heap_base i32 (i32.const 33356)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00w\00h\00o\00o\00p\00s\00") (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00p\00h\00e\00w\00\00\00\00\00") @@ -78,13 +101,2642 @@ (func $~start call $start:std/console ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33584 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33584 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 33584 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 33712 + i32.const 33776 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 33584 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33856 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33856 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33856 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 33856 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33856 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33856 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33856 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33856 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33856 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 33856 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33856 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33856 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33856 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33584 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 33520 + i32.const 33856 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33856 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 33856 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 33856 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 33856 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33856 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 33520 + i32.const 33584 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 34156 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 34156 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 34156 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 34156 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 34576 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 34576 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 35632 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 35632 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~stack_check global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__data_end i32.lt_s if i32.const 33376 - i32.const 33424 + i32.const 35792 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -292,4 +2944,408 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 33488 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 33424 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 33456 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 33920 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 33920 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 35728 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 33952 + i32.const 34080 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 34144 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 33712 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 33520 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 34576 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 35632 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/std/console.release.wat b/tests/compiler/std/console.release.wat index a45eaf7c52..8ae6a0e7ad 100644 --- a/tests/compiler/std/console.release.wat +++ b/tests/compiler/std/console.release.wat @@ -2,7 +2,11 @@ (type $0 (func (param i32))) (type $1 (func (param i32 i32))) (type $2 (func)) - (type $3 (func (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) (import "env" "console.assert" (func $~lib/bindings/dom/console.assert (param i32 i32))) (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) (import "env" "console.debug" (func $~lib/bindings/dom/console.debug (param i32))) @@ -12,8 +16,14 @@ (import "env" "console.time" (func $~lib/bindings/dom/console.time (param i32))) (import "env" "console.timeLog" (func $~lib/bindings/dom/console.timeLog (param i32))) (import "env" "console.timeEnd" (func $~lib/bindings/dom/console.timeEnd (param i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34380)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02\00\00\00\0c\00\00\00w\00h\00o\00o\00p\00s") @@ -160,12 +170,1674 @@ return end i32.const 34400 - i32.const 34448 + i32.const 36816 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 34736 + call $~lib/rt/itcms/__visit + i32.const 34544 + call $~lib/rt/itcms/__visit + i32.const 35600 + call $~lib/rt/itcms/__visit + i32.const 36656 + call $~lib/rt/itcms/__visit + i32.const 4 + i32.load + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 34608 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + 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 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 34608 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$128 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34380 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34608 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$128 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 34608 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.load + i32.gt_u + if + i32.const 34736 + i32.const 34800 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.load offset=4 + i32.const 32 + i32.and + end + local.set $1 + i32.const 8 + i32.load + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $1 + select + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + i32.const 8 + local.get $0 + i32.store + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34880 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 34880 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34880 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 34880 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34880 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34880 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 34880 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 34880 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34880 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 34880 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 34880 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 34880 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34384 + i32.const 0 + i32.store + i32.const 35952 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34384 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34384 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34384 + i32.const 35956 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34384 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + i32.const 0 + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34380 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + local.get $1 + global.set $~lib/rt/itcms/white + i32.const 4 + i32.load + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + 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 34608 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34380 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34380 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 34880 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + i32.const 4 + i32.const 0 + i32.store + i32.const 8 + i32.const 0 + i32.store + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34880 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 34880 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 34544 + i32.const 34608 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$72 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$72 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 34544 + i32.const 34880 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 34880 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 34880 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 34880 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + i32.const 8 + i32.load + local.set $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + i32.const 8 + local.get $1 + i32.store + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 1612 + i32.lt_s + if + i32.const 34400 + i32.const 36816 + 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$76 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 35168 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$76 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 35180 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 35180 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 35180 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 35180 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/console/console.assert (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -176,7 +1848,7 @@ i32.lt_s if i32.const 34400 - i32.const 34448 + i32.const 36816 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -208,7 +1880,7 @@ i32.lt_s if i32.const 34400 - i32.const 34448 + i32.const 36816 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -237,7 +1909,7 @@ i32.lt_s if i32.const 34400 - i32.const 34448 + i32.const 36816 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -266,7 +1938,7 @@ i32.lt_s if i32.const 34400 - i32.const 34448 + i32.const 36816 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -295,7 +1967,7 @@ i32.lt_s if i32.const 34400 - i32.const 34448 + i32.const 36816 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -314,4 +1986,228 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$133 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 34512 + local.set $0 + br $__inlined_func$~lib/string/String#concat$133 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34400 + i32.const 36816 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + if + i32.const 34400 + i32.const 36816 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 34448 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 34480 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 34944 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 34944 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 36752 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/std/dataview.debug.wat b/tests/compiler/std/dataview.debug.wat index 9b9e4e7e62..986780cb54 100644 --- a/tests/compiler/std/dataview.debug.wat +++ b/tests/compiler/std/dataview.debug.wat @@ -1,10 +1,10 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32 i32))) - (type $4 (func)) - (type $5 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func)) (type $6 (func (param i32 i32 i32 i32))) (type $7 (func (param i32 i32 i32) (result i32))) (type $8 (func (param i32 i32 i32 i32) (result i32))) @@ -12,12 +12,14 @@ (type $10 (func (param i32 i32 i64 i32))) (type $11 (func (param i32 i32 i64) (result i32))) (type $12 (func (result i32))) - (type $13 (func (param i64) (result i64))) - (type $14 (func (param i32 i32 i32) (result f32))) - (type $15 (func (param i32 i32 i32) (result f64))) - (type $16 (func (param i32 i32 f32 i32))) - (type $17 (func (param i32 i32 f64 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $13 (func (param i32 i64 i32))) + (type $14 (func (param i64 i32) (result i32))) + (type $15 (func (param i32 i64 i32 i32))) + (type $16 (func (param i64) (result i64))) + (type $17 (func (param i32 i32 i32) (result f32))) + (type $18 (func (param i32 i32 i32) (result f64))) + (type $19 (func (param i32 i32 f32 i32))) + (type $20 (func (param i32 i32 f64 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)) @@ -32,31 +34,56 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/native/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 748)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33516)) - (global $~lib/memory/__heap_base i32 (i32.const 33516)) + (global $~lib/rt/__rtti_base i32 (i32.const 2688)) + (global $~lib/memory/__data_end i32 (i32.const 2716)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35484)) + (global $~lib/memory/__heap_base i32 (i32.const 35484)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $3 (i32.const 188) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 460) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 524) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 588) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 652) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 720) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $20 (i32.const 2428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $21 (i32.const 2492) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2556) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2620) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2688) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -121,7 +148,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 192 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -191,7 +218,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 192 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -208,7 +235,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 192 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -238,8 +265,8 @@ i32.load i32.gt_u if - i32.const 336 - i32.const 400 + i32.const 320 + i32.const 384 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -307,7 +334,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 208 + i32.const 192 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -459,7 +486,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -479,7 +506,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -542,7 +569,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -695,7 +722,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -712,7 +739,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -801,7 +828,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -844,7 +871,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -862,7 +889,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -930,7 +957,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1047,7 +1074,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1093,7 +1120,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1125,7 +1152,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1369,7 +1396,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1589,7 +1616,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 192 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1697,8 +1724,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 144 - i32.const 480 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1800,7 +1827,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1871,7 +1898,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2028,7 +2055,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2143,7 +2170,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2163,7 +2190,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2211,8 +2238,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 144 - i32.const 208 + i32.const 128 + i32.const 192 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2257,6 +2284,422 @@ local.get $ptr return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) (local $child i32) (local $parent i32) @@ -2272,7 +2715,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 192 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2352,10 +2795,6 @@ local.get $this i32.load offset=4 ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $this i32) (result i32) local.get $this i32.const 20 @@ -2555,97 +2994,226 @@ i32.const 0 drop ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 336 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 144 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit + (func $~start + call $start:std/dataview ) - (func $~lib/dataview/DataView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35504 + i32.const 35552 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/dataview/DataView - block $~lib/typedarray/Uint8Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Uint8Array $~lib/dataview/DataView $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/dataview/DataView~visit + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - unreachable + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~start - call $start:std/dataview + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 33536 - i32.const 33584 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/arraybuffer/ArrayBufferView#constructor (param $this i32) (param $length i32) (param $alignLog2 i32) (result i32) (local $buffer i32) @@ -2701,8 +3269,8 @@ i32.shr_u i32.gt_u if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 19 i32.const 57 call $~lib/builtins/abort @@ -2818,8 +3386,8 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.ge_u if - i32.const 336 - i32.const 544 + i32.const 320 + i32.const 2512 i32.const 178 i32.const 45 call $~lib/builtins/abort @@ -2905,8 +3473,8 @@ i32.gt_u i32.or if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 25 i32.const 7 call $~lib/builtins/abort @@ -3013,8 +3581,8 @@ i32.gt_s i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 35 i32.const 7 call $~lib/builtins/abort @@ -3081,8 +3649,8 @@ i32.gt_s i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 44 i32.const 7 call $~lib/builtins/abort @@ -3142,8 +3710,8 @@ call $~lib/dataview/DataView#get:byteLength i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 51 i32.const 50 call $~lib/builtins/abort @@ -3194,8 +3762,8 @@ i32.gt_s i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 58 i32.const 7 call $~lib/builtins/abort @@ -3254,8 +3822,8 @@ i32.gt_s i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 66 i32.const 7 call $~lib/builtins/abort @@ -3315,8 +3883,8 @@ i32.gt_s i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 151 i32.const 7 call $~lib/builtins/abort @@ -3368,8 +3936,8 @@ call $~lib/dataview/DataView#get:byteLength i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 72 i32.const 50 call $~lib/builtins/abort @@ -3420,8 +3988,8 @@ i32.gt_s i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 79 i32.const 7 call $~lib/builtins/abort @@ -3480,8 +4048,8 @@ i32.gt_s i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 87 i32.const 7 call $~lib/builtins/abort @@ -3541,8 +4109,8 @@ i32.gt_s i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 159 i32.const 7 call $~lib/builtins/abort @@ -3600,8 +4168,8 @@ i32.gt_s i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 95 i32.const 7 call $~lib/builtins/abort @@ -3666,8 +4234,8 @@ i32.gt_s i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 103 i32.const 7 call $~lib/builtins/abort @@ -3726,8 +4294,8 @@ call $~lib/dataview/DataView#get:byteLength i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 109 i32.const 50 call $~lib/builtins/abort @@ -3775,8 +4343,8 @@ i32.gt_s i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 116 i32.const 7 call $~lib/builtins/abort @@ -3830,8 +4398,8 @@ i32.gt_s i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 123 i32.const 7 call $~lib/builtins/abort @@ -3885,8 +4453,8 @@ i32.gt_s i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 167 i32.const 7 call $~lib/builtins/abort @@ -3934,8 +4502,8 @@ call $~lib/dataview/DataView#get:byteLength i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 128 i32.const 50 call $~lib/builtins/abort @@ -3983,8 +4551,8 @@ i32.gt_s i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 135 i32.const 7 call $~lib/builtins/abort @@ -4038,8 +4606,8 @@ i32.gt_s i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 142 i32.const 7 call $~lib/builtins/abort @@ -4093,8 +4661,8 @@ i32.gt_s i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 174 i32.const 7 call $~lib/builtins/abort @@ -4233,13 +4801,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 256 + i32.const 240 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 288 + i32.const 272 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 432 + i32.const 416 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer @@ -4365,7 +4933,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 15 i32.const 3 call $~lib/builtins/abort @@ -4385,7 +4953,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 16 i32.const 3 call $~lib/builtins/abort @@ -4405,7 +4973,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 17 i32.const 3 call $~lib/builtins/abort @@ -4425,7 +4993,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -4445,7 +5013,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 19 i32.const 3 call $~lib/builtins/abort @@ -4465,7 +5033,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -4485,7 +5053,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 22 i32.const 3 call $~lib/builtins/abort @@ -4505,7 +5073,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 23 i32.const 3 call $~lib/builtins/abort @@ -4525,7 +5093,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 24 i32.const 3 call $~lib/builtins/abort @@ -4545,7 +5113,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 25 i32.const 3 call $~lib/builtins/abort @@ -4565,7 +5133,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -4585,7 +5153,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 28 i32.const 3 call $~lib/builtins/abort @@ -4604,7 +5172,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 30 i32.const 3 call $~lib/builtins/abort @@ -4623,7 +5191,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 31 i32.const 3 call $~lib/builtins/abort @@ -4642,7 +5210,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 32 i32.const 3 call $~lib/builtins/abort @@ -4661,7 +5229,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -4680,7 +5248,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 34 i32.const 3 call $~lib/builtins/abort @@ -4699,7 +5267,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -4718,7 +5286,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -4737,7 +5305,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -4758,7 +5326,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 39 i32.const 3 call $~lib/builtins/abort @@ -4779,7 +5347,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 40 i32.const 3 call $~lib/builtins/abort @@ -4800,7 +5368,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 41 i32.const 3 call $~lib/builtins/abort @@ -4821,7 +5389,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -4842,7 +5410,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -4863,7 +5431,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -4884,7 +5452,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -4905,7 +5473,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 47 i32.const 3 call $~lib/builtins/abort @@ -4926,7 +5494,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 48 i32.const 3 call $~lib/builtins/abort @@ -4947,7 +5515,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -4968,7 +5536,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 50 i32.const 3 call $~lib/builtins/abort @@ -4989,7 +5557,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 51 i32.const 3 call $~lib/builtins/abort @@ -5010,7 +5578,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 52 i32.const 3 call $~lib/builtins/abort @@ -5031,7 +5599,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 53 i32.const 3 call $~lib/builtins/abort @@ -5051,7 +5619,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 55 i32.const 3 call $~lib/builtins/abort @@ -5071,7 +5639,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -5091,7 +5659,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 57 i32.const 3 call $~lib/builtins/abort @@ -5111,7 +5679,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 58 i32.const 3 call $~lib/builtins/abort @@ -5131,7 +5699,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 59 i32.const 3 call $~lib/builtins/abort @@ -5151,7 +5719,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -5171,7 +5739,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 62 i32.const 3 call $~lib/builtins/abort @@ -5191,7 +5759,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -5211,7 +5779,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -5231,7 +5799,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -5251,7 +5819,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -5271,7 +5839,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -5290,7 +5858,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 70 i32.const 3 call $~lib/builtins/abort @@ -5309,7 +5877,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 71 i32.const 3 call $~lib/builtins/abort @@ -5328,7 +5896,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 72 i32.const 3 call $~lib/builtins/abort @@ -5347,7 +5915,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 73 i32.const 3 call $~lib/builtins/abort @@ -5366,7 +5934,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 74 i32.const 3 call $~lib/builtins/abort @@ -5385,7 +5953,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 75 i32.const 3 call $~lib/builtins/abort @@ -5404,7 +5972,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 76 i32.const 3 call $~lib/builtins/abort @@ -5423,7 +5991,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 77 i32.const 3 call $~lib/builtins/abort @@ -5445,7 +6013,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 79 i32.const 3 call $~lib/builtins/abort @@ -5467,7 +6035,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 80 i32.const 3 call $~lib/builtins/abort @@ -5489,7 +6057,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 81 i32.const 3 call $~lib/builtins/abort @@ -5511,7 +6079,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 82 i32.const 3 call $~lib/builtins/abort @@ -5533,7 +6101,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -5555,7 +6123,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -5577,7 +6145,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 85 i32.const 3 call $~lib/builtins/abort @@ -5599,7 +6167,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 87 i32.const 3 call $~lib/builtins/abort @@ -5621,7 +6189,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 88 i32.const 3 call $~lib/builtins/abort @@ -5643,7 +6211,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 89 i32.const 3 call $~lib/builtins/abort @@ -5665,7 +6233,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 90 i32.const 3 call $~lib/builtins/abort @@ -5687,7 +6255,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 91 i32.const 3 call $~lib/builtins/abort @@ -5709,7 +6277,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 92 i32.const 3 call $~lib/builtins/abort @@ -5731,7 +6299,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 93 i32.const 3 call $~lib/builtins/abort @@ -5751,7 +6319,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 95 i32.const 3 call $~lib/builtins/abort @@ -5771,7 +6339,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 96 i32.const 3 call $~lib/builtins/abort @@ -5791,7 +6359,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -5811,7 +6379,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -5831,7 +6399,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 99 i32.const 3 call $~lib/builtins/abort @@ -5851,7 +6419,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 101 i32.const 3 call $~lib/builtins/abort @@ -5871,7 +6439,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 102 i32.const 3 call $~lib/builtins/abort @@ -5891,7 +6459,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 103 i32.const 3 call $~lib/builtins/abort @@ -5911,7 +6479,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -5931,7 +6499,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 105 i32.const 3 call $~lib/builtins/abort @@ -5951,7 +6519,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 107 i32.const 3 call $~lib/builtins/abort @@ -5971,7 +6539,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -6001,7 +6569,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 111 i32.const 3 call $~lib/builtins/abort @@ -6031,7 +6599,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -6061,7 +6629,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 117 i32.const 3 call $~lib/builtins/abort @@ -6091,7 +6659,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 120 i32.const 3 call $~lib/builtins/abort @@ -6119,7 +6687,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 123 i32.const 3 call $~lib/builtins/abort @@ -6150,7 +6718,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 126 i32.const 3 call $~lib/builtins/abort @@ -6181,7 +6749,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 129 i32.const 3 call $~lib/builtins/abort @@ -6211,7 +6779,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 132 i32.const 3 call $~lib/builtins/abort @@ -6241,7 +6809,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 135 i32.const 3 call $~lib/builtins/abort @@ -6271,7 +6839,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 138 i32.const 3 call $~lib/builtins/abort @@ -6301,7 +6869,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 141 i32.const 3 call $~lib/builtins/abort @@ -6329,7 +6897,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 144 i32.const 3 call $~lib/builtins/abort @@ -6361,7 +6929,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 147 i32.const 3 call $~lib/builtins/abort @@ -6393,7 +6961,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 150 i32.const 3 call $~lib/builtins/abort @@ -6423,7 +6991,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 153 i32.const 3 call $~lib/builtins/abort @@ -6453,7 +7021,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 156 i32.const 3 call $~lib/builtins/abort @@ -6483,7 +7051,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 159 i32.const 3 call $~lib/builtins/abort @@ -6513,7 +7081,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 162 i32.const 3 call $~lib/builtins/abort @@ -6552,7 +7120,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 165 i32.const 3 call $~lib/builtins/abort @@ -6570,7 +7138,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 2640 i32.const 166 i32.const 3 call $~lib/builtins/abort @@ -6584,4 +7152,233 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2400 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/dataview/DataView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/dataview/DataView + block $~lib/typedarray/Uint8Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Uint8Array $~lib/dataview/DataView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/dataview/DataView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/std/dataview.release.wat b/tests/compiler/std/dataview.release.wat index d1290df97c..8ff1a561dd 100644 --- a/tests/compiler/std/dataview.release.wat +++ b/tests/compiler/std/dataview.release.wat @@ -1,21 +1,20 @@ (module - (type $0 (func (param i32 i32 i32))) - (type $1 (func (param i32 i32 i32) (result i32))) - (type $2 (func)) - (type $3 (func (param i32 i32) (result i32))) + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32 i32))) + (type $2 (func (param i32 i32 i32) (result i32))) + (type $3 (func)) (type $4 (func (param i32))) (type $5 (func (param i32 i32))) - (type $6 (func (param i32 i32) (result i64))) - (type $7 (func (param i32 i64 i32))) - (type $8 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (param i32 i32) (result i64))) + (type $8 (func (param i32 i64 i32))) (type $9 (func (param i32 i32 i64))) (type $10 (func (result i32))) - (type $11 (func (param i32) (result i32))) + (type $11 (func (param i32 i32 i32 i32))) (type $12 (func (param i32 i32 i32) (result f32))) (type $13 (func (param i32 i32) (result f64))) (type $14 (func (param i32 f32 i32))) (type $15 (func (param i32 f64 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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -26,39 +25,64 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34540)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36508)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $1 (i32.const 1084) "<") - (data $1.1 (i32.const 1096) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data $2 (i32.const 1148) "<") - (data $2.1 (i32.const 1160) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $3 (i32.const 1212) "<") - (data $3.1 (i32.const 1224) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $6 (i32.const 1340) "<") - (data $6.1 (i32.const 1352) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $7 (i32.const 1404) ",") - (data $7.1 (i32.const 1416) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $9 (i32.const 1484) "<") - (data $9.1 (i32.const 1496) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $10 (i32.const 1548) "<") - (data $10.1 (i32.const 1560) "\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data $11 (i32.const 1612) "<") - (data $11.1 (i32.const 1624) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") - (data $12 (i32.const 1676) "<") - (data $12.1 (i32.const 1688) "\02\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") - (data $13 (i32.const 1744) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $20 (i32.const 3452) "<") + (data $20.1 (i32.const 3464) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $21 (i32.const 3516) "<") + (data $21.1 (i32.const 3528) "\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data $22 (i32.const 3580) "<") + (data $22.1 (i32.const 3592) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (data $23 (i32.const 3644) "<") + (data $23.1 (i32.const 3656) "\02\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (data $24 (i32.const 3712) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1360 + i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3424 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 call $~lib/rt/itcms/__visit - i32.const 1168 + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -79,7 +103,7 @@ i32.ne if i32.const 0 - i32.const 1232 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -112,7 +136,7 @@ i32.eqz if i32.const 0 - i32.const 1232 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -121,7 +145,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$221 + block $__inlined_func$~lib/rt/itcms/Object#unlink$234 local.get $0 i32.load offset=4 i32.const -4 @@ -133,19 +157,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34540 + i32.const 36508 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1232 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$221 + br $__inlined_func$~lib/rt/itcms/Object#unlink$234 end local.get $0 i32.load offset=8 @@ -153,7 +177,7 @@ i32.eqz if i32.const 0 - i32.const 1232 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -182,12 +206,12 @@ i32.const 1 else local.get $1 - i32.const 1744 + i32.const 3712 i32.load i32.gt_u if - i32.const 1360 - i32.const 1424 + i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -196,7 +220,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1748 + i32.const 3716 i32.add i32.load i32.const 32 @@ -267,7 +291,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -281,7 +305,7 @@ i32.lt_u if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -327,7 +351,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -410,7 +434,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -424,7 +448,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -485,7 +509,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -518,7 +542,7 @@ i32.lt_u if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -533,7 +557,7 @@ i32.ne if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -584,7 +608,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -656,7 +680,7 @@ i64.lt_u if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -681,7 +705,7 @@ i32.gt_u if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -708,7 +732,7 @@ i32.gt_u if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -780,10 +804,10 @@ if unreachable end - i32.const 34544 + i32.const 36512 i32.const 0 i32.store - i32.const 36112 + i32.const 38080 i32.const 0 i32.store loop $for-loop|0 @@ -794,7 +818,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34544 + i32.const 36512 i32.add i32.const 0 i32.store offset=4 @@ -812,7 +836,7 @@ i32.add i32.const 2 i32.shl - i32.const 34544 + i32.const 36512 i32.add i32.const 0 i32.store offset=96 @@ -830,14 +854,14 @@ br $for-loop|0 end end - i32.const 34544 - i32.const 36116 + i32.const 36512 + i32.const 38084 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34544 + i32.const 36512 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -922,7 +946,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34540 + i32.const 36508 i32.lt_u if local.get $0 @@ -1011,14 +1035,14 @@ i32.ne if i32.const 0 - i32.const 1232 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34540 + i32.const 36508 i32.lt_u if local.get $0 @@ -1041,7 +1065,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34540 + i32.const 36508 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1070,7 +1094,7 @@ end if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1154,7 +1178,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1206,7 +1230,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1238,8 +1262,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1168 - i32.const 1232 + i32.const 1152 + i32.const 1216 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1249,7 +1273,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1270,7 +1294,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end local.get $2 i32.const 0 @@ -1303,8 +1327,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1168 - i32.const 1504 + i32.const 1152 + i32.const 1488 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1406,7 +1430,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1421,7 +1445,7 @@ i32.gt_u if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1440,7 +1464,7 @@ i32.and if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1545,6 +1569,204 @@ memory.fill local.get $1 ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3740 + i32.lt_s + if + i32.const 36528 + i32.const 36576 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) local.get $0 local.get $1 @@ -1555,7 +1777,7 @@ i32.eqz if i32.const 0 - i32.const 1232 + i32.const 1216 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1600,32 +1822,208 @@ end end ) - (func $~lib/rt/__visit_members (param $0 i32) + (func $~start + call $start:std/dataview + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return + global.get $~lib/memory/__stack_pointer + i32.const 3740 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3740 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$239 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$239 end - return + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36528 + i32.const 36576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3740 + i32.lt_s + if + i32.const 36528 + i32.const 36576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - call $start:std/dataview + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer @@ -1633,11 +2031,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1654,8 +2052,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1360 - i32.const 1568 + i32.const 1344 + i32.const 3536 i32.const 178 i32.const 45 call $~lib/builtins/abort @@ -1682,11 +2080,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1738,8 +2136,8 @@ i32.gt_u i32.or if - i32.const 1056 - i32.const 1632 + i32.const 3424 + i32.const 3600 i32.const 25 i32.const 7 call $~lib/builtins/abort @@ -1781,11 +2179,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1817,11 +2215,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1844,8 +2242,8 @@ i32.lt_s i32.or if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 35 i32.const 7 call $~lib/builtins/abort @@ -1896,11 +2294,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1917,8 +2315,8 @@ i32.const 8 i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 44 i32.const 7 call $~lib/builtins/abort @@ -1976,11 +2374,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1997,8 +2395,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 51 i32.const 50 call $~lib/builtins/abort @@ -2023,11 +2421,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2050,8 +2448,8 @@ i32.lt_s i32.or if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 58 i32.const 7 call $~lib/builtins/abort @@ -2091,11 +2489,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2118,8 +2516,8 @@ i32.lt_s i32.or if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 66 i32.const 7 call $~lib/builtins/abort @@ -2162,11 +2560,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2183,8 +2581,8 @@ i32.const 8 i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 151 i32.const 7 call $~lib/builtins/abort @@ -2237,11 +2635,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2258,8 +2656,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 72 i32.const 50 call $~lib/builtins/abort @@ -2284,11 +2682,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2311,8 +2709,8 @@ i32.lt_s i32.or if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 79 i32.const 7 call $~lib/builtins/abort @@ -2350,11 +2748,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2377,8 +2775,8 @@ i32.lt_s i32.or if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 87 i32.const 7 call $~lib/builtins/abort @@ -2421,11 +2819,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2442,8 +2840,8 @@ i32.const 8 i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 159 i32.const 7 call $~lib/builtins/abort @@ -2496,11 +2894,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2517,8 +2915,8 @@ i32.const 4 i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 95 i32.const 7 call $~lib/builtins/abort @@ -2566,11 +2964,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2587,8 +2985,8 @@ i32.const 8 i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 103 i32.const 7 call $~lib/builtins/abort @@ -2648,11 +3046,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2669,8 +3067,8 @@ i32.const 2 i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 116 i32.const 7 call $~lib/builtins/abort @@ -2707,11 +3105,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2728,8 +3126,8 @@ i32.const 4 i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 123 i32.const 7 call $~lib/builtins/abort @@ -2768,11 +3166,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2789,8 +3187,8 @@ i32.const 8 i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 167 i32.const 7 call $~lib/builtins/abort @@ -2842,11 +3240,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2863,8 +3261,8 @@ i32.const 2 i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 135 i32.const 7 call $~lib/builtins/abort @@ -2901,11 +3299,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2922,8 +3320,8 @@ i32.const 4 i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 142 i32.const 7 call $~lib/builtins/abort @@ -2962,11 +3360,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s if - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2983,8 +3381,8 @@ i32.const 8 i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 174 i32.const 7 call $~lib/builtins/abort @@ -3041,7 +3439,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3053,34 +3451,34 @@ memory.size i32.const 16 i32.shl - i32.const 34540 + i32.const 36508 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1284 - i32.const 1280 + i32.const 1268 + i32.const 1264 i32.store - i32.const 1288 - i32.const 1280 + i32.const 1272 + i32.const 1264 i32.store - i32.const 1280 + i32.const 1264 global.set $~lib/rt/itcms/pinSpace - i32.const 1316 - i32.const 1312 + i32.const 1300 + i32.const 1296 i32.store - i32.const 1320 - i32.const 1312 + i32.const 1304 + i32.const 1296 i32.store - i32.const 1312 + i32.const 1296 global.set $~lib/rt/itcms/toSpace - i32.const 1460 - i32.const 1456 + i32.const 1444 + i32.const 1440 i32.store - i32.const 1464 - i32.const 1456 + i32.const 1448 + i32.const 1440 i32.store - i32.const 1456 + i32.const 1440 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer block $__inlined_func$~lib/typedarray/Uint8Array#constructor (result i32) @@ -3090,7 +3488,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner00 global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer @@ -3111,7 +3509,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer @@ -3284,7 +3682,7 @@ f32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 15 i32.const 3 call $~lib/builtins/abort @@ -3301,7 +3699,7 @@ f32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 16 i32.const 3 call $~lib/builtins/abort @@ -3318,7 +3716,7 @@ f32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 17 i32.const 3 call $~lib/builtins/abort @@ -3335,7 +3733,7 @@ f32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -3352,7 +3750,7 @@ f32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 19 i32.const 3 call $~lib/builtins/abort @@ -3369,7 +3767,7 @@ f32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -3386,7 +3784,7 @@ f32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 22 i32.const 3 call $~lib/builtins/abort @@ -3403,7 +3801,7 @@ f32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 23 i32.const 3 call $~lib/builtins/abort @@ -3420,7 +3818,7 @@ f32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 24 i32.const 3 call $~lib/builtins/abort @@ -3437,7 +3835,7 @@ f32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 25 i32.const 3 call $~lib/builtins/abort @@ -3453,7 +3851,7 @@ f64.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -3469,7 +3867,7 @@ f64.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 28 i32.const 3 call $~lib/builtins/abort @@ -3485,7 +3883,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 30 i32.const 3 call $~lib/builtins/abort @@ -3501,7 +3899,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 31 i32.const 3 call $~lib/builtins/abort @@ -3517,7 +3915,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 32 i32.const 3 call $~lib/builtins/abort @@ -3533,7 +3931,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -3549,7 +3947,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 34 i32.const 3 call $~lib/builtins/abort @@ -3565,7 +3963,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -3581,7 +3979,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -3597,7 +3995,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -3616,7 +4014,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 39 i32.const 3 call $~lib/builtins/abort @@ -3635,7 +4033,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 40 i32.const 3 call $~lib/builtins/abort @@ -3654,7 +4052,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 41 i32.const 3 call $~lib/builtins/abort @@ -3673,7 +4071,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -3692,7 +4090,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -3711,7 +4109,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -3730,7 +4128,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -3749,7 +4147,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 47 i32.const 3 call $~lib/builtins/abort @@ -3768,7 +4166,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 48 i32.const 3 call $~lib/builtins/abort @@ -3787,7 +4185,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -3806,7 +4204,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 50 i32.const 3 call $~lib/builtins/abort @@ -3825,7 +4223,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 51 i32.const 3 call $~lib/builtins/abort @@ -3844,7 +4242,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 52 i32.const 3 call $~lib/builtins/abort @@ -3863,7 +4261,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 53 i32.const 3 call $~lib/builtins/abort @@ -3880,7 +4278,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 55 i32.const 3 call $~lib/builtins/abort @@ -3897,7 +4295,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -3914,7 +4312,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 57 i32.const 3 call $~lib/builtins/abort @@ -3931,7 +4329,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 58 i32.const 3 call $~lib/builtins/abort @@ -3948,7 +4346,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 59 i32.const 3 call $~lib/builtins/abort @@ -3965,7 +4363,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -3982,7 +4380,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 62 i32.const 3 call $~lib/builtins/abort @@ -3999,7 +4397,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -4016,7 +4414,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -4033,7 +4431,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -4049,7 +4447,7 @@ i64.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -4065,7 +4463,7 @@ i64.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -4081,7 +4479,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 70 i32.const 3 call $~lib/builtins/abort @@ -4097,7 +4495,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 71 i32.const 3 call $~lib/builtins/abort @@ -4113,7 +4511,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 72 i32.const 3 call $~lib/builtins/abort @@ -4129,7 +4527,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 73 i32.const 3 call $~lib/builtins/abort @@ -4145,7 +4543,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 74 i32.const 3 call $~lib/builtins/abort @@ -4161,7 +4559,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 75 i32.const 3 call $~lib/builtins/abort @@ -4177,7 +4575,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 76 i32.const 3 call $~lib/builtins/abort @@ -4193,7 +4591,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 77 i32.const 3 call $~lib/builtins/abort @@ -4212,7 +4610,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 79 i32.const 3 call $~lib/builtins/abort @@ -4231,7 +4629,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 80 i32.const 3 call $~lib/builtins/abort @@ -4250,7 +4648,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 81 i32.const 3 call $~lib/builtins/abort @@ -4269,7 +4667,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 82 i32.const 3 call $~lib/builtins/abort @@ -4288,7 +4686,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -4307,7 +4705,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -4326,7 +4724,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 85 i32.const 3 call $~lib/builtins/abort @@ -4345,7 +4743,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 87 i32.const 3 call $~lib/builtins/abort @@ -4364,7 +4762,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 88 i32.const 3 call $~lib/builtins/abort @@ -4383,7 +4781,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 89 i32.const 3 call $~lib/builtins/abort @@ -4402,7 +4800,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 90 i32.const 3 call $~lib/builtins/abort @@ -4421,7 +4819,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 91 i32.const 3 call $~lib/builtins/abort @@ -4440,7 +4838,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 92 i32.const 3 call $~lib/builtins/abort @@ -4459,7 +4857,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 93 i32.const 3 call $~lib/builtins/abort @@ -4476,7 +4874,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 95 i32.const 3 call $~lib/builtins/abort @@ -4493,7 +4891,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 96 i32.const 3 call $~lib/builtins/abort @@ -4510,7 +4908,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -4527,7 +4925,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -4544,7 +4942,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 99 i32.const 3 call $~lib/builtins/abort @@ -4561,7 +4959,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 101 i32.const 3 call $~lib/builtins/abort @@ -4578,7 +4976,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 102 i32.const 3 call $~lib/builtins/abort @@ -4595,7 +4993,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 103 i32.const 3 call $~lib/builtins/abort @@ -4612,7 +5010,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -4629,7 +5027,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 105 i32.const 3 call $~lib/builtins/abort @@ -4645,7 +5043,7 @@ i64.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 107 i32.const 3 call $~lib/builtins/abort @@ -4661,7 +5059,7 @@ i64.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -4685,7 +5083,7 @@ f32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 111 i32.const 3 call $~lib/builtins/abort @@ -4709,7 +5107,7 @@ f32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -4732,7 +5130,7 @@ f64.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 117 i32.const 3 call $~lib/builtins/abort @@ -4755,7 +5153,7 @@ f64.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 120 i32.const 3 call $~lib/builtins/abort @@ -4769,7 +5167,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4782,8 +5180,8 @@ i32.load offset=8 i32.eqz if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 109 i32.const 50 call $~lib/builtins/abort @@ -4810,7 +5208,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 123 i32.const 3 call $~lib/builtins/abort @@ -4836,7 +5234,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 126 i32.const 3 call $~lib/builtins/abort @@ -4862,7 +5260,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 129 i32.const 3 call $~lib/builtins/abort @@ -4886,7 +5284,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 132 i32.const 3 call $~lib/builtins/abort @@ -4910,7 +5308,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 135 i32.const 3 call $~lib/builtins/abort @@ -4933,7 +5331,7 @@ i64.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 138 i32.const 3 call $~lib/builtins/abort @@ -4956,7 +5354,7 @@ i64.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 141 i32.const 3 call $~lib/builtins/abort @@ -4970,7 +5368,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4983,8 +5381,8 @@ i32.load offset=8 i32.eqz if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 128 i32.const 50 call $~lib/builtins/abort @@ -5011,7 +5409,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 144 i32.const 3 call $~lib/builtins/abort @@ -5037,7 +5435,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 147 i32.const 3 call $~lib/builtins/abort @@ -5063,7 +5461,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 150 i32.const 3 call $~lib/builtins/abort @@ -5087,7 +5485,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 153 i32.const 3 call $~lib/builtins/abort @@ -5111,7 +5509,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 156 i32.const 3 call $~lib/builtins/abort @@ -5134,7 +5532,7 @@ i64.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 159 i32.const 3 call $~lib/builtins/abort @@ -5157,7 +5555,7 @@ i64.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 162 i32.const 3 call $~lib/builtins/abort @@ -5177,7 +5575,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1772 + i32.const 3740 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -5215,7 +5613,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 165 i32.const 3 call $~lib/builtins/abort @@ -5230,13 +5628,13 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 3664 i32.const 166 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 34540 + i32.const 36508 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 @@ -5277,11 +5675,35 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34560 - i32.const 34608 + i32.const 36528 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) ) diff --git a/tests/compiler/std/date.debug.wat b/tests/compiler/std/date.debug.wat index f67503e5e9..1a7dacb9a8 100644 --- a/tests/compiler/std/date.debug.wat +++ b/tests/compiler/std/date.debug.wat @@ -12,19 +12,19 @@ (type $10 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) (type $11 (func (param i32 i32 i64) (result i32))) (type $12 (func (result i32))) - (type $13 (func (param i32 i64))) - (type $14 (func (param i32) (result i64))) - (type $15 (func (param i32 i32 i32 i64) (result i64))) - (type $16 (func (param i32 i64 i32))) - (type $17 (func (param i64 i32) (result i32))) - (type $18 (func (param i32 i64 i32 i32))) + (type $13 (func (param i32 i64 i32))) + (type $14 (func (param i64 i32) (result i32))) + (type $15 (func (param i32 i64 i32 i32))) + (type $16 (func (param i32 i64))) + (type $17 (func (param i32) (result i64))) + (type $18 (func (param i32 i32 i32 i64) (result i64))) (type $19 (func (param i32 i32 i32 i32 i32) (result i32))) (type $20 (func (param i32 i64) (result i32))) (type $21 (func (param i32 i64) (result i64))) (type $22 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/date/_day (mut i32) (i32.const 0)) - (global $~lib/date/_month (mut i32) (i32.const 0)) + (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)) @@ -33,140 +33,142 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/date/_day (mut i32) (i32.const 0)) + (global $~lib/date/_month (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/rt/__rtti_base i32 (i32.const 7408)) - (global $~lib/memory/__data_end i32 (i32.const 7444)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 40212)) - (global $~lib/memory/__heap_base i32 (i32.const 40212)) + (global $~lib/rt/__rtti_base i32 (i32.const 7536)) + (global $~lib/memory/__data_end i32 (i32.const 7572)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 40340)) + (global $~lib/memory/__heap_base i32 (i32.const 40340)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00D\00a\00t\00e\00\00\00\00\00") - (data $1 (i32.const 60) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00~\00l\00i\00b\00/\00d\00a\00t\00e\00.\00t\00s\00\00\00\00\00") - (data $2 (i32.const 108) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s\00\00\00\00\00\00\00") - (data $3 (i32.const 156) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $4 (i32.const 220) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 464) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 492) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 556) "\00\03\02\05\00\03\05\01\04\06\02\04") - (data $12 (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 636) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 764) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $16 (i32.const 828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data $17 (i32.const 860) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data $18 (i32.const 1260) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $19 (i32.const 2316) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") - (data $20 (i32.const 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $21 (i32.const 2444) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00T\00\00\00\00\00\00\00\00\00\00\00") - (data $22 (i32.const 2476) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") - (data $23 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") - (data $24 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00Z\00\00\00\00\00\00\00\00\00\00\00") - (data $25 (i32.const 2572) "L\00\00\00\03\00\00\00\00\00\00\00\05\00\00\008\00\00\00\00\00\00\00P\02\00\00\00\00\00\00P\02\00\00\00\00\00\00\a0\t\00\00\00\00\00\00\c0\t\00\00\00\00\00\00\c0\t\00\00\00\00\00\00\e0\t\00\00\00\00\00\00\00\n\00\00\00\00\00\00") - (data $26 (i32.const 2652) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $27 (i32.const 2732) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00-\000\000\000\000\000\001\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z\00\00\00\00\00\00\00") - (data $28 (i32.const 2812) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\000\000\000\001\00-\000\004\00-\000\007\00T\002\003\00:\000\006\00:\004\000\00.\000\000\000\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $29 (i32.const 2892) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\000\002\000\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $30 (i32.const 2972) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\004\005\006\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $31 (i32.const 3052) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00+\000\001\002\001\008\004\00-\000\004\00-\000\008\00T\001\003\00:\000\007\00:\001\001\00.\000\002\000\00Z\00\00\00\00\00\00\00") - (data $32 (i32.const 3132) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\009\009\009\009\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $33 (i32.const 3212) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00+\000\001\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00") - (data $34 (i32.const 3292) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00-\000\000\000\000\002\002\00-\000\006\00-\001\006\00T\001\007\00:\001\003\00:\005\000\00.\007\007\004\00Z\00\00\00\00\00\00\00") - (data $35 (i32.const 3372) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00S\00u\00n\00 \00\00\00\00\00") - (data $36 (i32.const 3404) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00M\00o\00n\00 \00\00\00\00\00") - (data $37 (i32.const 3436) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00T\00u\00e\00 \00\00\00\00\00") - (data $38 (i32.const 3468) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00W\00e\00d\00 \00\00\00\00\00") - (data $39 (i32.const 3500) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00T\00h\00u\00 \00\00\00\00\00") - (data $40 (i32.const 3532) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00F\00r\00i\00 \00\00\00\00\00") - (data $41 (i32.const 3564) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00S\00a\00t\00 \00\00\00\00\00") - (data $42 (i32.const 3596) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\1c\00\00\00@\r\00\00`\r\00\00\80\r\00\00\a0\r\00\00\c0\r\00\00\e0\r\00\00\00\0e\00\00") - (data $43 (i32.const 3644) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00J\00a\00n\00 \00\00\00\00\00") - (data $44 (i32.const 3676) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00F\00e\00b\00 \00\00\00\00\00") - (data $45 (i32.const 3708) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00M\00a\00r\00 \00\00\00\00\00") - (data $46 (i32.const 3740) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00p\00r\00 \00\00\00\00\00") - (data $47 (i32.const 3772) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00M\00a\00y\00 \00\00\00\00\00") - (data $48 (i32.const 3804) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00J\00u\00n\00 \00\00\00\00\00") - (data $49 (i32.const 3836) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00J\00u\00l\00 \00\00\00\00\00") - (data $50 (i32.const 3868) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00u\00g\00 \00\00\00\00\00") - (data $51 (i32.const 3900) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00S\00e\00p\00 \00\00\00\00\00") - (data $52 (i32.const 3932) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00O\00c\00t\00 \00\00\00\00\00") - (data $53 (i32.const 3964) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00N\00o\00v\00 \00\00\00\00\00") - (data $54 (i32.const 3996) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00D\00e\00c\00 \00\00\00\00\00") - (data $55 (i32.const 4028) "L\00\00\00\00\00\00\00\00\00\00\00\05\00\00\000\00\00\00P\0e\00\00p\0e\00\00\90\0e\00\00\b0\0e\00\00\d0\0e\00\00\f0\0e\00\00\10\0f\00\000\0f\00\00P\0f\00\00p\0f\00\00\90\0f\00\00\b0\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $56 (i32.const 4108) ",\00\00\00\03\00\00\00\00\00\00\00\05\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $57 (i32.const 4156) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00 \00-\00\00\00\00\00\00\00\00\00") - (data $58 (i32.const 4188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") - (data $59 (i32.const 4220) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00W\00e\00d\00 \00J\00a\00n\00 \000\001\00 \000\000\002\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $60 (i32.const 4284) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00S\00u\00n\00 \00F\00e\00b\00 \000\002\00 \002\000\002\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $61 (i32.const 4348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00T\00h\00u\00 \00J\00u\00l\00 \000\001\00 \00-\000\000\000\001\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $62 (i32.const 4412) ",\00\00\00\03\00\00\00\00\00\00\00\05\00\00\00\14\00\00\00\00\00\00\00\c0\t\00\00\00\00\00\00\c0\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $63 (i32.const 4460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\000\000\00:\000\000\00:\000\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $64 (i32.const 4508) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\002\003\00:\005\009\00:\005\009\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $65 (i32.const 4556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00S\00u\00n\00,\00 \00\00\00") - (data $66 (i32.const 4588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00M\00o\00n\00,\00 \00\00\00") - (data $67 (i32.const 4620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00T\00u\00e\00,\00 \00\00\00") - (data $68 (i32.const 4652) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00W\00e\00d\00,\00 \00\00\00") - (data $69 (i32.const 4684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00T\00h\00u\00,\00 \00\00\00") - (data $70 (i32.const 4716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00F\00r\00i\00,\00 \00\00\00") - (data $71 (i32.const 4748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00S\00a\00t\00,\00 \00\00\00") - (data $72 (i32.const 4780) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\1c\00\00\00\e0\11\00\00\00\12\00\00 \12\00\00@\12\00\00`\12\00\00\80\12\00\00\a0\12\00\00") - (data $73 (i32.const 4828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00J\00a\00n\00 \00\00\00") - (data $74 (i32.const 4860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00F\00e\00b\00 \00\00\00") - (data $75 (i32.const 4892) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00M\00a\00r\00 \00\00\00") - (data $76 (i32.const 4924) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00A\00p\00r\00 \00\00\00") - (data $77 (i32.const 4956) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00M\00a\00y\00 \00\00\00") - (data $78 (i32.const 4988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00J\00u\00n\00 \00\00\00") - (data $79 (i32.const 5020) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00J\00u\00l\00 \00\00\00") - (data $80 (i32.const 5052) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00A\00u\00g\00 \00\00\00") - (data $81 (i32.const 5084) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00S\00e\00p\00 \00\00\00") - (data $82 (i32.const 5116) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00O\00c\00t\00 \00\00\00") - (data $83 (i32.const 5148) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00N\00o\00v\00 \00\00\00") - (data $84 (i32.const 5180) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00D\00e\00c\00 \00\00\00") - (data $85 (i32.const 5212) "L\00\00\00\00\00\00\00\00\00\00\00\05\00\00\000\00\00\00\f0\12\00\00\10\13\00\000\13\00\00P\13\00\00p\13\00\00\90\13\00\00\b0\13\00\00\d0\13\00\00\f0\13\00\00\10\14\00\000\14\00\00P\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $86 (i32.const 5292) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00G\00M\00T\00\00\00\00\00") - (data $87 (i32.const 5324) "L\00\00\00\03\00\00\00\00\00\00\00\05\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00p\10\00\00\00\00\00\00\c0\t\00\00\00\00\00\00\c0\t\00\00\00\00\00\00\c0\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $88 (i32.const 5404) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00:\00\00\00W\00e\00d\00,\00 \000\001\00 \00J\00a\00n\00 \000\000\002\000\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T\00\00\00") - (data $89 (i32.const 5484) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00:\00\00\00M\00o\00n\00,\00 \000\003\00 \00F\00e\00b\00 \002\000\002\000\00 \001\004\00:\005\003\00:\003\003\00 \00G\00M\00T\00\00\00") - (data $90 (i32.const 5564) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00<\00\00\00T\00h\00u\00,\00 \000\001\00 \00J\00u\00l\00 \00-\000\000\000\001\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T\00") - (data $91 (i32.const 5644) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\001\009\007\006\00-\000\002\00-\000\002\00\00\00\00\00\00\00\00\00") - (data $92 (i32.const 5692) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $93 (i32.const 5740) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $94 (i32.const 5788) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $95 (i32.const 5916) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\001\009\007\006\00-\002\00-\002\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $96 (i32.const 5964) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\002\003\004\005\00-\001\001\00-\000\004\00\00\00\00\00\00\00\00\00") - (data $97 (i32.const 6012) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00\00\00\00\00\00\00") - (data $98 (i32.const 6076) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $99 (i32.const 6156) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $100 (i32.const 6236) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00:\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00-\000\008\00:\000\000\00\00\00") - (data $101 (i32.const 6316) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00:\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00+\000\005\00:\003\000\00\00\00") - (data $102 (i32.const 6396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\00") - (data $103 (i32.const 6460) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $104 (i32.const 6540) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\008\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\00+\000\000\00:\000\000\00\00\00\00\00") - (data $105 (i32.const 6620) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\004\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\007\008\009\00\00\00\00\00\00\00\00\00") - (data $106 (i32.const 6700) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\007\008\009\00Z\00\00\00\00\00\00\00") - (data $107 (i32.const 6780) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\007\008\009\00+\000\000\00:\000\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $108 (i32.const 6876) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\000\000\000\000\00\00\00\00\00") - (data $109 (i32.const 6908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\000\000\000\001\00\00\00\00\00") - (data $110 (i32.const 6940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\009\007\006\00\00\00\00\00") - (data $111 (i32.const 6972) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\009\007\006\00-\000\002\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $112 (i32.const 7020) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $113 (i32.const 7084) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00") - (data $114 (i32.const 7164) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\003\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00") - (data $115 (i32.const 7244) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\002\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z\00\00\00\00\00\00\00") - (data $116 (i32.const 7324) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\001\00Z\00\00\00\00\00\00\00") - (data $117 (i32.const 7408) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\04A\00\00\02A\00\00\02\t\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00D\00a\00t\00e\00\00\00\00\00") + (data $20 (i32.const 2428) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00~\00l\00i\00b\00/\00d\00a\00t\00e\00.\00t\00s\00\00\00\00\00") + (data $21 (i32.const 2476) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s\00\00\00\00\00\00\00") + (data $22 (i32.const 2524) "\00\03\02\05\00\03\05\01\04\06\02\04") + (data $23 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00T\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00Z\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2700) "L\00\00\00\03\00\00\00\00\00\00\00\05\00\00\008\00\00\00\00\00\00\00\00\n\00\00\00\00\00\00\00\n\00\00\00\00\00\00@\n\00\00\00\00\00\00\10\02\00\00\00\00\00\00\10\02\00\00\00\00\00\00`\n\00\00\00\00\00\00\80\n\00\00\00\00\00\00") + (data $29 (i32.const 2780) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 2860) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00-\000\000\000\000\000\001\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z\00\00\00\00\00\00\00") + (data $31 (i32.const 2940) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\000\000\000\001\00-\000\004\00-\000\007\00T\002\003\00:\000\006\00:\004\000\00.\000\000\000\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 3020) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\000\002\000\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 3100) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\004\005\006\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $34 (i32.const 3180) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00+\000\001\002\001\008\004\00-\000\004\00-\000\008\00T\001\003\00:\000\007\00:\001\001\00.\000\002\000\00Z\00\00\00\00\00\00\00") + (data $35 (i32.const 3260) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\009\009\009\009\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 3340) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00+\000\001\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00") + (data $37 (i32.const 3420) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00-\000\000\000\000\002\002\00-\000\006\00-\001\006\00T\001\007\00:\001\003\00:\005\000\00.\007\007\004\00Z\00\00\00\00\00\00\00") + (data $38 (i32.const 3500) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00S\00u\00n\00 \00\00\00\00\00") + (data $39 (i32.const 3532) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00M\00o\00n\00 \00\00\00\00\00") + (data $40 (i32.const 3564) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00T\00u\00e\00 \00\00\00\00\00") + (data $41 (i32.const 3596) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00W\00e\00d\00 \00\00\00\00\00") + (data $42 (i32.const 3628) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00T\00h\00u\00 \00\00\00\00\00") + (data $43 (i32.const 3660) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00F\00r\00i\00 \00\00\00\00\00") + (data $44 (i32.const 3692) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00S\00a\00t\00 \00\00\00\00\00") + (data $45 (i32.const 3724) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\1c\00\00\00\c0\r\00\00\e0\r\00\00\00\0e\00\00 \0e\00\00@\0e\00\00`\0e\00\00\80\0e\00\00") + (data $46 (i32.const 3772) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00J\00a\00n\00 \00\00\00\00\00") + (data $47 (i32.const 3804) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00F\00e\00b\00 \00\00\00\00\00") + (data $48 (i32.const 3836) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00M\00a\00r\00 \00\00\00\00\00") + (data $49 (i32.const 3868) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00p\00r\00 \00\00\00\00\00") + (data $50 (i32.const 3900) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00M\00a\00y\00 \00\00\00\00\00") + (data $51 (i32.const 3932) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00J\00u\00n\00 \00\00\00\00\00") + (data $52 (i32.const 3964) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00J\00u\00l\00 \00\00\00\00\00") + (data $53 (i32.const 3996) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00u\00g\00 \00\00\00\00\00") + (data $54 (i32.const 4028) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00S\00e\00p\00 \00\00\00\00\00") + (data $55 (i32.const 4060) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00O\00c\00t\00 \00\00\00\00\00") + (data $56 (i32.const 4092) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00N\00o\00v\00 \00\00\00\00\00") + (data $57 (i32.const 4124) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00D\00e\00c\00 \00\00\00\00\00") + (data $58 (i32.const 4156) "L\00\00\00\00\00\00\00\00\00\00\00\05\00\00\000\00\00\00\d0\0e\00\00\f0\0e\00\00\10\0f\00\000\0f\00\00P\0f\00\00p\0f\00\00\90\0f\00\00\b0\0f\00\00\d0\0f\00\00\f0\0f\00\00\10\10\00\000\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $59 (i32.const 4236) ",\00\00\00\03\00\00\00\00\00\00\00\05\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $60 (i32.const 4284) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00 \00-\00\00\00\00\00\00\00\00\00") + (data $61 (i32.const 4316) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $62 (i32.const 4348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00W\00e\00d\00 \00J\00a\00n\00 \000\001\00 \000\000\002\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $63 (i32.const 4412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00S\00u\00n\00 \00F\00e\00b\00 \000\002\00 \002\000\002\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $64 (i32.const 4476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00T\00h\00u\00 \00J\00u\00l\00 \000\001\00 \00-\000\000\000\001\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $65 (i32.const 4540) ",\00\00\00\03\00\00\00\00\00\00\00\05\00\00\00\14\00\00\00\00\00\00\00\10\02\00\00\00\00\00\00\10\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $66 (i32.const 4588) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\000\000\00:\000\000\00:\000\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $67 (i32.const 4636) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\002\003\00:\005\009\00:\005\009\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $68 (i32.const 4684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00S\00u\00n\00,\00 \00\00\00") + (data $69 (i32.const 4716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00M\00o\00n\00,\00 \00\00\00") + (data $70 (i32.const 4748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00T\00u\00e\00,\00 \00\00\00") + (data $71 (i32.const 4780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00W\00e\00d\00,\00 \00\00\00") + (data $72 (i32.const 4812) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00T\00h\00u\00,\00 \00\00\00") + (data $73 (i32.const 4844) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00F\00r\00i\00,\00 \00\00\00") + (data $74 (i32.const 4876) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00S\00a\00t\00,\00 \00\00\00") + (data $75 (i32.const 4908) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\1c\00\00\00`\12\00\00\80\12\00\00\a0\12\00\00\c0\12\00\00\e0\12\00\00\00\13\00\00 \13\00\00") + (data $76 (i32.const 4956) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00J\00a\00n\00 \00\00\00") + (data $77 (i32.const 4988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00F\00e\00b\00 \00\00\00") + (data $78 (i32.const 5020) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00M\00a\00r\00 \00\00\00") + (data $79 (i32.const 5052) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00A\00p\00r\00 \00\00\00") + (data $80 (i32.const 5084) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00M\00a\00y\00 \00\00\00") + (data $81 (i32.const 5116) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00J\00u\00n\00 \00\00\00") + (data $82 (i32.const 5148) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00J\00u\00l\00 \00\00\00") + (data $83 (i32.const 5180) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00A\00u\00g\00 \00\00\00") + (data $84 (i32.const 5212) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00S\00e\00p\00 \00\00\00") + (data $85 (i32.const 5244) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00O\00c\00t\00 \00\00\00") + (data $86 (i32.const 5276) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00N\00o\00v\00 \00\00\00") + (data $87 (i32.const 5308) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00D\00e\00c\00 \00\00\00") + (data $88 (i32.const 5340) "L\00\00\00\00\00\00\00\00\00\00\00\05\00\00\000\00\00\00p\13\00\00\90\13\00\00\b0\13\00\00\d0\13\00\00\f0\13\00\00\10\14\00\000\14\00\00P\14\00\00p\14\00\00\90\14\00\00\b0\14\00\00\d0\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $89 (i32.const 5420) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00G\00M\00T\00\00\00\00\00") + (data $90 (i32.const 5452) "L\00\00\00\03\00\00\00\00\00\00\00\05\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\10\00\00\00\00\00\00\10\02\00\00\00\00\00\00\10\02\00\00\00\00\00\00@\15\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $91 (i32.const 5532) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00:\00\00\00W\00e\00d\00,\00 \000\001\00 \00J\00a\00n\00 \000\000\002\000\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T\00\00\00") + (data $92 (i32.const 5612) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00:\00\00\00M\00o\00n\00,\00 \000\003\00 \00F\00e\00b\00 \002\000\002\000\00 \001\004\00:\005\003\00:\003\003\00 \00G\00M\00T\00\00\00") + (data $93 (i32.const 5692) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00<\00\00\00T\00h\00u\00,\00 \000\001\00 \00J\00u\00l\00 \00-\000\000\000\001\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T\00") + (data $94 (i32.const 5772) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\001\009\007\006\00-\000\002\00-\000\002\00\00\00\00\00\00\00\00\00") + (data $95 (i32.const 5820) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $96 (i32.const 5868) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $97 (i32.const 5916) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $98 (i32.const 6044) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\001\009\007\006\00-\002\00-\002\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $99 (i32.const 6092) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\002\003\004\005\00-\001\001\00-\000\004\00\00\00\00\00\00\00\00\00") + (data $100 (i32.const 6140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00\00\00\00\00\00\00") + (data $101 (i32.const 6204) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $102 (i32.const 6284) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $103 (i32.const 6364) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00:\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00-\000\008\00:\000\000\00\00\00") + (data $104 (i32.const 6444) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00:\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00+\000\005\00:\003\000\00\00\00") + (data $105 (i32.const 6524) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\00") + (data $106 (i32.const 6588) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $107 (i32.const 6668) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\008\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\00+\000\000\00:\000\000\00\00\00\00\00") + (data $108 (i32.const 6748) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\004\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\007\008\009\00\00\00\00\00\00\00\00\00") + (data $109 (i32.const 6828) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\007\008\009\00Z\00\00\00\00\00\00\00") + (data $110 (i32.const 6908) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\007\008\009\00+\000\000\00:\000\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $111 (i32.const 7004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\000\000\000\000\00\00\00\00\00") + (data $112 (i32.const 7036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\000\000\000\001\00\00\00\00\00") + (data $113 (i32.const 7068) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\009\007\006\00\00\00\00\00") + (data $114 (i32.const 7100) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\009\007\006\00-\000\002\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $115 (i32.const 7148) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $116 (i32.const 7212) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00") + (data $117 (i32.const 7292) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\003\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00") + (data $118 (i32.const 7372) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\002\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z\00\00\00\00\00\00\00") + (data $119 (i32.const 7452) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\001\00Z\00\00\00\00\00\00\00") + (data $120 (i32.const 7536) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\04A\00\00\02A\00\00\02\t\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -297,150 +299,18 @@ i32.or return ) - (func $~lib/date/dateFromEpoch (param $ms i64) (result i32) - (local $a i64) - (local $b i64) - (local $da i32) - (local $a|4 i32) - (local $b|5 i32) - (local $q0 i32) - (local $r1 i32) - (local $u1 i64) - (local $dm1 i32) - (local $n1 i32) - (local $year i32) - (local $mo i32) - block $~lib/date/floorDiv|inlined.0 (result i64) - local.get $ms - local.set $a - i32.const 86400000 - i64.extend_i32_s - local.set $b - local.get $a - local.get $a - i64.const 0 - i64.lt_s - if (result i64) - local.get $b - i64.const 1 - i64.sub - else - i64.const 0 - end - i64.sub - local.get $b - i64.div_s - br $~lib/date/floorDiv|inlined.0 - end - i32.wrap_i64 - i32.const 4 - i32.mul - i32.const 719468 - i32.const 4 - i32.mul - i32.add - i32.const 3 - i32.or - local.set $da - block $~lib/date/floorDiv|inlined.1 (result i32) - local.get $da - local.set $a|4 - i32.const 146097 - local.set $b|5 - local.get $a|4 - local.get $a|4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $b|5 - i32.const 1 - i32.sub - else - i32.const 0 - end - i32.sub - local.get $b|5 - i32.div_s - br $~lib/date/floorDiv|inlined.1 - end - local.set $q0 - local.get $da - local.get $q0 - i32.const 146097 - i32.mul - i32.sub - local.set $r1 - local.get $r1 - i32.const 3 - i32.or - i64.extend_i32_u - i64.const 2939745 - i64.mul - local.set $u1 - local.get $u1 - i32.wrap_i64 - i32.const 11758980 - i32.div_u - local.set $dm1 - i32.const 2141 - local.get $dm1 - i32.mul - i32.const 197913 - i32.add - local.set $n1 - i32.const 100 - local.get $q0 - i32.mul - local.get $u1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.add - local.set $year - local.get $n1 - i32.const 16 - i32.shr_u - local.set $mo - local.get $n1 - i32.const 65535 - i32.and - i32.const 2141 - i32.div_s - i32.const 1 - i32.add - global.set $~lib/date/_day - local.get $dm1 - i32.const 306 - i32.ge_u - if - local.get $mo - i32.const 12 - i32.sub - local.set $mo - local.get $year - i32.const 1 - i32.add - local.set $year - end - local.get $mo - global.set $~lib/date/_month - local.get $year - return - ) - (func $~lib/date/Date#set:year (param $this i32) (param $year i32) - local.get $this - local.get $year - i32.store - ) - (func $~lib/date/Date#set:month (param $this i32) (param $month i32) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) local.get $this - local.get $month - i32.store offset=4 + i32.load offset=16 ) - (func $~lib/date/Date#set:day (param $this i32) (param $day i32) + (func $~lib/string/String#get:length (param $this i32) (result i32) local.get $this - local.get $day - i32.store offset=8 + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this @@ -506,7 +376,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -576,7 +446,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -593,7 +463,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -623,8 +493,8 @@ i32.load i32.gt_u if - i32.const 368 - i32.const 432 + i32.const 320 + i32.const 384 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -692,7 +562,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 240 + i32.const 192 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -844,7 +714,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -864,7 +734,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -927,7 +797,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -1080,7 +950,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -1097,7 +967,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -1186,7 +1056,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -1229,7 +1099,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -1247,7 +1117,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -1315,7 +1185,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1432,7 +1302,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1478,7 +1348,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1510,7 +1380,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1754,7 +1624,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1974,7 +1844,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 192 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -2082,8 +1952,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 176 - i32.const 512 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -2185,7 +2055,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -2256,7 +2126,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2413,7 +2283,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2528,7 +2398,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2548,7 +2418,7 @@ i32.eqz if i32.const 0 - i32.const 512 + i32.const 464 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2596,8 +2466,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 176 - i32.const 240 + i32.const 128 + i32.const 192 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2642,207 +2512,32 @@ local.get $ptr return ) - (func $~lib/date/Date#set:epochMillis (param $this i32) (param $epochMillis i64) - local.get $this - local.get $epochMillis - i64.store offset=16 - ) - (func $~lib/date/Date#get:epochMillis (param $this i32) (result i64) - local.get $this - i64.load offset=16 - ) - (func $~lib/date/Date#get:year (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/date/Date#get:month (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/date/Date#get:day (param $this i32) (result i32) - local.get $this - i32.load offset=8 - ) - (func $~lib/date/join (param $year i32) (param $month i32) (param $day i32) (param $ms i64) (result i64) - (local $a i64) - (local $b i64) - (local $m i64) - local.get $year - local.get $month - local.get $day - call $~lib/date/daysSinceEpoch - i32.const 86400000 - i64.extend_i32_s - i64.mul - block $~lib/date/euclidRem|inlined.4 (result i64) - local.get $ms - local.set $a - i32.const 86400000 - i64.extend_i32_s - local.set $b - local.get $a - local.get $b - i64.rem_s - local.set $m - local.get $m - local.get $m - i64.const 0 - i64.lt_s - if (result i64) - local.get $b + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return else - i64.const 0 - end - i64.add - br $~lib/date/euclidRem|inlined.4 - end - i64.add - return - ) - (func $~lib/date/dayOfWeek (param $year i32) (param $month i32) (param $day i32) (result i32) - (local $a i32) - (local $b i32) - (local $a|5 i32) - (local $b|6 i32) - (local $a|7 i32) - (local $b|8 i32) - (local $a|9 i32) - (local $b|10 i32) - (local $m i32) - local.get $year - local.get $month - i32.const 3 - i32.lt_s - i32.sub - local.set $year - local.get $year - block $~lib/date/floorDiv|inlined.2 (result i32) - local.get $year - local.set $a - i32.const 4 - local.set $b - local.get $a - local.get $a - i32.const 0 - i32.lt_s - if (result i32) - local.get $b - i32.const 1 - i32.sub - else - i32.const 0 - end - i32.sub - local.get $b - i32.div_s - br $~lib/date/floorDiv|inlined.2 - end - block $~lib/date/floorDiv|inlined.3 (result i32) - local.get $year - local.set $a|5 - i32.const 100 - local.set $b|6 - local.get $a|5 - local.get $a|5 - i32.const 0 - i32.lt_s - if (result i32) - local.get $b|6 - i32.const 1 - i32.sub - else - i32.const 0 - end - i32.sub - local.get $b|6 - i32.div_s - br $~lib/date/floorDiv|inlined.3 - end - i32.sub - block $~lib/date/floorDiv|inlined.4 (result i32) - local.get $year - local.set $a|7 - i32.const 400 - local.set $b|8 - local.get $a|7 - local.get $a|7 - i32.const 0 - i32.lt_s - if (result i32) - local.get $b|8 - i32.const 1 - i32.sub - else - i32.const 0 - end - i32.sub - local.get $b|8 - i32.div_s - br $~lib/date/floorDiv|inlined.4 - end - i32.add - i32.add - local.set $year - i32.const 556 - local.get $month - i32.add - i32.const 1 - i32.sub - i32.load8_u - local.set $month - block $~lib/date/euclidRem|inlined.0 (result i32) - local.get $year - local.get $month - i32.add - local.get $day - i32.add - local.set $a|9 - i32.const 7 - local.set $b|10 - local.get $a|9 - local.get $b|10 - i32.rem_s - local.set $m - local.get $m - local.get $m - i32.const 0 - i32.lt_s - if (result i32) - local.get $b|10 - else - i32.const 0 - end - i32.add - br $~lib/date/euclidRem|inlined.0 - end - return - ) - (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) - local.get $value - i32.const 100000 - i32.lt_u - if - local.get $value - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $value - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $value - i32.const 10000 - i32.ge_u - i32.add - local.get $value - i32.const 1000 - i32.ge_u - i32.add - return + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return end unreachable else @@ -2907,14 +2602,14 @@ i32.const 100 i32.rem_u local.set $d2 - i32.const 860 + i32.const 764 local.get $d1 i32.const 2 i32.shl i32.add i64.load32_u local.set $digits1 - i32.const 860 + i32.const 764 local.get $d2 i32.const 2 i32.shl @@ -2957,7 +2652,7 @@ i32.const 2 i32.sub local.set $offset - i32.const 860 + i32.const 764 local.get $d1|10 i32.const 2 i32.shl @@ -2980,7 +2675,7 @@ i32.const 2 i32.sub local.set $offset - i32.const 860 + i32.const 764 local.get $num i32.const 2 i32.shl @@ -3027,7 +2722,7 @@ i32.const 1 i32.shl i32.add - i32.const 1280 + i32.const 1184 local.get $num i32.wrap_i64 i32.const 255 @@ -3049,7 +2744,7 @@ i32.and if local.get $buffer - i32.const 1280 + i32.const 1184 local.get $num i32.wrap_i64 i32.const 6 @@ -3172,7 +2867,7 @@ i32.const 1 i32.shl i32.add - i32.const 2336 + i32.const 2240 local.get $num local.get $mask i64.and @@ -3206,7 +2901,7 @@ i32.const 1 i32.shl i32.add - i32.const 2336 + i32.const 2240 local.get $num local.get $q local.get $base @@ -3227,73 +2922,386 @@ end end ) - (func $~lib/number/I32#toString (param $this i32) (param $radix i32) (result i32) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) local.get $this local.get $radix - call $~lib/util/number/itoa32 - return - ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u + call $~lib/util/number/utoa32 return ) - (func $~lib/memory/memory.repeat (param $dst i32) (param $src i32) (param $srcLength i32) (param $count i32) - (local $index i32) - (local $total i32) - i32.const 0 - local.set $index - local.get $srcLength - local.get $count - i32.mul - local.set $total - loop $while-continue|0 - local.get $index - local.get $total - i32.lt_u - if - local.get $dst - local.get $index - i32.add - local.get $src - local.get $srcLength - memory.copy - local.get $index - local.get $srcLength - i32.add - local.set $index - br $while-continue|0 + (func $~lib/date/dateFromEpoch (param $ms i64) (result i32) + (local $a i64) + (local $b i64) + (local $da i32) + (local $a|4 i32) + (local $b|5 i32) + (local $q0 i32) + (local $r1 i32) + (local $u1 i64) + (local $dm1 i32) + (local $n1 i32) + (local $year i32) + (local $mo i32) + block $~lib/date/floorDiv|inlined.0 (result i64) + local.get $ms + local.set $a + i32.const 86400000 + i64.extend_i32_s + local.set $b + local.get $a + local.get $a + i64.const 0 + i64.lt_s + if (result i64) + local.get $b + i64.const 1 + i64.sub + else + i64.const 0 end + i64.sub + local.get $b + i64.div_s + br $~lib/date/floorDiv|inlined.0 end - ) - (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) - (local $child i32) - (local $parent i32) - (local $parentColor i32) - local.get $childPtr - i32.eqz - if - return - end - i32.const 1 - drop - local.get $parentPtr - i32.eqz - if + i32.wrap_i64 + i32.const 4 + i32.mul + i32.const 719468 + i32.const 4 + i32.mul + i32.add + i32.const 3 + i32.or + local.set $da + block $~lib/date/floorDiv|inlined.1 (result i32) + local.get $da + local.set $a|4 + i32.const 146097 + local.set $b|5 + local.get $a|4 + local.get $a|4 i32.const 0 - i32.const 240 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.lt_s + if (result i32) + local.get $b|5 + i32.const 1 + i32.sub + else + i32.const 0 + end + i32.sub + local.get $b|5 + i32.div_s + br $~lib/date/floorDiv|inlined.1 + end + local.set $q0 + local.get $da + local.get $q0 + i32.const 146097 + i32.mul + i32.sub + local.set $r1 + local.get $r1 + i32.const 3 + i32.or + i64.extend_i32_u + i64.const 2939745 + i64.mul + local.set $u1 + local.get $u1 + i32.wrap_i64 + i32.const 11758980 + i32.div_u + local.set $dm1 + i32.const 2141 + local.get $dm1 + i32.mul + i32.const 197913 + i32.add + local.set $n1 + i32.const 100 + local.get $q0 + i32.mul + local.get $u1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.add + local.set $year + local.get $n1 + i32.const 16 + i32.shr_u + local.set $mo + local.get $n1 + i32.const 65535 + i32.and + i32.const 2141 + i32.div_s + i32.const 1 + i32.add + global.set $~lib/date/_day + local.get $dm1 + i32.const 306 + i32.ge_u + if + local.get $mo + i32.const 12 + i32.sub + local.set $mo + local.get $year + i32.const 1 + i32.add + local.set $year + end + local.get $mo + global.set $~lib/date/_month + local.get $year + return + ) + (func $~lib/date/Date#set:year (param $this i32) (param $year i32) + local.get $this + local.get $year + i32.store + ) + (func $~lib/date/Date#set:month (param $this i32) (param $month i32) + local.get $this + local.get $month + i32.store offset=4 + ) + (func $~lib/date/Date#set:day (param $this i32) (param $day i32) + local.get $this + local.get $day + i32.store offset=8 + ) + (func $~lib/date/Date#set:epochMillis (param $this i32) (param $epochMillis i64) + local.get $this + local.get $epochMillis + i64.store offset=16 + ) + (func $~lib/date/Date#get:epochMillis (param $this i32) (result i64) + local.get $this + i64.load offset=16 + ) + (func $~lib/date/Date#get:year (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/date/Date#get:month (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/date/Date#get:day (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/date/join (param $year i32) (param $month i32) (param $day i32) (param $ms i64) (result i64) + (local $a i64) + (local $b i64) + (local $m i64) + local.get $year + local.get $month + local.get $day + call $~lib/date/daysSinceEpoch + i32.const 86400000 + i64.extend_i32_s + i64.mul + block $~lib/date/euclidRem|inlined.4 (result i64) + local.get $ms + local.set $a + i32.const 86400000 + i64.extend_i32_s + local.set $b + local.get $a + local.get $b + i64.rem_s + local.set $m + local.get $m + local.get $m + i64.const 0 + i64.lt_s + if (result i64) + local.get $b + else + i64.const 0 + end + i64.add + br $~lib/date/euclidRem|inlined.4 + end + i64.add + return + ) + (func $~lib/date/dayOfWeek (param $year i32) (param $month i32) (param $day i32) (result i32) + (local $a i32) + (local $b i32) + (local $a|5 i32) + (local $b|6 i32) + (local $a|7 i32) + (local $b|8 i32) + (local $a|9 i32) + (local $b|10 i32) + (local $m i32) + local.get $year + local.get $month + i32.const 3 + i32.lt_s + i32.sub + local.set $year + local.get $year + block $~lib/date/floorDiv|inlined.2 (result i32) + local.get $year + local.set $a + i32.const 4 + local.set $b + local.get $a + local.get $a + i32.const 0 + i32.lt_s + if (result i32) + local.get $b + i32.const 1 + i32.sub + else + i32.const 0 + end + i32.sub + local.get $b + i32.div_s + br $~lib/date/floorDiv|inlined.2 + end + block $~lib/date/floorDiv|inlined.3 (result i32) + local.get $year + local.set $a|5 + i32.const 100 + local.set $b|6 + local.get $a|5 + local.get $a|5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $b|6 + i32.const 1 + i32.sub + else + i32.const 0 + end + i32.sub + local.get $b|6 + i32.div_s + br $~lib/date/floorDiv|inlined.3 + end + i32.sub + block $~lib/date/floorDiv|inlined.4 (result i32) + local.get $year + local.set $a|7 + i32.const 400 + local.set $b|8 + local.get $a|7 + local.get $a|7 + i32.const 0 + i32.lt_s + if (result i32) + local.get $b|8 + i32.const 1 + i32.sub + else + i32.const 0 + end + i32.sub + local.get $b|8 + i32.div_s + br $~lib/date/floorDiv|inlined.4 + end + i32.add + i32.add + local.set $year + i32.const 2524 + local.get $month + i32.add + i32.const 1 + i32.sub + i32.load8_u + local.set $month + block $~lib/date/euclidRem|inlined.0 (result i32) + local.get $year + local.get $month + i32.add + local.get $day + i32.add + local.set $a|9 + i32.const 7 + local.set $b|10 + local.get $a|9 + local.get $b|10 + i32.rem_s + local.set $m + local.get $m + local.get $m + i32.const 0 + i32.lt_s + if (result i32) + local.get $b|10 + else + i32.const 0 + end + i32.add + br $~lib/date/euclidRem|inlined.0 + end + return + ) + (func $~lib/number/I32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/itoa32 + return + ) + (func $~lib/memory/memory.repeat (param $dst i32) (param $src i32) (param $srcLength i32) (param $count i32) + (local $index i32) + (local $total i32) + i32.const 0 + local.set $index + local.get $srcLength + local.get $count + i32.mul + local.set $total + loop $while-continue|0 + local.get $index + local.get $total + i32.lt_u + if + local.get $dst + local.get $index + i32.add + local.get $src + local.get $srcLength + memory.copy + local.get $index + local.get $srcLength + i32.add + local.set $index + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable end local.get $childPtr i32.const 20 @@ -3653,178 +3661,232 @@ local.get $this i32.load offset=4 ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 368 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 5760 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 5808 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 176 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 1280 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 2336 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#__visit (param $this i32) (param $cookie i32) - (local $cur i32) - (local $end i32) - (local $val i32) - i32.const 1 - drop - local.get $this - local.set $cur - local.get $cur - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.add - local.set $end - loop $while-continue|0 - local.get $cur - local.get $end - i32.lt_u - if - local.get $cur - i32.load - local.set $val - local.get $val - if - local.get $val - local.get $cookie - call $~lib/rt/itcms/__visit - end - local.get $cur - i32.const 4 - i32.add - local.set $cur - br $while-continue|0 - end + (func $~start + global.get $~started + if + return end + i32.const 1 + global.set $~started + call $start:std/date ) - (func $~lib/staticarray/StaticArray<~lib/string/String>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray<~lib/string/String>#__visit - ) - (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/array/Array - block $~lib/array/Array<~lib/string/String> - block $~lib/staticarray/StaticArray<~lib/string/String> - block $~lib/date/Date - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/date/Date $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray<~lib/string/String>~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 40368 + i32.const 40416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - unreachable ) - (func $~start - global.get $~started + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - i32.const 1 - global.set $~started - call $start:std/date + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~stack_check + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 40240 - i32.const 40288 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/date/Date#constructor (param $this i32) (param $epochMillis i64) (result i32) (local $2 i32) @@ -3881,8 +3943,8 @@ local.get $epochMillis call $~lib/date/invalidDate if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 131 i32.const 35 call $~lib/builtins/abort @@ -3935,8 +3997,8 @@ local.get $time call $~lib/date/invalidDate if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 143 i32.const 28 call $~lib/builtins/abort @@ -4727,7 +4789,7 @@ i32.store local.get $2 local.get $padding - i32.const 848 + i32.const 752 call $~lib/string/String#padStart local.set $2 global.get $~lib/memory/__stack_pointer @@ -4737,113 +4799,6 @@ local.get $2 return ) - (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) - (local $thisSize i32) - (local $otherSize i32) - (local $outSize i32) - (local $out i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $thisSize - local.get $other - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $otherSize - local.get $thisSize - local.get $otherSize - i32.add - local.set $outSize - local.get $outSize - i32.const 0 - i32.eq - if - i32.const 2432 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - global.get $~lib/memory/__stack_pointer - local.get $outSize - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store offset=4 - local.get $out - local.get $this - local.get $thisSize - memory.copy - local.get $out - local.get $thisSize - i32.add - local.get $other - local.get $otherSize - memory.copy - local.get $out - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - ) - (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $left - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $right - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/string/String#concat - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - ) (func $~lib/util/string/joinStringArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) (local $lastIndex i32) (local $4 i32) @@ -4875,7 +4830,7 @@ i32.const 0 i32.lt_s if - i32.const 2432 + i32.const 96 local.set $13 global.get $~lib/memory/__stack_pointer i32.const 16 @@ -4896,7 +4851,7 @@ if (result i32) local.get $4 else - i32.const 2432 + i32.const 96 end local.set $13 global.get $~lib/memory/__stack_pointer @@ -5172,9 +5127,9 @@ if (result i32) local.get $isNeg if (result i32) - i32.const 592 + i32.const 2560 else - i32.const 624 + i32.const 2592 end local.set $19 global.get $~lib/memory/__stack_pointer @@ -5305,7 +5260,7 @@ local.get $ms local.tee $18 i32.store offset=60 - i32.const 2592 + i32.const 2720 local.set $19 global.get $~lib/memory/__stack_pointer local.get $19 @@ -5319,7 +5274,7 @@ i32.store offset=4 local.get $19 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 2592 + i32.const 2720 local.set $19 global.get $~lib/memory/__stack_pointer local.get $19 @@ -5333,7 +5288,7 @@ i32.store offset=4 local.get $19 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 2592 + i32.const 2720 local.set $19 global.get $~lib/memory/__stack_pointer local.get $19 @@ -5347,7 +5302,7 @@ i32.store offset=4 local.get $19 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 2592 + i32.const 2720 local.set $19 global.get $~lib/memory/__stack_pointer local.get $19 @@ -5361,7 +5316,7 @@ i32.store offset=4 local.get $19 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 2592 + i32.const 2720 local.set $19 global.get $~lib/memory/__stack_pointer local.get $19 @@ -5375,7 +5330,7 @@ i32.store offset=4 local.get $19 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 2592 + i32.const 2720 local.set $19 global.get $~lib/memory/__stack_pointer local.get $19 @@ -5389,7 +5344,7 @@ i32.store offset=4 local.get $19 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 2592 + i32.const 2720 local.set $19 global.get $~lib/memory/__stack_pointer local.get $19 @@ -5403,13 +5358,13 @@ i32.store offset=4 local.get $19 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 2592 + i32.const 2720 local.set $19 global.get $~lib/memory/__stack_pointer local.get $19 i32.store local.get $19 - i32.const 2432 + i32.const 96 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $19 global.get $~lib/memory/__stack_pointer @@ -5548,14 +5503,14 @@ global.get $~lib/memory/__stack_pointer i32.const 28 i32.const 5 - i32.const 3616 + i32.const 3744 call $~lib/rt/__newBuffer local.tee $weeks i32.store global.get $~lib/memory/__stack_pointer i32.const 48 i32.const 5 - i32.const 4048 + i32.const 4176 call $~lib/rt/__newBuffer local.tee $months i32.store offset=4 @@ -5649,9 +5604,9 @@ i32.const 0 i32.lt_s if (result i32) - i32.const 4176 + i32.const 4304 else - i32.const 4208 + i32.const 4336 end local.tee $18 i32.store offset=40 @@ -5659,7 +5614,7 @@ local.get $year local.tee $19 i32.store offset=44 - i32.const 4128 + i32.const 4256 local.set $20 global.get $~lib/memory/__stack_pointer local.get $20 @@ -5673,7 +5628,7 @@ i32.store offset=48 local.get $20 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4128 + i32.const 4256 local.set $20 global.get $~lib/memory/__stack_pointer local.get $20 @@ -5687,7 +5642,7 @@ i32.store offset=48 local.get $20 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4128 + i32.const 4256 local.set $20 global.get $~lib/memory/__stack_pointer local.get $20 @@ -5701,7 +5656,7 @@ i32.store offset=48 local.get $20 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4128 + i32.const 4256 local.set $20 global.get $~lib/memory/__stack_pointer local.get $20 @@ -5715,7 +5670,7 @@ i32.store offset=48 local.get $20 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4128 + i32.const 4256 local.set $20 global.get $~lib/memory/__stack_pointer local.get $20 @@ -5729,13 +5684,13 @@ i32.store offset=48 local.get $20 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4128 + i32.const 4256 local.set $20 global.get $~lib/memory/__stack_pointer local.get $20 i32.store offset=8 local.get $20 - i32.const 2432 + i32.const 96 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $20 global.get $~lib/memory/__stack_pointer @@ -5810,7 +5765,7 @@ local.get $secs local.tee $6 i32.store offset=24 - i32.const 4432 + i32.const 4560 local.set $7 global.get $~lib/memory/__stack_pointer local.get $7 @@ -5824,7 +5779,7 @@ i32.store offset=28 local.get $7 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4432 + i32.const 4560 local.set $7 global.get $~lib/memory/__stack_pointer local.get $7 @@ -5838,7 +5793,7 @@ i32.store offset=28 local.get $7 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4432 + i32.const 4560 local.set $7 global.get $~lib/memory/__stack_pointer local.get $7 @@ -5852,13 +5807,13 @@ i32.store offset=28 local.get $7 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4432 + i32.const 4560 local.set $7 global.get $~lib/memory/__stack_pointer local.get $7 i32.store local.get $7 - i32.const 2432 + i32.const 96 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $7 global.get $~lib/memory/__stack_pointer @@ -5907,14 +5862,14 @@ global.get $~lib/memory/__stack_pointer i32.const 28 i32.const 5 - i32.const 4800 + i32.const 4928 call $~lib/rt/__newBuffer local.tee $weeks i32.store global.get $~lib/memory/__stack_pointer i32.const 48 i32.const 5 - i32.const 5232 + i32.const 5360 call $~lib/rt/__newBuffer local.tee $months i32.store offset=4 @@ -6044,9 +5999,9 @@ i32.const 0 i32.lt_s if (result i32) - i32.const 592 + i32.const 2560 else - i32.const 2432 + i32.const 96 end local.tee $21 i32.store offset=52 @@ -6066,7 +6021,7 @@ local.get $secs local.tee $25 i32.store offset=68 - i32.const 5344 + i32.const 5472 local.set $26 global.get $~lib/memory/__stack_pointer local.get $26 @@ -6080,7 +6035,7 @@ i32.store offset=72 local.get $26 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 5344 + i32.const 5472 local.set $26 global.get $~lib/memory/__stack_pointer local.get $26 @@ -6094,7 +6049,7 @@ i32.store offset=72 local.get $26 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 5344 + i32.const 5472 local.set $26 global.get $~lib/memory/__stack_pointer local.get $26 @@ -6108,7 +6063,7 @@ i32.store offset=72 local.get $26 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 5344 + i32.const 5472 local.set $26 global.get $~lib/memory/__stack_pointer local.get $26 @@ -6122,7 +6077,7 @@ i32.store offset=72 local.get $26 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 5344 + i32.const 5472 local.set $26 global.get $~lib/memory/__stack_pointer local.get $26 @@ -6136,7 +6091,7 @@ i32.store offset=72 local.get $26 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 5344 + i32.const 5472 local.set $26 global.get $~lib/memory/__stack_pointer local.get $26 @@ -6150,7 +6105,7 @@ i32.store offset=72 local.get $26 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 5344 + i32.const 5472 local.set $26 global.get $~lib/memory/__stack_pointer local.get $26 @@ -6164,7 +6119,7 @@ i32.store offset=72 local.get $26 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 5344 + i32.const 5472 local.set $26 global.get $~lib/memory/__stack_pointer local.get $26 @@ -6178,13 +6133,13 @@ i32.store offset=72 local.get $26 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 5344 + i32.const 5472 local.set $26 global.get $~lib/memory/__stack_pointer local.get $26 i32.store offset=8 local.get $26 - i32.const 2432 + i32.const 96 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $26 global.get $~lib/memory/__stack_pointer @@ -6417,7 +6372,7 @@ local.get $size i32.eqz if - i32.const 2432 + i32.const 96 local.set $22 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -6941,8 +6896,8 @@ i32.shr_u i32.gt_u if - i32.const 5760 - i32.const 5712 + i32.const 5888 + i32.const 5840 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -7044,8 +6999,8 @@ i32.const 0 i32.lt_s if - i32.const 368 - i32.const 5712 + i32.const 320 + i32.const 5840 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -7361,7 +7316,7 @@ i32.store offset=4 local.get $21 call $~lib/array/Array<~lib/string/String>#get:dataStart - i32.const 2432 + i32.const 96 i32.store local.get $result|12 local.set $21 @@ -7453,7 +7408,7 @@ local.get $21 i32.store offset=4 local.get $21 - i32.const 2432 + i32.const 96 call $~lib/array/Array<~lib/string/String>#push drop end @@ -7553,7 +7508,7 @@ local.get $21 i32.store offset=4 local.get $21 - i32.const 2432 + i32.const 96 call $~lib/array/Array<~lib/string/String>#push drop end @@ -7658,8 +7613,8 @@ call $~lib/array/Array<~lib/string/String>#get:length_ i32.ge_u if - i32.const 368 - i32.const 5712 + i32.const 320 + i32.const 5840 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -7688,8 +7643,8 @@ local.get $value i32.eqz if - i32.const 5808 - i32.const 5712 + i32.const 5936 + i32.const 5840 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -7777,7 +7732,7 @@ i32.const 0 i32.le_s if - i32.const 2432 + i32.const 96 local.set $14 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -7999,8 +7954,8 @@ call $~lib/string/String#get:length i32.eqz if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 50 i32.const 33 call $~lib/builtins/abort @@ -8026,7 +7981,7 @@ local.get $46 i32.store local.get $46 - i32.const 2464 + i32.const 2624 i32.const 0 call $~lib/string/String#indexOf local.set $posT @@ -8128,8 +8083,8 @@ i32.sub i32.eq if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 74 i32.const 13 call $~lib/builtins/abort @@ -8141,7 +8096,7 @@ local.get $46 i32.store local.get $46 - i32.const 2496 + i32.const 528 local.get $i i32.const 1 i32.add @@ -8292,7 +8247,7 @@ local.get $46 i32.store local.get $46 - i32.const 2496 + i32.const 528 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -8311,8 +8266,8 @@ i32.const 1 i32.le_s if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 96 i32.const 21 call $~lib/builtins/abort @@ -8389,7 +8344,7 @@ local.get $46 i32.store local.get $46 - i32.const 2528 + i32.const 2656 i32.const 0 call $~lib/string/String#indexOf local.set $posDot @@ -8442,7 +8397,7 @@ i32.store local.get $46 i32.const 3 - i32.const 848 + i32.const 752 call $~lib/string/String#padEnd local.tee $value|31 i32.store offset=48 @@ -8488,7 +8443,7 @@ local.get $46 i32.store local.get $46 - i32.const 592 + i32.const 2560 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -8788,6 +8743,23 @@ i32.const 0 i32.const 436 memory.fill + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace block $~lib/date/Date.UTC|inlined.0 (result i64) i32.const 1970 local.set $0 @@ -8833,8 +8805,8 @@ local.get $7 call $~lib/date/invalidDate if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 36 i32.const 26 call $~lib/builtins/abort @@ -8848,7 +8820,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 3 i32.const 3 call $~lib/builtins/abort @@ -8899,8 +8871,8 @@ local.get $15 call $~lib/date/invalidDate if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 36 i32.const 26 call $~lib/builtins/abort @@ -8914,7 +8886,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 4 i32.const 3 call $~lib/builtins/abort @@ -8965,8 +8937,8 @@ local.get $23 call $~lib/date/invalidDate if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 36 i32.const 26 call $~lib/builtins/abort @@ -8980,7 +8952,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 5 i32.const 3 call $~lib/builtins/abort @@ -9031,8 +9003,8 @@ local.get $31 call $~lib/date/invalidDate if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 36 i32.const 26 call $~lib/builtins/abort @@ -9046,7 +9018,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 6 i32.const 3 call $~lib/builtins/abort @@ -9097,8 +9069,8 @@ local.get $39 call $~lib/date/invalidDate if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 36 i32.const 26 call $~lib/builtins/abort @@ -9112,7 +9084,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 7 i32.const 3 call $~lib/builtins/abort @@ -9163,8 +9135,8 @@ local.get $47 call $~lib/date/invalidDate if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 36 i32.const 26 call $~lib/builtins/abort @@ -9178,7 +9150,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 8 i32.const 3 call $~lib/builtins/abort @@ -9229,8 +9201,8 @@ local.get $55 call $~lib/date/invalidDate if - i32.const 32 - i32.const 80 + i32.const 2400 + i32.const 2448 i32.const 36 i32.const 26 call $~lib/builtins/abort @@ -9244,29 +9216,12 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 9 i32.const 3 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 288 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 320 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 464 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace i64.const 1541847600001 local.set $56 global.get $~lib/memory/__stack_pointer @@ -9294,7 +9249,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -9332,7 +9287,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 20 i32.const 3 call $~lib/builtins/abort @@ -9363,7 +9318,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 28 i32.const 3 call $~lib/builtins/abort @@ -9390,7 +9345,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 29 i32.const 3 call $~lib/builtins/abort @@ -9415,7 +9370,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 30 i32.const 3 call $~lib/builtins/abort @@ -9433,7 +9388,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 31 i32.const 3 call $~lib/builtins/abort @@ -9451,7 +9406,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 32 i32.const 3 call $~lib/builtins/abort @@ -9469,7 +9424,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -9487,7 +9442,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 34 i32.const 3 call $~lib/builtins/abort @@ -9518,7 +9473,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 40 i32.const 3 call $~lib/builtins/abort @@ -9545,7 +9500,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 41 i32.const 3 call $~lib/builtins/abort @@ -9570,7 +9525,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -9588,7 +9543,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -9606,7 +9561,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -9624,7 +9579,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -9642,7 +9597,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -9666,7 +9621,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 52 i32.const 3 call $~lib/builtins/abort @@ -9692,7 +9647,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 54 i32.const 3 call $~lib/builtins/abort @@ -9718,7 +9673,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -9751,7 +9706,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 59 i32.const 3 call $~lib/builtins/abort @@ -9784,7 +9739,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -9810,7 +9765,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -9835,7 +9790,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -9861,7 +9816,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -9886,7 +9841,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -9910,7 +9865,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 74 i32.const 3 call $~lib/builtins/abort @@ -9936,7 +9891,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 76 i32.const 3 call $~lib/builtins/abort @@ -9962,7 +9917,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 78 i32.const 3 call $~lib/builtins/abort @@ -9995,7 +9950,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 81 i32.const 3 call $~lib/builtins/abort @@ -10028,7 +9983,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -10052,7 +10007,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 89 i32.const 3 call $~lib/builtins/abort @@ -10078,7 +10033,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 91 i32.const 3 call $~lib/builtins/abort @@ -10104,7 +10059,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 93 i32.const 3 call $~lib/builtins/abort @@ -10137,7 +10092,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 96 i32.const 3 call $~lib/builtins/abort @@ -10170,7 +10125,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -10194,7 +10149,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -10220,7 +10175,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 106 i32.const 3 call $~lib/builtins/abort @@ -10246,7 +10201,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -10279,7 +10234,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 111 i32.const 3 call $~lib/builtins/abort @@ -10312,7 +10267,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 113 i32.const 3 call $~lib/builtins/abort @@ -10343,7 +10298,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 119 i32.const 3 call $~lib/builtins/abort @@ -10370,7 +10325,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 120 i32.const 3 call $~lib/builtins/abort @@ -10403,7 +10358,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 124 i32.const 3 call $~lib/builtins/abort @@ -10436,7 +10391,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 126 i32.const 3 call $~lib/builtins/abort @@ -10525,7 +10480,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 141 i32.const 3 call $~lib/builtins/abort @@ -10577,7 +10532,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 146 i32.const 3 call $~lib/builtins/abort @@ -10604,7 +10559,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 147 i32.const 3 call $~lib/builtins/abort @@ -10629,7 +10584,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 148 i32.const 3 call $~lib/builtins/abort @@ -10647,7 +10602,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 149 i32.const 3 call $~lib/builtins/abort @@ -10665,7 +10620,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 150 i32.const 3 call $~lib/builtins/abort @@ -10683,7 +10638,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 151 i32.const 3 call $~lib/builtins/abort @@ -10722,7 +10677,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 155 i32.const 3 call $~lib/builtins/abort @@ -10755,7 +10710,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 157 i32.const 3 call $~lib/builtins/abort @@ -10788,7 +10743,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 160 i32.const 3 call $~lib/builtins/abort @@ -10825,7 +10780,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 163 i32.const 3 call $~lib/builtins/abort @@ -10864,7 +10819,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 166 i32.const 3 call $~lib/builtins/abort @@ -10903,7 +10858,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 169 i32.const 3 call $~lib/builtins/abort @@ -10942,7 +10897,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 173 i32.const 3 call $~lib/builtins/abort @@ -10981,7 +10936,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 177 i32.const 3 call $~lib/builtins/abort @@ -11023,7 +10978,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 187 i32.const 3 call $~lib/builtins/abort @@ -11067,7 +11022,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 188 i32.const 3 call $~lib/builtins/abort @@ -11113,7 +11068,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 189 i32.const 3 call $~lib/builtins/abort @@ -11157,7 +11112,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 190 i32.const 3 call $~lib/builtins/abort @@ -11199,7 +11154,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 192 i32.const 3 call $~lib/builtins/abort @@ -11243,7 +11198,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 193 i32.const 3 call $~lib/builtins/abort @@ -11289,7 +11244,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 194 i32.const 3 call $~lib/builtins/abort @@ -11333,7 +11288,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 195 i32.const 3 call $~lib/builtins/abort @@ -11366,7 +11321,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 201 i32.const 3 call $~lib/builtins/abort @@ -11404,7 +11359,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 203 i32.const 3 call $~lib/builtins/abort @@ -11442,7 +11397,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 205 i32.const 3 call $~lib/builtins/abort @@ -11467,7 +11422,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 206 i32.const 3 call $~lib/builtins/abort @@ -11503,7 +11458,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 209 i32.const 3 call $~lib/builtins/abort @@ -11539,7 +11494,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 211 i32.const 3 call $~lib/builtins/abort @@ -11577,7 +11532,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 215 i32.const 3 call $~lib/builtins/abort @@ -11602,7 +11557,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 216 i32.const 3 call $~lib/builtins/abort @@ -11640,7 +11595,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 218 i32.const 3 call $~lib/builtins/abort @@ -11665,7 +11620,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 219 i32.const 3 call $~lib/builtins/abort @@ -11696,7 +11651,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 225 i32.const 3 call $~lib/builtins/abort @@ -11729,7 +11684,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 227 i32.const 3 call $~lib/builtins/abort @@ -11762,7 +11717,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 229 i32.const 3 call $~lib/builtins/abort @@ -11795,7 +11750,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 231 i32.const 3 call $~lib/builtins/abort @@ -11819,12 +11774,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 2672 + i32.const 2800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 237 i32.const 3 call $~lib/builtins/abort @@ -11850,12 +11805,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 2752 + i32.const 2880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 239 i32.const 3 call $~lib/builtins/abort @@ -11879,12 +11834,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 2832 + i32.const 2960 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 241 i32.const 3 call $~lib/builtins/abort @@ -11908,12 +11863,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 2912 + i32.const 3040 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 243 i32.const 3 call $~lib/builtins/abort @@ -11937,12 +11892,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 2992 + i32.const 3120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 245 i32.const 3 call $~lib/builtins/abort @@ -11966,12 +11921,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 3072 + i32.const 3200 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 247 i32.const 3 call $~lib/builtins/abort @@ -11995,12 +11950,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 3152 + i32.const 3280 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 249 i32.const 3 call $~lib/builtins/abort @@ -12024,12 +11979,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 3232 + i32.const 3360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 251 i32.const 3 call $~lib/builtins/abort @@ -12053,12 +12008,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 3312 + i32.const 3440 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 253 i32.const 3 call $~lib/builtins/abort @@ -12082,12 +12037,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 4240 + i32.const 4368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 259 i32.const 3 call $~lib/builtins/abort @@ -12111,12 +12066,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 4304 + i32.const 4432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 261 i32.const 3 call $~lib/builtins/abort @@ -12140,12 +12095,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 4368 + i32.const 4496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 264 i32.const 3 call $~lib/builtins/abort @@ -12169,12 +12124,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 4480 + i32.const 4608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 270 i32.const 3 call $~lib/builtins/abort @@ -12198,12 +12153,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 4528 + i32.const 4656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 273 i32.const 3 call $~lib/builtins/abort @@ -12227,12 +12182,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 5424 + i32.const 5552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 279 i32.const 3 call $~lib/builtins/abort @@ -12256,12 +12211,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 5504 + i32.const 5632 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 281 i32.const 3 call $~lib/builtins/abort @@ -12285,19 +12240,19 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 5584 + i32.const 5712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 284 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 5664 + i32.const 5792 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12320,14 +12275,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 291 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 5936 + i32.const 6064 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12350,14 +12305,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 293 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 5984 + i32.const 6112 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12380,14 +12335,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 295 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6032 + i32.const 6160 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12410,14 +12365,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 299 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6096 + i32.const 6224 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12440,14 +12395,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 303 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6176 + i32.const 6304 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12470,14 +12425,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 307 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6256 + i32.const 6384 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12500,14 +12455,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 311 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6336 + i32.const 6464 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12530,14 +12485,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 315 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6416 + i32.const 6544 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12560,14 +12515,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 319 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6480 + i32.const 6608 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12590,14 +12545,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6560 + i32.const 6688 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12620,14 +12575,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 327 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6640 + i32.const 6768 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12650,14 +12605,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 331 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6720 + i32.const 6848 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12680,14 +12635,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 335 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6800 + i32.const 6928 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12710,14 +12665,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 339 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6896 + i32.const 7024 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12740,14 +12695,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 342 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6928 + i32.const 7056 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12770,14 +12725,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 345 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6960 + i32.const 7088 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12800,14 +12755,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 348 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6992 + i32.const 7120 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12830,14 +12785,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 351 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 5664 + i32.const 5792 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12860,14 +12815,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 354 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 7040 + i32.const 7168 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12890,14 +12845,14 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 357 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6032 + i32.const 6160 call $~lib/date/Date.fromString local.tee $127 i32.store offset=288 @@ -12920,7 +12875,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 360 i32.const 3 call $~lib/builtins/abort @@ -12957,7 +12912,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 378 i32.const 3 call $~lib/builtins/abort @@ -12982,7 +12937,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 379 i32.const 3 call $~lib/builtins/abort @@ -13007,7 +12962,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 381 i32.const 3 call $~lib/builtins/abort @@ -13032,7 +12987,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 382 i32.const 3 call $~lib/builtins/abort @@ -13059,7 +13014,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 384 i32.const 3 call $~lib/builtins/abort @@ -13086,7 +13041,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 385 i32.const 3 call $~lib/builtins/abort @@ -13111,7 +13066,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 387 i32.const 3 call $~lib/builtins/abort @@ -13136,7 +13091,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -13154,12 +13109,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 7104 + i32.const 7232 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -13177,12 +13132,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 7184 + i32.const 7312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -13223,7 +13178,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 396 i32.const 3 call $~lib/builtins/abort @@ -13250,7 +13205,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 397 i32.const 3 call $~lib/builtins/abort @@ -13275,7 +13230,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 398 i32.const 3 call $~lib/builtins/abort @@ -13293,7 +13248,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 399 i32.const 3 call $~lib/builtins/abort @@ -13311,7 +13266,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 400 i32.const 3 call $~lib/builtins/abort @@ -13329,7 +13284,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 401 i32.const 3 call $~lib/builtins/abort @@ -13347,7 +13302,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 402 i32.const 3 call $~lib/builtins/abort @@ -13365,12 +13320,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 7264 + i32.const 7392 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 404 i32.const 3 call $~lib/builtins/abort @@ -13388,12 +13343,12 @@ local.get $164 i32.store offset=8 local.get $164 - i32.const 7344 + i32.const 7472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 2496 i32.const 405 i32.const 3 call $~lib/builtins/abort @@ -13404,11 +13359,18 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) - (local $cur i32) - (local $end i32) - (local $val i32) - (local $5 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -13417,88 +13379,132 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 - drop - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/string/String>#get:dataStart - local.set $cur - local.get $cur - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/string/String>#get:length_ + local.get $radix i32.const 2 - i32.shl - i32.add - local.set $end - loop $while-continue|0 - local.get $cur - local.get $end - i32.lt_u + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq if - local.get $cur - i32.load - local.set $val - local.get $val - if - local.get $val - local.get $cookie - call $~lib/rt/itcms/__visit - end - local.get $cur - i32.const 4 + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 i32.add - local.set $cur - br $while-continue|0 - end - end - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/string/String>#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $12 + return ) (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) (local $sign i32) @@ -13533,8 +13539,8 @@ i32.gt_s end if - i32.const 656 - i32.const 784 + i32.const 560 + i32.const 688 i32.const 373 i32.const 5 call $~lib/builtins/abort @@ -13543,7 +13549,7 @@ local.get $value i32.eqz if - i32.const 848 + i32.const 752 local.set $14 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -13735,4 +13741,251 @@ local.get $7 return ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 5888 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 5936 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2400 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + i32.const 1 + drop + local.get $this + local.set $cur + local.get $cur + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__visit + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array<~lib/string/String> + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/date/Date + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/date/Date $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/std/date.release.wat b/tests/compiler/std/date.release.wat index 4b706f0de3..a2a18200e2 100644 --- a/tests/compiler/std/date.release.wat +++ b/tests/compiler/std/date.release.wat @@ -5,18 +5,15 @@ (type $3 (func)) (type $4 (func (param i32))) (type $5 (func (param i32 i32 i32) (result i32))) - (type $6 (func (param i64) (result i32))) - (type $7 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) - (type $8 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i64) (result i32))) + (type $8 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) (type $9 (func (param i32 i32 i64))) (type $10 (func (result i32))) (type $11 (func (param i32 i32 i32 i64) (result i64))) - (type $12 (func (param i32 i32 i32))) - (type $13 (func (param i32 i32 i32 i32) (result i32))) + (type $12 (func (param i32 i32 i32 i32) (result i32))) + (type $13 (func (param i32 i32 i32 i32))) (type $14 (func (param i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/date/_day (mut i32) (i32.const 0)) - (global $~lib/date/_month (mut i32) (i32.const 0)) (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)) @@ -27,234 +24,242 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/date/_day (mut i32) (i32.const 0)) + (global $~lib/date/_month (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 41236)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 41364)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\18\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00D\00a\00t\00e") - (data $1 (i32.const 1084) ",") - (data $1.1 (i32.const 1096) "\02\00\00\00\18\00\00\00~\00l\00i\00b\00/\00d\00a\00t\00e\00.\00t\00s") - (data $2 (i32.const 1132) ",") - (data $2.1 (i32.const 1144) "\02\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s") - (data $3 (i32.const 1180) "<") - (data $3.1 (i32.const 1192) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $4 (i32.const 1244) "<") - (data $4.1 (i32.const 1256) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $8 (i32.const 1436) ",") - (data $8.1 (i32.const 1448) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $10 (i32.const 1516) "<") - (data $10.1 (i32.const 1528) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $11 (i32.const 1581) "\03\02\05\00\03\05\01\04\06\02\04") - (data $12 (i32.const 1596) "\1c") - (data $12.1 (i32.const 1608) "\02\00\00\00\02\00\00\00-") - (data $13 (i32.const 1628) "\1c") - (data $13.1 (i32.const 1640) "\02\00\00\00\02\00\00\00+") - (data $14 (i32.const 1660) "|") - (data $14.1 (i32.const 1672) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data $15 (i32.const 1788) "<") - (data $15.1 (i32.const 1800) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data $16 (i32.const 1852) "\1c") - (data $16.1 (i32.const 1864) "\02\00\00\00\02\00\00\000") - (data $17 (i32.const 1884) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data $18 (i32.const 2284) "\1c\04") - (data $18.1 (i32.const 2296) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data $19 (i32.const 3340) "\\") - (data $19.1 (i32.const 3352) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data $20 (i32.const 3436) "\1c") - (data $20.1 (i32.const 3448) "\02") - (data $21 (i32.const 3468) "\1c") - (data $21.1 (i32.const 3480) "\02\00\00\00\02\00\00\00T") - (data $22 (i32.const 3500) "\1c") - (data $22.1 (i32.const 3512) "\02\00\00\00\02\00\00\00:") - (data $23 (i32.const 3532) "\1c") - (data $23.1 (i32.const 3544) "\02\00\00\00\02\00\00\00.") - (data $24 (i32.const 3564) "\1c") - (data $24.1 (i32.const 3576) "\02\00\00\00\02\00\00\00Z") - (data $25 (i32.const 3596) "L\00\00\00\03\00\00\00\00\00\00\00\05\00\00\008\00\00\00\00\00\00\00P\06\00\00\00\00\00\00P\06\00\00\00\00\00\00\a0\r\00\00\00\00\00\00\c0\r\00\00\00\00\00\00\c0\r\00\00\00\00\00\00\e0\r\00\00\00\00\00\00\00\0e") - (data $26 (i32.const 3676) "L") - (data $26.1 (i32.const 3688) "\02\00\00\000\00\00\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") - (data $27 (i32.const 3756) "L") - (data $27.1 (i32.const 3768) "\02\00\00\006\00\00\00-\000\000\000\000\000\001\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") - (data $28 (i32.const 3836) "L") - (data $28.1 (i32.const 3848) "\02\00\00\000\00\00\000\000\000\001\00-\000\004\00-\000\007\00T\002\003\00:\000\006\00:\004\000\00.\000\000\000\00Z") - (data $29 (i32.const 3916) "L") - (data $29.1 (i32.const 3928) "\02\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\000\002\000\00Z") - (data $30 (i32.const 3996) "L") - (data $30.1 (i32.const 4008) "\02\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\004\005\006\00Z") - (data $31 (i32.const 4076) "L") - (data $31.1 (i32.const 4088) "\02\00\00\006\00\00\00+\000\001\002\001\008\004\00-\000\004\00-\000\008\00T\001\003\00:\000\007\00:\001\001\00.\000\002\000\00Z") - (data $32 (i32.const 4156) "L") - (data $32.1 (i32.const 4168) "\02\00\00\000\00\00\009\009\009\009\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") - (data $33 (i32.const 4236) "L") - (data $33.1 (i32.const 4248) "\02\00\00\006\00\00\00+\000\001\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") - (data $34 (i32.const 4316) "L") - (data $34.1 (i32.const 4328) "\02\00\00\006\00\00\00-\000\000\000\000\002\002\00-\000\006\00-\001\006\00T\001\007\00:\001\003\00:\005\000\00.\007\007\004\00Z") - (data $35 (i32.const 4396) "\1c") - (data $35.1 (i32.const 4408) "\02\00\00\00\08\00\00\00S\00u\00n\00 ") - (data $36 (i32.const 4428) "\1c") - (data $36.1 (i32.const 4440) "\02\00\00\00\08\00\00\00M\00o\00n\00 ") - (data $37 (i32.const 4460) "\1c") - (data $37.1 (i32.const 4472) "\02\00\00\00\08\00\00\00T\00u\00e\00 ") - (data $38 (i32.const 4492) "\1c") - (data $38.1 (i32.const 4504) "\02\00\00\00\08\00\00\00W\00e\00d\00 ") - (data $39 (i32.const 4524) "\1c") - (data $39.1 (i32.const 4536) "\02\00\00\00\08\00\00\00T\00h\00u\00 ") - (data $40 (i32.const 4556) "\1c") - (data $40.1 (i32.const 4568) "\02\00\00\00\08\00\00\00F\00r\00i\00 ") - (data $41 (i32.const 4588) "\1c") - (data $41.1 (i32.const 4600) "\02\00\00\00\08\00\00\00S\00a\00t\00 ") - (data $42 (i32.const 4620) ",") - (data $42.1 (i32.const 4632) "\05\00\00\00\1c\00\00\00@\11\00\00`\11\00\00\80\11\00\00\a0\11\00\00\c0\11\00\00\e0\11\00\00\00\12") - (data $43 (i32.const 4668) "\1c") - (data $43.1 (i32.const 4680) "\02\00\00\00\08\00\00\00J\00a\00n\00 ") - (data $44 (i32.const 4700) "\1c") - (data $44.1 (i32.const 4712) "\02\00\00\00\08\00\00\00F\00e\00b\00 ") - (data $45 (i32.const 4732) "\1c") - (data $45.1 (i32.const 4744) "\02\00\00\00\08\00\00\00M\00a\00r\00 ") - (data $46 (i32.const 4764) "\1c") - (data $46.1 (i32.const 4776) "\02\00\00\00\08\00\00\00A\00p\00r\00 ") - (data $47 (i32.const 4796) "\1c") - (data $47.1 (i32.const 4808) "\02\00\00\00\08\00\00\00M\00a\00y\00 ") - (data $48 (i32.const 4828) "\1c") - (data $48.1 (i32.const 4840) "\02\00\00\00\08\00\00\00J\00u\00n\00 ") - (data $49 (i32.const 4860) "\1c") - (data $49.1 (i32.const 4872) "\02\00\00\00\08\00\00\00J\00u\00l\00 ") - (data $50 (i32.const 4892) "\1c") - (data $50.1 (i32.const 4904) "\02\00\00\00\08\00\00\00A\00u\00g\00 ") - (data $51 (i32.const 4924) "\1c") - (data $51.1 (i32.const 4936) "\02\00\00\00\08\00\00\00S\00e\00p\00 ") - (data $52 (i32.const 4956) "\1c") - (data $52.1 (i32.const 4968) "\02\00\00\00\08\00\00\00O\00c\00t\00 ") - (data $53 (i32.const 4988) "\1c") - (data $53.1 (i32.const 5000) "\02\00\00\00\08\00\00\00N\00o\00v\00 ") - (data $54 (i32.const 5020) "\1c") - (data $54.1 (i32.const 5032) "\02\00\00\00\08\00\00\00D\00e\00c\00 ") - (data $55 (i32.const 5052) "L") - (data $55.1 (i32.const 5064) "\05\00\00\000\00\00\00P\12\00\00p\12\00\00\90\12\00\00\b0\12\00\00\d0\12\00\00\f0\12\00\00\10\13\00\000\13\00\00P\13\00\00p\13\00\00\90\13\00\00\b0\13") - (data $56 (i32.const 5132) ",\00\00\00\03\00\00\00\00\00\00\00\05\00\00\00\14") - (data $57 (i32.const 5180) "\1c") - (data $57.1 (i32.const 5192) "\02\00\00\00\04\00\00\00 \00-") - (data $58 (i32.const 5212) "\1c") - (data $58.1 (i32.const 5224) "\02\00\00\00\02\00\00\00 ") - (data $59 (i32.const 5244) "<") - (data $59.1 (i32.const 5256) "\02\00\00\00\1e\00\00\00W\00e\00d\00 \00J\00a\00n\00 \000\001\00 \000\000\002\000") - (data $60 (i32.const 5308) "<") - (data $60.1 (i32.const 5320) "\02\00\00\00\1e\00\00\00S\00u\00n\00 \00F\00e\00b\00 \000\002\00 \002\000\002\000") - (data $61 (i32.const 5372) "<") - (data $61.1 (i32.const 5384) "\02\00\00\00 \00\00\00T\00h\00u\00 \00J\00u\00l\00 \000\001\00 \00-\000\000\000\001") - (data $62 (i32.const 5436) ",\00\00\00\03\00\00\00\00\00\00\00\05\00\00\00\14\00\00\00\00\00\00\00\c0\r\00\00\00\00\00\00\c0\r") - (data $63 (i32.const 5484) ",") - (data $63.1 (i32.const 5496) "\02\00\00\00\10\00\00\000\000\00:\000\000\00:\000\000") - (data $64 (i32.const 5532) ",") - (data $64.1 (i32.const 5544) "\02\00\00\00\10\00\00\002\003\00:\005\009\00:\005\009") - (data $65 (i32.const 5580) "\1c") - (data $65.1 (i32.const 5592) "\02\00\00\00\n\00\00\00S\00u\00n\00,\00 ") - (data $66 (i32.const 5612) "\1c") - (data $66.1 (i32.const 5624) "\02\00\00\00\n\00\00\00M\00o\00n\00,\00 ") - (data $67 (i32.const 5644) "\1c") - (data $67.1 (i32.const 5656) "\02\00\00\00\n\00\00\00T\00u\00e\00,\00 ") - (data $68 (i32.const 5676) "\1c") - (data $68.1 (i32.const 5688) "\02\00\00\00\n\00\00\00W\00e\00d\00,\00 ") - (data $69 (i32.const 5708) "\1c") - (data $69.1 (i32.const 5720) "\02\00\00\00\n\00\00\00T\00h\00u\00,\00 ") - (data $70 (i32.const 5740) "\1c") - (data $70.1 (i32.const 5752) "\02\00\00\00\n\00\00\00F\00r\00i\00,\00 ") - (data $71 (i32.const 5772) "\1c") - (data $71.1 (i32.const 5784) "\02\00\00\00\n\00\00\00S\00a\00t\00,\00 ") - (data $72 (i32.const 5804) ",") - (data $72.1 (i32.const 5816) "\05\00\00\00\1c\00\00\00\e0\15\00\00\00\16\00\00 \16\00\00@\16\00\00`\16\00\00\80\16\00\00\a0\16") - (data $73 (i32.const 5852) "\1c") - (data $73.1 (i32.const 5864) "\02\00\00\00\n\00\00\00 \00J\00a\00n\00 ") - (data $74 (i32.const 5884) "\1c") - (data $74.1 (i32.const 5896) "\02\00\00\00\n\00\00\00 \00F\00e\00b\00 ") - (data $75 (i32.const 5916) "\1c") - (data $75.1 (i32.const 5928) "\02\00\00\00\n\00\00\00 \00M\00a\00r\00 ") - (data $76 (i32.const 5948) "\1c") - (data $76.1 (i32.const 5960) "\02\00\00\00\n\00\00\00 \00A\00p\00r\00 ") - (data $77 (i32.const 5980) "\1c") - (data $77.1 (i32.const 5992) "\02\00\00\00\n\00\00\00 \00M\00a\00y\00 ") - (data $78 (i32.const 6012) "\1c") - (data $78.1 (i32.const 6024) "\02\00\00\00\n\00\00\00 \00J\00u\00n\00 ") - (data $79 (i32.const 6044) "\1c") - (data $79.1 (i32.const 6056) "\02\00\00\00\n\00\00\00 \00J\00u\00l\00 ") - (data $80 (i32.const 6076) "\1c") - (data $80.1 (i32.const 6088) "\02\00\00\00\n\00\00\00 \00A\00u\00g\00 ") - (data $81 (i32.const 6108) "\1c") - (data $81.1 (i32.const 6120) "\02\00\00\00\n\00\00\00 \00S\00e\00p\00 ") - (data $82 (i32.const 6140) "\1c") - (data $82.1 (i32.const 6152) "\02\00\00\00\n\00\00\00 \00O\00c\00t\00 ") - (data $83 (i32.const 6172) "\1c") - (data $83.1 (i32.const 6184) "\02\00\00\00\n\00\00\00 \00N\00o\00v\00 ") - (data $84 (i32.const 6204) "\1c") - (data $84.1 (i32.const 6216) "\02\00\00\00\n\00\00\00 \00D\00e\00c\00 ") - (data $85 (i32.const 6236) "L") - (data $85.1 (i32.const 6248) "\05\00\00\000\00\00\00\f0\16\00\00\10\17\00\000\17\00\00P\17\00\00p\17\00\00\90\17\00\00\b0\17\00\00\d0\17\00\00\f0\17\00\00\10\18\00\000\18\00\00P\18") - (data $86 (i32.const 6316) "\1c") - (data $86.1 (i32.const 6328) "\02\00\00\00\08\00\00\00 \00G\00M\00T") - (data $87 (i32.const 6348) "L\00\00\00\03\00\00\00\00\00\00\00\05\00\00\000") - (data $87.1 (i32.const 6388) "p\14\00\00\00\00\00\00\c0\r\00\00\00\00\00\00\c0\r\00\00\00\00\00\00\c0\18") - (data $88 (i32.const 6428) "L") - (data $88.1 (i32.const 6440) "\02\00\00\00:\00\00\00W\00e\00d\00,\00 \000\001\00 \00J\00a\00n\00 \000\000\002\000\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T") - (data $89 (i32.const 6508) "L") - (data $89.1 (i32.const 6520) "\02\00\00\00:\00\00\00M\00o\00n\00,\00 \000\003\00 \00F\00e\00b\00 \002\000\002\000\00 \001\004\00:\005\003\00:\003\003\00 \00G\00M\00T") - (data $90 (i32.const 6588) "L") - (data $90.1 (i32.const 6600) "\02\00\00\00<\00\00\00T\00h\00u\00,\00 \000\001\00 \00J\00u\00l\00 \00-\000\000\000\001\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T") - (data $91 (i32.const 6668) ",") - (data $91.1 (i32.const 6680) "\02\00\00\00\14\00\00\001\009\007\006\00-\000\002\00-\000\002") - (data $92 (i32.const 6716) ",") - (data $92.1 (i32.const 6728) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $93 (i32.const 6764) ",") - (data $93.1 (i32.const 6776) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $94 (i32.const 6812) "|") - (data $94.1 (i32.const 6824) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data $95 (i32.const 6940) ",") - (data $95.1 (i32.const 6952) "\02\00\00\00\10\00\00\001\009\007\006\00-\002\00-\002") - (data $96 (i32.const 6988) ",") - (data $96.1 (i32.const 7000) "\02\00\00\00\14\00\00\002\003\004\005\00-\001\001\00-\000\004") - (data $97 (i32.const 7036) "<") - (data $97.1 (i32.const 7048) "\02\00\00\00&\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006") - (data $98 (i32.const 7100) "L") - (data $98.1 (i32.const 7112) "\02\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006") - (data $99 (i32.const 7180) "L") - (data $99.1 (i32.const 7192) "\02\00\00\000\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00Z") - (data $100 (i32.const 7260) "L") - (data $100.1 (i32.const 7272) "\02\00\00\00:\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00-\000\008\00:\000\000") - (data $101 (i32.const 7340) "L") - (data $101.1 (i32.const 7352) "\02\00\00\00:\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00+\000\005\00:\003\000") - (data $102 (i32.const 7420) "<") - (data $102.1 (i32.const 7432) "\02\00\00\00,\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005") - (data $103 (i32.const 7484) "L") - (data $103.1 (i32.const 7496) "\02\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\00Z") - (data $104 (i32.const 7564) "L") - (data $104.1 (i32.const 7576) "\02\00\00\008\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\00+\000\000\00:\000\000") - (data $105 (i32.const 7644) "L") - (data $105.1 (i32.const 7656) "\02\00\00\004\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\007\008\009") - (data $106 (i32.const 7724) "L") - (data $106.1 (i32.const 7736) "\02\00\00\006\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\007\008\009\00Z") - (data $107 (i32.const 7804) "\\") - (data $107.1 (i32.const 7816) "\02\00\00\00@\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\007\008\009\00+\000\000\00:\000\000") - (data $108 (i32.const 7900) "\1c") - (data $108.1 (i32.const 7912) "\02\00\00\00\08\00\00\000\000\000\000") - (data $109 (i32.const 7932) "\1c") - (data $109.1 (i32.const 7944) "\02\00\00\00\08\00\00\000\000\000\001") - (data $110 (i32.const 7964) "\1c") - (data $110.1 (i32.const 7976) "\02\00\00\00\08\00\00\001\009\007\006") - (data $111 (i32.const 7996) ",") - (data $111.1 (i32.const 8008) "\02\00\00\00\0e\00\00\001\009\007\006\00-\000\002") - (data $112 (i32.const 8044) "<") - (data $112.1 (i32.const 8056) "\02\00\00\00 \00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004") - (data $113 (i32.const 8108) "L") - (data $113.1 (i32.const 8120) "\02\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") - (data $114 (i32.const 8188) "L") - (data $114.1 (i32.const 8200) "\02\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\003\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") - (data $115 (i32.const 8268) "L") - (data $115.1 (i32.const 8280) "\02\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\002\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") - (data $116 (i32.const 8348) "L") - (data $116.1 (i32.const 8360) "\02\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\001\00Z") - (data $117 (i32.const 8432) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\04A\00\00\02A\00\00\02\t") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\18\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00D\00a\00t\00e") + (data $20 (i32.const 3452) ",") + (data $20.1 (i32.const 3464) "\02\00\00\00\18\00\00\00~\00l\00i\00b\00/\00d\00a\00t\00e\00.\00t\00s") + (data $21 (i32.const 3500) ",") + (data $21.1 (i32.const 3512) "\02\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s") + (data $22 (i32.const 3549) "\03\02\05\00\03\05\01\04\06\02\04") + (data $23 (i32.const 3564) "\1c") + (data $23.1 (i32.const 3576) "\02\00\00\00\02\00\00\00-") + (data $24 (i32.const 3596) "\1c") + (data $24.1 (i32.const 3608) "\02\00\00\00\02\00\00\00+") + (data $25 (i32.const 3628) "\1c") + (data $25.1 (i32.const 3640) "\02\00\00\00\02\00\00\00T") + (data $26 (i32.const 3660) "\1c") + (data $26.1 (i32.const 3672) "\02\00\00\00\02\00\00\00.") + (data $27 (i32.const 3692) "\1c") + (data $27.1 (i32.const 3704) "\02\00\00\00\02\00\00\00Z") + (data $28 (i32.const 3724) "L\00\00\00\03\00\00\00\00\00\00\00\05\00\00\008\00\00\00\00\00\00\00\00\0e\00\00\00\00\00\00\00\0e\00\00\00\00\00\00@\0e\00\00\00\00\00\00\10\06\00\00\00\00\00\00\10\06\00\00\00\00\00\00`\0e\00\00\00\00\00\00\80\0e") + (data $29 (i32.const 3804) "L") + (data $29.1 (i32.const 3816) "\02\00\00\000\00\00\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data $30 (i32.const 3884) "L") + (data $30.1 (i32.const 3896) "\02\00\00\006\00\00\00-\000\000\000\000\000\001\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") + (data $31 (i32.const 3964) "L") + (data $31.1 (i32.const 3976) "\02\00\00\000\00\00\000\000\000\001\00-\000\004\00-\000\007\00T\002\003\00:\000\006\00:\004\000\00.\000\000\000\00Z") + (data $32 (i32.const 4044) "L") + (data $32.1 (i32.const 4056) "\02\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\000\002\000\00Z") + (data $33 (i32.const 4124) "L") + (data $33.1 (i32.const 4136) "\02\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\004\005\006\00Z") + (data $34 (i32.const 4204) "L") + (data $34.1 (i32.const 4216) "\02\00\00\006\00\00\00+\000\001\002\001\008\004\00-\000\004\00-\000\008\00T\001\003\00:\000\007\00:\001\001\00.\000\002\000\00Z") + (data $35 (i32.const 4284) "L") + (data $35.1 (i32.const 4296) "\02\00\00\000\00\00\009\009\009\009\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") + (data $36 (i32.const 4364) "L") + (data $36.1 (i32.const 4376) "\02\00\00\006\00\00\00+\000\001\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data $37 (i32.const 4444) "L") + (data $37.1 (i32.const 4456) "\02\00\00\006\00\00\00-\000\000\000\000\002\002\00-\000\006\00-\001\006\00T\001\007\00:\001\003\00:\005\000\00.\007\007\004\00Z") + (data $38 (i32.const 4524) "\1c") + (data $38.1 (i32.const 4536) "\02\00\00\00\08\00\00\00S\00u\00n\00 ") + (data $39 (i32.const 4556) "\1c") + (data $39.1 (i32.const 4568) "\02\00\00\00\08\00\00\00M\00o\00n\00 ") + (data $40 (i32.const 4588) "\1c") + (data $40.1 (i32.const 4600) "\02\00\00\00\08\00\00\00T\00u\00e\00 ") + (data $41 (i32.const 4620) "\1c") + (data $41.1 (i32.const 4632) "\02\00\00\00\08\00\00\00W\00e\00d\00 ") + (data $42 (i32.const 4652) "\1c") + (data $42.1 (i32.const 4664) "\02\00\00\00\08\00\00\00T\00h\00u\00 ") + (data $43 (i32.const 4684) "\1c") + (data $43.1 (i32.const 4696) "\02\00\00\00\08\00\00\00F\00r\00i\00 ") + (data $44 (i32.const 4716) "\1c") + (data $44.1 (i32.const 4728) "\02\00\00\00\08\00\00\00S\00a\00t\00 ") + (data $45 (i32.const 4748) ",") + (data $45.1 (i32.const 4760) "\05\00\00\00\1c\00\00\00\c0\11\00\00\e0\11\00\00\00\12\00\00 \12\00\00@\12\00\00`\12\00\00\80\12") + (data $46 (i32.const 4796) "\1c") + (data $46.1 (i32.const 4808) "\02\00\00\00\08\00\00\00J\00a\00n\00 ") + (data $47 (i32.const 4828) "\1c") + (data $47.1 (i32.const 4840) "\02\00\00\00\08\00\00\00F\00e\00b\00 ") + (data $48 (i32.const 4860) "\1c") + (data $48.1 (i32.const 4872) "\02\00\00\00\08\00\00\00M\00a\00r\00 ") + (data $49 (i32.const 4892) "\1c") + (data $49.1 (i32.const 4904) "\02\00\00\00\08\00\00\00A\00p\00r\00 ") + (data $50 (i32.const 4924) "\1c") + (data $50.1 (i32.const 4936) "\02\00\00\00\08\00\00\00M\00a\00y\00 ") + (data $51 (i32.const 4956) "\1c") + (data $51.1 (i32.const 4968) "\02\00\00\00\08\00\00\00J\00u\00n\00 ") + (data $52 (i32.const 4988) "\1c") + (data $52.1 (i32.const 5000) "\02\00\00\00\08\00\00\00J\00u\00l\00 ") + (data $53 (i32.const 5020) "\1c") + (data $53.1 (i32.const 5032) "\02\00\00\00\08\00\00\00A\00u\00g\00 ") + (data $54 (i32.const 5052) "\1c") + (data $54.1 (i32.const 5064) "\02\00\00\00\08\00\00\00S\00e\00p\00 ") + (data $55 (i32.const 5084) "\1c") + (data $55.1 (i32.const 5096) "\02\00\00\00\08\00\00\00O\00c\00t\00 ") + (data $56 (i32.const 5116) "\1c") + (data $56.1 (i32.const 5128) "\02\00\00\00\08\00\00\00N\00o\00v\00 ") + (data $57 (i32.const 5148) "\1c") + (data $57.1 (i32.const 5160) "\02\00\00\00\08\00\00\00D\00e\00c\00 ") + (data $58 (i32.const 5180) "L") + (data $58.1 (i32.const 5192) "\05\00\00\000\00\00\00\d0\12\00\00\f0\12\00\00\10\13\00\000\13\00\00P\13\00\00p\13\00\00\90\13\00\00\b0\13\00\00\d0\13\00\00\f0\13\00\00\10\14\00\000\14") + (data $59 (i32.const 5260) ",\00\00\00\03\00\00\00\00\00\00\00\05\00\00\00\14") + (data $60 (i32.const 5308) "\1c") + (data $60.1 (i32.const 5320) "\02\00\00\00\04\00\00\00 \00-") + (data $61 (i32.const 5340) "\1c") + (data $61.1 (i32.const 5352) "\02\00\00\00\02\00\00\00 ") + (data $62 (i32.const 5372) "<") + (data $62.1 (i32.const 5384) "\02\00\00\00\1e\00\00\00W\00e\00d\00 \00J\00a\00n\00 \000\001\00 \000\000\002\000") + (data $63 (i32.const 5436) "<") + (data $63.1 (i32.const 5448) "\02\00\00\00\1e\00\00\00S\00u\00n\00 \00F\00e\00b\00 \000\002\00 \002\000\002\000") + (data $64 (i32.const 5500) "<") + (data $64.1 (i32.const 5512) "\02\00\00\00 \00\00\00T\00h\00u\00 \00J\00u\00l\00 \000\001\00 \00-\000\000\000\001") + (data $65 (i32.const 5564) ",\00\00\00\03\00\00\00\00\00\00\00\05\00\00\00\14\00\00\00\00\00\00\00\10\06\00\00\00\00\00\00\10\06") + (data $66 (i32.const 5612) ",") + (data $66.1 (i32.const 5624) "\02\00\00\00\10\00\00\000\000\00:\000\000\00:\000\000") + (data $67 (i32.const 5660) ",") + (data $67.1 (i32.const 5672) "\02\00\00\00\10\00\00\002\003\00:\005\009\00:\005\009") + (data $68 (i32.const 5708) "\1c") + (data $68.1 (i32.const 5720) "\02\00\00\00\n\00\00\00S\00u\00n\00,\00 ") + (data $69 (i32.const 5740) "\1c") + (data $69.1 (i32.const 5752) "\02\00\00\00\n\00\00\00M\00o\00n\00,\00 ") + (data $70 (i32.const 5772) "\1c") + (data $70.1 (i32.const 5784) "\02\00\00\00\n\00\00\00T\00u\00e\00,\00 ") + (data $71 (i32.const 5804) "\1c") + (data $71.1 (i32.const 5816) "\02\00\00\00\n\00\00\00W\00e\00d\00,\00 ") + (data $72 (i32.const 5836) "\1c") + (data $72.1 (i32.const 5848) "\02\00\00\00\n\00\00\00T\00h\00u\00,\00 ") + (data $73 (i32.const 5868) "\1c") + (data $73.1 (i32.const 5880) "\02\00\00\00\n\00\00\00F\00r\00i\00,\00 ") + (data $74 (i32.const 5900) "\1c") + (data $74.1 (i32.const 5912) "\02\00\00\00\n\00\00\00S\00a\00t\00,\00 ") + (data $75 (i32.const 5932) ",") + (data $75.1 (i32.const 5944) "\05\00\00\00\1c\00\00\00`\16\00\00\80\16\00\00\a0\16\00\00\c0\16\00\00\e0\16\00\00\00\17\00\00 \17") + (data $76 (i32.const 5980) "\1c") + (data $76.1 (i32.const 5992) "\02\00\00\00\n\00\00\00 \00J\00a\00n\00 ") + (data $77 (i32.const 6012) "\1c") + (data $77.1 (i32.const 6024) "\02\00\00\00\n\00\00\00 \00F\00e\00b\00 ") + (data $78 (i32.const 6044) "\1c") + (data $78.1 (i32.const 6056) "\02\00\00\00\n\00\00\00 \00M\00a\00r\00 ") + (data $79 (i32.const 6076) "\1c") + (data $79.1 (i32.const 6088) "\02\00\00\00\n\00\00\00 \00A\00p\00r\00 ") + (data $80 (i32.const 6108) "\1c") + (data $80.1 (i32.const 6120) "\02\00\00\00\n\00\00\00 \00M\00a\00y\00 ") + (data $81 (i32.const 6140) "\1c") + (data $81.1 (i32.const 6152) "\02\00\00\00\n\00\00\00 \00J\00u\00n\00 ") + (data $82 (i32.const 6172) "\1c") + (data $82.1 (i32.const 6184) "\02\00\00\00\n\00\00\00 \00J\00u\00l\00 ") + (data $83 (i32.const 6204) "\1c") + (data $83.1 (i32.const 6216) "\02\00\00\00\n\00\00\00 \00A\00u\00g\00 ") + (data $84 (i32.const 6236) "\1c") + (data $84.1 (i32.const 6248) "\02\00\00\00\n\00\00\00 \00S\00e\00p\00 ") + (data $85 (i32.const 6268) "\1c") + (data $85.1 (i32.const 6280) "\02\00\00\00\n\00\00\00 \00O\00c\00t\00 ") + (data $86 (i32.const 6300) "\1c") + (data $86.1 (i32.const 6312) "\02\00\00\00\n\00\00\00 \00N\00o\00v\00 ") + (data $87 (i32.const 6332) "\1c") + (data $87.1 (i32.const 6344) "\02\00\00\00\n\00\00\00 \00D\00e\00c\00 ") + (data $88 (i32.const 6364) "L") + (data $88.1 (i32.const 6376) "\05\00\00\000\00\00\00p\17\00\00\90\17\00\00\b0\17\00\00\d0\17\00\00\f0\17\00\00\10\18\00\000\18\00\00P\18\00\00p\18\00\00\90\18\00\00\b0\18\00\00\d0\18") + (data $89 (i32.const 6444) "\1c") + (data $89.1 (i32.const 6456) "\02\00\00\00\08\00\00\00 \00G\00M\00T") + (data $90 (i32.const 6476) "L\00\00\00\03\00\00\00\00\00\00\00\05\00\00\000") + (data $90.1 (i32.const 6516) "\f0\14\00\00\00\00\00\00\10\06\00\00\00\00\00\00\10\06\00\00\00\00\00\00@\19") + (data $91 (i32.const 6556) "L") + (data $91.1 (i32.const 6568) "\02\00\00\00:\00\00\00W\00e\00d\00,\00 \000\001\00 \00J\00a\00n\00 \000\000\002\000\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T") + (data $92 (i32.const 6636) "L") + (data $92.1 (i32.const 6648) "\02\00\00\00:\00\00\00M\00o\00n\00,\00 \000\003\00 \00F\00e\00b\00 \002\000\002\000\00 \001\004\00:\005\003\00:\003\003\00 \00G\00M\00T") + (data $93 (i32.const 6716) "L") + (data $93.1 (i32.const 6728) "\02\00\00\00<\00\00\00T\00h\00u\00,\00 \000\001\00 \00J\00u\00l\00 \00-\000\000\000\001\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T") + (data $94 (i32.const 6796) ",") + (data $94.1 (i32.const 6808) "\02\00\00\00\14\00\00\001\009\007\006\00-\000\002\00-\000\002") + (data $95 (i32.const 6844) ",") + (data $95.1 (i32.const 6856) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $96 (i32.const 6892) ",") + (data $96.1 (i32.const 6904) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $97 (i32.const 6940) "|") + (data $97.1 (i32.const 6952) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $98 (i32.const 7068) ",") + (data $98.1 (i32.const 7080) "\02\00\00\00\10\00\00\001\009\007\006\00-\002\00-\002") + (data $99 (i32.const 7116) ",") + (data $99.1 (i32.const 7128) "\02\00\00\00\14\00\00\002\003\004\005\00-\001\001\00-\000\004") + (data $100 (i32.const 7164) "<") + (data $100.1 (i32.const 7176) "\02\00\00\00&\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006") + (data $101 (i32.const 7228) "L") + (data $101.1 (i32.const 7240) "\02\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006") + (data $102 (i32.const 7308) "L") + (data $102.1 (i32.const 7320) "\02\00\00\000\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00Z") + (data $103 (i32.const 7388) "L") + (data $103.1 (i32.const 7400) "\02\00\00\00:\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00-\000\008\00:\000\000") + (data $104 (i32.const 7468) "L") + (data $104.1 (i32.const 7480) "\02\00\00\00:\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00+\000\005\00:\003\000") + (data $105 (i32.const 7548) "<") + (data $105.1 (i32.const 7560) "\02\00\00\00,\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005") + (data $106 (i32.const 7612) "L") + (data $106.1 (i32.const 7624) "\02\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\00Z") + (data $107 (i32.const 7692) "L") + (data $107.1 (i32.const 7704) "\02\00\00\008\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\00+\000\000\00:\000\000") + (data $108 (i32.const 7772) "L") + (data $108.1 (i32.const 7784) "\02\00\00\004\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\007\008\009") + (data $109 (i32.const 7852) "L") + (data $109.1 (i32.const 7864) "\02\00\00\006\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\007\008\009\00Z") + (data $110 (i32.const 7932) "\\") + (data $110.1 (i32.const 7944) "\02\00\00\00@\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\007\008\009\00+\000\000\00:\000\000") + (data $111 (i32.const 8028) "\1c") + (data $111.1 (i32.const 8040) "\02\00\00\00\08\00\00\000\000\000\000") + (data $112 (i32.const 8060) "\1c") + (data $112.1 (i32.const 8072) "\02\00\00\00\08\00\00\000\000\000\001") + (data $113 (i32.const 8092) "\1c") + (data $113.1 (i32.const 8104) "\02\00\00\00\08\00\00\001\009\007\006") + (data $114 (i32.const 8124) ",") + (data $114.1 (i32.const 8136) "\02\00\00\00\0e\00\00\001\009\007\006\00-\000\002") + (data $115 (i32.const 8172) "<") + (data $115.1 (i32.const 8184) "\02\00\00\00 \00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004") + (data $116 (i32.const 8236) "L") + (data $116.1 (i32.const 8248) "\02\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data $117 (i32.const 8316) "L") + (data $117.1 (i32.const 8328) "\02\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\003\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data $118 (i32.const 8396) "L") + (data $118.1 (i32.const 8408) "\02\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\002\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") + (data $119 (i32.const 8476) "L") + (data $119.1 (i32.const 8488) "\02\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\001\00Z") + (data $120 (i32.const 8560) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\04A\00\00\02A\00\00\02\t") (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/date/epochMillis (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i64) @@ -335,113 +340,22 @@ i64.add i64.add ) - (func $~lib/date/dateFromEpoch (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i64.const 86399999 - i64.const 0 - local.get $0 - i64.const 0 - i64.lt_s - select - i64.sub - i64.const 86400000 - i64.div_s - i32.wrap_i64 - i32.const 2 - i32.shl - i32.const 2877872 - i32.add - i32.const 3 - i32.or - local.tee $1 - i32.const 146096 - i32.const 0 - local.get $1 - i32.const 0 - i32.lt_s - select - i32.sub - i32.const 146097 - i32.div_s - local.set $2 - local.get $1 - local.get $2 - i32.const 146097 - i32.mul - i32.sub - i32.const 3 - i32.or - i64.extend_i32_u - i64.const 2939745 - i64.mul - local.tee $0 - i32.wrap_i64 - i32.const 11758980 - i32.div_u - local.tee $4 - i32.const 2141 - i32.mul - i32.const 197913 - i32.add - local.set $3 - local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.get $2 - i32.const 100 - i32.mul - i32.add - local.set $1 - local.get $3 - i32.const 16 - i32.shr_u - local.set $2 - local.get $3 - i32.const 65535 - i32.and - i32.const 2141 - i32.div_u - i32.const 1 - i32.add - global.set $~lib/date/_day - local.get $4 - i32.const 306 - i32.ge_u - if - local.get $2 - i32.const 12 - i32.sub - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - global.set $~lib/date/_month - local.get $1 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1392 + i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 6784 + i32.const 6912 call $~lib/rt/itcms/__visit - i32.const 6832 + i32.const 6960 call $~lib/rt/itcms/__visit - i32.const 1200 + i32.const 1152 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3424 call $~lib/rt/itcms/__visit - i32.const 2304 + i32.const 2208 call $~lib/rt/itcms/__visit - i32.const 3360 + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -462,7 +376,7 @@ i32.ne if i32.const 0 - i32.const 1264 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -495,7 +409,7 @@ i32.eqz if i32.const 0 - i32.const 1264 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -504,7 +418,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$376 + block $__inlined_func$~lib/rt/itcms/Object#unlink$379 local.get $0 i32.load offset=4 i32.const -4 @@ -516,19 +430,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 41236 + i32.const 41364 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1264 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$376 + br $__inlined_func$~lib/rt/itcms/Object#unlink$379 end local.get $0 i32.load offset=8 @@ -536,7 +450,7 @@ i32.eqz if i32.const 0 - i32.const 1264 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -565,12 +479,12 @@ i32.const 1 else local.get $1 - i32.const 8432 + i32.const 8560 i32.load i32.gt_u if - i32.const 1392 - i32.const 1456 + i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -579,7 +493,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 8436 + i32.const 8564 i32.add i32.load i32.const 32 @@ -650,7 +564,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -664,7 +578,7 @@ i32.lt_u if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -710,7 +624,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -793,7 +707,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -807,7 +721,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -868,7 +782,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -901,7 +815,7 @@ i32.lt_u if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -916,7 +830,7 @@ i32.ne if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -967,7 +881,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1039,7 +953,7 @@ i64.lt_u if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1064,7 +978,7 @@ i32.gt_u if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1091,7 +1005,7 @@ i32.gt_u if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1163,10 +1077,10 @@ if unreachable end - i32.const 41248 + i32.const 41376 i32.const 0 i32.store - i32.const 42816 + i32.const 42944 i32.const 0 i32.store loop $for-loop|0 @@ -1177,7 +1091,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 41248 + i32.const 41376 i32.add i32.const 0 i32.store offset=4 @@ -1195,7 +1109,7 @@ i32.add i32.const 2 i32.shl - i32.const 41248 + i32.const 41376 i32.add i32.const 0 i32.store offset=96 @@ -1213,14 +1127,14 @@ br $for-loop|0 end end - i32.const 41248 - i32.const 42820 + i32.const 41376 + i32.const 42948 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 41248 + i32.const 41376 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -1305,7 +1219,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 41236 + i32.const 41364 i32.lt_u if local.get $0 @@ -1394,14 +1308,14 @@ i32.ne if i32.const 0 - i32.const 1264 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 41236 + i32.const 41364 i32.lt_u if local.get $0 @@ -1424,7 +1338,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 41236 + i32.const 41364 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1453,7 +1367,7 @@ end if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1537,7 +1451,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1589,7 +1503,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1621,8 +1535,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1200 - i32.const 1264 + i32.const 1152 + i32.const 1216 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1632,7 +1546,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1653,7 +1567,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end local.get $2 i32.const 0 @@ -1686,8 +1600,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1200 - i32.const 1536 + i32.const 1152 + i32.const 1488 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1789,7 +1703,7 @@ i32.eqz if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1804,7 +1718,7 @@ i32.gt_u if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1823,7 +1737,7 @@ i32.and if i32.const 0 - i32.const 1536 + i32.const 1488 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1928,128 +1842,145 @@ memory.fill local.get $1 ) - (func $~lib/date/join (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (result i64) - (local $4 i32) - local.get $0 - local.get $1 - i32.const 2 - i32.le_s - i32.sub - local.tee $0 - i32.const 399 - i32.const 0 - local.get $0 - i32.const 0 - i32.lt_s - select - i32.sub - i32.const 400 - i32.div_s - local.set $4 - i64.const 86400000 - i64.const 0 - local.get $3 - i64.const 86400000 - i64.rem_s - local.tee $3 - i64.const 0 - i64.lt_s - select - local.get $3 - i64.add - local.get $1 - i32.const -3 - i32.const 9 - local.get $1 - i32.const 2 - i32.gt_s - select - i32.add - i32.const 153 - i32.mul - i32.const 2 - i32.add - i32.const 5 - i32.div_u - local.get $2 - i32.add - local.get $0 - local.get $4 - i32.const 400 - i32.mul - i32.sub - local.tee $0 - i32.const 365 - i32.mul - local.get $0 - i32.const 2 - i32.shr_u - i32.add - local.get $0 - i32.const 100 - i32.div_u - i32.sub - i32.add - local.get $4 - i32.const 146097 - i32.mul - i32.add - i32.const 719469 - i32.sub - i64.extend_i32_s - i64.const 86400000 - i64.mul - i64.add - ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32$73 - local.get $0 - i32.eqz + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u if - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1872 - local.set $2 - br $__inlined_func$~lib/util/number/itoa32$73 + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 0 + end + local.get $1 + i32.const 100 + i32.ge_u + if local.get $0 + local.get $2 + i32.const 2 i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u + local.tee $2 i32.const 1 i32.shl - local.tee $3 - select - local.tee $0 + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8596 + i32.lt_s + if + i32.const 41392 + i32.const 41440 + 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$74 + 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 1776 + local.set $1 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 100000 i32.lt_u if (result i32) @@ -2095,160 +2026,215 @@ i32.add end end - local.tee $1 + local.tee $2 i32.const 1 i32.shl - local.get $3 - i32.add i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 - local.get $3 - i32.add - local.set $5 - loop $while-continue|0 - local.get $0 - i32.const 10000 - i32.ge_u - if - local.get $0 - i32.const 10000 - i32.rem_u - local.set $4 - local.get $0 - i32.const 10000 - i32.div_u - local.set $0 - local.get $5 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1884 - i32.add - i64.load32_u - local.get $4 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1884 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $0 - i32.const 100 - i32.ge_u - if - local.get $5 - local.get $1 - i32.const 2 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1884 - i32.add - i32.load - i32.store - local.get $0 - i32.const 100 - i32.div_u - local.set $0 - end + local.get $1 local.get $0 - i32.const 10 - i32.ge_u - if - local.get $5 - local.get $1 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 2 - i32.shl - i32.const 1884 - i32.add - i32.load - i32.store - else - local.get $5 - local.get $1 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 48 - i32.add - i32.store16 - end - local.get $3 - if - local.get $2 - i32.const 45 - i32.store16 - end + local.get $2 + call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer end - local.get $2 + local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/date/dateFromEpoch (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - local.get $1 - i32.eqz - if - return - end + (local $4 i32) local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white + i64.const 86399999 + i64.const 0 + local.get $0 + i64.const 0 + i64.lt_s + select + i64.sub + i64.const 86400000 + i64.div_s + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 2877872 + i32.add + i32.const 3 + i32.or + local.tee $1 + i32.const 146096 + i32.const 0 local.get $1 - i32.const 20 + i32.const 0 + i32.lt_s + select + i32.sub + i32.const 146097 + i32.div_s + local.set $2 + local.get $1 + local.get $2 + i32.const 146097 + i32.mul i32.sub - local.tee $1 - i32.load offset=4 i32.const 3 + i32.or + i64.extend_i32_u + i64.const 2939745 + i64.mul + local.tee $0 + i32.wrap_i64 + i32.const 11758980 + i32.div_u + local.tee $4 + i32.const 2141 + i32.mul + i32.const 197913 + i32.add + local.set $3 + local.get $0 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.get $2 + i32.const 100 + i32.mul + i32.add + local.set $1 + local.get $3 + i32.const 16 + i32.shr_u + local.set $2 + local.get $3 + i32.const 65535 i32.and - i32.eq - if + i32.const 2141 + i32.div_u + i32.const 1 + i32.add + global.set $~lib/date/_day + local.get $4 + i32.const 306 + i32.ge_u + if + local.get $2 + i32.const 12 + i32.sub + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $2 + global.set $~lib/date/_month + local.get $1 + ) + (func $~lib/date/join (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (result i64) + (local $4 i32) + local.get $0 + local.get $1 + i32.const 2 + i32.le_s + i32.sub + local.tee $0 + i32.const 399 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + select + i32.sub + i32.const 400 + i32.div_s + local.set $4 + i64.const 86400000 + i64.const 0 + local.get $3 + i64.const 86400000 + i64.rem_s + local.tee $3 + i64.const 0 + i64.lt_s + select + local.get $3 + i64.add + local.get $1 + i32.const -3 + i32.const 9 + local.get $1 + i32.const 2 + i32.gt_s + select + i32.add + i32.const 153 + i32.mul + i32.const 2 + i32.add + i32.const 5 + i32.div_u + local.get $2 + i32.add + local.get $0 + local.get $4 + i32.const 400 + i32.mul + i32.sub + local.tee $0 + i32.const 365 + i32.mul + local.get $0 + i32.const 2 + i32.shr_u + i32.add + local.get $0 + i32.const 100 + i32.div_u + i32.sub + i32.add + local.get $4 + i32.const 146097 + i32.mul + i32.add + i32.const 719469 + i32.sub + i64.extend_i32_s + i64.const 86400000 + i64.mul + i64.add + ) + (func $~lib/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 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if local.get $0 i32.const 20 i32.sub @@ -2364,157 +2350,214 @@ end i32.const 0 ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/date + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/array/Array - block $~lib/array/Array<~lib/string/String> - block $~lib/staticarray/StaticArray<~lib/string/String> - block $~lib/date/Date - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/date/Date $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.add - local.set $1 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $~lib/rt/itcms/__visit - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|01 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|01 - end - end - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - br $folding-inner1 - end - unreachable - end - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add + i32.const 8 + i32.sub global.set $~lib/memory/__stack_pointer - ) - (func $~start - global.get $~started - if + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$384 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$384 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 return end + i32.const 41392 + i32.const 41440 i32.const 1 - global.set $~started - call $start:std/date + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8596 + i32.lt_s + if + i32.const 41392 + i32.const 41440 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/date/Date#constructor (param $0 i64) (result i32) (local $1 i32) @@ -2523,11 +2566,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2574,8 +2617,8 @@ i64.gt_s i32.or if - i32.const 1056 - i32.const 1104 + i32.const 3424 + i32.const 3472 i32.const 131 i32.const 35 call $~lib/builtins/abort @@ -2612,11 +2655,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2633,8 +2676,8 @@ i64.gt_s i32.or if - i32.const 1056 - i32.const 1104 + i32.const 3424 + i32.const 3472 i32.const 143 i32.const 28 call $~lib/builtins/abort @@ -2677,11 +2720,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2721,11 +2764,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2765,11 +2808,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2809,11 +2852,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2851,11 +2894,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2897,11 +2940,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2945,11 +2988,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2993,11 +3036,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3042,11 +3085,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3109,7 +3152,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3140,7 +3183,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3188,8 +3231,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3203,11 +3246,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3272,124 +3315,228 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1872 + i32.const 0 i32.store - block $__inlined_func$~lib/string/String#padStart$384 - i32.const 1868 - i32.load - i32.const -2 - i32.and - local.tee $2 + block $__inlined_func$~lib/util/number/itoa32$75 + local.get $0 i32.eqz - local.get $1 - i32.const 1 - i32.shl - local.tee $5 - local.get $3 - i32.lt_u - i32.or if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/string/String#padStart$384 + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/itoa32$75 end global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $5 - local.get $3 + i32.const 0 + local.get $0 i32.sub - local.tee $7 - local.get $2 - i32.gt_u - if - local.get $7 - local.get $7 - i32.const 2 - i32.sub - local.get $2 - i32.div_u - local.get $2 - i32.mul - local.tee $6 - i32.sub - local.set $5 - loop $while-continue|0 - local.get $4 - local.get $6 - i32.lt_u - if - local.get $1 - local.get $4 - i32.add - i32.const 1872 - local.get $2 - memory.copy - local.get $2 - local.get $4 - i32.add - local.set $4 + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 + select + local.tee $4 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $4 + i32.const 100 + i32.lt_u + if (result i32) + local.get $4 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $4 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $4 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $4 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $4 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $4 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $5 + i32.const 1 + i32.shl + local.get $3 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $3 + i32.add + local.get $4 + local.get $5 + call $~lib/util/number/utoa32_dec_lut + local.get $3 + if + local.get $0 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + 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 8596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 1776 + i32.store + block $__inlined_func$~lib/string/String#padStart$385 + i32.const 1772 + i32.load + i32.const -2 + i32.and + local.tee $5 + i32.eqz + local.get $1 + i32.const 1 + i32.shl + local.tee $3 + local.get $4 + i32.lt_u + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/string/String#padStart$385 + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $3 + local.get $4 + i32.sub + local.tee $6 + local.get $5 + i32.gt_u + if + local.get $6 + local.get $6 + i32.const 2 + i32.sub + local.get $5 + i32.div_u + local.get $5 + i32.mul + local.tee $3 + i32.sub + local.set $7 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $1 + local.get $2 + i32.add + i32.const 1776 + local.get $5 + memory.copy + local.get $2 + local.get $5 + i32.add + local.set $2 br $while-continue|0 end end local.get $1 - local.get $6 + local.get $3 i32.add - i32.const 1872 - local.get $5 + i32.const 1776 + local.get $7 memory.copy else local.get $1 - i32.const 1872 - local.get $7 + i32.const 1776 + local.get $6 memory.copy end local.get $1 - local.get $7 + local.get $6 i32.add local.get $0 - local.get $3 + local.get $4 memory.copy global.get $~lib/memory/__stack_pointer i32.const 8 @@ -3405,8 +3552,8 @@ local.get $0 return end - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3423,11 +3570,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3450,7 +3597,7 @@ i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - i32.const 3456 + i32.const 1120 return end local.get $4 @@ -3466,7 +3613,7 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 3456 + i32.const 1120 local.get $0 select return @@ -3510,11 +3657,11 @@ i32.const 0 local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 3456 + i32.const 1120 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 3452 + i32.const 1116 i32.load i32.const 1 i32.shr_u @@ -3577,7 +3724,7 @@ i32.const 1 i32.shl i32.add - i32.const 3456 + i32.const 1120 local.get $1 i32.const 1 i32.shl @@ -3635,11 +3782,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3659,7 +3806,7 @@ i32.shr_u local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 3456 + i32.const 1120 i32.store local.get $0 local.get $1 @@ -3680,335 +3827,248 @@ i32.const -64 i32.add global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 64 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $1 - i32.const 0 - i32.lt_s - local.tee $3 - local.get $1 - i32.const 10000 - i32.ge_s - i32.or - if - global.get $~lib/memory/__stack_pointer - i32.const 1616 - i32.const 1648 - local.get $3 - select - local.tee $3 - i32.store - local.get $1 - i32.const 31 - i32.shr_s - local.tee $4 - local.get $1 - local.get $4 - i32.add - i32.xor - i32.const 6 - call $~lib/date/stringify - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - block $__inlined_func$~lib/string/String#concat$385 - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $6 - local.get $5 - i32.add - local.tee $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3456 - local.set $1 - br $__inlined_func$~lib/string/String#concat$385 - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 - local.get $3 - local.get $5 - memory.copy - local.get $1 - local.get $5 - i32.add - local.get $4 - local.get $6 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - else - local.get $1 - i32.const 4 - call $~lib/date/stringify - local.set $1 - end - local.get $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - i32.const 2 - call $~lib/date/stringify - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - i32.const 2 - call $~lib/date/stringify - local.tee $3 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/date/Date#getUTCHours - i32.const 2 - call $~lib/date/stringify - local.tee $4 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/date/Date#getUTCMinutes - i32.const 2 - call $~lib/date/stringify - local.tee $5 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/date/Date#getUTCSeconds - i32.const 2 - call $~lib/date/stringify - local.tee $6 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/date/Date#getUTCMilliseconds - i32.const 3 - call $~lib/date/stringify - local.tee $0 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=36 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=40 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=44 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=48 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=52 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=56 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=60 - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 3616 - local.get $1 - i32.store - i32.const 3616 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 8596 + i32.lt_s + if + i32.const 41392 + i32.const 41440 i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 3624 - local.get $2 - i32.store - i32.const 3616 - local.get $2 i32.const 1 - call $~lib/rt/itcms/__link + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 64 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $1 + i32.const 0 + i32.lt_s + local.tee $2 + local.get $1 + i32.const 10000 + i32.ge_s + i32.or + if (result i32) global.get $~lib/memory/__stack_pointer + i32.const 3584 i32.const 3616 + local.get $2 + select + local.tee $2 i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - i32.const 3632 - local.get $3 - i32.store - i32.const 3616 + local.get $1 + i32.const 31 + i32.shr_s + local.tee $3 + local.get $1 local.get $3 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - i32.const 3640 - local.get $4 - i32.store - i32.const 3616 - local.get $4 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - i32.const 3648 - local.get $5 - i32.store - i32.const 3616 - local.get $5 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - i32.const 3656 - local.get $6 - i32.store - i32.const 3616 - local.get $6 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store + i32.add + i32.xor + i32.const 6 + call $~lib/date/stringify + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - i32.const 3664 - local.get $0 - i32.store - i32.const 3616 - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - i32.const 3616 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - global.get $~lib/memory/__stack_pointer - i32.const -64 - i32.sub - global.set $~lib/memory/__stack_pointer - return + local.get $2 + local.get $1 + call $~lib/string/String.__concat + else + local.get $1 + i32.const 4 + call $~lib/date/stringify end - i32.const 41264 - i32.const 41312 + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.const 2 + call $~lib/date/stringify + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + i32.const 2 + call $~lib/date/stringify + local.tee $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 2 + call $~lib/date/stringify + local.tee $4 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 2 + call $~lib/date/stringify + local.tee $5 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 2 + call $~lib/date/stringify + local.tee $6 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.const 3 + call $~lib/date/stringify + local.tee $0 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + i32.const 3744 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 3744 + local.get $1 + i32.store + i32.const 3744 + local.get $1 i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3744 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 3752 + local.get $2 + i32.store + i32.const 3744 + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3744 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + i32.const 3760 + local.get $3 + i32.store + i32.const 3744 + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3744 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 3768 + local.get $4 + i32.store + i32.const 3744 + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3744 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 3776 + local.get $5 + i32.store + i32.const 3744 + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3744 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 3784 + local.get $6 + i32.store + i32.const 3744 + local.get $6 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3744 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 3792 + local.get $0 + i32.store + i32.const 3744 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3744 + i32.store + i32.const 3744 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + global.get $~lib/memory/__stack_pointer + i32.const -64 + i32.sub + global.set $~lib/memory/__stack_pointer ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -4017,11 +4077,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4106,11 +4166,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4125,7 +4185,7 @@ i32.const 5 call $~lib/rt/itcms/__new local.tee $2 - i32.const 4640 + i32.const 4768 i32.const 28 memory.copy local.get $2 @@ -4135,7 +4195,7 @@ i32.const 5 call $~lib/rt/itcms/__new local.tee $3 - i32.const 5072 + i32.const 5200 i32.const 48 memory.copy local.get $3 @@ -4167,7 +4227,7 @@ i32.lt_s local.set $6 local.get $1 - i32.const 1579 + i32.const 3547 i32.add i32.load8_u local.get $5 @@ -4266,8 +4326,8 @@ local.get $3 i32.store offset=36 global.get $~lib/memory/__stack_pointer - i32.const 5200 - i32.const 5232 + i32.const 5328 + i32.const 5360 local.get $0 i32.const 0 i32.lt_s @@ -4278,74 +4338,74 @@ local.get $6 i32.store offset=44 global.get $~lib/memory/__stack_pointer - i32.const 5152 + i32.const 5280 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=48 - i32.const 5152 + i32.const 5280 local.get $2 i32.store - i32.const 5152 + i32.const 5280 local.get $2 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5152 + i32.const 5280 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=48 - i32.const 5156 + i32.const 5284 local.get $1 i32.store - i32.const 5152 + i32.const 5280 local.get $1 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5152 + i32.const 5280 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=48 - i32.const 5160 + i32.const 5288 local.get $3 i32.store - i32.const 5152 + i32.const 5280 local.get $3 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5152 + i32.const 5280 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=48 - i32.const 5164 + i32.const 5292 local.get $0 i32.store - i32.const 5152 + i32.const 5280 local.get $0 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5152 + i32.const 5280 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store offset=48 - i32.const 5168 + i32.const 5296 local.get $6 i32.store - i32.const 5152 + i32.const 5280 local.get $6 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5152 + i32.const 5280 i32.store offset=8 - i32.const 5152 + i32.const 5280 call $~lib/staticarray/StaticArray<~lib/string/String>#join global.get $~lib/memory/__stack_pointer i32.const 52 @@ -4360,11 +4420,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4414,48 +4474,48 @@ local.get $0 i32.store offset=24 global.get $~lib/memory/__stack_pointer - i32.const 5456 + i32.const 5584 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=28 - i32.const 5456 + i32.const 5584 local.get $1 i32.store - i32.const 5456 + i32.const 5584 local.get $1 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5456 + i32.const 5584 i32.store global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=28 - i32.const 5464 + i32.const 5592 local.get $2 i32.store - i32.const 5456 + i32.const 5584 local.get $2 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5456 + i32.const 5584 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=28 - i32.const 5472 + i32.const 5600 local.get $0 i32.store - i32.const 5456 + i32.const 5584 local.get $0 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5456 + i32.const 5584 i32.store - i32.const 5456 + i32.const 5584 call $~lib/staticarray/StaticArray<~lib/string/String>#join global.get $~lib/memory/__stack_pointer i32.const 32 @@ -4475,11 +4535,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4494,7 +4554,7 @@ i32.const 5 call $~lib/rt/itcms/__new local.tee $2 - i32.const 5824 + i32.const 5952 i32.const 28 memory.copy local.get $2 @@ -4504,7 +4564,7 @@ i32.const 5 call $~lib/rt/itcms/__new local.tee $3 - i32.const 6256 + i32.const 6384 i32.const 48 memory.copy local.get $3 @@ -4536,7 +4596,7 @@ i32.lt_s local.set $7 local.get $1 - i32.const 1579 + i32.const 3547 i32.add i32.load8_u local.get $6 @@ -4665,8 +4725,8 @@ local.get $1 i32.store offset=48 global.get $~lib/memory/__stack_pointer - i32.const 1616 - i32.const 3456 + i32.const 3584 + i32.const 1120 local.get $5 i32.const 0 i32.lt_s @@ -4686,113 +4746,113 @@ local.get $0 i32.store offset=68 global.get $~lib/memory/__stack_pointer - i32.const 6368 + i32.const 6496 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=72 - i32.const 6368 + i32.const 6496 local.get $2 i32.store - i32.const 6368 + i32.const 6496 local.get $2 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 6368 + i32.const 6496 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=72 - i32.const 6372 + i32.const 6500 local.get $3 i32.store - i32.const 6368 + i32.const 6496 local.get $3 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 6368 + i32.const 6496 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=72 - i32.const 6376 + i32.const 6504 local.get $1 i32.store - i32.const 6368 + i32.const 6496 local.get $1 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 6368 + i32.const 6496 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $5 i32.store offset=72 - i32.const 6380 + i32.const 6508 local.get $5 i32.store - i32.const 6368 + i32.const 6496 local.get $5 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 6368 + i32.const 6496 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $7 i32.store offset=72 - i32.const 6384 + i32.const 6512 local.get $7 i32.store - i32.const 6368 + i32.const 6496 local.get $7 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 6368 + i32.const 6496 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=72 - i32.const 6392 + i32.const 6520 local.get $4 i32.store - i32.const 6368 + i32.const 6496 local.get $4 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 6368 + i32.const 6496 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store offset=72 - i32.const 6400 + i32.const 6528 local.get $6 i32.store - i32.const 6368 + i32.const 6496 local.get $6 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 6368 + i32.const 6496 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=72 - i32.const 6408 + i32.const 6536 local.get $0 i32.store - i32.const 6368 + i32.const 6496 local.get $0 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 6368 + i32.const 6496 i32.store offset=8 - i32.const 6368 + i32.const 6496 call $~lib/staticarray/StaticArray<~lib/string/String>#join global.get $~lib/memory/__stack_pointer i32.const 76 @@ -4807,11 +4867,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4921,11 +4981,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4994,7 +5054,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 3456 + i32.const 1120 return end local.get $4 @@ -5038,11 +5098,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5089,11 +5149,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5120,7 +5180,7 @@ i32.load16_u local.set $0 loop $while-continue|0 - block $__inlined_func$~lib/util/string/isSpace$164 (result i32) + block $__inlined_func$~lib/util/string/isSpace$159 (result i32) local.get $0 i32.const 128 i32.or @@ -5135,7 +5195,7 @@ local.get $0 i32.const 5760 i32.lt_u - br_if $__inlined_func$~lib/util/string/isSpace$164 + br_if $__inlined_func$~lib/util/string/isSpace$159 drop i32.const 1 local.get $0 @@ -5143,7 +5203,7 @@ i32.add i32.const 10 i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$164 + br_if $__inlined_func$~lib/util/string/isSpace$159 drop block $break|0 block $case0|0 @@ -5178,7 +5238,7 @@ br $break|0 end i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$164 + br $__inlined_func$~lib/util/string/isSpace$159 end i32.const 0 end @@ -5388,11 +5448,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5416,8 +5476,8 @@ i32.const 268435455 i32.gt_u if - i32.const 6784 - i32.const 6736 + i32.const 6912 + i32.const 6864 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -5426,7 +5486,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $__inlined_func$~lib/rt/itcms/__renew$363 + block $__inlined_func$~lib/rt/itcms/__renew$358 i32.const 1073741820 local.get $2 i32.const 1 @@ -5469,7 +5529,7 @@ i32.store offset=16 local.get $2 local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew$363 + br $__inlined_func$~lib/rt/itcms/__renew$358 end local.get $3 local.get $4 @@ -5519,11 +5579,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5587,7 +5647,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -5610,7 +5670,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -5691,7 +5751,7 @@ i32.store offset=4 local.get $2 i32.load offset=4 - i32.const 3456 + i32.const 1120 i32.store br $folding-inner4 end @@ -5815,7 +5875,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 3456 + i32.const 1120 call $~lib/array/Array<~lib/string/String>#push end local.get $5 @@ -5884,13 +5944,13 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 3456 + i32.const 1120 call $~lib/array/Array<~lib/string/String>#push end br $folding-inner4 end - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5921,11 +5981,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5970,11 +6030,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5999,11 +6059,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6020,8 +6080,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1392 - i32.const 6736 + i32.const 1344 + i32.const 6864 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -6043,8 +6103,8 @@ local.get $0 i32.eqz if - i32.const 6832 - i32.const 6736 + i32.const 6960 + i32.const 6864 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -6075,7 +6135,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -6093,8 +6153,8 @@ i32.shr_u i32.eqz if - i32.const 1056 - i32.const 1104 + i32.const 3424 + i32.const 3472 i32.const 50 i32.const 33 call $~lib/builtins/abort @@ -6109,7 +6169,7 @@ local.get $0 i32.store local.get $0 - i32.const 3488 + i32.const 3648 i32.const 0 call $~lib/string/String#indexOf local.tee $2 @@ -6164,7 +6224,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -6230,8 +6290,8 @@ i32.sub i32.eq if - i32.const 1056 - i32.const 1104 + i32.const 3424 + i32.const 3472 i32.const 74 i32.const 13 call $~lib/builtins/abort @@ -6242,7 +6302,7 @@ i32.store i32.const 0 local.get $2 - i32.const 3520 + i32.const 1552 local.get $3 i32.const 1 i32.add @@ -6349,7 +6409,7 @@ global.set $~argumentsLength global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 3520 + i32.const 1552 call $~lib/string/String#split@varargs local.tee $0 i32.store offset=24 @@ -6362,8 +6422,8 @@ i32.const 1 i32.le_s if - i32.const 1056 - i32.const 1104 + i32.const 3424 + i32.const 3472 i32.const 96 i32.const 21 call $~lib/builtins/abort @@ -6416,7 +6476,7 @@ local.get $2 i32.store local.get $2 - i32.const 3552 + i32.const 3680 i32.const 0 call $~lib/string/String#indexOf local.tee $0 @@ -6453,7 +6513,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -6502,7 +6562,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 3456 + i32.const 1120 br $__inlined_func$~lib/string/String#substr$387 end global.get $~lib/memory/__stack_pointer @@ -6534,7 +6594,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -6551,10 +6611,10 @@ i32.and local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 1872 + i32.const 1776 i32.store block $__inlined_func$~lib/string/String#padEnd$388 - i32.const 1868 + i32.const 1772 i32.load i32.const -2 i32.and @@ -6611,7 +6671,7 @@ local.get $4 local.get $12 i32.add - i32.const 1872 + i32.const 1776 local.get $8 memory.copy local.get $4 @@ -6626,14 +6686,14 @@ i32.add local.get $0 i32.add - i32.const 1872 + i32.const 1776 local.get $11 memory.copy else local.get $2 local.get $10 i32.add - i32.const 1872 + i32.const 1776 local.get $0 memory.copy end @@ -6672,7 +6732,7 @@ global.set $~argumentsLength global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1616 + i32.const 3584 call $~lib/string/String#split@varargs local.tee $0 i32.store offset=56 @@ -6758,8 +6818,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6775,11 +6835,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6789,6 +6849,38 @@ i32.const 0 i32.const 436 memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 41364 + 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 block $folding-inner0 i32.const 1970 i32.const 1 @@ -6811,7 +6903,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 3 i32.const 3 call $~lib/builtins/abort @@ -6838,7 +6930,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 4 i32.const 3 call $~lib/builtins/abort @@ -6865,7 +6957,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 5 i32.const 3 call $~lib/builtins/abort @@ -6892,7 +6984,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 6 i32.const 3 call $~lib/builtins/abort @@ -6919,7 +7011,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 7 i32.const 3 call $~lib/builtins/abort @@ -6946,7 +7038,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 8 i32.const 3 call $~lib/builtins/abort @@ -6973,44 +7065,12 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 9 i32.const 3 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - i32.const 41236 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1316 - i32.const 1312 - i32.store - i32.const 1320 - i32.const 1312 - i32.store - i32.const 1312 - global.set $~lib/rt/itcms/pinSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/toSpace - i32.const 1492 - i32.const 1488 - i32.store - i32.const 1496 - i32.const 1488 - i32.store - i32.const 1488 - global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i64.const 1541847600001 call $~lib/date/Date#constructor @@ -7028,7 +7088,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -7052,7 +7112,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 20 i32.const 3 call $~lib/builtins/abort @@ -7075,7 +7135,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 28 i32.const 3 call $~lib/builtins/abort @@ -7093,7 +7153,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 29 i32.const 3 call $~lib/builtins/abort @@ -7111,7 +7171,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 30 i32.const 3 call $~lib/builtins/abort @@ -7126,7 +7186,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 31 i32.const 3 call $~lib/builtins/abort @@ -7141,7 +7201,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 32 i32.const 3 call $~lib/builtins/abort @@ -7156,7 +7216,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -7171,7 +7231,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 34 i32.const 3 call $~lib/builtins/abort @@ -7194,7 +7254,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 40 i32.const 3 call $~lib/builtins/abort @@ -7212,7 +7272,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 41 i32.const 3 call $~lib/builtins/abort @@ -7230,7 +7290,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -7245,7 +7305,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -7260,7 +7320,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -7275,7 +7335,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -7290,7 +7350,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -7310,7 +7370,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 52 i32.const 3 call $~lib/builtins/abort @@ -7331,7 +7391,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 54 i32.const 3 call $~lib/builtins/abort @@ -7352,7 +7412,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -7376,7 +7436,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 59 i32.const 3 call $~lib/builtins/abort @@ -7400,7 +7460,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -7419,7 +7479,7 @@ call $~lib/date/Date#getUTCMilliseconds if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -7437,7 +7497,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -7456,7 +7516,7 @@ call $~lib/date/Date#getUTCMilliseconds if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -7474,7 +7534,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -7494,7 +7554,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 74 i32.const 3 call $~lib/builtins/abort @@ -7515,7 +7575,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 76 i32.const 3 call $~lib/builtins/abort @@ -7536,7 +7596,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 78 i32.const 3 call $~lib/builtins/abort @@ -7560,7 +7620,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 81 i32.const 3 call $~lib/builtins/abort @@ -7584,7 +7644,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -7604,7 +7664,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 89 i32.const 3 call $~lib/builtins/abort @@ -7625,7 +7685,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 91 i32.const 3 call $~lib/builtins/abort @@ -7646,7 +7706,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 93 i32.const 3 call $~lib/builtins/abort @@ -7670,7 +7730,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 96 i32.const 3 call $~lib/builtins/abort @@ -7694,7 +7754,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -7714,7 +7774,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -7735,7 +7795,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 106 i32.const 3 call $~lib/builtins/abort @@ -7756,7 +7816,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -7780,7 +7840,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 111 i32.const 3 call $~lib/builtins/abort @@ -7804,7 +7864,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 113 i32.const 3 call $~lib/builtins/abort @@ -7827,7 +7887,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 119 i32.const 3 call $~lib/builtins/abort @@ -7845,7 +7905,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 120 i32.const 3 call $~lib/builtins/abort @@ -7869,7 +7929,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 124 i32.const 3 call $~lib/builtins/abort @@ -7893,7 +7953,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 126 i32.const 3 call $~lib/builtins/abort @@ -7957,7 +8017,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 141 i32.const 3 call $~lib/builtins/abort @@ -7995,7 +8055,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 146 i32.const 3 call $~lib/builtins/abort @@ -8013,7 +8073,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 147 i32.const 3 call $~lib/builtins/abort @@ -8031,7 +8091,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 148 i32.const 3 call $~lib/builtins/abort @@ -8046,7 +8106,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 149 i32.const 3 call $~lib/builtins/abort @@ -8061,7 +8121,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 150 i32.const 3 call $~lib/builtins/abort @@ -8076,7 +8136,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 151 i32.const 3 call $~lib/builtins/abort @@ -8105,7 +8165,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 155 i32.const 3 call $~lib/builtins/abort @@ -8129,7 +8189,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 157 i32.const 3 call $~lib/builtins/abort @@ -8153,7 +8213,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 160 i32.const 3 call $~lib/builtins/abort @@ -8177,7 +8237,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 163 i32.const 3 call $~lib/builtins/abort @@ -8201,7 +8261,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 166 i32.const 3 call $~lib/builtins/abort @@ -8225,7 +8285,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 169 i32.const 3 call $~lib/builtins/abort @@ -8254,7 +8314,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 173 i32.const 3 call $~lib/builtins/abort @@ -8283,7 +8343,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 177 i32.const 3 call $~lib/builtins/abort @@ -8314,7 +8374,7 @@ local.get $0 i32.load offset=8 local.get $3 - i32.const 1579 + i32.const 3547 i32.add i32.load8_u local.get $2 @@ -8367,7 +8427,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 187 i32.const 3 call $~lib/builtins/abort @@ -8398,7 +8458,7 @@ local.get $0 i32.load offset=8 local.get $3 - i32.const 1579 + i32.const 3547 i32.add i32.load8_u local.get $2 @@ -8451,7 +8511,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 188 i32.const 3 call $~lib/builtins/abort @@ -8482,7 +8542,7 @@ local.get $0 i32.load offset=8 local.get $3 - i32.const 1579 + i32.const 3547 i32.add i32.load8_u local.get $2 @@ -8535,7 +8595,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 189 i32.const 3 call $~lib/builtins/abort @@ -8566,7 +8626,7 @@ local.get $0 i32.load offset=8 local.get $3 - i32.const 1579 + i32.const 3547 i32.add i32.load8_u local.get $2 @@ -8619,7 +8679,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 190 i32.const 3 call $~lib/builtins/abort @@ -8650,7 +8710,7 @@ local.get $0 i32.load offset=8 local.get $3 - i32.const 1579 + i32.const 3547 i32.add i32.load8_u local.get $2 @@ -8703,7 +8763,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 192 i32.const 3 call $~lib/builtins/abort @@ -8734,7 +8794,7 @@ local.get $0 i32.load offset=8 local.get $3 - i32.const 1579 + i32.const 3547 i32.add i32.load8_u local.get $2 @@ -8787,7 +8847,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 193 i32.const 3 call $~lib/builtins/abort @@ -8818,7 +8878,7 @@ local.get $0 i32.load offset=8 local.get $3 - i32.const 1579 + i32.const 3547 i32.add i32.load8_u local.get $2 @@ -8871,7 +8931,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 194 i32.const 3 call $~lib/builtins/abort @@ -8902,7 +8962,7 @@ local.get $0 i32.load offset=8 local.get $3 - i32.const 1579 + i32.const 3547 i32.add i32.load8_u local.get $2 @@ -8953,7 +9013,7 @@ i32.add if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 195 i32.const 3 call $~lib/builtins/abort @@ -8976,7 +9036,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 201 i32.const 3 call $~lib/builtins/abort @@ -9002,7 +9062,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 203 i32.const 3 call $~lib/builtins/abort @@ -9028,7 +9088,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 205 i32.const 3 call $~lib/builtins/abort @@ -9046,7 +9106,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 206 i32.const 3 call $~lib/builtins/abort @@ -9072,7 +9132,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 209 i32.const 3 call $~lib/builtins/abort @@ -9098,7 +9158,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 211 i32.const 3 call $~lib/builtins/abort @@ -9124,7 +9184,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 215 i32.const 3 call $~lib/builtins/abort @@ -9142,7 +9202,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 216 i32.const 3 call $~lib/builtins/abort @@ -9168,7 +9228,7 @@ i32.sub if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 218 i32.const 3 call $~lib/builtins/abort @@ -9186,7 +9246,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 219 i32.const 3 call $~lib/builtins/abort @@ -9209,7 +9269,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 225 i32.const 3 call $~lib/builtins/abort @@ -9233,7 +9293,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 227 i32.const 3 call $~lib/builtins/abort @@ -9257,7 +9317,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 229 i32.const 3 call $~lib/builtins/abort @@ -9281,7 +9341,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 231 i32.const 3 call $~lib/builtins/abort @@ -9302,12 +9362,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 3696 + i32.const 3824 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 237 i32.const 3 call $~lib/builtins/abort @@ -9328,12 +9388,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 3776 + i32.const 3904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 239 i32.const 3 call $~lib/builtins/abort @@ -9354,12 +9414,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 3856 + i32.const 3984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 241 i32.const 3 call $~lib/builtins/abort @@ -9380,12 +9440,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 3936 + i32.const 4064 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 243 i32.const 3 call $~lib/builtins/abort @@ -9406,12 +9466,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 4016 + i32.const 4144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 245 i32.const 3 call $~lib/builtins/abort @@ -9432,12 +9492,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 4096 + i32.const 4224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 247 i32.const 3 call $~lib/builtins/abort @@ -9458,12 +9518,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 4176 + i32.const 4304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 249 i32.const 3 call $~lib/builtins/abort @@ -9484,12 +9544,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 4256 + i32.const 4384 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 251 i32.const 3 call $~lib/builtins/abort @@ -9510,12 +9570,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 4336 + i32.const 4464 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 253 i32.const 3 call $~lib/builtins/abort @@ -9536,12 +9596,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 5264 + i32.const 5392 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 259 i32.const 3 call $~lib/builtins/abort @@ -9562,12 +9622,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 5328 + i32.const 5456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 261 i32.const 3 call $~lib/builtins/abort @@ -9588,12 +9648,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 5392 + i32.const 5520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 264 i32.const 3 call $~lib/builtins/abort @@ -9614,12 +9674,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 5504 + i32.const 5632 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 270 i32.const 3 call $~lib/builtins/abort @@ -9640,12 +9700,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 5552 + i32.const 5680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 273 i32.const 3 call $~lib/builtins/abort @@ -9666,12 +9726,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 6448 + i32.const 6576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 279 i32.const 3 call $~lib/builtins/abort @@ -9692,12 +9752,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 6528 + i32.const 6656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 281 i32.const 3 call $~lib/builtins/abort @@ -9718,19 +9778,19 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 6608 + i32.const 6736 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 284 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6688 + i32.const 6816 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -9746,14 +9806,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 291 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6960 + i32.const 7088 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -9769,14 +9829,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 293 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 7008 + i32.const 7136 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -9792,14 +9852,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 295 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 7056 + i32.const 7184 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -9815,14 +9875,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 299 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 7120 + i32.const 7248 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -9838,14 +9898,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 303 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 7200 + i32.const 7328 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -9861,14 +9921,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 307 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 7280 + i32.const 7408 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -9884,14 +9944,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 311 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 7360 + i32.const 7488 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -9907,14 +9967,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 315 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 7440 + i32.const 7568 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -9930,14 +9990,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 319 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 7504 + i32.const 7632 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -9953,14 +10013,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 7584 + i32.const 7712 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -9976,14 +10036,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 327 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 7664 + i32.const 7792 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -9999,14 +10059,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 331 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 7744 + i32.const 7872 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -10022,14 +10082,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 335 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 7824 + i32.const 7952 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -10045,14 +10105,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 339 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 7920 + i32.const 8048 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -10068,14 +10128,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 342 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 7952 + i32.const 8080 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -10091,14 +10151,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 345 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 7984 + i32.const 8112 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -10114,14 +10174,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 348 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8016 + i32.const 8144 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -10137,14 +10197,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 351 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 6688 + i32.const 6816 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -10160,14 +10220,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 354 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8064 + i32.const 8192 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -10183,14 +10243,14 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 357 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 7056 + i32.const 7184 call $~lib/date/Date.fromString local.tee $0 i32.store offset=288 @@ -10206,7 +10266,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 360 i32.const 3 call $~lib/builtins/abort @@ -10234,7 +10294,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 378 i32.const 3 call $~lib/builtins/abort @@ -10252,7 +10312,7 @@ i64.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 379 i32.const 3 call $~lib/builtins/abort @@ -10270,7 +10330,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 381 i32.const 3 call $~lib/builtins/abort @@ -10288,7 +10348,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 382 i32.const 3 call $~lib/builtins/abort @@ -10306,7 +10366,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 384 i32.const 3 call $~lib/builtins/abort @@ -10324,7 +10384,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 385 i32.const 3 call $~lib/builtins/abort @@ -10342,7 +10402,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 387 i32.const 3 call $~lib/builtins/abort @@ -10360,7 +10420,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -10376,12 +10436,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 8128 + i32.const 8256 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -10397,12 +10457,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 8208 + i32.const 8336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -10430,7 +10490,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 396 i32.const 3 call $~lib/builtins/abort @@ -10448,7 +10508,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 397 i32.const 3 call $~lib/builtins/abort @@ -10466,7 +10526,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 398 i32.const 3 call $~lib/builtins/abort @@ -10479,7 +10539,7 @@ call $~lib/date/Date#getUTCHours if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 399 i32.const 3 call $~lib/builtins/abort @@ -10492,7 +10552,7 @@ call $~lib/date/Date#getUTCMinutes if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 400 i32.const 3 call $~lib/builtins/abort @@ -10505,7 +10565,7 @@ call $~lib/date/Date#getUTCSeconds if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 401 i32.const 3 call $~lib/builtins/abort @@ -10520,7 +10580,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 402 i32.const 3 call $~lib/builtins/abort @@ -10536,12 +10596,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 8288 + i32.const 8416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 404 i32.const 3 call $~lib/builtins/abort @@ -10557,12 +10617,12 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 8368 + i32.const 8496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3520 i32.const 405 i32.const 3 call $~lib/builtins/abort @@ -10574,8 +10634,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 1056 - i32.const 1104 + i32.const 3424 + i32.const 3472 i32.const 36 i32.const 26 call $~lib/builtins/abort @@ -10590,11 +10650,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8468 + i32.const 8596 i32.lt_s if - i32.const 41264 - i32.const 41312 + i32.const 41392 + i32.const 41440 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10637,4 +10697,147 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $~lib/array/Array<~lib/string/String> + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/date/Date + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/date/Date $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|01 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|01 + end + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner1 + end + unreachable + end + i32.const 41392 + i32.const 41440 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/std/hash.debug.wat b/tests/compiler/std/hash.debug.wat index 12f679f2a3..08ba932158 100644 --- a/tests/compiler/std/hash.debug.wat +++ b/tests/compiler/std/hash.debug.wat @@ -1,16 +1,37 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func)) - (type $2 (func (param f32) (result i32))) - (type $3 (func (param f64) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param f32) (result i32))) + (type $7 (func (param f64) (result i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (result i32))) + (type $10 (func (param i32 i64 i32))) + (type $11 (func (param i64 i32) (result i32))) + (type $12 (func (param i32 i64 i32 i32))) + (type $13 (func (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 33148)) (global $~lib/memory/__heap_base i32 (i32.const 33148)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") @@ -295,13 +316,2629 @@ (func $~start call $start:std/hash ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33344 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33344 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 33344 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 33472 + i32.const 33536 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 33344 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33616 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33616 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33616 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 33616 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33616 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33616 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33616 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33616 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33616 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 33616 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33616 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33616 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33616 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33344 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 33280 + i32.const 33616 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33616 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 33616 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 33616 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 33616 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33616 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 33280 + i32.const 33344 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 33916 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 33916 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 33916 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 33916 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 34336 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 34336 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 35392 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 35392 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~stack_check global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__data_end i32.lt_s if i32.const 33168 - i32.const 33216 + i32.const 35552 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -886,4 +3523,408 @@ local.get $19 return ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 32 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 33216 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 33248 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 33680 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 33680 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 35488 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 33712 + i32.const 33840 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 33904 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 33472 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 33280 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 34336 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 35392 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/std/hash.release.wat b/tests/compiler/std/hash.release.wat index 1620d1e03e..4b91d0cee3 100644 --- a/tests/compiler/std/hash.release.wat +++ b/tests/compiler/std/hash.release.wat @@ -1,9 +1,20 @@ (module (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func (param i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34172)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02") @@ -51,6 +62,1668 @@ i32.const 1376 call $~lib/util/hash/HASH<~lib/string/String|null> ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 34496 + call $~lib/rt/itcms/__visit + i32.const 34304 + call $~lib/rt/itcms/__visit + i32.const 35360 + call $~lib/rt/itcms/__visit + i32.const 36416 + call $~lib/rt/itcms/__visit + i32.const 4 + i32.load + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 34368 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + 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 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 34368 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$145 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34172 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34368 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$145 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 34368 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.load + i32.gt_u + if + i32.const 34496 + i32.const 34560 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.load offset=4 + i32.const 32 + i32.and + end + local.set $1 + i32.const 8 + i32.load + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $1 + select + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + i32.const 8 + local.get $0 + i32.store + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34640 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 34640 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34640 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 34640 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34640 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34640 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 34640 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 34640 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34640 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 34640 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 34640 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 34640 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34176 + i32.const 0 + i32.store + i32.const 35744 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34176 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34176 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34176 + i32.const 35748 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34176 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + i32.const 0 + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34172 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + local.get $1 + global.set $~lib/rt/itcms/white + i32.const 4 + i32.load + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + 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 34368 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34172 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34172 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 34640 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + i32.const 4 + i32.const 0 + i32.store + i32.const 8 + i32.const 0 + i32.store + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34640 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 34640 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 34304 + i32.const 34368 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$97 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$97 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 34304 + i32.const 34640 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 34640 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 34640 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 34640 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + i32.const 8 + i32.load + local.set $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + i32.const 8 + local.get $1 + i32.store + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 1404 + i32.lt_s + if + i32.const 34192 + i32.const 36576 + 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$101 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 34928 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$101 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 34940 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 34940 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 34940 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 34940 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/util/hash/HASH<~lib/string/String|null> (param $0 i32) (local $1 i32) (local $2 i32) @@ -68,7 +1741,7 @@ i32.lt_s if i32.const 34192 - i32.const 34240 + i32.const 36576 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -249,4 +1922,228 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$150 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1056 + local.set $0 + br $__inlined_func$~lib/string/String#concat$150 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34192 + i32.const 36576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + if + i32.const 34192 + i32.const 36576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 34240 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 34272 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 34704 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 34704 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 36512 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/std/map.debug.wat b/tests/compiler/std/map.debug.wat index da8784b71b..2c6118ba21 100644 --- a/tests/compiler/std/map.debug.wat +++ b/tests/compiler/std/map.debug.wat @@ -18,22 +18,28 @@ (type $16 (func (param i32 f32) (result i32))) (type $17 (func (param i32 f64 i32) (result i32))) (type $18 (func (param i32 f64) (result i32))) - (type $19 (func (param i32 i32 i32 i32))) - (type $20 (func (param i64) (result i32))) + (type $19 (func (param i64) (result i32))) + (type $20 (func (param i32 i32 i32 i32))) (type $21 (func (param i32 i32 i64))) (type $22 (func (param i32 i32) (result i64))) (type $23 (func (param i32 i64 i64) (result i32))) - (type $24 (func (param i32 i32 i64) (result i32))) - (type $25 (func (result i32))) - (type $26 (func (param f32) (result i32))) - (type $27 (func (param f64) (result i32))) - (type $28 (func (param i32 i32 f32))) - (type $29 (func (param i32 i32) (result f32))) - (type $30 (func (param i32 f32 f32) (result i32))) - (type $31 (func (param i32 i32 f64))) - (type $32 (func (param i32 i32) (result f64))) - (type $33 (func (param i32 f64 f64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $24 (func (param i32 i64 i32))) + (type $25 (func (param i64 i32) (result i32))) + (type $26 (func (param i32 i64 i32 i32))) + (type $27 (func (param i32 i32 i64) (result i32))) + (type $28 (func (result i32))) + (type $29 (func (param f32) (result i32))) + (type $30 (func (param f64) (result i32))) + (type $31 (func (param i32 i32 f32))) + (type $32 (func (param i32 i32) (result f32))) + (type $33 (func (param i32 f32 f32) (result i32))) + (type $34 (func (param i32 i32 f64))) + (type $35 (func (param i32 i32) (result f64))) + (type $36 (func (param i32 f64 f64) (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 $~lib/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -42,37 +48,474 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/rt/__rtti_base i32 (i32.const 736)) - (global $~lib/memory/__data_end i32 (i32.const 872)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33640)) - (global $~lib/memory/__heap_base i32 (i32.const 33640)) + (global $~lib/rt/__rtti_base i32 (i32.const 2704)) + (global $~lib/memory/__data_end i32 (i32.const 2840)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35608)) + (global $~lib/memory/__heap_base i32 (i32.const 35608)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $9 (i32.const 460) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $10 (i32.const 524) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 572) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 636) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00\00\00\00\00\00\00") - (data $13 (i32.const 684) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $14 (i32.const 736) "!\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\10\89\10\00B\08\00\00\02\t\00\00P\88\10\00\10\t\12\00\10\89\00\00B\00\00\00P\80\00\00\10\t\11\00\82\08\00\00\90\08\11\00\10\t\01\00\82\00\00\00\90\00\01\00\10\t\02\00\02\01\00\00\10\01\02\00\10\t\14\00\02\n\00\00\10\n\14\00\10\t\04\00\02\02\00\00\10\02\04\00\10\t2\00\02\19\00\00\10\192\00\10\t4\00\02\1a\00\00\10\1a4\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $20 (i32.const 2428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $21 (i32.const 2492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2540) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2604) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00\00\00\00\00\00\00") + (data $24 (i32.const 2652) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $25 (i32.const 2704) "!\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\10\89\10\00B\08\00\00\02\t\00\00P\88\10\00\10\t\12\00\10\89\00\00B\00\00\00P\80\00\00\10\t\11\00\82\08\00\00\90\08\11\00\10\t\01\00\82\00\00\00\90\00\01\00\10\t\02\00\02\01\00\00\10\01\02\00\10\t\14\00\02\n\00\00\10\n\14\00\10\t\04\00\02\02\00\00\10\02\04\00\10\t2\00\02\19\00\00\10\192\00\10\t4\00\02\1a\00\00\10\1a4\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -137,7 +580,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -207,7 +650,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -224,7 +667,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -254,8 +697,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -323,7 +766,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -475,7 +918,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -495,7 +938,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -558,7 +1001,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -711,7 +1154,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -728,7 +1171,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -817,7 +1260,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -860,7 +1303,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -878,7 +1321,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -946,7 +1389,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1063,7 +1506,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1109,7 +1552,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1141,7 +1584,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1385,7 +1828,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1605,7 +2048,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1713,8 +2156,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1816,7 +2259,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1887,7 +2330,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2044,7 +2487,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2159,7 +2602,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2179,7 +2622,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2227,8 +2670,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2288,7 +2731,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -5204,13 +5647,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace call $"std/map/testNumeric" @@ -5225,620 +5668,327 @@ call $"std/map/testNumeric" call $~lib/rt/itcms/__collect ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 432 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 592 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit + (func $~start + call $start:std/map ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35632 + i32.const 35680 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $"~lib/map/Map#__visit" + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store offset=4 local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store offset=8 local.get $1 - call $~lib/array/Array#__visit - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store offset=4 local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store offset=4 local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store offset=8 local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + call $"~lib/map/Map#set:entries" local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store offset=4 local.get $1 - call $~lib/array/Array#__visit - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store offset=4 local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store offset=4 local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + i32.const 0 + call $"~lib/map/Map#set:entriesCount" local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $"~lib/map/Map" - block $~lib/array/Array - block $"~lib/map/Map" - block $"~lib/map/Map" - block $~lib/array/Array - block $"~lib/map/Map" - block $"~lib/map/Map" - block $~lib/array/Array - block $"~lib/map/Map" - block $"~lib/map/Map" - block $~lib/array/Array - block $"~lib/map/Map" - block $"~lib/map/Map" - block $~lib/array/Array - block $"~lib/map/Map" - block $"~lib/map/Map" - block $~lib/array/Array - block $"~lib/map/Map" - block $"~lib/map/Map" - block $~lib/array/Array - block $"~lib/map/Map" - block $"~lib/map/Map" - block $~lib/array/Array - block $"~lib/map/Map" - block $"~lib/map/Map" - block $"~lib/map/Map" - block $~lib/array/Array - block $~lib/array/Array - block $"~lib/map/Map" - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"~lib/map/Map" $~lib/array/Array $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - unreachable - ) - (func $~start - call $start:std/map - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 33664 - i32.const 33712 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $"~lib/map/Map#constructor" (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $"~lib/map/Map#set:buckets" - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 4 - i32.const 1 - i32.sub - call $"~lib/map/Map#set:bucketsMask" - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.const 4 - block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) - i32.const 12 - br $"~lib/map/ENTRY_SIZE|inlined.0" - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $"~lib/map/Map#set:entries" - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 4 - call $"~lib/map/Map#set:entriesCapacity" - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $"~lib/map/Map#set:entriesOffset" - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $"~lib/map/Map#set:entriesCount" - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 ) (func $"~lib/map/Map#find" (param $this i32) (param $key i32) (param $hashCode i32) (result i32) @@ -6380,8 +6530,8 @@ local.get $entry i32.eqz if - i32.const 592 - i32.const 656 + i32.const 2560 + i32.const 2624 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -6487,8 +6637,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 704 + i32.const 2400 + i32.const 2672 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -6600,8 +6750,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 704 + i32.const 2400 + i32.const 2672 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -6703,8 +6853,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -6944,8 +7094,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 704 + i32.const 2400 + i32.const 2672 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -7041,8 +7191,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -7467,8 +7617,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -7519,8 +7669,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -8828,7 +8978,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -8857,7 +9007,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -8878,7 +9028,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -8903,7 +9053,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -8927,7 +9077,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -8948,7 +9098,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -8977,7 +9127,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -8998,7 +9148,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -9023,7 +9173,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -9101,7 +9251,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -9120,7 +9270,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -9169,7 +9319,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -9187,7 +9337,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -9211,7 +9361,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -9232,7 +9382,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -9259,7 +9409,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -9284,7 +9434,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -9309,7 +9459,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -9338,7 +9488,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -9365,7 +9515,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -9390,7 +9540,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -9415,7 +9565,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -10069,8 +10219,8 @@ local.get $entry i32.eqz if - i32.const 592 - i32.const 656 + i32.const 2560 + i32.const 2624 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -10176,8 +10326,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 704 + i32.const 2400 + i32.const 2672 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -10273,8 +10423,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -10700,8 +10850,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -11504,7 +11654,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -11533,7 +11683,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -11554,7 +11704,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -11579,7 +11729,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -11603,7 +11753,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -11624,7 +11774,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -11653,7 +11803,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -11674,7 +11824,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -11699,7 +11849,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -11777,7 +11927,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -11796,7 +11946,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -11845,7 +11995,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -11863,7 +12013,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -11887,7 +12037,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -11908,7 +12058,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -11935,7 +12085,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -11960,7 +12110,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -11985,7 +12135,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -12014,7 +12164,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -12041,7 +12191,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -12066,7 +12216,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -12091,7 +12241,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -12743,8 +12893,8 @@ local.get $entry i32.eqz if - i32.const 592 - i32.const 656 + i32.const 2560 + i32.const 2624 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -12850,8 +13000,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 704 + i32.const 2400 + i32.const 2672 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -12947,8 +13097,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -13374,8 +13524,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -14176,7 +14326,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -14205,7 +14355,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -14226,7 +14376,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -14251,7 +14401,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -14275,7 +14425,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -14296,7 +14446,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -14325,7 +14475,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -14346,7 +14496,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -14371,7 +14521,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -14449,7 +14599,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -14468,7 +14618,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -14517,7 +14667,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -14535,7 +14685,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -14559,7 +14709,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -14580,7 +14730,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -14607,7 +14757,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -14632,7 +14782,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -14657,7 +14807,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -14686,7 +14836,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -14713,7 +14863,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -14738,7 +14888,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -14763,7 +14913,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -15417,8 +15567,8 @@ local.get $entry i32.eqz if - i32.const 592 - i32.const 656 + i32.const 2560 + i32.const 2624 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -15524,8 +15674,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 704 + i32.const 2400 + i32.const 2672 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -15621,8 +15771,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -16048,8 +16198,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -16852,7 +17002,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -16881,7 +17031,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -16902,7 +17052,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -16927,7 +17077,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -16951,7 +17101,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -16972,7 +17122,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -17001,7 +17151,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -17022,7 +17172,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -17047,7 +17197,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -17125,7 +17275,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -17144,7 +17294,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -17193,7 +17343,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -17211,7 +17361,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -17235,7 +17385,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -17256,7 +17406,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -17283,7 +17433,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -17308,7 +17458,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -17333,7 +17483,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -17362,7 +17512,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -17389,7 +17539,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -17414,7 +17564,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -17439,7 +17589,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -17505,8 +17655,8 @@ local.get $entry i32.eqz if - i32.const 592 - i32.const 656 + i32.const 2560 + i32.const 2624 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -18015,7 +18165,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -18044,7 +18194,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -18065,7 +18215,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -18090,7 +18240,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -18114,7 +18264,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -18135,7 +18285,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -18164,7 +18314,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -18185,7 +18335,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -18210,7 +18360,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -18288,7 +18438,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -18307,7 +18457,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -18356,7 +18506,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -18374,7 +18524,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -18398,7 +18548,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -18419,7 +18569,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -18446,7 +18596,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -18471,7 +18621,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -18496,7 +18646,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -18525,7 +18675,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -18552,7 +18702,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -18577,7 +18727,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -18602,7 +18752,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -19252,8 +19402,8 @@ local.get $entry i32.eqz if - i32.const 592 - i32.const 656 + i32.const 2560 + i32.const 2624 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -19359,8 +19509,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 704 + i32.const 2400 + i32.const 2672 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -19456,8 +19606,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -19883,8 +20033,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -20683,7 +20833,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -20712,7 +20862,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -20733,7 +20883,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -20758,7 +20908,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -20782,7 +20932,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -20803,7 +20953,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -20832,7 +20982,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -20853,7 +21003,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -20878,7 +21028,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -20956,7 +21106,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -20975,7 +21125,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -21024,7 +21174,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -21042,7 +21192,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -21066,7 +21216,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -21087,7 +21237,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -21114,7 +21264,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -21139,7 +21289,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -21164,7 +21314,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -21193,7 +21343,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -21220,7 +21370,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -21245,7 +21395,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -21270,7 +21420,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -21920,8 +22070,8 @@ local.get $entry i32.eqz if - i32.const 592 - i32.const 656 + i32.const 2560 + i32.const 2624 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -22027,8 +22177,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 704 + i32.const 2400 + i32.const 2672 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -22124,8 +22274,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -22552,8 +22702,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -23352,7 +23502,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -23382,7 +23532,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -23404,7 +23554,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -23429,7 +23579,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -23453,7 +23603,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -23475,7 +23625,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -23505,7 +23655,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -23527,7 +23677,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -23552,7 +23702,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -23630,7 +23780,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -23650,7 +23800,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -23699,7 +23849,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -23717,7 +23867,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -23741,7 +23891,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -23763,7 +23913,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -23790,7 +23940,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -23815,7 +23965,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -23840,7 +23990,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -23870,7 +24020,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -23897,7 +24047,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -23922,7 +24072,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -23947,7 +24097,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -24597,8 +24747,8 @@ local.get $entry i32.eqz if - i32.const 592 - i32.const 656 + i32.const 2560 + i32.const 2624 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -24704,8 +24854,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 704 + i32.const 2400 + i32.const 2672 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -24801,8 +24951,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -25229,8 +25379,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -26029,7 +26179,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -26059,7 +26209,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -26081,7 +26231,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -26106,7 +26256,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -26130,7 +26280,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -26152,7 +26302,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -26182,7 +26332,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -26204,7 +26354,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -26229,7 +26379,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -26307,7 +26457,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -26327,7 +26477,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -26376,7 +26526,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -26394,7 +26544,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -26418,7 +26568,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -26440,7 +26590,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -26467,7 +26617,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -26492,7 +26642,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -26517,7 +26667,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -26547,7 +26697,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -26574,7 +26724,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -26599,7 +26749,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -26624,7 +26774,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -27274,8 +27424,8 @@ local.get $entry i32.eqz if - i32.const 592 - i32.const 656 + i32.const 2560 + i32.const 2624 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -27381,8 +27531,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 704 + i32.const 2400 + i32.const 2672 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -27478,8 +27628,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -27906,8 +28056,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -28706,7 +28856,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -28736,7 +28886,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -28758,7 +28908,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -28783,7 +28933,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -28807,7 +28957,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -28829,7 +28979,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -28859,7 +29009,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -28881,7 +29031,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -28906,7 +29056,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -28984,7 +29134,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -29004,7 +29154,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -29053,7 +29203,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -29071,7 +29221,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -29095,7 +29245,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -29117,7 +29267,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -29144,7 +29294,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -29169,7 +29319,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -29194,7 +29344,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -29224,7 +29374,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -29251,7 +29401,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -29276,7 +29426,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -29301,7 +29451,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -29951,8 +30101,8 @@ local.get $entry i32.eqz if - i32.const 592 - i32.const 656 + i32.const 2560 + i32.const 2624 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -30058,8 +30208,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 704 + i32.const 2400 + i32.const 2672 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -30155,8 +30305,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -30583,8 +30733,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 704 + i32.const 2192 + i32.const 2672 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -31383,7 +31533,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -31413,7 +31563,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -31435,7 +31585,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -31460,7 +31610,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -31484,7 +31634,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -31506,7 +31656,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -31536,7 +31686,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -31558,7 +31708,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -31583,7 +31733,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -31661,7 +31811,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -31681,7 +31831,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -31730,7 +31880,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -31748,7 +31898,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -31772,7 +31922,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -31794,7 +31944,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -31821,7 +31971,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -31846,7 +31996,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -31871,7 +32021,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -31901,7 +32051,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -31928,7 +32078,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -31953,7 +32103,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -31978,7 +32128,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -31989,6 +32139,698 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) + (local $buffer i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.gt_u + if + i32.const 2400 + i32.const 2448 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2400 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2560 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $"~lib/map/Map" + block $~lib/array/Array + block $"~lib/map/Map" + block $"~lib/map/Map" + block $~lib/array/Array + block $"~lib/map/Map" + block $"~lib/map/Map" + block $~lib/array/Array + block $"~lib/map/Map" + block $"~lib/map/Map" + block $~lib/array/Array + block $"~lib/map/Map" + block $"~lib/map/Map" + block $~lib/array/Array + block $"~lib/map/Map" + block $"~lib/map/Map" + block $~lib/array/Array + block $"~lib/map/Map" + block $"~lib/map/Map" + block $~lib/array/Array + block $"~lib/map/Map" + block $"~lib/map/Map" + block $~lib/array/Array + block $"~lib/map/Map" + block $"~lib/map/Map" + block $"~lib/map/Map" + block $~lib/array/Array + block $~lib/array/Array + block $"~lib/map/Map" + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"~lib/map/Map" $~lib/array/Array $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + unreachable + ) (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) (local $entries i32) (local $3 i32) @@ -32971,45 +33813,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) - (local $buffer i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $length - i32.const 1073741820 - i32.gt_u - if - i32.const 432 - i32.const 480 - i32.const 52 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $length - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $buffer - i32.store - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $buffer - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) ) diff --git a/tests/compiler/std/map.release.wat b/tests/compiler/std/map.release.wat index 4148a7ac94..57a2b04dcc 100644 --- a/tests/compiler/std/map.release.wat +++ b/tests/compiler/std/map.release.wat @@ -7,9 +7,9 @@ (type $5 (func (param i32))) (type $6 (func (param i32 i32 i32) (result i32))) (type $7 (func (param i32 i64) (result i32))) - (type $8 (func (param i32 i32 i32 i32))) - (type $9 (func (param i32 i32 i64))) - (type $10 (func (result i32))) + (type $8 (func (param i32 i32 i64))) + (type $9 (func (result i32))) + (type $10 (func (param i32 i32 i32 i32))) (type $11 (func (param i32 i64 i32) (result i32))) (type $12 (func (param i32 i64 i32))) (type $13 (func (param i32 i64 i64))) @@ -24,7 +24,6 @@ (type $22 (func (param i32 f64 i32))) (type $23 (func (param i32 f64 f64))) (type $24 (func (param i32 f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -35,43 +34,266 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34664)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36632)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) ",") - (data $8.1 (i32.const 1448) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $9 (i32.const 1484) "<") - (data $9.1 (i32.const 1496) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data $10 (i32.const 1548) ",") - (data $10.1 (i32.const 1560) "\02\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s") - (data $11 (i32.const 1596) "<") - (data $11.1 (i32.const 1608) "\02\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") - (data $12 (i32.const 1660) ",") - (data $12.1 (i32.const 1672) "\02\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") - (data $13 (i32.const 1708) ",") - (data $13.1 (i32.const 1720) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $14 (i32.const 1760) "!\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\10\89\10\00B\08\00\00\02\t\00\00P\88\10\00\10\t\12\00\10\89\00\00B\00\00\00P\80\00\00\10\t\11\00\82\08\00\00\90\08\11\00\10\t\01\00\82\00\00\00\90\00\01\00\10\t\02\00\02\01\00\00\10\01\02\00\10\t\14\00\02\n\00\00\10\n\14\00\10\t\04\00\02\02\00\00\10\02\04\00\10\t2\00\02\19\00\00\10\192\00\10\t4\00\02\1a\00\00\10\1a4") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $20 (i32.const 3452) "<") + (data $20.1 (i32.const 3464) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $21 (i32.const 3516) ",") + (data $21.1 (i32.const 3528) "\02\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s") + (data $22 (i32.const 3564) "<") + (data $22.1 (i32.const 3576) "\02\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") + (data $23 (i32.const 3628) ",") + (data $23.1 (i32.const 3640) "\02\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") + (data $24 (i32.const 3676) ",") + (data $24.1 (i32.const 3688) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $25 (i32.const 3728) "!\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\10\89\10\00B\08\00\00\02\t\00\00P\88\10\00\10\t\12\00\10\89\00\00B\00\00\00P\80\00\00\10\t\11\00\82\08\00\00\90\08\11\00\10\t\01\00\82\00\00\00\90\00\01\00\10\t\02\00\02\01\00\00\10\01\02\00\10\t\14\00\02\n\00\00\10\n\14\00\10\t\04\00\02\02\00\00\10\02\04\00\10\t2\00\02\19\00\00\10\192\00\10\t4\00\02\1a\00\00\10\1a4") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3864 + i32.lt_s + if + i32.const 36656 + i32.const 36704 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1456 + i32.const 3424 call $~lib/rt/itcms/__visit - i32.const 1616 + i32.const 3584 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -92,7 +314,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -125,7 +347,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -134,7 +356,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$1422 + block $__inlined_func$~lib/rt/itcms/Object#unlink$1435 local.get $0 i32.load offset=4 i32.const -4 @@ -146,19 +368,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34664 + i32.const 36632 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$1422 + br $__inlined_func$~lib/rt/itcms/Object#unlink$1435 end local.get $0 i32.load offset=8 @@ -166,7 +388,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -195,12 +417,12 @@ i32.const 1 else local.get $1 - i32.const 1760 + i32.const 3728 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -209,7 +431,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1764 + i32.const 3732 i32.add i32.load i32.const 32 @@ -280,7 +502,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -294,7 +516,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -340,7 +562,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -423,7 +645,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -437,7 +659,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -498,7 +720,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -531,7 +753,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -546,7 +768,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -597,7 +819,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -669,7 +891,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -694,7 +916,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -721,7 +943,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -793,10 +1015,10 @@ if unreachable end - i32.const 34672 + i32.const 36640 i32.const 0 i32.store - i32.const 36240 + i32.const 38208 i32.const 0 i32.store loop $for-loop|0 @@ -807,7 +1029,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34672 + i32.const 36640 i32.add i32.const 0 i32.store offset=4 @@ -825,7 +1047,7 @@ i32.add i32.const 2 i32.shl - i32.const 34672 + i32.const 36640 i32.add i32.const 0 i32.store offset=96 @@ -843,14 +1065,14 @@ br $for-loop|0 end end - i32.const 34672 - i32.const 36244 + i32.const 36640 + i32.const 38212 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34672 + i32.const 36640 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -935,7 +1157,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34664 + i32.const 36632 i32.lt_u if local.get $0 @@ -1024,14 +1246,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34664 + i32.const 36632 i32.lt_u if local.get $0 @@ -1054,7 +1276,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34664 + i32.const 36632 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1083,7 +1305,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1167,7 +1389,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1219,7 +1441,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1251,8 +1473,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1056 - i32.const 1120 + i32.const 3024 + i32.const 3088 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1262,7 +1484,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1283,7 +1505,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1316,8 +1538,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1056 - i32.const 1392 + i32.const 3024 + i32.const 3360 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1419,7 +1641,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1434,7 +1656,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1453,7 +1675,7 @@ i32.and if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1568,7 +1790,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1612,125 +1834,38 @@ end end ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) (func $~start memory.size i32.const 16 i32.shl - i32.const 34664 + i32.const 36632 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace call $"std/map/testNumeric" call $"std/map/testNumeric" @@ -1776,6 +1911,206 @@ i32.add global.set $~lib/rt/itcms/threshold ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3864 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3864 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$1441 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$1441 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36656 + i32.const 36704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3864 + i32.lt_s + if + i32.const 36656 + i32.const 36704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) global.get $~lib/memory/__stack_pointer @@ -1783,11 +2118,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1858,11 +2193,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1926,11 +2261,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2115,11 +2450,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2305,11 +2640,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2356,8 +2691,8 @@ local.tee $0 i32.eqz if - i32.const 1616 - i32.const 1680 + i32.const 3584 + i32.const 3648 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -2376,11 +2711,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2407,11 +2742,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2437,8 +2772,8 @@ i32.shr_u i32.gt_u if - i32.const 1456 - i32.const 1728 + i32.const 3424 + i32.const 3696 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -2478,7 +2813,7 @@ select local.set $1 end - block $__inlined_func$~lib/rt/itcms/__renew$1377 + block $__inlined_func$~lib/rt/itcms/__renew$1384 local.get $4 i32.const 20 i32.sub @@ -2496,7 +2831,7 @@ i32.store offset=16 local.get $4 local.set $2 - br $__inlined_func$~lib/rt/itcms/__renew$1377 + br $__inlined_func$~lib/rt/itcms/__renew$1384 end local.get $1 local.get $3 @@ -2544,11 +2879,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2569,8 +2904,8 @@ i32.const 0 i32.lt_s if - i32.const 1248 - i32.const 1728 + i32.const 3216 + i32.const 3696 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -2611,11 +2946,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2649,11 +2984,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2702,8 +3037,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1456 - i32.const 1728 + i32.const 3424 + i32.const 3696 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -2766,11 +3101,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2791,8 +3126,8 @@ i32.const 0 i32.lt_s if - i32.const 1248 - i32.const 1728 + i32.const 3216 + i32.const 3696 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -2835,11 +3170,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2875,11 +3210,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2960,11 +3295,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3048,11 +3383,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3077,11 +3412,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3098,8 +3433,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1728 + i32.const 3216 + i32.const 3696 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -3136,7 +3471,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3184,7 +3519,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3207,7 +3542,7 @@ i32.add i32.load local.set $3 - block $"__inlined_func$~lib/map/Map#find$1378" + block $"__inlined_func$~lib/map/Map#find$1385" loop $while-continue|0 local.get $3 if @@ -3231,7 +3566,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1378" + br $"__inlined_func$~lib/map/Map#find$1385" end local.get $4 i32.const -2 @@ -3306,7 +3641,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3554,8 +3889,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3568,11 +3903,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3648,11 +3983,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3837,11 +4172,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4027,11 +4362,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4164,11 +4499,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4252,7 +4587,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4265,7 +4600,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4353,7 +4688,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -4377,7 +4712,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -4395,7 +4730,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -4417,7 +4752,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -4439,7 +4774,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -4457,7 +4792,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -4481,7 +4816,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -4499,7 +4834,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -4521,7 +4856,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -4536,7 +4871,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4560,7 +4895,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4606,8 +4941,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1456 - i32.const 1728 + i32.const 3424 + i32.const 3696 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -4725,7 +5060,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4821,7 +5156,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4835,8 +5170,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1728 + i32.const 3216 + i32.const 3696 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -4871,7 +5206,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -4888,7 +5223,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -4927,7 +5262,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -4942,7 +5277,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -4964,7 +5299,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -4982,7 +5317,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -5002,7 +5337,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -5024,7 +5359,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -5045,7 +5380,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -5069,7 +5404,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -5089,7 +5424,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -5111,7 +5446,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -5129,7 +5464,7 @@ call $"~lib/map/Map#get:size" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -5141,8 +5476,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5154,11 +5489,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5223,11 +5558,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5412,11 +5747,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5603,11 +5938,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5655,8 +5990,8 @@ local.tee $0 i32.eqz if - i32.const 1616 - i32.const 1680 + i32.const 3584 + i32.const 3648 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -5685,7 +6020,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -5734,7 +6069,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -5757,7 +6092,7 @@ i32.add i32.load local.set $3 - block $"__inlined_func$~lib/map/Map#find$1383" + block $"__inlined_func$~lib/map/Map#find$1390" loop $while-continue|0 local.get $3 if @@ -5781,7 +6116,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1383" + br $"__inlined_func$~lib/map/Map#find$1390" end local.get $4 i32.const -2 @@ -5856,7 +6191,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -6104,8 +6439,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6118,11 +6453,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6265,7 +6600,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -6278,7 +6613,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -6366,7 +6701,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -6390,7 +6725,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -6408,7 +6743,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -6430,7 +6765,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -6452,7 +6787,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -6470,7 +6805,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -6494,7 +6829,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -6512,7 +6847,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -6534,7 +6869,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -6549,7 +6884,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -6573,7 +6908,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -6619,8 +6954,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1456 - i32.const 1728 + i32.const 3424 + i32.const 3696 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -6738,7 +7073,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -6834,7 +7169,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -6848,8 +7183,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1728 + i32.const 3216 + i32.const 3696 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -6884,7 +7219,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -6901,7 +7236,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -6940,7 +7275,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -6955,7 +7290,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -6977,7 +7312,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -6995,7 +7330,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -7015,7 +7350,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -7037,7 +7372,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -7058,7 +7393,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -7082,7 +7417,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -7102,7 +7437,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -7124,7 +7459,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -7142,7 +7477,7 @@ call $"~lib/map/Map#get:size" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -7154,8 +7489,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7168,11 +7503,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7243,11 +7578,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7311,11 +7646,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7500,11 +7835,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7690,11 +8025,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7741,8 +8076,8 @@ local.tee $0 i32.eqz if - i32.const 1616 - i32.const 1680 + i32.const 3584 + i32.const 3648 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -7762,11 +8097,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7787,8 +8122,8 @@ i32.const 0 i32.lt_s if - i32.const 1248 - i32.const 1728 + i32.const 3216 + i32.const 3696 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -7831,11 +8166,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7876,7 +8211,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -7924,7 +8259,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -7947,7 +8282,7 @@ i32.add i32.load local.set $3 - block $"__inlined_func$~lib/map/Map#find$1388" + block $"__inlined_func$~lib/map/Map#find$1395" loop $while-continue|0 local.get $3 if @@ -7971,7 +8306,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1388" + br $"__inlined_func$~lib/map/Map#find$1395" end local.get $4 i32.const -2 @@ -8046,7 +8381,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -8294,8 +8629,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8308,11 +8643,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8454,7 +8789,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -8467,7 +8802,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -8555,7 +8890,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -8579,7 +8914,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -8597,7 +8932,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -8619,7 +8954,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -8641,7 +8976,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -8659,7 +8994,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -8683,7 +9018,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -8701,7 +9036,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -8723,7 +9058,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -8738,7 +9073,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -8762,7 +9097,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -8808,8 +9143,8 @@ i32.const 536870910 i32.gt_u if - i32.const 1456 - i32.const 1728 + i32.const 3424 + i32.const 3696 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -8929,7 +9264,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -9025,7 +9360,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -9039,8 +9374,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1728 + i32.const 3216 + i32.const 3696 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -9077,7 +9412,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -9094,7 +9429,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -9133,7 +9468,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -9148,7 +9483,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -9170,7 +9505,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -9188,7 +9523,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -9208,7 +9543,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -9230,7 +9565,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -9251,7 +9586,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -9275,7 +9610,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -9295,7 +9630,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -9317,7 +9652,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -9335,7 +9670,7 @@ call $"~lib/map/Map#get:size" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -9347,8 +9682,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9360,11 +9695,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9429,11 +9764,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9618,11 +9953,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9809,11 +10144,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9861,8 +10196,8 @@ local.tee $0 i32.eqz if - i32.const 1616 - i32.const 1680 + i32.const 3584 + i32.const 3648 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -9891,7 +10226,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -9940,7 +10275,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -9963,7 +10298,7 @@ i32.add i32.load local.set $3 - block $"__inlined_func$~lib/map/Map#find$1393" + block $"__inlined_func$~lib/map/Map#find$1400" loop $while-continue|0 local.get $3 if @@ -9987,7 +10322,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1393" + br $"__inlined_func$~lib/map/Map#find$1400" end local.get $4 i32.const -2 @@ -10062,7 +10397,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -10310,8 +10645,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10324,11 +10659,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10471,7 +10806,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -10484,7 +10819,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -10572,7 +10907,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -10596,7 +10931,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -10614,7 +10949,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -10636,7 +10971,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -10658,7 +10993,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -10676,7 +11011,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -10700,7 +11035,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -10718,7 +11053,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -10740,7 +11075,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -10755,7 +11090,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -10779,7 +11114,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -10825,8 +11160,8 @@ i32.const 536870910 i32.gt_u if - i32.const 1456 - i32.const 1728 + i32.const 3424 + i32.const 3696 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -10946,7 +11281,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -11042,7 +11377,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -11056,8 +11391,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1728 + i32.const 3216 + i32.const 3696 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -11094,7 +11429,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -11111,7 +11446,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -11150,7 +11485,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -11165,7 +11500,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -11187,7 +11522,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -11205,7 +11540,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -11225,7 +11560,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -11247,7 +11582,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -11268,7 +11603,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -11292,7 +11627,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -11312,7 +11647,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -11334,7 +11669,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -11352,7 +11687,7 @@ call $"~lib/map/Map#get:size" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -11364,8 +11699,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11377,11 +11712,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11437,11 +11772,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11487,8 +11822,8 @@ local.tee $0 i32.eqz if - i32.const 1616 - i32.const 1680 + i32.const 3584 + i32.const 3648 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -11508,11 +11843,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11652,7 +11987,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -11676,7 +12011,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -11700,7 +12035,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -11718,7 +12053,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -11740,7 +12075,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -11762,7 +12097,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -11780,7 +12115,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -11804,7 +12139,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -11822,7 +12157,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -11844,7 +12179,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -11859,7 +12194,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -11981,7 +12316,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -11998,7 +12333,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -12037,7 +12372,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -12052,7 +12387,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -12074,7 +12409,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -12092,7 +12427,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -12112,7 +12447,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -12134,7 +12469,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -12155,7 +12490,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -12179,7 +12514,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -12199,7 +12534,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -12221,7 +12556,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -12239,7 +12574,7 @@ call $"~lib/map/Map#get:size" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -12251,8 +12586,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12265,11 +12600,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12338,11 +12673,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12405,11 +12740,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12594,11 +12929,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12783,11 +13118,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12833,8 +13168,8 @@ local.tee $0 i32.eqz if - i32.const 1616 - i32.const 1680 + i32.const 3584 + i32.const 3648 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -12863,7 +13198,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -12966,7 +13301,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -13214,8 +13549,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13228,11 +13563,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13373,7 +13708,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -13386,7 +13721,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -13474,7 +13809,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -13498,7 +13833,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -13516,7 +13851,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -13538,7 +13873,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -13560,7 +13895,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -13578,7 +13913,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -13602,7 +13937,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -13620,7 +13955,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -13642,7 +13977,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -13657,7 +13992,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -13681,7 +14016,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -13727,8 +14062,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1456 - i32.const 1728 + i32.const 3424 + i32.const 3696 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -13848,7 +14183,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -13944,7 +14279,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -13958,8 +14293,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1728 + i32.const 3216 + i32.const 3696 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -13996,7 +14331,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -14013,7 +14348,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -14052,7 +14387,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -14067,7 +14402,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -14089,7 +14424,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -14107,7 +14442,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -14127,7 +14462,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -14149,7 +14484,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -14170,7 +14505,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -14194,7 +14529,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -14214,7 +14549,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -14236,7 +14571,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -14254,7 +14589,7 @@ call $"~lib/map/Map#get:size" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -14266,8 +14601,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14280,11 +14615,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14353,11 +14688,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14433,11 +14768,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14634,11 +14969,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14835,11 +15170,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14897,8 +15232,8 @@ local.tee $0 i32.eqz if - i32.const 1616 - i32.const 1680 + i32.const 3584 + i32.const 3648 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -14918,11 +15253,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14943,8 +15278,8 @@ i32.const 0 i32.lt_s if - i32.const 1248 - i32.const 1728 + i32.const 3216 + i32.const 3696 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -14987,11 +15322,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15027,11 +15362,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15121,7 +15456,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -15138,7 +15473,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -15201,7 +15536,7 @@ i32.add i32.load local.set $3 - block $"__inlined_func$~lib/map/Map#find$1403" + block $"__inlined_func$~lib/map/Map#find$1410" loop $while-continue|0 local.get $3 if @@ -15223,7 +15558,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1403" + br $"__inlined_func$~lib/map/Map#find$1410" end local.get $4 i32.const -2 @@ -15298,7 +15633,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -15558,8 +15893,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15573,11 +15908,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15721,11 +16056,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15810,7 +16145,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -15823,7 +16158,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -15911,7 +16246,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -15936,7 +16271,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -15955,7 +16290,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -15977,7 +16312,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -15999,7 +16334,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -16018,7 +16353,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -16043,7 +16378,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -16062,7 +16397,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -16084,7 +16419,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -16099,7 +16434,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -16123,7 +16458,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -16169,8 +16504,8 @@ i32.const 134217727 i32.gt_u if - i32.const 1456 - i32.const 1728 + i32.const 3424 + i32.const 3696 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -16288,7 +16623,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -16386,7 +16721,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -16400,8 +16735,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1728 + i32.const 3216 + i32.const 3696 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -16438,7 +16773,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -16456,7 +16791,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -16495,7 +16830,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -16510,7 +16845,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -16532,7 +16867,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -16551,7 +16886,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -16571,7 +16906,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -16593,7 +16928,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -16614,7 +16949,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -16639,7 +16974,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -16659,7 +16994,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -16681,7 +17016,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -16699,7 +17034,7 @@ call $"~lib/map/Map#get:size" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -16711,8 +17046,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16725,11 +17060,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16798,11 +17133,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16878,11 +17213,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17079,11 +17414,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17280,11 +17615,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17342,8 +17677,8 @@ local.tee $0 i32.eqz if - i32.const 1616 - i32.const 1680 + i32.const 3584 + i32.const 3648 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -17373,7 +17708,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -17390,7 +17725,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -17453,7 +17788,7 @@ i32.add i32.load local.set $3 - block $"__inlined_func$~lib/map/Map#find$1408" + block $"__inlined_func$~lib/map/Map#find$1415" loop $while-continue|0 local.get $3 if @@ -17475,7 +17810,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1408" + br $"__inlined_func$~lib/map/Map#find$1415" end local.get $4 i32.const -2 @@ -17550,7 +17885,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -17810,8 +18145,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17825,11 +18160,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17983,7 +18318,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -17996,7 +18331,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -18084,7 +18419,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -18109,7 +18444,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -18128,7 +18463,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -18150,7 +18485,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -18172,7 +18507,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -18191,7 +18526,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -18216,7 +18551,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -18235,7 +18570,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -18257,7 +18592,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -18272,7 +18607,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -18296,7 +18631,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -18342,8 +18677,8 @@ i32.const 134217727 i32.gt_u if - i32.const 1456 - i32.const 1728 + i32.const 3424 + i32.const 3696 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -18461,7 +18796,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -18559,7 +18894,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -18573,8 +18908,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1728 + i32.const 3216 + i32.const 3696 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -18611,7 +18946,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -18629,7 +18964,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -18668,7 +19003,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -18683,7 +19018,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -18705,7 +19040,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -18724,7 +19059,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -18744,7 +19079,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -18766,7 +19101,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -18787,7 +19122,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -18812,7 +19147,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -18832,7 +19167,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -18854,7 +19189,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -18872,7 +19207,7 @@ call $"~lib/map/Map#get:size" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -18884,8 +19219,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18898,11 +19233,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18971,11 +19306,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19040,11 +19375,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19230,11 +19565,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19420,11 +19755,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19471,8 +19806,8 @@ local.tee $0 i32.eqz if - i32.const 1616 - i32.const 1680 + i32.const 3584 + i32.const 3648 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -19499,7 +19834,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -19523,7 +19858,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -19569,8 +19904,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1456 - i32.const 1728 + i32.const 3424 + i32.const 3696 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -19658,7 +19993,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -19676,8 +20011,8 @@ i32.const 0 i32.lt_s if - i32.const 1248 - i32.const 1728 + i32.const 3216 + i32.const 3696 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -19734,8 +20069,8 @@ local.get $6 return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19758,7 +20093,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -19862,7 +20197,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -20111,8 +20446,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20126,11 +20461,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20271,7 +20606,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -20284,7 +20619,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -20372,7 +20707,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -20397,7 +20732,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -20416,7 +20751,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -20438,7 +20773,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -20460,7 +20795,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -20479,7 +20814,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -20504,7 +20839,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -20523,7 +20858,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -20545,7 +20880,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -20573,7 +20908,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -20669,7 +21004,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -20683,8 +21018,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1728 + i32.const 3216 + i32.const 3696 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -20721,7 +21056,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -20739,7 +21074,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -20778,7 +21113,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -20793,7 +21128,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -20815,7 +21150,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -20834,7 +21169,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -20854,7 +21189,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -20876,7 +21211,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -20897,7 +21232,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -20922,7 +21257,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -20942,7 +21277,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -20964,7 +21299,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -20982,7 +21317,7 @@ call $"~lib/map/Map#get:size" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -20994,8 +21329,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21008,11 +21343,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21082,11 +21417,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21165,11 +21500,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21369,11 +21704,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21573,11 +21908,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21637,8 +21972,8 @@ local.tee $0 i32.eqz if - i32.const 1616 - i32.const 1680 + i32.const 3584 + i32.const 3648 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -21665,7 +22000,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -21689,7 +22024,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -21735,8 +22070,8 @@ i32.const 134217727 i32.gt_u if - i32.const 1456 - i32.const 1728 + i32.const 3424 + i32.const 3696 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -21824,7 +22159,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -21842,8 +22177,8 @@ i32.const 0 i32.lt_s if - i32.const 1248 - i32.const 1728 + i32.const 3216 + i32.const 3696 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -21900,8 +22235,8 @@ local.get $6 return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21925,7 +22260,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -21942,7 +22277,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -22007,7 +22342,7 @@ i32.add i32.load local.set $3 - block $"__inlined_func$~lib/map/Map#find$1418" + block $"__inlined_func$~lib/map/Map#find$1425" loop $while-continue|0 local.get $3 if @@ -22029,7 +22364,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1418" + br $"__inlined_func$~lib/map/Map#find$1425" end local.get $4 i32.const -2 @@ -22104,7 +22439,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -22366,8 +22701,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22382,11 +22717,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22540,7 +22875,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -22553,7 +22888,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -22641,7 +22976,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -22666,7 +23001,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -22685,7 +23020,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -22707,7 +23042,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -22729,7 +23064,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 15 i32.const 5 call $~lib/builtins/abort @@ -22748,7 +23083,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -22773,7 +23108,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 5 call $~lib/builtins/abort @@ -22792,7 +23127,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -22814,7 +23149,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -22842,7 +23177,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -22938,7 +23273,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -22952,8 +23287,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1728 + i32.const 3216 + i32.const 3696 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -22990,7 +23325,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -23008,7 +23343,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 32 i32.const 5 call $~lib/builtins/abort @@ -23047,7 +23382,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -23062,7 +23397,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -23084,7 +23419,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -23103,7 +23438,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 42 i32.const 5 call $~lib/builtins/abort @@ -23123,7 +23458,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -23145,7 +23480,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -23166,7 +23501,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 50 i32.const 5 call $~lib/builtins/abort @@ -23191,7 +23526,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 52 i32.const 5 call $~lib/builtins/abort @@ -23211,7 +23546,7 @@ call $"~lib/map/Map#has" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -23233,7 +23568,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -23251,7 +23586,7 @@ call $"~lib/map/Map#get:size" if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -23263,8 +23598,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23276,11 +23611,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1896 + i32.const 3864 i32.lt_s if - i32.const 34688 - i32.const 34736 + i32.const 36656 + i32.const 36704 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23293,8 +23628,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1456 - i32.const 1504 + i32.const 3424 + i32.const 3472 i32.const 52 i32.const 43 call $~lib/builtins/abort @@ -23312,4 +23647,91 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3864 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3864 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36656 + i32.const 36704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) ) diff --git a/tests/compiler/std/math.debug.wat b/tests/compiler/std/math.debug.wat index 5589c2107b..0bbe0d798a 100644 --- a/tests/compiler/std/math.debug.wat +++ b/tests/compiler/std/math.debug.wat @@ -2,33 +2,41 @@ (type $0 (func (param f64) (result f64))) (type $1 (func (param f64 f64 f64 i32) (result i32))) (type $2 (func (param f32 f32 f32 i32) (result i32))) - (type $3 (func (param f32) (result f32))) - (type $4 (func (param f64 f64) (result f64))) - (type $5 (func (param f64 f64 f64 f64 i32) (result i32))) - (type $6 (func (param f32 f32 f32 f32 i32) (result i32))) - (type $7 (func (param f32 f32) (result f32))) - (type $8 (func (result f64))) - (type $9 (func (param f64) (result i32))) - (type $10 (func)) - (type $11 (func (param f64 i32) (result f64))) - (type $12 (func (param f64 f64 f64) (result f64))) - (type $13 (func (param i32 i32 i32 i32))) - (type $14 (func (param f32) (result i32))) - (type $15 (func (param f32 i32) (result f32))) - (type $16 (func (param f32 f32 f32) (result f32))) - (type $17 (func (param f64 i32 f64 f64 i32) (result i32))) - (type $18 (func (param f32 i32 f32 f32 i32) (result i32))) - (type $19 (func (param f64 i64) (result i32))) - (type $20 (func (param f64 f64) (result i32))) - (type $21 (func (param i64) (result i64))) - (type $22 (func (param i32) (result i32))) - (type $23 (func (param i64))) - (type $24 (func (result f32))) - (type $25 (func (param f64 f64 i32) (result f64))) - (type $26 (func (param f64))) - (type $27 (func (param i64 i64 i64 i64 i64 i32) (result i32))) - (type $28 (func (param i64 i64) (result i64))) - (type $29 (func (param i32 i32) (result i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param f32) (result f32))) + (type $5 (func (param i32 i32))) + (type $6 (func (param f64 f64) (result f64))) + (type $7 (func (param i32 i32) (result i32))) + (type $8 (func (param i32))) + (type $9 (func (param f64 f64 f64 f64 i32) (result i32))) + (type $10 (func (param f32 f32 f32 f32 i32) (result i32))) + (type $11 (func)) + (type $12 (func (param f32 f32) (result f32))) + (type $13 (func (param i32 i32 i32))) + (type $14 (func (result f64))) + (type $15 (func (param f64) (result i32))) + (type $16 (func (param f64 i32) (result f64))) + (type $17 (func (param f64 f64 f64) (result f64))) + (type $18 (func (param i32 i32 i64) (result i32))) + (type $19 (func (result i32))) + (type $20 (func (param i32 i64 i32))) + (type $21 (func (param i64 i32) (result i32))) + (type $22 (func (param i32 i64 i32 i32))) + (type $23 (func (param f32) (result i32))) + (type $24 (func (param f32 i32) (result f32))) + (type $25 (func (param f32 f32 f32) (result f32))) + (type $26 (func (param f64 i32 f64 f64 i32) (result i32))) + (type $27 (func (param f32 i32 f32 f32 i32) (result i32))) + (type $28 (func (param f64 i64) (result i32))) + (type $29 (func (param f64 f64) (result i32))) + (type $30 (func (param i64) (result i64))) + (type $31 (func (param i64))) + (type $32 (func (result f32))) + (type $33 (func (param f64 f64 i32) (result f64))) + (type $34 (func (param f64))) + (type $35 (func (param i64 i64 i64 i64 i64 i32) (result i32))) + (type $36 (func (param i64 i64) (result i64))) + (type $37 (func (param i32 i32 i32 i32))) (import "env" "Math.E" (global $~lib/bindings/dom/Math.E f64)) (import "env" "Math.LN2" (global $~lib/bindings/dom/Math.LN2 f64)) (import "env" "Math.LN10" (global $~lib/bindings/dom/Math.LN10 f64)) @@ -36,7 +44,6 @@ (import "env" "Math.PI" (global $~lib/bindings/dom/Math.PI f64)) (import "env" "Math.SQRT1_2" (global $~lib/bindings/dom/Math.SQRT1_2 f64)) (import "env" "Math.SQRT2" (global $~lib/bindings/dom/Math.SQRT2 f64)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "Math.abs" (func $~lib/bindings/dom/Math.abs (param f64) (result f64))) (import "env" "Math.acos" (func $~lib/bindings/dom/Math.acos (param f64) (result f64))) (import "env" "Math.acosh" (func $~lib/bindings/dom/Math.acosh (param f64) (result f64))) @@ -79,6 +86,21 @@ (global $std/math/kTwo120 f64 (f64.const 1329227995784915872903807e12)) (global $~lib/math/NativeMath.E f64 (f64.const 2.718281828459045)) (global $~lib/math/NativeMathf.E f32 (f32.const 2.7182817459106445)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/math/NativeMath.LN2 f64 (f64.const 0.6931471805599453)) (global $~lib/math/NativeMath.LN10 f64 (f64.const 2.302585092994046)) (global $~lib/math/NativeMath.LOG2E f64 (f64.const 1.4426950408889634)) @@ -91,7 +113,6 @@ (global $~lib/math/NativeMathf.PI f32 (f32.const 3.1415927410125732)) (global $~lib/math/NativeMathf.SQRT1_2 f32 (f32.const 0.7071067690849304)) (global $~lib/math/NativeMathf.SQRT2 f32 (f32.const 1.4142135381698608)) - (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/math/rempio2_y0 (mut f64) (f64.const 0)) (global $~lib/math/rempio2_y1 (mut f64) (f64.const 0)) (global $~lib/math/res128_hi (mut i64) (i64.const 0)) @@ -109,22 +130,43 @@ (global $~lib/builtins/f64.MAX_VALUE f64 (f64.const 1797693134862315708145274e284)) (global $~lib/builtins/f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991)) (global $~lib/builtins/f64.EPSILON f64 (f64.const 2.220446049250313e-16)) - (global $~lib/memory/__data_end i32 (i32.const 13344)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 46112)) - (global $~lib/memory/__heap_base i32 (i32.const 46112)) + (global $~lib/rt/__rtti_base i32 (i32.const 15712)) + (global $~lib/memory/__data_end i32 (i32.const 15732)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 48500)) + (global $~lib/memory/__heap_base i32 (i32.const 48500)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s\00\00\00\00\00\00\00") - (data $1 (i32.const 64) "\9f\de\e0\c3\f04\f7?\00\90\e6y\7f\cc\d7\bf\1f\e9,jx\13\f7?\00\00\r\c2\eeo\d7\bf\a0\b5\fa\08`\f2\f6?\00\e0Q\13\e3\13\d7\bf}\8c\13\1f\a6\d1\f6?\00x(8[\b8\d6\bf\d1\b4\c5\0bI\b1\f6?\00x\80\90U]\d6\bf\ba\0c/3G\91\f6?\00\00\18v\d0\02\d6\bf#B\"\18\9fq\f6?\00\90\90\86\ca\a8\d5\bf\d9\1e\a5\99OR\f6?\00P\03VCO\d5\bf\c4$\8f\aaV3\f6?\00@k\c37\f6\d4\bf\14\dc\9dk\b3\14\f6?\00P\a8\fd\a7\9d\d4\bfL\\\c6Rd\f6\f5?\00\a8\899\92E\d4\bfO,\91\b5g\d8\f5?\00\b8\b09\f4\ed\d3\bf\de\90[\cb\bc\ba\f5?\00p\8fD\ce\96\d3\bfx\1a\d9\f2a\9d\f5?\00\a0\bd\17\1e@\d3\bf\87VF\12V\80\f5?\00\80F\ef\e2\e9\d2\bf\d3k\e7\ce\97c\f5?\00\e008\1b\94\d2\bf\93\7f\a7\e2%G\f5?\00\88\da\8c\c5>\d2\bf\83E\06B\ff*\f5?\00\90\')\e1\e9\d1\bf\df\bd\b2\db\"\0f\f5?\00\f8H+m\95\d1\bf\d7\de4G\8f\f3\f4?\00\f8\b9\9agA\d1\bf@(\de\cfC\d8\f4?\00\98\ef\94\d0\ed\d0\bf\c8\a3x\c0>\bd\f4?\00\10\db\18\a5\9a\d0\bf\8a%\e0\c3\7f\a2\f4?\00\b8cR\e6G\d0\bf4\84\d4$\05\88\f4?\00\f0\86E\"\eb\cf\bf\0b-\19\1b\cem\f4?\00\b0\17uJG\cf\bfT\189\d3\d9S\f4?\000\10=D\a4\ce\bfZ\84\b4D\':\f4?\00\b0\e9D\r\02\ce\bf\fb\f8\15A\b5 \f4?\00\f0w)\a2`\cd\bf\b1\f4>\da\82\07\f4?\00\90\95\04\01\c0\cc\bf\8f\feW]\8f\ee\f3?\00\10\89V) \cc\bf\e9L\0b\a0\d9\d5\f3?\00\10\81\8d\17\81\cb\bf+\c1\10\c0`\bd\f3?\00\d0\d3\cc\c9\e2\ca\bf\b8\dau+$\a5\f3?\00\90\12.@E\ca\bf\02\d0\9f\cd\"\8d\f3?\00\f0\1dhw\a8\c9\bf\1cz\84\c5[u\f3?\000Him\0c\c9\bf\e26\adI\ce]\f3?\00\c0E\a6 q\c8\bf@\d4M\98yF\f3?\000\14\b4\8f\d6\c7\bf$\cb\ff\ce\\/\f3?\00pb<\b8<\c7\bfI\r\a1uw\18\f3?\00`7\9b\9a\a3\c6\bf\909>7\c8\01\f3?\00\a0\b7T1\0b\c6\bfA\f8\95\bbN\eb\f2?\000$v}s\c5\bf\d1\a9\19\02\n\d5\f2?\000\c2\8f{\dc\c4\bf*\fd\b7\a8\f9\be\f2?\00\00\d2Q,F\c4\bf\ab\1b\0cz\1c\a9\f2?\00\00\83\bc\8a\b0\c3\bf0\b5\14`r\93\f2?\00\00Ik\99\1b\c3\bf\f5\a1WW\fa}\f2?\00@\a4\90T\87\c2\bf\bf;\1d\9b\b3h\f2?\00\a0y\f8\b9\f3\c1\bf\bd\f5\8f\83\9dS\f2?\00\a0,%\c8`\c1\bf;\08\c9\aa\b7>\f2?\00 \f7W\7f\ce\c0\bf\b6@\a9+\01*\f2?\00\a0\feI\dc<\c0\bf2A\cc\96y\15\f2?\00\80K\bc\bdW\bf\bf\9b\fc\d2\1d \01\f2?\00@@\96\087\be\bf\0bHMI\f4\ec\f1?\00@\f9>\98\17\bd\bfie\8fR\f5\d8\f1?\00\a0\d8Ng\f9\bb\bf|~W\11#\c5\f1?\00`/ y\dc\ba\bf\e9&\cbt|\b1\f1?\00\80(\e7\c3\c0\b9\bf\b6\1a,\0c\01\9e\f1?\00\c0r\b3F\a6\b8\bf\bdp\b6{\b0\8a\f1?\00\00\ac\b3\01\8d\b7\bf\b6\bc\ef%\8aw\f1?\00\008E\f1t\b6\bf\da1L5\8dd\f1?\00\80\87m\0e^\b5\bf\dd_\'\90\b9Q\f1?\00\e0\a1\de\\H\b4\bfL\d22\a4\0e?\f1?\00\a0jM\d93\b3\bf\da\f9\10r\8b,\f1?\00`\c5\f8y \b2\bf1\b5\ec(0\1a\f1?\00 b\98F\0e\b1\bf\af4\84\da\fb\07\f1?\00\00\d2jl\fa\af\bf\b3kN\0f\ee\f5\f0?\00@wJ\8d\da\ad\bf\ce\9f*]\06\e4\f0?\00\00\85\e4\ec\bc\ab\bf!\a5,cD\d2\f0?\00\c0\12@\89\a1\a9\bf\1a\98\e2|\a7\c0\f0?\00\c0\023X\88\a7\bf\d16\c6\83/\af\f0?\00\80\d6g^q\a5\bf9\13\a0\98\db\9d\f0?\00\80eI\8a\\\a3\bf\df\e7R\af\ab\8c\f0?\00@\15d\e3I\a1\bf\fb(N/\9f{\f0?\00\80\eb\82\c0r\9e\bf\19\8f5\8c\b5j\f0?\00\80RR\f1U\9a\bf,\f9\ec\a5\eeY\f0?\00\80\81\cfb=\96\bf\90,\d1\cdII\f0?\00\00\aa\8c\fb(\92\bf\a9\ad\f0\c6\c68\f0?\00\00\f9 {1\8c\bf\a92y\13e(\f0?\00\00\aa]5\19\84\bfHs\ea\'$\18\f0?\00\00\ec\c2\03\12x\bf\95\b1\14\06\04\08\f0?\00\00$y\t\04`\bf\1a\fa&\f7\1f\e0\ef?\00\00\90\84\f3\efo?t\eaa\c2\1c\a1\ef?\00\00=5A\dc\87?.\99\81\b0\10c\ef?\00\80\c2\c4\a3\ce\93?\cd\ad\ee<\f6%\ef?\00\00\89\14\c1\9f\9b?\e7\13\91\03\c8\e9\ee?\00\00\11\ce\d8\b0\a1?\ab\b1\cbx\80\ae\ee?\00\c0\01\d0[\8a\a5?\9b\0c\9d\a2\1at\ee?\00\80\d8@\83\\\a9?\b5\99\n\83\91:\ee?\00\80W\efj\'\ad?V\9a`\t\e0\01\ee?\00\c0\98\e5\98u\b0?\98\bbw\e5\01\ca\ed?\00 \r\e3\f5S\b2?\03\91|\0b\f2\92\ed?\00\008\8b\dd.\b4?\ce\\\fbf\ac\\\ed?\00\c0W\87Y\06\b6?\9d\de^\aa,\'\ed?\00\00j5v\da\b7?\cd,k>n\f2\ec?\00`\1cNC\ab\b9?\02y\a7\a2m\be\ec?\00`\r\bb\c7x\bb?m\087m&\8b\ec?\00 \e72\13C\bd?\04X]\bd\94X\ec?\00`\deq1\n\bf?\8c\9f\bb3\b5&\ec?\00@\91+\15g\c0??\e7\ec\ee\83\f5\eb?\00\b0\92\82\85G\c1?\c1\96\dbu\fd\c4\eb?\000\ca\cdn&\c2?(J\86\0c\1e\95\eb?\00P\c5\a6\d7\03\c3?,>\ef\c5\e2e\eb?\00\103<\c3\df\c3?\8b\88\c9gH7\eb?\00\80zk6\ba\c4?J0\1d!K\t\eb?\00\f0\d1(9\93\c5?~\ef\f2\85\e8\db\ea?\00\f0\18$\cdj\c6?\a2=`1\1d\af\ea?\00\90f\ec\f8@\c7?\a7X\d3?\e6\82\ea?\00\f0\1a\f5\c0\15\c8?\8bs\t\ef@W\ea?\00\80\f6T)\e9\c8?\'K\ab\90*,\ea?\00@\f8\026\bb\c9?\d1\f2\93\13\a0\01\ea?\00\00,\1c\ed\8b\ca?\1b<\db$\9f\d7\e9?\00\d0\01\\Q[\cb?\90\b1\c7\05%\ae\e9?\00\c0\bc\ccg)\cc?/\ce\97\f2.\85\e9?\00`H\d55\f6\cc?uK\a4\ee\ba\\\e9?\00\c0F4\bd\c1\cd?8H\e7\9d\c64\e9?\00\e0\cf\b8\01\8c\ce?\e6Rg/O\r\e9?\00\90\17\c0\tU\cf?\9d\d7\ff\8eR\e6\e8?\00\b8\1f\12l\0e\d0?|\00\cc\9f\ce\bf\e8?\00\d0\93\0e\b8q\d0?\0e\c3\be\da\c0\99\e8?\00p\86\9ek\d4\d0?\fb\17#\aa\'t\e8?\00\d0K3\876\d1?\08\9a\b3\ac\00O\e8?\00H#g\r\98\d1?U>e\e8I*\e8?\00\80\cc\e0\ff\f8\d1?`\02\f4\95\01\06\e8?\00hc\d7_Y\d2?)\a3\e0c%\e2\e7?\00\a8\14\t0\b9\d2?\ad\b5\dcw\b3\be\e7?\00`C\10r\18\d3?\c2%\97g\aa\9b\e7?\00\18\ecm&w\d3?W\06\17\f2\07y\e7?\000\af\fbO\d5\d3?\0c\13\d6\db\caV\e7?\00\e0/\e3\ee2\d4?") - (data $2 (i32.const 2112) "k\b6O\01\00\10\e6?<[B\91l\02~<\95\b4M\03\000\e6?A]\00H\ea\bf\8d\f6\05\eb\ff\ef\e6?S-\e2\1a\04\80~\bc\80\97\86\0e\00\10\e7?Ry\tqf\ff{<\12\e9g\fc\ff/\e7?$\87\bd&\e2\00\8c\89<\b9{F\13\000\e9?v\02\98KN\80\7f.\98\dd\ff\af\e9?7\93Z\8a\e0@\87\bcf\fbI\ed\ff\cf\e9?\00\e0\9b\c1\08\ce?O*\00\b0\ea?_?\ff<\04\fdi\bc\d1\1e\ae\d7\ff\cf\ea?\b4p\90\12\e7>\82\bcx\04Q\ee\ff\ef\ea?\a3\de\0e\e0>\06j<[\re\db\ff\0f\eb?\b9\n\1f8\c8\06ZO\86\d0E\ff\8a<@\16\87\f9\ff\8f\eb?\f9\c3\c2\96w\fe|\f0\0f\00\f0\f4?\1cS\85\0b\89\7f\97<\d1K\dc\12\00\10\f5?6\a4fqe\04`\c9\03\00\b0\f5?\c0\0c\bf\n\08A\9f\bc\bc\19I\1d\00\d0\f5?)G%\fb*\81\98\bc\89z\b8\e7\ff\ef\f5?\04i\ed\80\b7~\94\bc") - (data $3 (i32.const 4160) "\be\f3\f8y\eca\f6?\de\aa\8c\80\f7{\d5\bf=\88\afJ\edq\f5?\dbm\c0\a7\f0\be\d2\bf\b0\10\f0\f09\95\f4?g:Q\7f\ae\1e\d0\bf\85\03\b8\b0\95\c9\f3?\e9$\82\a6\d81\cb\bf\a5d\88\0c\19\r\f3?Xw\c0\nOW\c6\bf\a0\8e\0b{\"^\f2?\00\81\9c\c7+\aa\c1\bf?4\1aJJ\bb\f1?^\0e\8c\cevN\ba\bf\ba\e5\8a\f0X#\f1?\cc\1caZ<\97\b1\bf\a7\00\99A?\95\f0?\1e\0c\e18\f4R\a2\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?\84Y\f2]\aa\a5\aa?\a0j\02\1f\b3\a4\ec?\b4.6\aaS^\bc?\e6\fcjW6 \eb?\08\db w\e5&\c5?-\aa\a1c\d1\c2\e9?pG\"\r\86\c2\cb?\edAx\03\e6\86\e8?\e1~\a0\c8\8b\05\d1?bHS\f5\dcg\e7?\t\ee\b6W0\04\d4?") - (data $4 (i32.const 4416) "n\83\f9\a2\00\00\00\00\d1W\'\fc)\15DN\99\95b\db\c0\dd4\f5\abcQ\feA\90C<:n$\b7a\c5\bb\de\ea.I\06\e0\d2MB\1c\eb\1d\fe\1c\92\d1\t\f55\82\e8>\a7)\b1&p\9c\e9\84D\bb.9\d6\919A~_\b4\8b_\84\9c\f49S\83\ff\97\f8\1f;(\f9\bd\8b\11/\ef\0f\98\05\de\cf~6m\1fm\nZf?FO\b7\t\cb\'\c7\ba\'u-\ea_\9e\f79\07={\f1\e5\eb\b1_\fbk\ea\92R\8aF0\03V\08]\8d\1f \bc\cf\f0\abk{\fca\91\e3\a9\1d6\f4\9a_\85\99e\08\1b\e6^\80\d8\ff\8d@h\a0\14W\15\06\061\'sM") - (data $5 (i32.const 4608) ")\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") - (data $6 (i32.const 4640) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?n\bf\88\1aO;\9b<53\fb\a9=\f6\ef?]\dc\d8\9c\13`q\bca\80w>\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\rG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") - (data $7 (i32.const 6688) "\00\00\00\00\00\00\f0?t\85\15\d3\b0\d9\ef?\0f\89\f9lX\b5\ef?Q[\12\d0\01\93\ef?{Q}<\b8r\ef?\aa\b9h1\87T\ef?8bunz8\ef?\e1\de\1f\f5\9d\1e\ef?\15\b71\n\fe\06\ef?\cb\a9:7\a7\f1\ee?\"4\12L\a6\de\ee?-\89a`\08\ce\ee?\'*6\d5\da\bf\ee?\82O\9dV+\b4\ee?)TH\dd\07\ab\ee?\85U:\b0~\a4\ee?\cd;\7ff\9e\a0\ee?t_\ec\e8u\9f\ee?\87\01\ebs\14\a1\ee?\13\ceL\99\89\a5\ee?\db\a0*B\e5\ac\ee?\e5\c5\cd\b07\b7\ee?\90\f0\a3\82\91\c4\ee?]%>\b2\03\d5\ee?\ad\d3Z\99\9f\e8\ee?G^\fb\f2v\ff\ee?\9cR\85\dd\9b\19\ef?i\90\ef\dc 7\ef?\87\a4\fb\dc\18X\ef?_\9b{3\97|\ef?\da\90\a4\a2\af\a4\ef?@En[v\d0\ef?") - (data $8 (i32.const 6944) "\f8\ac\b1k($\f7?\00\b0\cd\ee_\t\e1\bf\a1\cc\d2f\f7\e1\f6?\00\d0v\bd\94\84\e0\bf\8a\d40\0e=\a1\f6?\00\f8\e8\aeC\01\e0\bf\85l\d02\eca\f6?\00@\0b6\c5\fe\de\bf\f8\98\11\95\fa#\f6?\00\e0\b7\1a\d9\fd\dd\bfl\02\cf\a4[\e7\f5?\00\90\c7\0c\ae\ff\dc\bf\b8O!Z\05\ac\f5?\00\a0\fd\118\04\dc\bf\1en\16\0f\edq\f5?\00\e0:2g\0b\db\bf5\f8\0bY\t9\f5?\00\b0-Z/\15\da\bf\dd\ada\edO\01\f5?\00`\f8Z\7f!\d9\bf\d0{H\8e\b8\ca\f4?\00\90q\b0M0\d8\bf\eeO3\b49\95\f4?\00\e0\a9\f9\89A\d7\bfi\d5\af\df\cb`\f4?\00\90\19\b5+U\d6\bfS\b9\e4Nf-\f4?\00\10\9b\a2#k\d5\bf\a6\d8\1d\11\01\fb\f3?\00\a0_\0fe\83\d4\bf6X\0c\b7\95\c9\f3?\00\a0\f67\e9\9d\d3\bfJ\fd\b6J\1c\99\f3?\00`\8dS\a1\ba\d2\bf\b5\99\e0\0c\8ei\f3?\00@\ca@\83\d9\d1\bf\b2\e7\13\82\e4:\f3?\00\e0@:\85\fa\d0\bf\b1\bd\85\19\19\r\f3?\000\e72\9c\1d\d0\bf\d7q\b2\ca%\e0\f2?\00`\fa\a2}\85\ce\bf\82\cd\13\cf\04\b4\f2?\00\80=c\c8\d3\cc\bfP\cb|,\b0\88\f2?\00\a0\14L\03&\cb\bf\e5M\94c\"^\f2?\00\e0O/\1c|\c9\bf\b1\15\86=V4\f2?\00\00\80?\02\d6\c7\bf8\af>\e3F\0b\f2?\00\e0\05\1a\a73\c6\bf\dd\a3\cd\fd\ee\e2\f1?\00\00W\e9\f5\94\c4\bf09\0bXJ\bb\f1?\00\a0\e0$\e4\f9\c2\bf\00\"\7f\84S\94\f1?\00\c0\fdZYb\c1\bf<\d7\d5\c0\06n\f1?\00\80\bdu\9a\9c\bf\bf\c2\e4\b7G_H\f1?\00\c0\f9[W{\bc\bf\d1\85\00\adX#\f1?\00\80\f4\0f\c6`\b9\bf\'\"S\0f\f0\fe\f0?\00\00\b6G\e2L\b6\bf\8f:\d0w \db\f0?\00@\01\b2x?\b3\bf\d9\80Y\d6\e6\b7\f0?\00\c0B\1a}8\b0\bf\8d@{\fe>\95\f0?\00\00\b5\08\92o\aa\bf\83;\c5\ca%s\f0?\00\00wO\95z\a4\bf\\\1b\r\e4\97Q\f0?\00\00\0c\c5\a8#\9d\bf\a2\8e \c1\910\f0?\00\00x)&j\91\bf!~\b3%\10\10\f0?\00\00\e8\d8\f8 w\bfk\a7\ca\f9~\c0\ef?\00\00P\b1S\fe\86?\84\f1\f6\d3eD\ef?\00\80\0f\e1\cc\1c\a1?\7f\10\84\9f\07\cc\ee?\00\80\8b\8c\fcM\ac?\e8Z\97\99:W\ee?\00@W\1e2\aa\b3?\e6=\bd\f0\d6\e5\ed?\00\80\8b\d0\a0\18\b9?\b38\ff\81\b6w\ed?\00@\04\da\e9r\be?C\e9Mr\b5\0c\ed?\00`\7fP\d2\dc\c1?cu\0e\dc\b2\a4\ec?\00\a0\de\03\abv\c4?Q\cb\d6\e8\8e?\ec?\00 \e2wC\07\c7?L\0c\02O+\dd\eb?\00@\a9\8b\de\8e\c9?\ca\15`\00l}\eb?\00\e0\d2j\b8\r\cc?\8f3.n6 \eb?\00\e0\ce\af\n\84\ce?9P)&p\c5\ea?\00\80g\b4\ny\d0?\dd1\'\bc\01m\ea?\00\c0\01h\05\ac\d1?\8b\f1?\bc\d3\16\ea?\00\e0\fe\d4\11\db\d2?\ad\fegI\d1\c2\e9?\00\80\c5NF\06\d4?\02\99|\f4\e4p\e9?\00\f0:\t\be-\d5?\f2\bc\829\fb \e9?\00\d0P \90Q\d6?\f1Y\f7\87\01\d3\e8?\00\f0\ea\cd\d2q\d7?m\f6\b9\eb\e5\86\e8?\00\90}\85\9c\8e\d8?\94\b9X\b6\97<\e8?\00`\e1U\01\a8\d9?\"\10\c6\ff\05\f4\e7?\00\d0\d3n\18\be\da?\ca\15\14\18\"\ad\e7?\00\e0\a0\ae\f2\d0\db?\8c\ff\9e\f9\dcg\e7?\00@\bf=\a4\e0\dc?") - (data $9 (i32.const 7968) "\8e\n\b9\12\00 \e6?\05\b6D\06\ab\04\89<\a64W\04\00`\e6?\a9\f7b\ea\9b\ffa<\c5\f2%\c3\ff\9f\e6?\ba\90<\cb\cf~\82<\04Z\b98\00\e0\e6?&\93sV\88\ff\88<\e3\94\99\e0\ff\1f\e7?\b1\82_\'@\fd\8a<\10\0eY\15\00`\e7?A\83#\b4u\fdr\bc\d5[e\12\00\a0\e7?v+$|\e6\08x<\a6\e9Y2\00\e0\e7?\b7\"\f6&\e4\08b\bc\d2\b2\b4\ed\ff\1f\e8?/\c9\a5\1eF\02\84\bc\c3\fc\fa-\00`\e8?\1f\9a\f2\a2\f4\f7m)\e0\ff\df\f2?\f9\a6\b2\da9|\9b<\82\f0\dc\f7\ff\1f\f3?TR\dcn3\f1}<`\8bZ\f0\ff_\f3?\eb1\cdLV\03\9e\bc\cc\ae\0e.\00\a0\f3?w\a4\d3K\e7\f0u<6\b2;\04\00\e0\f3?3\88\9d\14\cb}\9c<\ff\87\d1\02\00 \f4?(=-\cf\af\08~<\b1|8\r\00`\f4?\a6\99e\857\08\82<\89\9fV\04\00\a0\f4?\d2\bcO\90\\\fa\89\bc\f3C5\04\00\e0\f4?)S\17\ed%\11x\bc\0f\7f\02\cc\ff\1f\f5?\dcTw\84\d8\83\98\e90.\90\80\91\bc") - (data $10 (i32.const 8992) "\be\f3\f8y\eca\f6?\190\96[\c6\fe\de\bf=\88\afJ\edq\f5?\a4\fc\d42h\0b\db\bf\b0\10\f0\f09\95\f4?{\b7\1f\n\8bA\d7\bf\85\03\b8\b0\95\c9\f3?{\cfm\1a\e9\9d\d3\bf\a5d\88\0c\19\r\f3?1\b6\f2\f3\9b\1d\d0\bf\a0\8e\0b{\"^\f2?\f0z;\1b\1d|\c9\bf?4\1aJJ\bb\f1?\9f<\af\93\e3\f9\c2\bf\ba\e5\8a\f0X#\f1?\\\8dx\bf\cb`\b9\bf\a7\00\99A?\95\f0?\ce_G\b6\9do\aa\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?=\f5$\9f\ca8\b3?\a0j\02\1f\b3\a4\ec?\ba\918T\a9v\c4?\e6\fcjW6 \eb?\d2\e4\c4J\0b\84\ce?-\aa\a1c\d1\c2\e9?\1ce\c6\f0E\06\d4?\edAx\03\e6\86\e8?\f8\9f\1b,\9c\8e\d8?bHS\f5\dcg\e7?\cc{\b1N\a4\e0\dc?") - (data $11 (i32.const 9248) "\00\00\00\00\00\a0\f6?\00\00\00\00\00\00\00\00\00\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?\00\00\00\00\00\00\00\00\00\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?\00\00\00\00\00\00\00\00\00XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?\00\00\00\00\00\00\00\00\00\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?\00\00\00\00\00\00\00\00\00xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?\00\00\00\00\00\00\00\00\00`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?\00\00\00\00\00\00\00\00\00\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?\00\00\00\00\00\00\00\00\00HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?\00\00\00\00\00\00\00\00\00\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?\00\00\00\00\00\00\00\00\00 \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?\00\00\00\00\00\00\00\00\00x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?\00\00\00\00\00\00\00\00\00\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?\00\00\00\00\00\00\00\00\00\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?\00\00\00\00\00\00\00\00\00H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?\00\00\00\00\00\00\00\00\00\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?\00\00\00\00\00\00\00\00\00@^m\18\b9\cf\bf\87<\99\ab*W\r=\00\00\00\00\00`\f4?\00\00\00\00\00\00\00\00\00`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?\00\00\00\00\00\00\00\00\00\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?\00\00\00\00\00\00\00\00\00\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?\00\00\00\00\00\00\00\00\00\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?\00\00\00\00\00\00\00\00\00\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?\00\00\00\00\00\00\00\00\00P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?\00\00\00\00\00\00\00\00\00\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?\00\00\00\00\00\00\00\00\00\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?\00\00\00\00\00\00\00\00\00\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?\00\00\00\00\00\00\00\00\00\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?\00\00\00\00\00\00\00\00\00`F\d1;\97\b1?\9b\9e\rV]2%\bd\00\00\00\00\00\a0\ed?\00\00\00\00\00\00\00\00\00\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?\00\00\00\00\00\00\00\00\00\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?\00\00\00\00\00\00\00\00\00\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?\00\00\00\00\00\00\00\00\00@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?\00\00\00\00\00\00\00\00\00`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?\00\00\00\00\00\00\00\00\00@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?\00\00\00\00\00\00\00\00\00 \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?\00\00\00\00\00\00\00\00\00\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?\00\00\00\00\00\00\00\00\00\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?\00\00\00\00\00\00\00\00\00\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?\00\00\00\00\00\00\00\00\00\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?\00\00\00\00\00\00\00\00\00\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?\00\00\00\00\00\00\00\00\00\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?\00\00\00\00\00\00\00\00\00\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?\00\00\00\00\00\00\00\00\00\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?\00\00\00\00\00\00\00\00\00pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?\00\00\00\00\00\00\00\00\00PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?\00\00\00\00\00\00\00\00\00\009\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?\00\00\00\00\00\00\00\00\00\00\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?\00\00\00\00\00\00\00\00\00\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?\00\00\00\00\00\00\00\00\00\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?\00\00\00\00\00\00\00\00\00\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?\00\00\00\00\00\00\00\00\00\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?\00\00\00\00\00\00\00\00\00\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?\00\00\00\00\00\00\00\00\00\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?\00\00\00\00\00\00\00\00\00\00\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?\00\00\00\00\00\00\00\00\00\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?\00\00\00\00\00\00\00\00\00XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?\00\00\00\00\00\00\00\00\00`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?\00\00\00\00\00\00\00\00\00\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?\00\00\00\00\00\00\00\00\00\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?\00\00\00\00\00\00\00\00\00hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?\00\00\00\00\00\00\00\00\00\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?\00\00\00\00\00\00\00\00\00\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?\00\00\00\00\00\00\00\00\00`\d3\e1\f1\14\d3?\b8\d2\bf\83E\06B\ff*\f5?\00\90\')\e1\e9\d1\bf\df\bd\b2\db\"\0f\f5?\00\f8H+m\95\d1\bf\d7\de4G\8f\f3\f4?\00\f8\b9\9agA\d1\bf@(\de\cfC\d8\f4?\00\98\ef\94\d0\ed\d0\bf\c8\a3x\c0>\bd\f4?\00\10\db\18\a5\9a\d0\bf\8a%\e0\c3\7f\a2\f4?\00\b8cR\e6G\d0\bf4\84\d4$\05\88\f4?\00\f0\86E\"\eb\cf\bf\0b-\19\1b\cem\f4?\00\b0\17uJG\cf\bfT\189\d3\d9S\f4?\000\10=D\a4\ce\bfZ\84\b4D\':\f4?\00\b0\e9D\r\02\ce\bf\fb\f8\15A\b5 \f4?\00\f0w)\a2`\cd\bf\b1\f4>\da\82\07\f4?\00\90\95\04\01\c0\cc\bf\8f\feW]\8f\ee\f3?\00\10\89V) \cc\bf\e9L\0b\a0\d9\d5\f3?\00\10\81\8d\17\81\cb\bf+\c1\10\c0`\bd\f3?\00\d0\d3\cc\c9\e2\ca\bf\b8\dau+$\a5\f3?\00\90\12.@E\ca\bf\02\d0\9f\cd\"\8d\f3?\00\f0\1dhw\a8\c9\bf\1cz\84\c5[u\f3?\000Him\0c\c9\bf\e26\adI\ce]\f3?\00\c0E\a6 q\c8\bf@\d4M\98yF\f3?\000\14\b4\8f\d6\c7\bf$\cb\ff\ce\\/\f3?\00pb<\b8<\c7\bfI\r\a1uw\18\f3?\00`7\9b\9a\a3\c6\bf\909>7\c8\01\f3?\00\a0\b7T1\0b\c6\bfA\f8\95\bbN\eb\f2?\000$v}s\c5\bf\d1\a9\19\02\n\d5\f2?\000\c2\8f{\dc\c4\bf*\fd\b7\a8\f9\be\f2?\00\00\d2Q,F\c4\bf\ab\1b\0cz\1c\a9\f2?\00\00\83\bc\8a\b0\c3\bf0\b5\14`r\93\f2?\00\00Ik\99\1b\c3\bf\f5\a1WW\fa}\f2?\00@\a4\90T\87\c2\bf\bf;\1d\9b\b3h\f2?\00\a0y\f8\b9\f3\c1\bf\bd\f5\8f\83\9dS\f2?\00\a0,%\c8`\c1\bf;\08\c9\aa\b7>\f2?\00 \f7W\7f\ce\c0\bf\b6@\a9+\01*\f2?\00\a0\feI\dc<\c0\bf2A\cc\96y\15\f2?\00\80K\bc\bdW\bf\bf\9b\fc\d2\1d \01\f2?\00@@\96\087\be\bf\0bHMI\f4\ec\f1?\00@\f9>\98\17\bd\bfie\8fR\f5\d8\f1?\00\a0\d8Ng\f9\bb\bf|~W\11#\c5\f1?\00`/ y\dc\ba\bf\e9&\cbt|\b1\f1?\00\80(\e7\c3\c0\b9\bf\b6\1a,\0c\01\9e\f1?\00\c0r\b3F\a6\b8\bf\bdp\b6{\b0\8a\f1?\00\00\ac\b3\01\8d\b7\bf\b6\bc\ef%\8aw\f1?\00\008E\f1t\b6\bf\da1L5\8dd\f1?\00\80\87m\0e^\b5\bf\dd_\'\90\b9Q\f1?\00\e0\a1\de\\H\b4\bfL\d22\a4\0e?\f1?\00\a0jM\d93\b3\bf\da\f9\10r\8b,\f1?\00`\c5\f8y \b2\bf1\b5\ec(0\1a\f1?\00 b\98F\0e\b1\bf\af4\84\da\fb\07\f1?\00\00\d2jl\fa\af\bf\b3kN\0f\ee\f5\f0?\00@wJ\8d\da\ad\bf\ce\9f*]\06\e4\f0?\00\00\85\e4\ec\bc\ab\bf!\a5,cD\d2\f0?\00\c0\12@\89\a1\a9\bf\1a\98\e2|\a7\c0\f0?\00\c0\023X\88\a7\bf\d16\c6\83/\af\f0?\00\80\d6g^q\a5\bf9\13\a0\98\db\9d\f0?\00\80eI\8a\\\a3\bf\df\e7R\af\ab\8c\f0?\00@\15d\e3I\a1\bf\fb(N/\9f{\f0?\00\80\eb\82\c0r\9e\bf\19\8f5\8c\b5j\f0?\00\80RR\f1U\9a\bf,\f9\ec\a5\eeY\f0?\00\80\81\cfb=\96\bf\90,\d1\cdII\f0?\00\00\aa\8c\fb(\92\bf\a9\ad\f0\c6\c68\f0?\00\00\f9 {1\8c\bf\a92y\13e(\f0?\00\00\aa]5\19\84\bfHs\ea\'$\18\f0?\00\00\ec\c2\03\12x\bf\95\b1\14\06\04\08\f0?\00\00$y\t\04`\bf\1a\fa&\f7\1f\e0\ef?\00\00\90\84\f3\efo?t\eaa\c2\1c\a1\ef?\00\00=5A\dc\87?.\99\81\b0\10c\ef?\00\80\c2\c4\a3\ce\93?\cd\ad\ee<\f6%\ef?\00\00\89\14\c1\9f\9b?\e7\13\91\03\c8\e9\ee?\00\00\11\ce\d8\b0\a1?\ab\b1\cbx\80\ae\ee?\00\c0\01\d0[\8a\a5?\9b\0c\9d\a2\1at\ee?\00\80\d8@\83\\\a9?\b5\99\n\83\91:\ee?\00\80W\efj\'\ad?V\9a`\t\e0\01\ee?\00\c0\98\e5\98u\b0?\98\bbw\e5\01\ca\ed?\00 \r\e3\f5S\b2?\03\91|\0b\f2\92\ed?\00\008\8b\dd.\b4?\ce\\\fbf\ac\\\ed?\00\c0W\87Y\06\b6?\9d\de^\aa,\'\ed?\00\00j5v\da\b7?\cd,k>n\f2\ec?\00`\1cNC\ab\b9?\02y\a7\a2m\be\ec?\00`\r\bb\c7x\bb?m\087m&\8b\ec?\00 \e72\13C\bd?\04X]\bd\94X\ec?\00`\deq1\n\bf?\8c\9f\bb3\b5&\ec?\00@\91+\15g\c0??\e7\ec\ee\83\f5\eb?\00\b0\92\82\85G\c1?\c1\96\dbu\fd\c4\eb?\000\ca\cdn&\c2?(J\86\0c\1e\95\eb?\00P\c5\a6\d7\03\c3?,>\ef\c5\e2e\eb?\00\103<\c3\df\c3?\8b\88\c9gH7\eb?\00\80zk6\ba\c4?J0\1d!K\t\eb?\00\f0\d1(9\93\c5?~\ef\f2\85\e8\db\ea?\00\f0\18$\cdj\c6?\a2=`1\1d\af\ea?\00\90f\ec\f8@\c7?\a7X\d3?\e6\82\ea?\00\f0\1a\f5\c0\15\c8?\8bs\t\ef@W\ea?\00\80\f6T)\e9\c8?\'K\ab\90*,\ea?\00@\f8\026\bb\c9?\d1\f2\93\13\a0\01\ea?\00\00,\1c\ed\8b\ca?\1b<\db$\9f\d7\e9?\00\d0\01\\Q[\cb?\90\b1\c7\05%\ae\e9?\00\c0\bc\ccg)\cc?/\ce\97\f2.\85\e9?\00`H\d55\f6\cc?uK\a4\ee\ba\\\e9?\00\c0F4\bd\c1\cd?8H\e7\9d\c64\e9?\00\e0\cf\b8\01\8c\ce?\e6Rg/O\r\e9?\00\90\17\c0\tU\cf?\9d\d7\ff\8eR\e6\e8?\00\b8\1f\12l\0e\d0?|\00\cc\9f\ce\bf\e8?\00\d0\93\0e\b8q\d0?\0e\c3\be\da\c0\99\e8?\00p\86\9ek\d4\d0?\fb\17#\aa\'t\e8?\00\d0K3\876\d1?\08\9a\b3\ac\00O\e8?\00H#g\r\98\d1?U>e\e8I*\e8?\00\80\cc\e0\ff\f8\d1?`\02\f4\95\01\06\e8?\00hc\d7_Y\d2?)\a3\e0c%\e2\e7?\00\a8\14\t0\b9\d2?\ad\b5\dcw\b3\be\e7?\00`C\10r\18\d3?\c2%\97g\aa\9b\e7?\00\18\ecm&w\d3?W\06\17\f2\07y\e7?\000\af\fbO\d5\d3?\0c\13\d6\db\caV\e7?\00\e0/\e3\ee2\d4?") + (data $21 (i32.const 4480) "k\b6O\01\00\10\e6?<[B\91l\02~<\95\b4M\03\000\e6?A]\00H\ea\bf\8d\f6\05\eb\ff\ef\e6?S-\e2\1a\04\80~\bc\80\97\86\0e\00\10\e7?Ry\tqf\ff{<\12\e9g\fc\ff/\e7?$\87\bd&\e2\00\8c\89<\b9{F\13\000\e9?v\02\98KN\80\7f.\98\dd\ff\af\e9?7\93Z\8a\e0@\87\bcf\fbI\ed\ff\cf\e9?\00\e0\9b\c1\08\ce?O*\00\b0\ea?_?\ff<\04\fdi\bc\d1\1e\ae\d7\ff\cf\ea?\b4p\90\12\e7>\82\bcx\04Q\ee\ff\ef\ea?\a3\de\0e\e0>\06j<[\re\db\ff\0f\eb?\b9\n\1f8\c8\06ZO\86\d0E\ff\8a<@\16\87\f9\ff\8f\eb?\f9\c3\c2\96w\fe|\f0\0f\00\f0\f4?\1cS\85\0b\89\7f\97<\d1K\dc\12\00\10\f5?6\a4fqe\04`\c9\03\00\b0\f5?\c0\0c\bf\n\08A\9f\bc\bc\19I\1d\00\d0\f5?)G%\fb*\81\98\bc\89z\b8\e7\ff\ef\f5?\04i\ed\80\b7~\94\bc") + (data $22 (i32.const 6528) "\be\f3\f8y\eca\f6?\de\aa\8c\80\f7{\d5\bf=\88\afJ\edq\f5?\dbm\c0\a7\f0\be\d2\bf\b0\10\f0\f09\95\f4?g:Q\7f\ae\1e\d0\bf\85\03\b8\b0\95\c9\f3?\e9$\82\a6\d81\cb\bf\a5d\88\0c\19\r\f3?Xw\c0\nOW\c6\bf\a0\8e\0b{\"^\f2?\00\81\9c\c7+\aa\c1\bf?4\1aJJ\bb\f1?^\0e\8c\cevN\ba\bf\ba\e5\8a\f0X#\f1?\cc\1caZ<\97\b1\bf\a7\00\99A?\95\f0?\1e\0c\e18\f4R\a2\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?\84Y\f2]\aa\a5\aa?\a0j\02\1f\b3\a4\ec?\b4.6\aaS^\bc?\e6\fcjW6 \eb?\08\db w\e5&\c5?-\aa\a1c\d1\c2\e9?pG\"\r\86\c2\cb?\edAx\03\e6\86\e8?\e1~\a0\c8\8b\05\d1?bHS\f5\dcg\e7?\t\ee\b6W0\04\d4?") + (data $23 (i32.const 6784) "n\83\f9\a2\00\00\00\00\d1W\'\fc)\15DN\99\95b\db\c0\dd4\f5\abcQ\feA\90C<:n$\b7a\c5\bb\de\ea.I\06\e0\d2MB\1c\eb\1d\fe\1c\92\d1\t\f55\82\e8>\a7)\b1&p\9c\e9\84D\bb.9\d6\919A~_\b4\8b_\84\9c\f49S\83\ff\97\f8\1f;(\f9\bd\8b\11/\ef\0f\98\05\de\cf~6m\1fm\nZf?FO\b7\t\cb\'\c7\ba\'u-\ea_\9e\f79\07={\f1\e5\eb\b1_\fbk\ea\92R\8aF0\03V\08]\8d\1f \bc\cf\f0\abk{\fca\91\e3\a9\1d6\f4\9a_\85\99e\08\1b\e6^\80\d8\ff\8d@h\a0\14W\15\06\061\'sM") + (data $24 (i32.const 6976) ")\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") + (data $25 (i32.const 7008) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?n\bf\88\1aO;\9b<53\fb\a9=\f6\ef?]\dc\d8\9c\13`q\bca\80w>\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\rG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") + (data $26 (i32.const 9056) "\00\00\00\00\00\00\f0?t\85\15\d3\b0\d9\ef?\0f\89\f9lX\b5\ef?Q[\12\d0\01\93\ef?{Q}<\b8r\ef?\aa\b9h1\87T\ef?8bunz8\ef?\e1\de\1f\f5\9d\1e\ef?\15\b71\n\fe\06\ef?\cb\a9:7\a7\f1\ee?\"4\12L\a6\de\ee?-\89a`\08\ce\ee?\'*6\d5\da\bf\ee?\82O\9dV+\b4\ee?)TH\dd\07\ab\ee?\85U:\b0~\a4\ee?\cd;\7ff\9e\a0\ee?t_\ec\e8u\9f\ee?\87\01\ebs\14\a1\ee?\13\ceL\99\89\a5\ee?\db\a0*B\e5\ac\ee?\e5\c5\cd\b07\b7\ee?\90\f0\a3\82\91\c4\ee?]%>\b2\03\d5\ee?\ad\d3Z\99\9f\e8\ee?G^\fb\f2v\ff\ee?\9cR\85\dd\9b\19\ef?i\90\ef\dc 7\ef?\87\a4\fb\dc\18X\ef?_\9b{3\97|\ef?\da\90\a4\a2\af\a4\ef?@En[v\d0\ef?") + (data $27 (i32.const 9312) "\f8\ac\b1k($\f7?\00\b0\cd\ee_\t\e1\bf\a1\cc\d2f\f7\e1\f6?\00\d0v\bd\94\84\e0\bf\8a\d40\0e=\a1\f6?\00\f8\e8\aeC\01\e0\bf\85l\d02\eca\f6?\00@\0b6\c5\fe\de\bf\f8\98\11\95\fa#\f6?\00\e0\b7\1a\d9\fd\dd\bfl\02\cf\a4[\e7\f5?\00\90\c7\0c\ae\ff\dc\bf\b8O!Z\05\ac\f5?\00\a0\fd\118\04\dc\bf\1en\16\0f\edq\f5?\00\e0:2g\0b\db\bf5\f8\0bY\t9\f5?\00\b0-Z/\15\da\bf\dd\ada\edO\01\f5?\00`\f8Z\7f!\d9\bf\d0{H\8e\b8\ca\f4?\00\90q\b0M0\d8\bf\eeO3\b49\95\f4?\00\e0\a9\f9\89A\d7\bfi\d5\af\df\cb`\f4?\00\90\19\b5+U\d6\bfS\b9\e4Nf-\f4?\00\10\9b\a2#k\d5\bf\a6\d8\1d\11\01\fb\f3?\00\a0_\0fe\83\d4\bf6X\0c\b7\95\c9\f3?\00\a0\f67\e9\9d\d3\bfJ\fd\b6J\1c\99\f3?\00`\8dS\a1\ba\d2\bf\b5\99\e0\0c\8ei\f3?\00@\ca@\83\d9\d1\bf\b2\e7\13\82\e4:\f3?\00\e0@:\85\fa\d0\bf\b1\bd\85\19\19\r\f3?\000\e72\9c\1d\d0\bf\d7q\b2\ca%\e0\f2?\00`\fa\a2}\85\ce\bf\82\cd\13\cf\04\b4\f2?\00\80=c\c8\d3\cc\bfP\cb|,\b0\88\f2?\00\a0\14L\03&\cb\bf\e5M\94c\"^\f2?\00\e0O/\1c|\c9\bf\b1\15\86=V4\f2?\00\00\80?\02\d6\c7\bf8\af>\e3F\0b\f2?\00\e0\05\1a\a73\c6\bf\dd\a3\cd\fd\ee\e2\f1?\00\00W\e9\f5\94\c4\bf09\0bXJ\bb\f1?\00\a0\e0$\e4\f9\c2\bf\00\"\7f\84S\94\f1?\00\c0\fdZYb\c1\bf<\d7\d5\c0\06n\f1?\00\80\bdu\9a\9c\bf\bf\c2\e4\b7G_H\f1?\00\c0\f9[W{\bc\bf\d1\85\00\adX#\f1?\00\80\f4\0f\c6`\b9\bf\'\"S\0f\f0\fe\f0?\00\00\b6G\e2L\b6\bf\8f:\d0w \db\f0?\00@\01\b2x?\b3\bf\d9\80Y\d6\e6\b7\f0?\00\c0B\1a}8\b0\bf\8d@{\fe>\95\f0?\00\00\b5\08\92o\aa\bf\83;\c5\ca%s\f0?\00\00wO\95z\a4\bf\\\1b\r\e4\97Q\f0?\00\00\0c\c5\a8#\9d\bf\a2\8e \c1\910\f0?\00\00x)&j\91\bf!~\b3%\10\10\f0?\00\00\e8\d8\f8 w\bfk\a7\ca\f9~\c0\ef?\00\00P\b1S\fe\86?\84\f1\f6\d3eD\ef?\00\80\0f\e1\cc\1c\a1?\7f\10\84\9f\07\cc\ee?\00\80\8b\8c\fcM\ac?\e8Z\97\99:W\ee?\00@W\1e2\aa\b3?\e6=\bd\f0\d6\e5\ed?\00\80\8b\d0\a0\18\b9?\b38\ff\81\b6w\ed?\00@\04\da\e9r\be?C\e9Mr\b5\0c\ed?\00`\7fP\d2\dc\c1?cu\0e\dc\b2\a4\ec?\00\a0\de\03\abv\c4?Q\cb\d6\e8\8e?\ec?\00 \e2wC\07\c7?L\0c\02O+\dd\eb?\00@\a9\8b\de\8e\c9?\ca\15`\00l}\eb?\00\e0\d2j\b8\r\cc?\8f3.n6 \eb?\00\e0\ce\af\n\84\ce?9P)&p\c5\ea?\00\80g\b4\ny\d0?\dd1\'\bc\01m\ea?\00\c0\01h\05\ac\d1?\8b\f1?\bc\d3\16\ea?\00\e0\fe\d4\11\db\d2?\ad\fegI\d1\c2\e9?\00\80\c5NF\06\d4?\02\99|\f4\e4p\e9?\00\f0:\t\be-\d5?\f2\bc\829\fb \e9?\00\d0P \90Q\d6?\f1Y\f7\87\01\d3\e8?\00\f0\ea\cd\d2q\d7?m\f6\b9\eb\e5\86\e8?\00\90}\85\9c\8e\d8?\94\b9X\b6\97<\e8?\00`\e1U\01\a8\d9?\"\10\c6\ff\05\f4\e7?\00\d0\d3n\18\be\da?\ca\15\14\18\"\ad\e7?\00\e0\a0\ae\f2\d0\db?\8c\ff\9e\f9\dcg\e7?\00@\bf=\a4\e0\dc?") + (data $28 (i32.const 10336) "\8e\n\b9\12\00 \e6?\05\b6D\06\ab\04\89<\a64W\04\00`\e6?\a9\f7b\ea\9b\ffa<\c5\f2%\c3\ff\9f\e6?\ba\90<\cb\cf~\82<\04Z\b98\00\e0\e6?&\93sV\88\ff\88<\e3\94\99\e0\ff\1f\e7?\b1\82_\'@\fd\8a<\10\0eY\15\00`\e7?A\83#\b4u\fdr\bc\d5[e\12\00\a0\e7?v+$|\e6\08x<\a6\e9Y2\00\e0\e7?\b7\"\f6&\e4\08b\bc\d2\b2\b4\ed\ff\1f\e8?/\c9\a5\1eF\02\84\bc\c3\fc\fa-\00`\e8?\1f\9a\f2\a2\f4\f7m)\e0\ff\df\f2?\f9\a6\b2\da9|\9b<\82\f0\dc\f7\ff\1f\f3?TR\dcn3\f1}<`\8bZ\f0\ff_\f3?\eb1\cdLV\03\9e\bc\cc\ae\0e.\00\a0\f3?w\a4\d3K\e7\f0u<6\b2;\04\00\e0\f3?3\88\9d\14\cb}\9c<\ff\87\d1\02\00 \f4?(=-\cf\af\08~<\b1|8\r\00`\f4?\a6\99e\857\08\82<\89\9fV\04\00\a0\f4?\d2\bcO\90\\\fa\89\bc\f3C5\04\00\e0\f4?)S\17\ed%\11x\bc\0f\7f\02\cc\ff\1f\f5?\dcTw\84\d8\83\98\e90.\90\80\91\bc") + (data $29 (i32.const 11360) "\be\f3\f8y\eca\f6?\190\96[\c6\fe\de\bf=\88\afJ\edq\f5?\a4\fc\d42h\0b\db\bf\b0\10\f0\f09\95\f4?{\b7\1f\n\8bA\d7\bf\85\03\b8\b0\95\c9\f3?{\cfm\1a\e9\9d\d3\bf\a5d\88\0c\19\r\f3?1\b6\f2\f3\9b\1d\d0\bf\a0\8e\0b{\"^\f2?\f0z;\1b\1d|\c9\bf?4\1aJJ\bb\f1?\9f<\af\93\e3\f9\c2\bf\ba\e5\8a\f0X#\f1?\\\8dx\bf\cb`\b9\bf\a7\00\99A?\95\f0?\ce_G\b6\9do\aa\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?=\f5$\9f\ca8\b3?\a0j\02\1f\b3\a4\ec?\ba\918T\a9v\c4?\e6\fcjW6 \eb?\d2\e4\c4J\0b\84\ce?-\aa\a1c\d1\c2\e9?\1ce\c6\f0E\06\d4?\edAx\03\e6\86\e8?\f8\9f\1b,\9c\8e\d8?bHS\f5\dcg\e7?\cc{\b1N\a4\e0\dc?") + (data $30 (i32.const 11616) "\00\00\00\00\00\a0\f6?\00\00\00\00\00\00\00\00\00\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?\00\00\00\00\00\00\00\00\00\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?\00\00\00\00\00\00\00\00\00XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?\00\00\00\00\00\00\00\00\00\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?\00\00\00\00\00\00\00\00\00xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?\00\00\00\00\00\00\00\00\00`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?\00\00\00\00\00\00\00\00\00\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?\00\00\00\00\00\00\00\00\00HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?\00\00\00\00\00\00\00\00\00\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?\00\00\00\00\00\00\00\00\00 \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?\00\00\00\00\00\00\00\00\00x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?\00\00\00\00\00\00\00\00\00\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?\00\00\00\00\00\00\00\00\00\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?\00\00\00\00\00\00\00\00\00H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?\00\00\00\00\00\00\00\00\00\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?\00\00\00\00\00\00\00\00\00@^m\18\b9\cf\bf\87<\99\ab*W\r=\00\00\00\00\00`\f4?\00\00\00\00\00\00\00\00\00`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?\00\00\00\00\00\00\00\00\00\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?\00\00\00\00\00\00\00\00\00\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?\00\00\00\00\00\00\00\00\00\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?\00\00\00\00\00\00\00\00\00\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?\00\00\00\00\00\00\00\00\00P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?\00\00\00\00\00\00\00\00\00\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?\00\00\00\00\00\00\00\00\00\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?\00\00\00\00\00\00\00\00\00\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?\00\00\00\00\00\00\00\00\00\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?\00\00\00\00\00\00\00\00\00`F\d1;\97\b1?\9b\9e\rV]2%\bd\00\00\00\00\00\a0\ed?\00\00\00\00\00\00\00\00\00\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?\00\00\00\00\00\00\00\00\00\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?\00\00\00\00\00\00\00\00\00\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?\00\00\00\00\00\00\00\00\00@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?\00\00\00\00\00\00\00\00\00`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?\00\00\00\00\00\00\00\00\00@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?\00\00\00\00\00\00\00\00\00 \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?\00\00\00\00\00\00\00\00\00\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?\00\00\00\00\00\00\00\00\00\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?\00\00\00\00\00\00\00\00\00\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?\00\00\00\00\00\00\00\00\00\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?\00\00\00\00\00\00\00\00\00\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?\00\00\00\00\00\00\00\00\00\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?\00\00\00\00\00\00\00\00\00\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?\00\00\00\00\00\00\00\00\00\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?\00\00\00\00\00\00\00\00\00pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?\00\00\00\00\00\00\00\00\00PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?\00\00\00\00\00\00\00\00\00\009\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?\00\00\00\00\00\00\00\00\00\00\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?\00\00\00\00\00\00\00\00\00\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?\00\00\00\00\00\00\00\00\00\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?\00\00\00\00\00\00\00\00\00\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?\00\00\00\00\00\00\00\00\00\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?\00\00\00\00\00\00\00\00\00\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?\00\00\00\00\00\00\00\00\00\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?\00\00\00\00\00\00\00\00\00\00\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?\00\00\00\00\00\00\00\00\00\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?\00\00\00\00\00\00\00\00\00XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?\00\00\00\00\00\00\00\00\00`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?\00\00\00\00\00\00\00\00\00\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?\00\00\00\00\00\00\00\00\00\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?\00\00\00\00\00\00\00\00\00hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?\00\00\00\00\00\00\00\00\00\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?\00\00\00\00\00\00\00\00\00\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?\00\00\00\00\00\00\00\00\00`\d3\e1\f1\14\d3?\b8 (param $actual f64) (param $expected f64) (param $dy f64) (param $flags i32) (result i32) + (local $d f64) + local.get $actual + local.get $expected + f64.eq + if + i32.const 1 + return + end + local.get $expected + local.get $expected + f64.ne + if + local.get $actual + local.get $actual + f64.ne + return + end + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $actual + local.get $expected + local.get $dy + call $std/math/ulperr + local.set $d + local.get $d + f64.abs + f64.const 1.5 + f64.ge + if + i32.const 0 + return + end + i32.const 1 + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $e - i32.const 1023 + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size i32.sub - i32.const 52 + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr return ) - (func $~lib/math/NativeMath.scalbn (param $x f64) (param $n i32) (result f64) - (local $y f64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $x - local.set $y - local.get $n - i32.const 1023 - i32.gt_s + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u if - local.get $y - f64.const 8988465674311579538646525e283 - f64.mul - local.set $y - local.get $n - i32.const 1023 - i32.sub - local.set $n - local.get $n - i32.const 1023 - i32.gt_s + local.get $value + i32.const 100 + i32.lt_u if - local.get $y - f64.const 8988465674311579538646525e283 - f64.mul - local.set $y - local.get $n - i32.const 1023 - i32.sub - local.tee $3 - i32.const 1023 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.set $n + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return end + unreachable else - local.get $n - i32.const -1022 - i32.lt_s + local.get $value + i32.const 10000000 + i32.lt_u if - local.get $y - f64.const 2.2250738585072014e-308 - f64.const 9007199254740992 - f64.mul - f64.mul - local.set $y - local.get $n - i32.const 1022 - i32.const 53 - i32.sub + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u i32.add - local.set $n - local.get $n - i32.const -1022 - i32.lt_s - if - local.get $y - f64.const 2.2250738585072014e-308 - f64.const 9007199254740992 - f64.mul - f64.mul - local.set $y - local.get $n - i32.const 1022 - i32.add - i32.const 53 - i32.sub - local.tee $5 - i32.const -1022 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_s - select - local.set $n - end + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return end + unreachable end - local.get $y - i64.const 1023 - local.get $n - i64.extend_i32_s - i64.add - i64.const 52 - i64.shl - f64.reinterpret_i64 - f64.mul - return + unreachable ) - (func $std/math/ulperr (param $got f64) (param $want f64) (param $dwant f64) (result f64) - (local $x f64) - (local $x|4 f64) - local.get $got - local.get $got - f64.ne - if (result i32) - local.get $want - local.get $want - f64.ne - else - i32.const 0 + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end end + local.get $num + i32.const 100 + i32.ge_u if - f64.const 0 - return + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store end - local.get $got - local.get $want - f64.eq + local.get $num + i32.const 10 + i32.ge_u if - block $~lib/math/NativeMath.signbit|inlined.0 (result i32) - local.get $got - local.set $x - local.get $x - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - br $~lib/math/NativeMath.signbit|inlined.0 - end - i32.const 0 - i32.ne - block $~lib/math/NativeMath.signbit|inlined.1 (result i32) - local.get $want - local.set $x|4 - local.get $x|4 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - br $~lib/math/NativeMath.signbit|inlined.1 - end - i32.const 0 - i32.ne - i32.eq + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u if - local.get $dwant - return + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 end - f64.const inf - return end - local.get $got - local.get $got - f64.sub - f64.const 0 - f64.eq - i32.eqz + local.get $offset + i32.const 1 + i32.and if - f64.const 8988465674311579538646525e283 - local.get $got - f64.copysign - local.set $got - local.get $want - f64.const 0.5 - f64.mul - local.set $want + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 end - local.get $got - local.get $want - f64.sub - i32.const 0 - local.get $want - call $std/math/eulp - i32.sub - call $~lib/math/NativeMath.scalbn - local.get $dwant - f64.add - return ) - (func $std/math/check (param $actual f64) (param $expected f64) (param $dy f64) (param $flags i32) (result i32) - (local $d f64) - local.get $actual - local.get $expected - f64.eq - if + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt i32.const 1 - return + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 end - local.get $expected - local.get $expected - f64.ne if - local.get $actual - local.get $actual - f64.ne + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add return end - i32.const 8 - i32.const 8 + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 i32.eq - drop - local.get $actual - local.get $expected - local.get $dy - call $std/math/ulperr - local.set $d - local.get $d - f64.abs - f64.const 1.5 - f64.ge if - i32.const 0 - return + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end end - i32.const 1 + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 return ) (func $std/math/eulpf (param $x f32) (result i32) @@ -1554,7 +4225,7 @@ i64.and i64.sub local.set $iz - i32.const 64 + i32.const 2432 local.get $i i32.const 1 i32.const 3 @@ -1563,7 +4234,7 @@ i32.add f64.load local.set $invc - i32.const 64 + i32.const 2432 local.get $i i32.const 1 i32.const 3 @@ -1575,7 +4246,7 @@ local.get $iz f64.reinterpret_i64 local.set $z - i32.const 2112 + i32.const 4480 local.get $i i32.const 1 i32.const 3 @@ -1584,7 +4255,7 @@ i32.add f64.load local.set $chi - i32.const 2112 + i32.const 4480 local.get $i i32.const 1 i32.const 3 @@ -2074,7 +4745,7 @@ i32.and i32.sub local.set $iz - i32.const 4160 + i32.const 6528 local.get $i i32.const 1 i32.const 3 @@ -2083,7 +4754,7 @@ i32.add f64.load local.set $invc - i32.const 4160 + i32.const 6528 local.get $i i32.const 1 i32.const 3 @@ -4363,7 +7034,7 @@ i64.const 63 i64.and local.set $shift - i32.const 4416 + i32.const 6784 local.get $offset i64.const 6 i64.shr_s @@ -5783,7 +8454,7 @@ i32.and i64.extend_i32_s local.set $shift - i32.const 4608 + i32.const 6976 local.get $offset i32.const 6 i32.shr_s @@ -6435,7 +9106,7 @@ i64.sub i64.shl local.set $top - i32.const 4640 + i32.const 7008 local.get $idx i32.const 3 i32.shl @@ -6443,7 +9114,7 @@ i64.load f64.reinterpret_i64 local.set $tail - i32.const 4640 + i32.const 7008 local.get $idx i32.const 3 i32.shl @@ -7096,7 +9767,7 @@ f64.sub f64.sub local.set $r - i32.const 6688 + i32.const 9056 local.get $ki i32.wrap_i64 i32.const 31 @@ -7430,7 +10101,7 @@ i64.sub i64.shl local.set $top - i32.const 4640 + i32.const 7008 local.get $idx i32.const 3 i32.shl @@ -7438,7 +10109,7 @@ i64.load f64.reinterpret_i64 local.set $tail - i32.const 4640 + i32.const 7008 local.get $idx i32.const 3 i32.shl @@ -7671,7 +10342,7 @@ f64.sub f64.sub local.set $r - i32.const 6688 + i32.const 9056 local.get $ki i32.wrap_i64 i32.const 31 @@ -8906,7 +11577,7 @@ i64.and i64.sub local.set $iz - i32.const 6944 + i32.const 9312 local.get $i i32.const 1 i32.const 3 @@ -8915,7 +11586,7 @@ i32.add f64.load local.set $invc - i32.const 6944 + i32.const 9312 local.get $i i32.const 1 i32.const 3 @@ -8930,7 +11601,7 @@ local.get $k f64.convert_i64_s local.set $kd - i32.const 7968 + i32.const 10336 local.get $i i32.const 1 i32.const 3 @@ -8939,7 +11610,7 @@ i32.add f64.load local.set $chi - i32.const 7968 + i32.const 10336 local.get $i i32.const 1 i32.const 3 @@ -9161,7 +11832,7 @@ i32.const 23 i32.shr_s local.set $k - i32.const 8992 + i32.const 11360 local.get $i i32.const 1 i32.const 3 @@ -9170,7 +11841,7 @@ i32.add f64.load local.set $invc - i32.const 8992 + i32.const 11360 local.get $i i32.const 1 i32.const 3 @@ -10423,7 +13094,7 @@ local.get $k f64.convert_i64_s local.set $kd - i32.const 9248 + i32.const 11616 local.get $i i32.const 2 i32.const 3 @@ -10432,7 +13103,7 @@ i32.add f64.load local.set $invc - i32.const 9248 + i32.const 11616 local.get $i i32.const 2 i32.const 3 @@ -10441,7 +13112,7 @@ i32.add f64.load offset=16 local.set $logc - i32.const 9248 + i32.const 11616 local.get $i i32.const 2 i32.const 3 @@ -10753,7 +13424,7 @@ i64.sub i64.shl local.set $top - i32.const 4640 + i32.const 7008 local.get $idx i32.const 3 i32.shl @@ -10761,7 +13432,7 @@ i64.load f64.reinterpret_i64 local.set $tail - i32.const 4640 + i32.const 7008 local.get $idx i32.const 3 i32.shl @@ -11406,7 +14077,7 @@ i32.const 23 i32.shr_s local.set $k - i32.const 8992 + i32.const 11360 local.get $i i32.const 1 i32.const 3 @@ -11415,7 +14086,7 @@ i32.add f64.load local.set $invc - i32.const 8992 + i32.const 11360 local.get $i i32.const 1 i32.const 3 @@ -11564,7 +14235,7 @@ f64.sub f64.sub local.set $r|42 - i32.const 6688 + i32.const 9056 local.get $ki i32.wrap_i64 i32.const 31 @@ -13651,7 +16322,7 @@ i32.and i64.extend_i32_s local.set $shift - i32.const 4608 + i32.const 6976 local.get $offset i32.const 6 i32.shr_s @@ -15234,7 +17905,7 @@ i32.and i64.extend_i32_s local.set $shift - i32.const 4608 + i32.const 6976 local.get $offset i32.const 6 i32.shr_s @@ -17000,6 +19671,23 @@ global.get $~lib/math/NativeMathf.E f32.eq drop + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $~lib/math/NativeMath.E global.get $~lib/bindings/dom/Math.E f64.const 0 @@ -17008,7 +19696,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 111 i32.const 1 call $~lib/builtins/abort @@ -17022,7 +19710,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 112 i32.const 1 call $~lib/builtins/abort @@ -17036,7 +19724,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 113 i32.const 1 call $~lib/builtins/abort @@ -17050,7 +19738,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 114 i32.const 1 call $~lib/builtins/abort @@ -17064,7 +19752,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 115 i32.const 1 call $~lib/builtins/abort @@ -17078,7 +19766,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 116 i32.const 1 call $~lib/builtins/abort @@ -17092,7 +19780,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 117 i32.const 1 call $~lib/builtins/abort @@ -17107,7 +19795,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 119 i32.const 1 call $~lib/builtins/abort @@ -17122,7 +19810,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 120 i32.const 1 call $~lib/builtins/abort @@ -17137,7 +19825,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 121 i32.const 1 call $~lib/builtins/abort @@ -17152,7 +19840,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 122 i32.const 1 call $~lib/builtins/abort @@ -17167,7 +19855,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 123 i32.const 1 call $~lib/builtins/abort @@ -17182,7 +19870,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 124 i32.const 1 call $~lib/builtins/abort @@ -17197,7 +19885,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 125 i32.const 1 call $~lib/builtins/abort @@ -17212,7 +19900,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 136 i32.const 1 call $~lib/builtins/abort @@ -17227,7 +19915,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 137 i32.const 1 call $~lib/builtins/abort @@ -17242,7 +19930,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 138 i32.const 1 call $~lib/builtins/abort @@ -17257,7 +19945,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 139 i32.const 1 call $~lib/builtins/abort @@ -17272,7 +19960,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 140 i32.const 1 call $~lib/builtins/abort @@ -17287,7 +19975,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 141 i32.const 1 call $~lib/builtins/abort @@ -17302,7 +19990,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 142 i32.const 1 call $~lib/builtins/abort @@ -17317,7 +20005,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 143 i32.const 1 call $~lib/builtins/abort @@ -17332,7 +20020,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 144 i32.const 1 call $~lib/builtins/abort @@ -17347,7 +20035,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 145 i32.const 1 call $~lib/builtins/abort @@ -17362,7 +20050,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 148 i32.const 1 call $~lib/builtins/abort @@ -17377,7 +20065,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 149 i32.const 1 call $~lib/builtins/abort @@ -17392,7 +20080,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 150 i32.const 1 call $~lib/builtins/abort @@ -17407,7 +20095,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 151 i32.const 1 call $~lib/builtins/abort @@ -17422,7 +20110,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 152 i32.const 1 call $~lib/builtins/abort @@ -17439,7 +20127,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 153 i32.const 1 call $~lib/builtins/abort @@ -17454,7 +20142,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 154 i32.const 1 call $~lib/builtins/abort @@ -17469,7 +20157,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 155 i32.const 1 call $~lib/builtins/abort @@ -17484,7 +20172,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 156 i32.const 1 call $~lib/builtins/abort @@ -17501,7 +20189,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 157 i32.const 1 call $~lib/builtins/abort @@ -17516,7 +20204,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 158 i32.const 1 call $~lib/builtins/abort @@ -17531,7 +20219,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 159 i32.const 1 call $~lib/builtins/abort @@ -17546,7 +20234,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 160 i32.const 1 call $~lib/builtins/abort @@ -17563,7 +20251,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 161 i32.const 1 call $~lib/builtins/abort @@ -17578,7 +20266,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 162 i32.const 1 call $~lib/builtins/abort @@ -17593,7 +20281,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 163 i32.const 1 call $~lib/builtins/abort @@ -17610,7 +20298,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 164 i32.const 1 call $~lib/builtins/abort @@ -17627,7 +20315,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 165 i32.const 1 call $~lib/builtins/abort @@ -17644,7 +20332,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 166 i32.const 1 call $~lib/builtins/abort @@ -17659,7 +20347,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 175 i32.const 1 call $~lib/builtins/abort @@ -17674,7 +20362,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 176 i32.const 1 call $~lib/builtins/abort @@ -17689,7 +20377,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 177 i32.const 1 call $~lib/builtins/abort @@ -17704,7 +20392,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 178 i32.const 1 call $~lib/builtins/abort @@ -17719,7 +20407,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 179 i32.const 1 call $~lib/builtins/abort @@ -17734,7 +20422,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 180 i32.const 1 call $~lib/builtins/abort @@ -17749,7 +20437,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 181 i32.const 1 call $~lib/builtins/abort @@ -17764,7 +20452,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 182 i32.const 1 call $~lib/builtins/abort @@ -17779,7 +20467,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 183 i32.const 1 call $~lib/builtins/abort @@ -17794,7 +20482,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 184 i32.const 1 call $~lib/builtins/abort @@ -17809,7 +20497,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 187 i32.const 1 call $~lib/builtins/abort @@ -17824,7 +20512,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 188 i32.const 1 call $~lib/builtins/abort @@ -17839,7 +20527,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 189 i32.const 1 call $~lib/builtins/abort @@ -17854,7 +20542,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 190 i32.const 1 call $~lib/builtins/abort @@ -17869,7 +20557,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 191 i32.const 1 call $~lib/builtins/abort @@ -17886,7 +20574,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 192 i32.const 1 call $~lib/builtins/abort @@ -17901,7 +20589,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 193 i32.const 1 call $~lib/builtins/abort @@ -17916,7 +20604,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 194 i32.const 1 call $~lib/builtins/abort @@ -17931,7 +20619,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 195 i32.const 1 call $~lib/builtins/abort @@ -17948,7 +20636,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 196 i32.const 1 call $~lib/builtins/abort @@ -17963,7 +20651,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 197 i32.const 1 call $~lib/builtins/abort @@ -17978,7 +20666,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 198 i32.const 1 call $~lib/builtins/abort @@ -17993,7 +20681,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 199 i32.const 1 call $~lib/builtins/abort @@ -18010,7 +20698,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 200 i32.const 1 call $~lib/builtins/abort @@ -18025,7 +20713,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 201 i32.const 1 call $~lib/builtins/abort @@ -18040,7 +20728,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 202 i32.const 1 call $~lib/builtins/abort @@ -18057,7 +20745,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 203 i32.const 1 call $~lib/builtins/abort @@ -18074,7 +20762,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 204 i32.const 1 call $~lib/builtins/abort @@ -18091,7 +20779,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 205 i32.const 1 call $~lib/builtins/abort @@ -18105,7 +20793,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 217 i32.const 1 call $~lib/builtins/abort @@ -18119,7 +20807,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 218 i32.const 1 call $~lib/builtins/abort @@ -18133,7 +20821,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 219 i32.const 1 call $~lib/builtins/abort @@ -18147,7 +20835,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 220 i32.const 1 call $~lib/builtins/abort @@ -18161,7 +20849,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 221 i32.const 1 call $~lib/builtins/abort @@ -18175,7 +20863,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 222 i32.const 1 call $~lib/builtins/abort @@ -18189,7 +20877,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 223 i32.const 1 call $~lib/builtins/abort @@ -18203,7 +20891,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 224 i32.const 1 call $~lib/builtins/abort @@ -18217,7 +20905,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 225 i32.const 1 call $~lib/builtins/abort @@ -18231,7 +20919,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 226 i32.const 1 call $~lib/builtins/abort @@ -18245,7 +20933,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 229 i32.const 1 call $~lib/builtins/abort @@ -18259,7 +20947,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 230 i32.const 1 call $~lib/builtins/abort @@ -18273,7 +20961,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 231 i32.const 1 call $~lib/builtins/abort @@ -18287,7 +20975,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 232 i32.const 1 call $~lib/builtins/abort @@ -18301,7 +20989,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 233 i32.const 1 call $~lib/builtins/abort @@ -18316,7 +21004,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 234 i32.const 1 call $~lib/builtins/abort @@ -18330,7 +21018,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 235 i32.const 1 call $~lib/builtins/abort @@ -18344,7 +21032,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 244 i32.const 1 call $~lib/builtins/abort @@ -18358,7 +21046,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 245 i32.const 1 call $~lib/builtins/abort @@ -18372,7 +21060,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 246 i32.const 1 call $~lib/builtins/abort @@ -18386,7 +21074,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 247 i32.const 1 call $~lib/builtins/abort @@ -18400,7 +21088,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 248 i32.const 1 call $~lib/builtins/abort @@ -18414,7 +21102,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 249 i32.const 1 call $~lib/builtins/abort @@ -18428,7 +21116,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 250 i32.const 1 call $~lib/builtins/abort @@ -18442,7 +21130,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 251 i32.const 1 call $~lib/builtins/abort @@ -18456,7 +21144,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 252 i32.const 1 call $~lib/builtins/abort @@ -18470,7 +21158,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 253 i32.const 1 call $~lib/builtins/abort @@ -18484,7 +21172,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 256 i32.const 1 call $~lib/builtins/abort @@ -18498,7 +21186,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 257 i32.const 1 call $~lib/builtins/abort @@ -18512,7 +21200,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 258 i32.const 1 call $~lib/builtins/abort @@ -18526,7 +21214,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 259 i32.const 1 call $~lib/builtins/abort @@ -18540,7 +21228,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 260 i32.const 1 call $~lib/builtins/abort @@ -18555,7 +21243,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 261 i32.const 1 call $~lib/builtins/abort @@ -18569,7 +21257,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 262 i32.const 1 call $~lib/builtins/abort @@ -18583,7 +21271,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 274 i32.const 1 call $~lib/builtins/abort @@ -18597,7 +21285,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 275 i32.const 1 call $~lib/builtins/abort @@ -18611,7 +21299,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 276 i32.const 1 call $~lib/builtins/abort @@ -18625,7 +21313,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 277 i32.const 1 call $~lib/builtins/abort @@ -18639,7 +21327,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 278 i32.const 1 call $~lib/builtins/abort @@ -18653,7 +21341,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 279 i32.const 1 call $~lib/builtins/abort @@ -18667,7 +21355,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 280 i32.const 1 call $~lib/builtins/abort @@ -18681,7 +21369,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 281 i32.const 1 call $~lib/builtins/abort @@ -18695,7 +21383,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 282 i32.const 1 call $~lib/builtins/abort @@ -18709,7 +21397,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 283 i32.const 1 call $~lib/builtins/abort @@ -18723,7 +21411,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 286 i32.const 1 call $~lib/builtins/abort @@ -18737,7 +21425,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 287 i32.const 1 call $~lib/builtins/abort @@ -18751,7 +21439,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 288 i32.const 1 call $~lib/builtins/abort @@ -18765,7 +21453,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 289 i32.const 1 call $~lib/builtins/abort @@ -18779,7 +21467,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 290 i32.const 1 call $~lib/builtins/abort @@ -18793,7 +21481,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 291 i32.const 1 call $~lib/builtins/abort @@ -18808,7 +21496,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 292 i32.const 1 call $~lib/builtins/abort @@ -18822,7 +21510,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 293 i32.const 1 call $~lib/builtins/abort @@ -18836,7 +21524,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 294 i32.const 1 call $~lib/builtins/abort @@ -18850,7 +21538,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 295 i32.const 1 call $~lib/builtins/abort @@ -18864,7 +21552,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 304 i32.const 1 call $~lib/builtins/abort @@ -18878,7 +21566,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 305 i32.const 1 call $~lib/builtins/abort @@ -18892,7 +21580,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 306 i32.const 1 call $~lib/builtins/abort @@ -18906,7 +21594,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 307 i32.const 1 call $~lib/builtins/abort @@ -18920,7 +21608,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 308 i32.const 1 call $~lib/builtins/abort @@ -18934,7 +21622,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 309 i32.const 1 call $~lib/builtins/abort @@ -18948,7 +21636,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 310 i32.const 1 call $~lib/builtins/abort @@ -18962,7 +21650,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 311 i32.const 1 call $~lib/builtins/abort @@ -18976,7 +21664,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 312 i32.const 1 call $~lib/builtins/abort @@ -18990,7 +21678,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 313 i32.const 1 call $~lib/builtins/abort @@ -19004,7 +21692,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 316 i32.const 1 call $~lib/builtins/abort @@ -19018,7 +21706,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 317 i32.const 1 call $~lib/builtins/abort @@ -19032,7 +21720,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 318 i32.const 1 call $~lib/builtins/abort @@ -19046,7 +21734,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 319 i32.const 1 call $~lib/builtins/abort @@ -19060,7 +21748,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 320 i32.const 1 call $~lib/builtins/abort @@ -19074,7 +21762,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 321 i32.const 1 call $~lib/builtins/abort @@ -19089,7 +21777,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 322 i32.const 1 call $~lib/builtins/abort @@ -19103,7 +21791,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 323 i32.const 1 call $~lib/builtins/abort @@ -19117,7 +21805,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 324 i32.const 1 call $~lib/builtins/abort @@ -19131,7 +21819,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 325 i32.const 1 call $~lib/builtins/abort @@ -19145,7 +21833,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 326 i32.const 1 call $~lib/builtins/abort @@ -19159,7 +21847,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 338 i32.const 1 call $~lib/builtins/abort @@ -19173,7 +21861,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 339 i32.const 1 call $~lib/builtins/abort @@ -19187,7 +21875,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 340 i32.const 1 call $~lib/builtins/abort @@ -19201,7 +21889,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 341 i32.const 1 call $~lib/builtins/abort @@ -19215,7 +21903,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 342 i32.const 1 call $~lib/builtins/abort @@ -19229,7 +21917,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 343 i32.const 1 call $~lib/builtins/abort @@ -19243,7 +21931,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 344 i32.const 1 call $~lib/builtins/abort @@ -19257,7 +21945,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 345 i32.const 1 call $~lib/builtins/abort @@ -19271,7 +21959,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 346 i32.const 1 call $~lib/builtins/abort @@ -19285,7 +21973,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 347 i32.const 1 call $~lib/builtins/abort @@ -19299,7 +21987,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 350 i32.const 1 call $~lib/builtins/abort @@ -19313,7 +22001,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 351 i32.const 1 call $~lib/builtins/abort @@ -19327,7 +22015,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 352 i32.const 1 call $~lib/builtins/abort @@ -19341,7 +22029,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 353 i32.const 1 call $~lib/builtins/abort @@ -19355,7 +22043,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 354 i32.const 1 call $~lib/builtins/abort @@ -19369,7 +22057,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 355 i32.const 1 call $~lib/builtins/abort @@ -19383,7 +22071,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 356 i32.const 1 call $~lib/builtins/abort @@ -19398,7 +22086,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 357 i32.const 1 call $~lib/builtins/abort @@ -19412,7 +22100,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 373 i32.const 1 call $~lib/builtins/abort @@ -19426,7 +22114,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 375 i32.const 1 call $~lib/builtins/abort @@ -19440,7 +22128,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 376 i32.const 1 call $~lib/builtins/abort @@ -19454,7 +22142,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 385 i32.const 1 call $~lib/builtins/abort @@ -19468,7 +22156,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 386 i32.const 1 call $~lib/builtins/abort @@ -19482,7 +22170,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 387 i32.const 1 call $~lib/builtins/abort @@ -19496,7 +22184,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 388 i32.const 1 call $~lib/builtins/abort @@ -19510,7 +22198,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 389 i32.const 1 call $~lib/builtins/abort @@ -19524,7 +22212,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 390 i32.const 1 call $~lib/builtins/abort @@ -19538,7 +22226,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 391 i32.const 1 call $~lib/builtins/abort @@ -19552,7 +22240,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 392 i32.const 1 call $~lib/builtins/abort @@ -19566,7 +22254,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 393 i32.const 1 call $~lib/builtins/abort @@ -19580,7 +22268,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 394 i32.const 1 call $~lib/builtins/abort @@ -19594,7 +22282,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 397 i32.const 1 call $~lib/builtins/abort @@ -19608,7 +22296,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 398 i32.const 1 call $~lib/builtins/abort @@ -19622,7 +22310,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 399 i32.const 1 call $~lib/builtins/abort @@ -19636,7 +22324,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 400 i32.const 1 call $~lib/builtins/abort @@ -19650,7 +22338,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 401 i32.const 1 call $~lib/builtins/abort @@ -19664,7 +22352,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 402 i32.const 1 call $~lib/builtins/abort @@ -19679,7 +22367,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 403 i32.const 1 call $~lib/builtins/abort @@ -19693,7 +22381,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 404 i32.const 1 call $~lib/builtins/abort @@ -19707,7 +22395,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 416 i32.const 1 call $~lib/builtins/abort @@ -19721,7 +22409,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 417 i32.const 1 call $~lib/builtins/abort @@ -19735,7 +22423,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 418 i32.const 1 call $~lib/builtins/abort @@ -19749,7 +22437,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 419 i32.const 1 call $~lib/builtins/abort @@ -19763,7 +22451,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 420 i32.const 1 call $~lib/builtins/abort @@ -19777,7 +22465,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 421 i32.const 1 call $~lib/builtins/abort @@ -19791,7 +22479,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 422 i32.const 1 call $~lib/builtins/abort @@ -19805,7 +22493,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 423 i32.const 1 call $~lib/builtins/abort @@ -19819,7 +22507,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 424 i32.const 1 call $~lib/builtins/abort @@ -19833,7 +22521,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 425 i32.const 1 call $~lib/builtins/abort @@ -19847,7 +22535,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 428 i32.const 1 call $~lib/builtins/abort @@ -19861,7 +22549,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 429 i32.const 1 call $~lib/builtins/abort @@ -19875,7 +22563,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 430 i32.const 1 call $~lib/builtins/abort @@ -19889,7 +22577,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 431 i32.const 1 call $~lib/builtins/abort @@ -19903,7 +22591,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 432 i32.const 1 call $~lib/builtins/abort @@ -19917,7 +22605,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 433 i32.const 1 call $~lib/builtins/abort @@ -19931,7 +22619,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 434 i32.const 1 call $~lib/builtins/abort @@ -19946,7 +22634,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 435 i32.const 1 call $~lib/builtins/abort @@ -19960,7 +22648,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 436 i32.const 1 call $~lib/builtins/abort @@ -19974,7 +22662,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 437 i32.const 1 call $~lib/builtins/abort @@ -19988,7 +22676,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 446 i32.const 1 call $~lib/builtins/abort @@ -20002,7 +22690,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 447 i32.const 1 call $~lib/builtins/abort @@ -20016,7 +22704,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 448 i32.const 1 call $~lib/builtins/abort @@ -20030,7 +22718,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 449 i32.const 1 call $~lib/builtins/abort @@ -20044,7 +22732,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 450 i32.const 1 call $~lib/builtins/abort @@ -20058,7 +22746,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 451 i32.const 1 call $~lib/builtins/abort @@ -20072,7 +22760,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 452 i32.const 1 call $~lib/builtins/abort @@ -20086,7 +22774,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 453 i32.const 1 call $~lib/builtins/abort @@ -20100,7 +22788,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 454 i32.const 1 call $~lib/builtins/abort @@ -20114,7 +22802,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 455 i32.const 1 call $~lib/builtins/abort @@ -20128,7 +22816,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 458 i32.const 1 call $~lib/builtins/abort @@ -20142,7 +22830,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 459 i32.const 1 call $~lib/builtins/abort @@ -20156,7 +22844,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 460 i32.const 1 call $~lib/builtins/abort @@ -20170,7 +22858,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 461 i32.const 1 call $~lib/builtins/abort @@ -20184,7 +22872,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 462 i32.const 1 call $~lib/builtins/abort @@ -20198,7 +22886,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 463 i32.const 1 call $~lib/builtins/abort @@ -20212,7 +22900,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 464 i32.const 1 call $~lib/builtins/abort @@ -20227,7 +22915,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 465 i32.const 1 call $~lib/builtins/abort @@ -20241,7 +22929,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 466 i32.const 1 call $~lib/builtins/abort @@ -20255,7 +22943,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 467 i32.const 1 call $~lib/builtins/abort @@ -20269,7 +22957,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 479 i32.const 1 call $~lib/builtins/abort @@ -20283,7 +22971,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 480 i32.const 1 call $~lib/builtins/abort @@ -20297,7 +22985,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 481 i32.const 1 call $~lib/builtins/abort @@ -20311,7 +22999,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 482 i32.const 1 call $~lib/builtins/abort @@ -20325,7 +23013,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 483 i32.const 1 call $~lib/builtins/abort @@ -20339,7 +23027,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 484 i32.const 1 call $~lib/builtins/abort @@ -20353,7 +23041,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 485 i32.const 1 call $~lib/builtins/abort @@ -20367,7 +23055,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 486 i32.const 1 call $~lib/builtins/abort @@ -20381,7 +23069,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 487 i32.const 1 call $~lib/builtins/abort @@ -20395,7 +23083,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 488 i32.const 1 call $~lib/builtins/abort @@ -20409,7 +23097,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 491 i32.const 1 call $~lib/builtins/abort @@ -20423,7 +23111,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 492 i32.const 1 call $~lib/builtins/abort @@ -20439,7 +23127,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 493 i32.const 1 call $~lib/builtins/abort @@ -20453,7 +23141,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 494 i32.const 1 call $~lib/builtins/abort @@ -20467,7 +23155,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 495 i32.const 1 call $~lib/builtins/abort @@ -20481,7 +23169,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 524 i32.const 1 call $~lib/builtins/abort @@ -20495,7 +23183,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 525 i32.const 1 call $~lib/builtins/abort @@ -20509,7 +23197,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 526 i32.const 1 call $~lib/builtins/abort @@ -20523,7 +23211,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 527 i32.const 1 call $~lib/builtins/abort @@ -20537,7 +23225,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 528 i32.const 1 call $~lib/builtins/abort @@ -20551,7 +23239,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 529 i32.const 1 call $~lib/builtins/abort @@ -20565,7 +23253,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 530 i32.const 1 call $~lib/builtins/abort @@ -20579,7 +23267,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 531 i32.const 1 call $~lib/builtins/abort @@ -20593,7 +23281,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 532 i32.const 1 call $~lib/builtins/abort @@ -20607,7 +23295,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 533 i32.const 1 call $~lib/builtins/abort @@ -20621,7 +23309,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 536 i32.const 1 call $~lib/builtins/abort @@ -20635,7 +23323,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 537 i32.const 1 call $~lib/builtins/abort @@ -20651,7 +23339,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 538 i32.const 1 call $~lib/builtins/abort @@ -20665,7 +23353,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 539 i32.const 1 call $~lib/builtins/abort @@ -20679,7 +23367,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 540 i32.const 1 call $~lib/builtins/abort @@ -20693,7 +23381,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 552 i32.const 1 call $~lib/builtins/abort @@ -20707,7 +23395,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 553 i32.const 1 call $~lib/builtins/abort @@ -20721,7 +23409,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 554 i32.const 1 call $~lib/builtins/abort @@ -20735,7 +23423,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 555 i32.const 1 call $~lib/builtins/abort @@ -20749,7 +23437,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 556 i32.const 1 call $~lib/builtins/abort @@ -20763,7 +23451,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 557 i32.const 1 call $~lib/builtins/abort @@ -20777,7 +23465,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 558 i32.const 1 call $~lib/builtins/abort @@ -20791,7 +23479,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 559 i32.const 1 call $~lib/builtins/abort @@ -20805,7 +23493,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 560 i32.const 1 call $~lib/builtins/abort @@ -20819,7 +23507,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 561 i32.const 1 call $~lib/builtins/abort @@ -20833,7 +23521,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 564 i32.const 1 call $~lib/builtins/abort @@ -20847,7 +23535,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 565 i32.const 1 call $~lib/builtins/abort @@ -20861,7 +23549,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 566 i32.const 1 call $~lib/builtins/abort @@ -20875,7 +23563,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 567 i32.const 1 call $~lib/builtins/abort @@ -20889,7 +23577,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 568 i32.const 1 call $~lib/builtins/abort @@ -20904,7 +23592,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 569 i32.const 1 call $~lib/builtins/abort @@ -20918,7 +23606,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 570 i32.const 1 call $~lib/builtins/abort @@ -20932,7 +23620,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 571 i32.const 1 call $~lib/builtins/abort @@ -20946,7 +23634,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 580 i32.const 1 call $~lib/builtins/abort @@ -20960,7 +23648,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 581 i32.const 1 call $~lib/builtins/abort @@ -20974,7 +23662,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 582 i32.const 1 call $~lib/builtins/abort @@ -20988,7 +23676,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 583 i32.const 1 call $~lib/builtins/abort @@ -21002,7 +23690,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 584 i32.const 1 call $~lib/builtins/abort @@ -21016,7 +23704,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 585 i32.const 1 call $~lib/builtins/abort @@ -21030,7 +23718,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 586 i32.const 1 call $~lib/builtins/abort @@ -21044,7 +23732,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 587 i32.const 1 call $~lib/builtins/abort @@ -21058,7 +23746,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 588 i32.const 1 call $~lib/builtins/abort @@ -21072,7 +23760,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 589 i32.const 1 call $~lib/builtins/abort @@ -21086,7 +23774,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 592 i32.const 1 call $~lib/builtins/abort @@ -21100,7 +23788,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 593 i32.const 1 call $~lib/builtins/abort @@ -21114,7 +23802,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 594 i32.const 1 call $~lib/builtins/abort @@ -21128,7 +23816,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 595 i32.const 1 call $~lib/builtins/abort @@ -21142,7 +23830,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 596 i32.const 1 call $~lib/builtins/abort @@ -21157,7 +23845,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 597 i32.const 1 call $~lib/builtins/abort @@ -21171,7 +23859,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 598 i32.const 1 call $~lib/builtins/abort @@ -21185,7 +23873,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 610 i32.const 1 call $~lib/builtins/abort @@ -21199,7 +23887,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 611 i32.const 1 call $~lib/builtins/abort @@ -21213,7 +23901,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 612 i32.const 1 call $~lib/builtins/abort @@ -21227,7 +23915,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 613 i32.const 1 call $~lib/builtins/abort @@ -21241,7 +23929,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 614 i32.const 1 call $~lib/builtins/abort @@ -21255,7 +23943,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 615 i32.const 1 call $~lib/builtins/abort @@ -21269,7 +23957,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 616 i32.const 1 call $~lib/builtins/abort @@ -21283,7 +23971,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 617 i32.const 1 call $~lib/builtins/abort @@ -21297,7 +23985,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 618 i32.const 1 call $~lib/builtins/abort @@ -21311,7 +23999,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 619 i32.const 1 call $~lib/builtins/abort @@ -21325,7 +24013,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 622 i32.const 1 call $~lib/builtins/abort @@ -21339,7 +24027,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 623 i32.const 1 call $~lib/builtins/abort @@ -21354,7 +24042,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 624 i32.const 1 call $~lib/builtins/abort @@ -21368,7 +24056,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 625 i32.const 1 call $~lib/builtins/abort @@ -21382,7 +24070,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 626 i32.const 1 call $~lib/builtins/abort @@ -21396,7 +24084,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 627 i32.const 1 call $~lib/builtins/abort @@ -21411,7 +24099,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 628 i32.const 1 call $~lib/builtins/abort @@ -21425,7 +24113,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 629 i32.const 1 call $~lib/builtins/abort @@ -21439,7 +24127,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 630 i32.const 1 call $~lib/builtins/abort @@ -21453,7 +24141,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 631 i32.const 1 call $~lib/builtins/abort @@ -21467,7 +24155,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 632 i32.const 1 call $~lib/builtins/abort @@ -21483,7 +24171,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 633 i32.const 1 call $~lib/builtins/abort @@ -21499,7 +24187,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 634 i32.const 1 call $~lib/builtins/abort @@ -21513,7 +24201,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 635 i32.const 1 call $~lib/builtins/abort @@ -21527,7 +24215,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 644 i32.const 1 call $~lib/builtins/abort @@ -21541,7 +24229,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 645 i32.const 1 call $~lib/builtins/abort @@ -21555,7 +24243,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 646 i32.const 1 call $~lib/builtins/abort @@ -21569,7 +24257,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 647 i32.const 1 call $~lib/builtins/abort @@ -21583,7 +24271,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 648 i32.const 1 call $~lib/builtins/abort @@ -21597,7 +24285,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 649 i32.const 1 call $~lib/builtins/abort @@ -21611,7 +24299,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 650 i32.const 1 call $~lib/builtins/abort @@ -21625,7 +24313,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 651 i32.const 1 call $~lib/builtins/abort @@ -21639,7 +24327,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 652 i32.const 1 call $~lib/builtins/abort @@ -21653,7 +24341,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 653 i32.const 1 call $~lib/builtins/abort @@ -21667,7 +24355,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 656 i32.const 1 call $~lib/builtins/abort @@ -21681,7 +24369,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 657 i32.const 1 call $~lib/builtins/abort @@ -21696,7 +24384,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 658 i32.const 1 call $~lib/builtins/abort @@ -21710,7 +24398,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 659 i32.const 1 call $~lib/builtins/abort @@ -21724,7 +24412,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 660 i32.const 1 call $~lib/builtins/abort @@ -21738,7 +24426,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 661 i32.const 1 call $~lib/builtins/abort @@ -21753,7 +24441,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 662 i32.const 1 call $~lib/builtins/abort @@ -21767,7 +24455,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 663 i32.const 1 call $~lib/builtins/abort @@ -21781,7 +24469,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 664 i32.const 1 call $~lib/builtins/abort @@ -21795,7 +24483,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 665 i32.const 1 call $~lib/builtins/abort @@ -21809,7 +24497,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 666 i32.const 1 call $~lib/builtins/abort @@ -21825,7 +24513,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 667 i32.const 1 call $~lib/builtins/abort @@ -21841,7 +24529,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 668 i32.const 1 call $~lib/builtins/abort @@ -21855,7 +24543,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 669 i32.const 1 call $~lib/builtins/abort @@ -21870,7 +24558,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 681 i32.const 1 call $~lib/builtins/abort @@ -21885,7 +24573,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 682 i32.const 1 call $~lib/builtins/abort @@ -21900,7 +24588,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 683 i32.const 1 call $~lib/builtins/abort @@ -21915,7 +24603,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 684 i32.const 1 call $~lib/builtins/abort @@ -21930,7 +24618,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 685 i32.const 1 call $~lib/builtins/abort @@ -21945,7 +24633,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 686 i32.const 1 call $~lib/builtins/abort @@ -21960,7 +24648,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 687 i32.const 1 call $~lib/builtins/abort @@ -21975,7 +24663,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 688 i32.const 1 call $~lib/builtins/abort @@ -21990,7 +24678,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 689 i32.const 1 call $~lib/builtins/abort @@ -22005,7 +24693,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 690 i32.const 1 call $~lib/builtins/abort @@ -22020,7 +24708,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 693 i32.const 1 call $~lib/builtins/abort @@ -22035,7 +24723,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 694 i32.const 1 call $~lib/builtins/abort @@ -22050,7 +24738,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 695 i32.const 1 call $~lib/builtins/abort @@ -22066,7 +24754,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 696 i32.const 1 call $~lib/builtins/abort @@ -22081,7 +24769,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 697 i32.const 1 call $~lib/builtins/abort @@ -22096,7 +24784,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 698 i32.const 1 call $~lib/builtins/abort @@ -22111,7 +24799,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 699 i32.const 1 call $~lib/builtins/abort @@ -22126,7 +24814,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 700 i32.const 1 call $~lib/builtins/abort @@ -22141,7 +24829,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 701 i32.const 1 call $~lib/builtins/abort @@ -22157,7 +24845,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 702 i32.const 1 call $~lib/builtins/abort @@ -22172,7 +24860,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 703 i32.const 1 call $~lib/builtins/abort @@ -22187,7 +24875,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 704 i32.const 1 call $~lib/builtins/abort @@ -22202,7 +24890,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 705 i32.const 1 call $~lib/builtins/abort @@ -22217,7 +24905,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 706 i32.const 1 call $~lib/builtins/abort @@ -22232,7 +24920,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 707 i32.const 1 call $~lib/builtins/abort @@ -22247,7 +24935,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 708 i32.const 1 call $~lib/builtins/abort @@ -22262,7 +24950,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 709 i32.const 1 call $~lib/builtins/abort @@ -22277,7 +24965,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 710 i32.const 1 call $~lib/builtins/abort @@ -22293,7 +24981,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 711 i32.const 1 call $~lib/builtins/abort @@ -22309,7 +24997,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 712 i32.const 1 call $~lib/builtins/abort @@ -22324,7 +25012,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 713 i32.const 1 call $~lib/builtins/abort @@ -22340,7 +25028,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 714 i32.const 1 call $~lib/builtins/abort @@ -22355,7 +25043,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 715 i32.const 1 call $~lib/builtins/abort @@ -22371,7 +25059,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 716 i32.const 1 call $~lib/builtins/abort @@ -22387,7 +25075,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 717 i32.const 1 call $~lib/builtins/abort @@ -22404,7 +25092,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 718 i32.const 1 call $~lib/builtins/abort @@ -22421,7 +25109,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 719 i32.const 1 call $~lib/builtins/abort @@ -22438,7 +25126,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 720 i32.const 1 call $~lib/builtins/abort @@ -22455,7 +25143,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 721 i32.const 1 call $~lib/builtins/abort @@ -22470,7 +25158,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 722 i32.const 1 call $~lib/builtins/abort @@ -22485,7 +25173,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 731 i32.const 1 call $~lib/builtins/abort @@ -22500,7 +25188,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 732 i32.const 1 call $~lib/builtins/abort @@ -22515,7 +25203,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 733 i32.const 1 call $~lib/builtins/abort @@ -22530,7 +25218,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 734 i32.const 1 call $~lib/builtins/abort @@ -22545,7 +25233,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 735 i32.const 1 call $~lib/builtins/abort @@ -22560,7 +25248,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 736 i32.const 1 call $~lib/builtins/abort @@ -22575,7 +25263,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 737 i32.const 1 call $~lib/builtins/abort @@ -22590,7 +25278,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 738 i32.const 1 call $~lib/builtins/abort @@ -22605,7 +25293,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 739 i32.const 1 call $~lib/builtins/abort @@ -22620,7 +25308,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 740 i32.const 1 call $~lib/builtins/abort @@ -22635,7 +25323,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 743 i32.const 1 call $~lib/builtins/abort @@ -22650,7 +25338,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 744 i32.const 1 call $~lib/builtins/abort @@ -22665,7 +25353,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 745 i32.const 1 call $~lib/builtins/abort @@ -22681,7 +25369,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 746 i32.const 1 call $~lib/builtins/abort @@ -22696,7 +25384,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 747 i32.const 1 call $~lib/builtins/abort @@ -22711,7 +25399,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 748 i32.const 1 call $~lib/builtins/abort @@ -22726,7 +25414,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 749 i32.const 1 call $~lib/builtins/abort @@ -22741,7 +25429,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 750 i32.const 1 call $~lib/builtins/abort @@ -22756,7 +25444,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 751 i32.const 1 call $~lib/builtins/abort @@ -22772,7 +25460,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 752 i32.const 1 call $~lib/builtins/abort @@ -22787,7 +25475,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 753 i32.const 1 call $~lib/builtins/abort @@ -22802,7 +25490,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 754 i32.const 1 call $~lib/builtins/abort @@ -22817,7 +25505,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 755 i32.const 1 call $~lib/builtins/abort @@ -22832,7 +25520,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 756 i32.const 1 call $~lib/builtins/abort @@ -22847,7 +25535,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 757 i32.const 1 call $~lib/builtins/abort @@ -22862,7 +25550,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 758 i32.const 1 call $~lib/builtins/abort @@ -22877,7 +25565,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 759 i32.const 1 call $~lib/builtins/abort @@ -22892,7 +25580,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 760 i32.const 1 call $~lib/builtins/abort @@ -22908,7 +25596,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 761 i32.const 1 call $~lib/builtins/abort @@ -22924,7 +25612,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 762 i32.const 1 call $~lib/builtins/abort @@ -22939,7 +25627,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 763 i32.const 1 call $~lib/builtins/abort @@ -22955,7 +25643,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 764 i32.const 1 call $~lib/builtins/abort @@ -22970,7 +25658,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 765 i32.const 1 call $~lib/builtins/abort @@ -22986,7 +25674,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 766 i32.const 1 call $~lib/builtins/abort @@ -23002,7 +25690,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 767 i32.const 1 call $~lib/builtins/abort @@ -23019,7 +25707,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 768 i32.const 1 call $~lib/builtins/abort @@ -23036,7 +25724,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 769 i32.const 1 call $~lib/builtins/abort @@ -23053,7 +25741,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 770 i32.const 1 call $~lib/builtins/abort @@ -23067,7 +25755,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 782 i32.const 1 call $~lib/builtins/abort @@ -23081,7 +25769,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 783 i32.const 1 call $~lib/builtins/abort @@ -23095,7 +25783,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 784 i32.const 1 call $~lib/builtins/abort @@ -23109,7 +25797,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 785 i32.const 1 call $~lib/builtins/abort @@ -23123,7 +25811,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 786 i32.const 1 call $~lib/builtins/abort @@ -23137,7 +25825,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 787 i32.const 1 call $~lib/builtins/abort @@ -23151,7 +25839,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 788 i32.const 1 call $~lib/builtins/abort @@ -23165,7 +25853,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 789 i32.const 1 call $~lib/builtins/abort @@ -23179,7 +25867,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 790 i32.const 1 call $~lib/builtins/abort @@ -23193,7 +25881,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 791 i32.const 1 call $~lib/builtins/abort @@ -23207,7 +25895,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 794 i32.const 1 call $~lib/builtins/abort @@ -23221,7 +25909,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 795 i32.const 1 call $~lib/builtins/abort @@ -23237,7 +25925,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 796 i32.const 1 call $~lib/builtins/abort @@ -23251,7 +25939,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 797 i32.const 1 call $~lib/builtins/abort @@ -23265,7 +25953,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 798 i32.const 1 call $~lib/builtins/abort @@ -23279,7 +25967,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 799 i32.const 1 call $~lib/builtins/abort @@ -23293,7 +25981,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 800 i32.const 1 call $~lib/builtins/abort @@ -23307,7 +25995,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 801 i32.const 1 call $~lib/builtins/abort @@ -23321,7 +26009,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 802 i32.const 1 call $~lib/builtins/abort @@ -23335,7 +26023,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 803 i32.const 1 call $~lib/builtins/abort @@ -23349,7 +26037,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 812 i32.const 1 call $~lib/builtins/abort @@ -23363,7 +26051,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 813 i32.const 1 call $~lib/builtins/abort @@ -23377,7 +26065,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 814 i32.const 1 call $~lib/builtins/abort @@ -23391,7 +26079,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 815 i32.const 1 call $~lib/builtins/abort @@ -23405,7 +26093,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 816 i32.const 1 call $~lib/builtins/abort @@ -23419,7 +26107,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 817 i32.const 1 call $~lib/builtins/abort @@ -23433,7 +26121,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 818 i32.const 1 call $~lib/builtins/abort @@ -23447,7 +26135,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 819 i32.const 1 call $~lib/builtins/abort @@ -23461,7 +26149,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 820 i32.const 1 call $~lib/builtins/abort @@ -23475,7 +26163,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 821 i32.const 1 call $~lib/builtins/abort @@ -23489,7 +26177,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 824 i32.const 1 call $~lib/builtins/abort @@ -23503,7 +26191,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 825 i32.const 1 call $~lib/builtins/abort @@ -23519,7 +26207,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 826 i32.const 1 call $~lib/builtins/abort @@ -23533,7 +26221,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 827 i32.const 1 call $~lib/builtins/abort @@ -23547,7 +26235,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 828 i32.const 1 call $~lib/builtins/abort @@ -23561,7 +26249,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 829 i32.const 1 call $~lib/builtins/abort @@ -23575,7 +26263,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 830 i32.const 1 call $~lib/builtins/abort @@ -23589,7 +26277,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 831 i32.const 1 call $~lib/builtins/abort @@ -23603,7 +26291,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 832 i32.const 1 call $~lib/builtins/abort @@ -23617,7 +26305,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 833 i32.const 1 call $~lib/builtins/abort @@ -23631,7 +26319,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 845 i32.const 1 call $~lib/builtins/abort @@ -23645,7 +26333,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 846 i32.const 1 call $~lib/builtins/abort @@ -23659,7 +26347,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 847 i32.const 1 call $~lib/builtins/abort @@ -23673,7 +26361,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 848 i32.const 1 call $~lib/builtins/abort @@ -23687,7 +26375,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 849 i32.const 1 call $~lib/builtins/abort @@ -23701,7 +26389,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 850 i32.const 1 call $~lib/builtins/abort @@ -23715,7 +26403,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 851 i32.const 1 call $~lib/builtins/abort @@ -23729,7 +26417,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 852 i32.const 1 call $~lib/builtins/abort @@ -23743,7 +26431,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 853 i32.const 1 call $~lib/builtins/abort @@ -23757,7 +26445,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 854 i32.const 1 call $~lib/builtins/abort @@ -23771,7 +26459,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 857 i32.const 1 call $~lib/builtins/abort @@ -23785,7 +26473,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 858 i32.const 1 call $~lib/builtins/abort @@ -23801,7 +26489,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 859 i32.const 1 call $~lib/builtins/abort @@ -23815,7 +26503,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 860 i32.const 1 call $~lib/builtins/abort @@ -23829,7 +26517,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 861 i32.const 1 call $~lib/builtins/abort @@ -23843,7 +26531,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 862 i32.const 1 call $~lib/builtins/abort @@ -23857,7 +26545,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 863 i32.const 1 call $~lib/builtins/abort @@ -23871,7 +26559,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 864 i32.const 1 call $~lib/builtins/abort @@ -23885,7 +26573,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 865 i32.const 1 call $~lib/builtins/abort @@ -23899,7 +26587,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 866 i32.const 1 call $~lib/builtins/abort @@ -23913,7 +26601,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 867 i32.const 1 call $~lib/builtins/abort @@ -23927,7 +26615,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 868 i32.const 1 call $~lib/builtins/abort @@ -23941,7 +26629,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 869 i32.const 1 call $~lib/builtins/abort @@ -23955,7 +26643,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 870 i32.const 1 call $~lib/builtins/abort @@ -23969,7 +26657,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 871 i32.const 1 call $~lib/builtins/abort @@ -23983,7 +26671,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 872 i32.const 1 call $~lib/builtins/abort @@ -23997,7 +26685,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 873 i32.const 1 call $~lib/builtins/abort @@ -24013,7 +26701,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 874 i32.const 1 call $~lib/builtins/abort @@ -24027,7 +26715,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 875 i32.const 1 call $~lib/builtins/abort @@ -24041,7 +26729,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 876 i32.const 1 call $~lib/builtins/abort @@ -24055,7 +26743,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 877 i32.const 1 call $~lib/builtins/abort @@ -24069,7 +26757,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 878 i32.const 1 call $~lib/builtins/abort @@ -24083,7 +26771,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 879 i32.const 1 call $~lib/builtins/abort @@ -24097,7 +26785,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 880 i32.const 1 call $~lib/builtins/abort @@ -24111,7 +26799,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 881 i32.const 1 call $~lib/builtins/abort @@ -24125,7 +26813,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 882 i32.const 1 call $~lib/builtins/abort @@ -24139,7 +26827,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 883 i32.const 1 call $~lib/builtins/abort @@ -24153,7 +26841,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 884 i32.const 1 call $~lib/builtins/abort @@ -24167,7 +26855,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 885 i32.const 1 call $~lib/builtins/abort @@ -24181,7 +26869,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 886 i32.const 1 call $~lib/builtins/abort @@ -24195,7 +26883,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 887 i32.const 1 call $~lib/builtins/abort @@ -24209,7 +26897,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 888 i32.const 1 call $~lib/builtins/abort @@ -24225,7 +26913,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 889 i32.const 1 call $~lib/builtins/abort @@ -24239,7 +26927,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 890 i32.const 1 call $~lib/builtins/abort @@ -24253,7 +26941,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 891 i32.const 1 call $~lib/builtins/abort @@ -24267,7 +26955,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 892 i32.const 1 call $~lib/builtins/abort @@ -24281,7 +26969,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 893 i32.const 1 call $~lib/builtins/abort @@ -24295,7 +26983,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 894 i32.const 1 call $~lib/builtins/abort @@ -24309,7 +26997,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 895 i32.const 1 call $~lib/builtins/abort @@ -24323,7 +27011,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 896 i32.const 1 call $~lib/builtins/abort @@ -24337,7 +27025,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 897 i32.const 1 call $~lib/builtins/abort @@ -24351,7 +27039,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 898 i32.const 1 call $~lib/builtins/abort @@ -24365,7 +27053,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 899 i32.const 1 call $~lib/builtins/abort @@ -24379,7 +27067,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 900 i32.const 1 call $~lib/builtins/abort @@ -24393,7 +27081,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 901 i32.const 1 call $~lib/builtins/abort @@ -24407,7 +27095,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 910 i32.const 1 call $~lib/builtins/abort @@ -24421,7 +27109,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 911 i32.const 1 call $~lib/builtins/abort @@ -24435,7 +27123,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 912 i32.const 1 call $~lib/builtins/abort @@ -24449,7 +27137,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 913 i32.const 1 call $~lib/builtins/abort @@ -24463,7 +27151,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 914 i32.const 1 call $~lib/builtins/abort @@ -24477,7 +27165,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 915 i32.const 1 call $~lib/builtins/abort @@ -24491,7 +27179,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 916 i32.const 1 call $~lib/builtins/abort @@ -24505,7 +27193,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 917 i32.const 1 call $~lib/builtins/abort @@ -24519,7 +27207,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 918 i32.const 1 call $~lib/builtins/abort @@ -24533,7 +27221,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 919 i32.const 1 call $~lib/builtins/abort @@ -24547,7 +27235,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 922 i32.const 1 call $~lib/builtins/abort @@ -24561,7 +27249,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 923 i32.const 1 call $~lib/builtins/abort @@ -24577,7 +27265,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 924 i32.const 1 call $~lib/builtins/abort @@ -24591,7 +27279,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 925 i32.const 1 call $~lib/builtins/abort @@ -24605,7 +27293,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 926 i32.const 1 call $~lib/builtins/abort @@ -24619,7 +27307,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 927 i32.const 1 call $~lib/builtins/abort @@ -24633,7 +27321,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 928 i32.const 1 call $~lib/builtins/abort @@ -24647,7 +27335,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 929 i32.const 1 call $~lib/builtins/abort @@ -24661,7 +27349,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 930 i32.const 1 call $~lib/builtins/abort @@ -24675,7 +27363,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 931 i32.const 1 call $~lib/builtins/abort @@ -24689,7 +27377,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 932 i32.const 1 call $~lib/builtins/abort @@ -24703,7 +27391,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 933 i32.const 1 call $~lib/builtins/abort @@ -24717,7 +27405,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 934 i32.const 1 call $~lib/builtins/abort @@ -24731,7 +27419,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 935 i32.const 1 call $~lib/builtins/abort @@ -24745,7 +27433,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 936 i32.const 1 call $~lib/builtins/abort @@ -24759,7 +27447,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 937 i32.const 1 call $~lib/builtins/abort @@ -24773,7 +27461,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 938 i32.const 1 call $~lib/builtins/abort @@ -24789,7 +27477,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 939 i32.const 1 call $~lib/builtins/abort @@ -24803,7 +27491,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 940 i32.const 1 call $~lib/builtins/abort @@ -24817,7 +27505,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 941 i32.const 1 call $~lib/builtins/abort @@ -24831,7 +27519,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 942 i32.const 1 call $~lib/builtins/abort @@ -24845,7 +27533,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 943 i32.const 1 call $~lib/builtins/abort @@ -24859,7 +27547,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 944 i32.const 1 call $~lib/builtins/abort @@ -24873,7 +27561,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 945 i32.const 1 call $~lib/builtins/abort @@ -24887,7 +27575,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 946 i32.const 1 call $~lib/builtins/abort @@ -24901,7 +27589,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 947 i32.const 1 call $~lib/builtins/abort @@ -24915,7 +27603,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 948 i32.const 1 call $~lib/builtins/abort @@ -24929,7 +27617,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 949 i32.const 1 call $~lib/builtins/abort @@ -24943,7 +27631,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 950 i32.const 1 call $~lib/builtins/abort @@ -24957,7 +27645,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 951 i32.const 1 call $~lib/builtins/abort @@ -24971,7 +27659,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 952 i32.const 1 call $~lib/builtins/abort @@ -24985,7 +27673,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 953 i32.const 1 call $~lib/builtins/abort @@ -25001,7 +27689,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 954 i32.const 1 call $~lib/builtins/abort @@ -25015,7 +27703,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 955 i32.const 1 call $~lib/builtins/abort @@ -25029,7 +27717,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 956 i32.const 1 call $~lib/builtins/abort @@ -25043,7 +27731,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 957 i32.const 1 call $~lib/builtins/abort @@ -25057,7 +27745,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 958 i32.const 1 call $~lib/builtins/abort @@ -25071,7 +27759,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 959 i32.const 1 call $~lib/builtins/abort @@ -25085,7 +27773,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 960 i32.const 1 call $~lib/builtins/abort @@ -25099,7 +27787,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 961 i32.const 1 call $~lib/builtins/abort @@ -25113,7 +27801,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 962 i32.const 1 call $~lib/builtins/abort @@ -25127,7 +27815,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 963 i32.const 1 call $~lib/builtins/abort @@ -25141,7 +27829,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 964 i32.const 1 call $~lib/builtins/abort @@ -25155,7 +27843,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 965 i32.const 1 call $~lib/builtins/abort @@ -25169,7 +27857,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 966 i32.const 1 call $~lib/builtins/abort @@ -25183,7 +27871,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 977 i32.const 1 call $~lib/builtins/abort @@ -25197,7 +27885,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 978 i32.const 1 call $~lib/builtins/abort @@ -25211,7 +27899,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 979 i32.const 1 call $~lib/builtins/abort @@ -25225,7 +27913,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 980 i32.const 1 call $~lib/builtins/abort @@ -25239,7 +27927,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 981 i32.const 1 call $~lib/builtins/abort @@ -25253,7 +27941,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 982 i32.const 1 call $~lib/builtins/abort @@ -25267,7 +27955,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 983 i32.const 1 call $~lib/builtins/abort @@ -25281,7 +27969,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 984 i32.const 1 call $~lib/builtins/abort @@ -25295,7 +27983,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 985 i32.const 1 call $~lib/builtins/abort @@ -25309,7 +27997,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 986 i32.const 1 call $~lib/builtins/abort @@ -25323,7 +28011,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 989 i32.const 1 call $~lib/builtins/abort @@ -25337,7 +28025,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 990 i32.const 1 call $~lib/builtins/abort @@ -25351,7 +28039,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 991 i32.const 1 call $~lib/builtins/abort @@ -25366,7 +28054,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 992 i32.const 1 call $~lib/builtins/abort @@ -25380,7 +28068,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 993 i32.const 1 call $~lib/builtins/abort @@ -25394,7 +28082,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 994 i32.const 1 call $~lib/builtins/abort @@ -25408,7 +28096,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 995 i32.const 1 call $~lib/builtins/abort @@ -25422,7 +28110,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 996 i32.const 1 call $~lib/builtins/abort @@ -25436,7 +28124,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 997 i32.const 1 call $~lib/builtins/abort @@ -25450,7 +28138,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 998 i32.const 1 call $~lib/builtins/abort @@ -25464,7 +28152,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 999 i32.const 1 call $~lib/builtins/abort @@ -25478,7 +28166,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1000 i32.const 1 call $~lib/builtins/abort @@ -25492,7 +28180,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1001 i32.const 1 call $~lib/builtins/abort @@ -25506,7 +28194,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1002 i32.const 1 call $~lib/builtins/abort @@ -25520,7 +28208,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1003 i32.const 1 call $~lib/builtins/abort @@ -25534,7 +28222,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1004 i32.const 1 call $~lib/builtins/abort @@ -25548,7 +28236,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1005 i32.const 1 call $~lib/builtins/abort @@ -25562,7 +28250,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1006 i32.const 1 call $~lib/builtins/abort @@ -25576,7 +28264,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1007 i32.const 1 call $~lib/builtins/abort @@ -25590,7 +28278,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1008 i32.const 1 call $~lib/builtins/abort @@ -25604,7 +28292,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1009 i32.const 1 call $~lib/builtins/abort @@ -25618,7 +28306,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1010 i32.const 1 call $~lib/builtins/abort @@ -25632,7 +28320,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1011 i32.const 1 call $~lib/builtins/abort @@ -25646,7 +28334,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1012 i32.const 1 call $~lib/builtins/abort @@ -25660,7 +28348,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1013 i32.const 1 call $~lib/builtins/abort @@ -25674,7 +28362,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1014 i32.const 1 call $~lib/builtins/abort @@ -25688,7 +28376,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1015 i32.const 1 call $~lib/builtins/abort @@ -25702,7 +28390,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1016 i32.const 1 call $~lib/builtins/abort @@ -25716,7 +28404,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1017 i32.const 1 call $~lib/builtins/abort @@ -25730,7 +28418,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1018 i32.const 1 call $~lib/builtins/abort @@ -25744,7 +28432,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1019 i32.const 1 call $~lib/builtins/abort @@ -25758,7 +28446,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1020 i32.const 1 call $~lib/builtins/abort @@ -25772,7 +28460,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1021 i32.const 1 call $~lib/builtins/abort @@ -25786,7 +28474,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1022 i32.const 1 call $~lib/builtins/abort @@ -25800,7 +28488,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1023 i32.const 1 call $~lib/builtins/abort @@ -25814,7 +28502,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1024 i32.const 1 call $~lib/builtins/abort @@ -25828,7 +28516,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1025 i32.const 1 call $~lib/builtins/abort @@ -25842,7 +28530,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1026 i32.const 1 call $~lib/builtins/abort @@ -25856,7 +28544,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1027 i32.const 1 call $~lib/builtins/abort @@ -25870,7 +28558,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1028 i32.const 1 call $~lib/builtins/abort @@ -25884,7 +28572,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1029 i32.const 1 call $~lib/builtins/abort @@ -25898,7 +28586,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1030 i32.const 1 call $~lib/builtins/abort @@ -25912,7 +28600,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1031 i32.const 1 call $~lib/builtins/abort @@ -25926,7 +28614,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1032 i32.const 1 call $~lib/builtins/abort @@ -25940,7 +28628,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1033 i32.const 1 call $~lib/builtins/abort @@ -25954,7 +28642,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1034 i32.const 1 call $~lib/builtins/abort @@ -25968,7 +28656,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1035 i32.const 1 call $~lib/builtins/abort @@ -25982,7 +28670,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1036 i32.const 1 call $~lib/builtins/abort @@ -25996,7 +28684,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1037 i32.const 1 call $~lib/builtins/abort @@ -26010,7 +28698,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1038 i32.const 1 call $~lib/builtins/abort @@ -26024,7 +28712,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1039 i32.const 1 call $~lib/builtins/abort @@ -26038,7 +28726,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1040 i32.const 1 call $~lib/builtins/abort @@ -26052,7 +28740,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1041 i32.const 1 call $~lib/builtins/abort @@ -26066,7 +28754,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1042 i32.const 1 call $~lib/builtins/abort @@ -26080,7 +28768,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1043 i32.const 1 call $~lib/builtins/abort @@ -26094,7 +28782,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1044 i32.const 1 call $~lib/builtins/abort @@ -26108,7 +28796,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1045 i32.const 1 call $~lib/builtins/abort @@ -26122,7 +28810,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1046 i32.const 1 call $~lib/builtins/abort @@ -26136,7 +28824,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1047 i32.const 1 call $~lib/builtins/abort @@ -26150,7 +28838,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1048 i32.const 1 call $~lib/builtins/abort @@ -26164,7 +28852,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1049 i32.const 1 call $~lib/builtins/abort @@ -26178,7 +28866,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1050 i32.const 1 call $~lib/builtins/abort @@ -26192,7 +28880,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1051 i32.const 1 call $~lib/builtins/abort @@ -26206,7 +28894,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1052 i32.const 1 call $~lib/builtins/abort @@ -26220,7 +28908,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1053 i32.const 1 call $~lib/builtins/abort @@ -26234,7 +28922,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1054 i32.const 1 call $~lib/builtins/abort @@ -26248,7 +28936,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1055 i32.const 1 call $~lib/builtins/abort @@ -26262,7 +28950,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1056 i32.const 1 call $~lib/builtins/abort @@ -26276,7 +28964,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1057 i32.const 1 call $~lib/builtins/abort @@ -26290,7 +28978,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1058 i32.const 1 call $~lib/builtins/abort @@ -26304,7 +28992,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1059 i32.const 1 call $~lib/builtins/abort @@ -26318,7 +29006,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1060 i32.const 1 call $~lib/builtins/abort @@ -26332,7 +29020,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1061 i32.const 1 call $~lib/builtins/abort @@ -26346,7 +29034,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1062 i32.const 1 call $~lib/builtins/abort @@ -26360,7 +29048,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1063 i32.const 1 call $~lib/builtins/abort @@ -26374,7 +29062,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1064 i32.const 1 call $~lib/builtins/abort @@ -26388,7 +29076,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1065 i32.const 1 call $~lib/builtins/abort @@ -26402,7 +29090,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1066 i32.const 1 call $~lib/builtins/abort @@ -26416,7 +29104,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1069 i32.const 1 call $~lib/builtins/abort @@ -26430,7 +29118,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1070 i32.const 1 call $~lib/builtins/abort @@ -26444,7 +29132,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1071 i32.const 1 call $~lib/builtins/abort @@ -26458,7 +29146,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1072 i32.const 1 call $~lib/builtins/abort @@ -26472,7 +29160,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1073 i32.const 1 call $~lib/builtins/abort @@ -26486,7 +29174,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1074 i32.const 1 call $~lib/builtins/abort @@ -26500,7 +29188,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1075 i32.const 1 call $~lib/builtins/abort @@ -26514,7 +29202,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1076 i32.const 1 call $~lib/builtins/abort @@ -26528,7 +29216,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1077 i32.const 1 call $~lib/builtins/abort @@ -26542,7 +29230,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1078 i32.const 1 call $~lib/builtins/abort @@ -26556,7 +29244,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1079 i32.const 1 call $~lib/builtins/abort @@ -26570,7 +29258,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1080 i32.const 1 call $~lib/builtins/abort @@ -26584,7 +29272,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1081 i32.const 1 call $~lib/builtins/abort @@ -26598,7 +29286,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1082 i32.const 1 call $~lib/builtins/abort @@ -26612,7 +29300,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1083 i32.const 1 call $~lib/builtins/abort @@ -26626,7 +29314,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1084 i32.const 1 call $~lib/builtins/abort @@ -26640,7 +29328,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1085 i32.const 1 call $~lib/builtins/abort @@ -26654,7 +29342,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1086 i32.const 1 call $~lib/builtins/abort @@ -26668,7 +29356,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1087 i32.const 1 call $~lib/builtins/abort @@ -26682,7 +29370,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1088 i32.const 1 call $~lib/builtins/abort @@ -26696,7 +29384,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1089 i32.const 1 call $~lib/builtins/abort @@ -26710,7 +29398,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1090 i32.const 1 call $~lib/builtins/abort @@ -26724,7 +29412,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1091 i32.const 1 call $~lib/builtins/abort @@ -26738,7 +29426,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1092 i32.const 1 call $~lib/builtins/abort @@ -26752,7 +29440,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1093 i32.const 1 call $~lib/builtins/abort @@ -26766,7 +29454,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1094 i32.const 1 call $~lib/builtins/abort @@ -26780,7 +29468,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1095 i32.const 1 call $~lib/builtins/abort @@ -26794,7 +29482,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1096 i32.const 1 call $~lib/builtins/abort @@ -26808,7 +29496,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1097 i32.const 1 call $~lib/builtins/abort @@ -26822,7 +29510,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1098 i32.const 1 call $~lib/builtins/abort @@ -26836,7 +29524,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1099 i32.const 1 call $~lib/builtins/abort @@ -26850,7 +29538,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1100 i32.const 1 call $~lib/builtins/abort @@ -26864,7 +29552,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1101 i32.const 1 call $~lib/builtins/abort @@ -26878,7 +29566,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1102 i32.const 1 call $~lib/builtins/abort @@ -26892,7 +29580,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1103 i32.const 1 call $~lib/builtins/abort @@ -26906,7 +29594,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1104 i32.const 1 call $~lib/builtins/abort @@ -26920,7 +29608,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1105 i32.const 1 call $~lib/builtins/abort @@ -26934,7 +29622,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1106 i32.const 1 call $~lib/builtins/abort @@ -26952,7 +29640,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1108 i32.const 1 call $~lib/builtins/abort @@ -26974,7 +29662,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1109 i32.const 1 call $~lib/builtins/abort @@ -26992,7 +29680,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1110 i32.const 1 call $~lib/builtins/abort @@ -27005,7 +29693,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1114 i32.const 1 call $~lib/builtins/abort @@ -27018,7 +29706,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1115 i32.const 1 call $~lib/builtins/abort @@ -27031,7 +29719,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1118 i32.const 1 call $~lib/builtins/abort @@ -27044,7 +29732,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1120 i32.const 1 call $~lib/builtins/abort @@ -27057,7 +29745,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1121 i32.const 1 call $~lib/builtins/abort @@ -27070,7 +29758,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1124 i32.const 1 call $~lib/builtins/abort @@ -27083,7 +29771,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1126 i32.const 1 call $~lib/builtins/abort @@ -27096,7 +29784,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1129 i32.const 1 call $~lib/builtins/abort @@ -27109,7 +29797,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1131 i32.const 1 call $~lib/builtins/abort @@ -27122,7 +29810,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1132 i32.const 1 call $~lib/builtins/abort @@ -27135,7 +29823,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1133 i32.const 1 call $~lib/builtins/abort @@ -27148,7 +29836,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1135 i32.const 1 call $~lib/builtins/abort @@ -27165,7 +29853,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1137 i32.const 1 call $~lib/builtins/abort @@ -27182,7 +29870,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1138 i32.const 1 call $~lib/builtins/abort @@ -27199,7 +29887,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1139 i32.const 1 call $~lib/builtins/abort @@ -27216,7 +29904,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1140 i32.const 1 call $~lib/builtins/abort @@ -27229,7 +29917,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1141 i32.const 1 call $~lib/builtins/abort @@ -27246,7 +29934,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1142 i32.const 1 call $~lib/builtins/abort @@ -27260,7 +29948,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1151 i32.const 1 call $~lib/builtins/abort @@ -27274,7 +29962,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1152 i32.const 1 call $~lib/builtins/abort @@ -27288,7 +29976,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1153 i32.const 1 call $~lib/builtins/abort @@ -27302,7 +29990,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1154 i32.const 1 call $~lib/builtins/abort @@ -27316,7 +30004,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1155 i32.const 1 call $~lib/builtins/abort @@ -27330,7 +30018,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1156 i32.const 1 call $~lib/builtins/abort @@ -27344,7 +30032,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1157 i32.const 1 call $~lib/builtins/abort @@ -27358,7 +30046,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1158 i32.const 1 call $~lib/builtins/abort @@ -27372,7 +30060,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1159 i32.const 1 call $~lib/builtins/abort @@ -27386,7 +30074,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1160 i32.const 1 call $~lib/builtins/abort @@ -27400,7 +30088,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1163 i32.const 1 call $~lib/builtins/abort @@ -27414,7 +30102,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1164 i32.const 1 call $~lib/builtins/abort @@ -27428,7 +30116,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1165 i32.const 1 call $~lib/builtins/abort @@ -27443,7 +30131,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1166 i32.const 1 call $~lib/builtins/abort @@ -27457,7 +30145,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1167 i32.const 1 call $~lib/builtins/abort @@ -27471,7 +30159,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1170 i32.const 1 call $~lib/builtins/abort @@ -27485,7 +30173,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1171 i32.const 1 call $~lib/builtins/abort @@ -27499,7 +30187,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1172 i32.const 1 call $~lib/builtins/abort @@ -27513,7 +30201,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1173 i32.const 1 call $~lib/builtins/abort @@ -27527,7 +30215,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1174 i32.const 1 call $~lib/builtins/abort @@ -27541,7 +30229,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1175 i32.const 1 call $~lib/builtins/abort @@ -27555,7 +30243,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1176 i32.const 1 call $~lib/builtins/abort @@ -27569,7 +30257,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1177 i32.const 1 call $~lib/builtins/abort @@ -27583,7 +30271,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1178 i32.const 1 call $~lib/builtins/abort @@ -27597,7 +30285,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1179 i32.const 1 call $~lib/builtins/abort @@ -27611,7 +30299,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1180 i32.const 1 call $~lib/builtins/abort @@ -27625,7 +30313,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1181 i32.const 1 call $~lib/builtins/abort @@ -27639,7 +30327,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1182 i32.const 1 call $~lib/builtins/abort @@ -27653,7 +30341,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1183 i32.const 1 call $~lib/builtins/abort @@ -27667,7 +30355,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1184 i32.const 1 call $~lib/builtins/abort @@ -27681,7 +30369,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1185 i32.const 1 call $~lib/builtins/abort @@ -27695,7 +30383,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1186 i32.const 1 call $~lib/builtins/abort @@ -27709,7 +30397,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1187 i32.const 1 call $~lib/builtins/abort @@ -27723,7 +30411,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1188 i32.const 1 call $~lib/builtins/abort @@ -27737,7 +30425,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1189 i32.const 1 call $~lib/builtins/abort @@ -27751,7 +30439,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1190 i32.const 1 call $~lib/builtins/abort @@ -27765,7 +30453,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1191 i32.const 1 call $~lib/builtins/abort @@ -27779,7 +30467,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1192 i32.const 1 call $~lib/builtins/abort @@ -27793,7 +30481,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1193 i32.const 1 call $~lib/builtins/abort @@ -27807,7 +30495,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1194 i32.const 1 call $~lib/builtins/abort @@ -27821,7 +30509,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1195 i32.const 1 call $~lib/builtins/abort @@ -27835,7 +30523,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1196 i32.const 1 call $~lib/builtins/abort @@ -27849,7 +30537,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1197 i32.const 1 call $~lib/builtins/abort @@ -27863,7 +30551,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1198 i32.const 1 call $~lib/builtins/abort @@ -27877,7 +30565,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1199 i32.const 1 call $~lib/builtins/abort @@ -27891,7 +30579,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1200 i32.const 1 call $~lib/builtins/abort @@ -27905,7 +30593,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1201 i32.const 1 call $~lib/builtins/abort @@ -27919,7 +30607,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1202 i32.const 1 call $~lib/builtins/abort @@ -27933,7 +30621,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1203 i32.const 1 call $~lib/builtins/abort @@ -27947,7 +30635,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1204 i32.const 1 call $~lib/builtins/abort @@ -27961,7 +30649,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1205 i32.const 1 call $~lib/builtins/abort @@ -27975,7 +30663,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1206 i32.const 1 call $~lib/builtins/abort @@ -27989,7 +30677,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1207 i32.const 1 call $~lib/builtins/abort @@ -28003,7 +30691,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1210 i32.const 1 call $~lib/builtins/abort @@ -28017,7 +30705,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1211 i32.const 1 call $~lib/builtins/abort @@ -28031,7 +30719,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1212 i32.const 1 call $~lib/builtins/abort @@ -28045,7 +30733,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1213 i32.const 1 call $~lib/builtins/abort @@ -28059,7 +30747,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1214 i32.const 1 call $~lib/builtins/abort @@ -28073,7 +30761,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1215 i32.const 1 call $~lib/builtins/abort @@ -28087,7 +30775,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1216 i32.const 1 call $~lib/builtins/abort @@ -28101,7 +30789,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1217 i32.const 1 call $~lib/builtins/abort @@ -28115,7 +30803,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1218 i32.const 1 call $~lib/builtins/abort @@ -28129,7 +30817,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1219 i32.const 1 call $~lib/builtins/abort @@ -28143,7 +30831,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1220 i32.const 1 call $~lib/builtins/abort @@ -28157,7 +30845,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1221 i32.const 1 call $~lib/builtins/abort @@ -28171,7 +30859,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1222 i32.const 1 call $~lib/builtins/abort @@ -28186,7 +30874,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1223 i32.const 1 call $~lib/builtins/abort @@ -28200,7 +30888,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1234 i32.const 1 call $~lib/builtins/abort @@ -28214,7 +30902,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1235 i32.const 1 call $~lib/builtins/abort @@ -28228,7 +30916,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1236 i32.const 1 call $~lib/builtins/abort @@ -28242,7 +30930,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1237 i32.const 1 call $~lib/builtins/abort @@ -28256,7 +30944,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1238 i32.const 1 call $~lib/builtins/abort @@ -28270,7 +30958,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1239 i32.const 1 call $~lib/builtins/abort @@ -28284,7 +30972,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1240 i32.const 1 call $~lib/builtins/abort @@ -28298,7 +30986,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1241 i32.const 1 call $~lib/builtins/abort @@ -28312,7 +31000,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1242 i32.const 1 call $~lib/builtins/abort @@ -28326,7 +31014,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1243 i32.const 1 call $~lib/builtins/abort @@ -28340,7 +31028,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1246 i32.const 1 call $~lib/builtins/abort @@ -28354,7 +31042,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1247 i32.const 1 call $~lib/builtins/abort @@ -28368,7 +31056,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1248 i32.const 1 call $~lib/builtins/abort @@ -28383,7 +31071,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1249 i32.const 1 call $~lib/builtins/abort @@ -28397,7 +31085,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1250 i32.const 1 call $~lib/builtins/abort @@ -28411,7 +31099,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1259 i32.const 1 call $~lib/builtins/abort @@ -28425,7 +31113,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1260 i32.const 1 call $~lib/builtins/abort @@ -28439,7 +31127,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1261 i32.const 1 call $~lib/builtins/abort @@ -28453,7 +31141,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1262 i32.const 1 call $~lib/builtins/abort @@ -28467,7 +31155,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1263 i32.const 1 call $~lib/builtins/abort @@ -28481,7 +31169,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1264 i32.const 1 call $~lib/builtins/abort @@ -28495,7 +31183,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1265 i32.const 1 call $~lib/builtins/abort @@ -28509,7 +31197,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1266 i32.const 1 call $~lib/builtins/abort @@ -28523,7 +31211,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1267 i32.const 1 call $~lib/builtins/abort @@ -28537,7 +31225,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1268 i32.const 1 call $~lib/builtins/abort @@ -28551,7 +31239,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1271 i32.const 1 call $~lib/builtins/abort @@ -28565,7 +31253,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1272 i32.const 1 call $~lib/builtins/abort @@ -28579,7 +31267,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1273 i32.const 1 call $~lib/builtins/abort @@ -28594,7 +31282,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1274 i32.const 1 call $~lib/builtins/abort @@ -28608,7 +31296,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1275 i32.const 1 call $~lib/builtins/abort @@ -28622,7 +31310,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1287 i32.const 1 call $~lib/builtins/abort @@ -28636,7 +31324,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1288 i32.const 1 call $~lib/builtins/abort @@ -28650,7 +31338,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1289 i32.const 1 call $~lib/builtins/abort @@ -28664,7 +31352,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1290 i32.const 1 call $~lib/builtins/abort @@ -28678,7 +31366,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1291 i32.const 1 call $~lib/builtins/abort @@ -28692,7 +31380,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1292 i32.const 1 call $~lib/builtins/abort @@ -28706,7 +31394,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1293 i32.const 1 call $~lib/builtins/abort @@ -28720,7 +31408,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1294 i32.const 1 call $~lib/builtins/abort @@ -28734,7 +31422,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1295 i32.const 1 call $~lib/builtins/abort @@ -28748,7 +31436,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1296 i32.const 1 call $~lib/builtins/abort @@ -28762,7 +31450,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1299 i32.const 1 call $~lib/builtins/abort @@ -28776,7 +31464,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1300 i32.const 1 call $~lib/builtins/abort @@ -28790,7 +31478,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1301 i32.const 1 call $~lib/builtins/abort @@ -28804,7 +31492,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1302 i32.const 1 call $~lib/builtins/abort @@ -28818,7 +31506,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1303 i32.const 1 call $~lib/builtins/abort @@ -28833,7 +31521,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1304 i32.const 1 call $~lib/builtins/abort @@ -28847,7 +31535,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1305 i32.const 1 call $~lib/builtins/abort @@ -28861,7 +31549,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1306 i32.const 1 call $~lib/builtins/abort @@ -28875,7 +31563,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1307 i32.const 1 call $~lib/builtins/abort @@ -28889,7 +31577,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1308 i32.const 1 call $~lib/builtins/abort @@ -28903,7 +31591,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1309 i32.const 1 call $~lib/builtins/abort @@ -28917,7 +31605,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1312 i32.const 1 call $~lib/builtins/abort @@ -28932,7 +31620,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1313 i32.const 1 call $~lib/builtins/abort @@ -28949,7 +31637,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1315 i32.const 1 call $~lib/builtins/abort @@ -28966,7 +31654,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1322 i32.const 1 call $~lib/builtins/abort @@ -28984,7 +31672,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1323 i32.const 1 call $~lib/builtins/abort @@ -29002,7 +31690,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1330 i32.const 1 call $~lib/builtins/abort @@ -29019,7 +31707,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1337 i32.const 1 call $~lib/builtins/abort @@ -29038,7 +31726,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1344 i32.const 1 call $~lib/builtins/abort @@ -29055,7 +31743,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1351 i32.const 1 call $~lib/builtins/abort @@ -29072,7 +31760,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1358 i32.const 1 call $~lib/builtins/abort @@ -29089,7 +31777,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1365 i32.const 1 call $~lib/builtins/abort @@ -29106,7 +31794,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1371 i32.const 1 call $~lib/builtins/abort @@ -29123,7 +31811,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1377 i32.const 1 call $~lib/builtins/abort @@ -29140,7 +31828,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1383 i32.const 1 call $~lib/builtins/abort @@ -29157,7 +31845,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1390 i32.const 1 call $~lib/builtins/abort @@ -29174,7 +31862,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1397 i32.const 1 call $~lib/builtins/abort @@ -29191,7 +31879,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1404 i32.const 1 call $~lib/builtins/abort @@ -29208,7 +31896,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1411 i32.const 1 call $~lib/builtins/abort @@ -29225,7 +31913,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1418 i32.const 1 call $~lib/builtins/abort @@ -29242,7 +31930,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1425 i32.const 1 call $~lib/builtins/abort @@ -29259,7 +31947,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1432 i32.const 1 call $~lib/builtins/abort @@ -29276,7 +31964,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1439 i32.const 1 call $~lib/builtins/abort @@ -29290,7 +31978,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1453 i32.const 1 call $~lib/builtins/abort @@ -29304,7 +31992,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1454 i32.const 1 call $~lib/builtins/abort @@ -29318,7 +32006,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1455 i32.const 1 call $~lib/builtins/abort @@ -29332,7 +32020,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1456 i32.const 1 call $~lib/builtins/abort @@ -29346,7 +32034,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1457 i32.const 1 call $~lib/builtins/abort @@ -29360,7 +32048,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1458 i32.const 1 call $~lib/builtins/abort @@ -29374,7 +32062,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1459 i32.const 1 call $~lib/builtins/abort @@ -29388,7 +32076,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1460 i32.const 1 call $~lib/builtins/abort @@ -29402,7 +32090,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1461 i32.const 1 call $~lib/builtins/abort @@ -29416,7 +32104,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1462 i32.const 1 call $~lib/builtins/abort @@ -29430,7 +32118,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1465 i32.const 1 call $~lib/builtins/abort @@ -29444,7 +32132,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1466 i32.const 1 call $~lib/builtins/abort @@ -29458,7 +32146,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1467 i32.const 1 call $~lib/builtins/abort @@ -29472,7 +32160,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1468 i32.const 1 call $~lib/builtins/abort @@ -29486,7 +32174,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1469 i32.const 1 call $~lib/builtins/abort @@ -29501,7 +32189,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1470 i32.const 1 call $~lib/builtins/abort @@ -29515,7 +32203,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1471 i32.const 1 call $~lib/builtins/abort @@ -29529,7 +32217,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1472 i32.const 1 call $~lib/builtins/abort @@ -29545,7 +32233,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1473 i32.const 1 call $~lib/builtins/abort @@ -29561,7 +32249,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1474 i32.const 1 call $~lib/builtins/abort @@ -29577,7 +32265,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1475 i32.const 1 call $~lib/builtins/abort @@ -29591,7 +32279,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1476 i32.const 1 call $~lib/builtins/abort @@ -29605,7 +32293,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1477 i32.const 1 call $~lib/builtins/abort @@ -29619,7 +32307,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1478 i32.const 1 call $~lib/builtins/abort @@ -29633,7 +32321,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1490 i32.const 1 call $~lib/builtins/abort @@ -29647,7 +32335,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1491 i32.const 1 call $~lib/builtins/abort @@ -29661,7 +32349,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1492 i32.const 1 call $~lib/builtins/abort @@ -29675,7 +32363,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1493 i32.const 1 call $~lib/builtins/abort @@ -29689,7 +32377,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1494 i32.const 1 call $~lib/builtins/abort @@ -29703,7 +32391,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1495 i32.const 1 call $~lib/builtins/abort @@ -29717,7 +32405,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1496 i32.const 1 call $~lib/builtins/abort @@ -29731,7 +32419,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1497 i32.const 1 call $~lib/builtins/abort @@ -29745,7 +32433,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1498 i32.const 1 call $~lib/builtins/abort @@ -29759,7 +32447,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1499 i32.const 1 call $~lib/builtins/abort @@ -29773,7 +32461,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1502 i32.const 1 call $~lib/builtins/abort @@ -29787,7 +32475,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1503 i32.const 1 call $~lib/builtins/abort @@ -29801,7 +32489,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1504 i32.const 1 call $~lib/builtins/abort @@ -29815,7 +32503,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1505 i32.const 1 call $~lib/builtins/abort @@ -29829,7 +32517,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1506 i32.const 1 call $~lib/builtins/abort @@ -29844,7 +32532,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1507 i32.const 1 call $~lib/builtins/abort @@ -29858,7 +32546,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1508 i32.const 1 call $~lib/builtins/abort @@ -29874,7 +32562,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1509 i32.const 1 call $~lib/builtins/abort @@ -29890,7 +32578,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1510 i32.const 1 call $~lib/builtins/abort @@ -29904,7 +32592,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1519 i32.const 1 call $~lib/builtins/abort @@ -29918,7 +32606,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1520 i32.const 1 call $~lib/builtins/abort @@ -29932,7 +32620,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1521 i32.const 1 call $~lib/builtins/abort @@ -29946,7 +32634,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1522 i32.const 1 call $~lib/builtins/abort @@ -29960,7 +32648,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1523 i32.const 1 call $~lib/builtins/abort @@ -29974,7 +32662,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1524 i32.const 1 call $~lib/builtins/abort @@ -29988,7 +32676,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1525 i32.const 1 call $~lib/builtins/abort @@ -30002,7 +32690,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1526 i32.const 1 call $~lib/builtins/abort @@ -30016,7 +32704,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1527 i32.const 1 call $~lib/builtins/abort @@ -30030,7 +32718,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1528 i32.const 1 call $~lib/builtins/abort @@ -30044,7 +32732,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1531 i32.const 1 call $~lib/builtins/abort @@ -30058,7 +32746,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1532 i32.const 1 call $~lib/builtins/abort @@ -30072,7 +32760,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1533 i32.const 1 call $~lib/builtins/abort @@ -30086,7 +32774,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1534 i32.const 1 call $~lib/builtins/abort @@ -30100,7 +32788,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1535 i32.const 1 call $~lib/builtins/abort @@ -30115,7 +32803,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1536 i32.const 1 call $~lib/builtins/abort @@ -30129,7 +32817,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1537 i32.const 1 call $~lib/builtins/abort @@ -30146,7 +32834,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1549 i32.const 1 call $~lib/builtins/abort @@ -30163,7 +32851,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1550 i32.const 1 call $~lib/builtins/abort @@ -30180,7 +32868,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1551 i32.const 1 call $~lib/builtins/abort @@ -30197,7 +32885,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1552 i32.const 1 call $~lib/builtins/abort @@ -30214,7 +32902,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1553 i32.const 1 call $~lib/builtins/abort @@ -30231,7 +32919,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1554 i32.const 1 call $~lib/builtins/abort @@ -30248,7 +32936,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1555 i32.const 1 call $~lib/builtins/abort @@ -30265,7 +32953,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1556 i32.const 1 call $~lib/builtins/abort @@ -30282,7 +32970,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1557 i32.const 1 call $~lib/builtins/abort @@ -30299,7 +32987,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1558 i32.const 1 call $~lib/builtins/abort @@ -30314,7 +33002,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1561 i32.const 1 call $~lib/builtins/abort @@ -30329,7 +33017,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1562 i32.const 1 call $~lib/builtins/abort @@ -30344,7 +33032,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1563 i32.const 1 call $~lib/builtins/abort @@ -30359,7 +33047,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1564 i32.const 1 call $~lib/builtins/abort @@ -30373,7 +33061,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1565 i32.const 1 call $~lib/builtins/abort @@ -30388,7 +33076,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1566 i32.const 1 call $~lib/builtins/abort @@ -30402,7 +33090,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1567 i32.const 1 call $~lib/builtins/abort @@ -30419,7 +33107,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1568 i32.const 1 call $~lib/builtins/abort @@ -30436,7 +33124,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1569 i32.const 1 call $~lib/builtins/abort @@ -30452,7 +33140,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1570 i32.const 1 call $~lib/builtins/abort @@ -30471,7 +33159,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1571 i32.const 1 call $~lib/builtins/abort @@ -30487,7 +33175,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1572 i32.const 1 call $~lib/builtins/abort @@ -30504,7 +33192,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1573 i32.const 1 call $~lib/builtins/abort @@ -30521,7 +33209,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1574 i32.const 1 call $~lib/builtins/abort @@ -30538,7 +33226,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1575 i32.const 1 call $~lib/builtins/abort @@ -30555,7 +33243,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1576 i32.const 1 call $~lib/builtins/abort @@ -30574,7 +33262,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1577 i32.const 1 call $~lib/builtins/abort @@ -30590,7 +33278,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1578 i32.const 1 call $~lib/builtins/abort @@ -30609,7 +33297,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1579 i32.const 1 call $~lib/builtins/abort @@ -30625,7 +33313,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1580 i32.const 1 call $~lib/builtins/abort @@ -30641,7 +33329,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1581 i32.const 1 call $~lib/builtins/abort @@ -30657,7 +33345,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1582 i32.const 1 call $~lib/builtins/abort @@ -30676,7 +33364,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1583 i32.const 1 call $~lib/builtins/abort @@ -30694,7 +33382,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1584 i32.const 1 call $~lib/builtins/abort @@ -30711,7 +33399,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1585 i32.const 1 call $~lib/builtins/abort @@ -30731,7 +33419,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1596 i32.const 1 call $~lib/builtins/abort @@ -30751,7 +33439,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1597 i32.const 1 call $~lib/builtins/abort @@ -30771,7 +33459,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1598 i32.const 1 call $~lib/builtins/abort @@ -30791,7 +33479,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1599 i32.const 1 call $~lib/builtins/abort @@ -30811,7 +33499,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1600 i32.const 1 call $~lib/builtins/abort @@ -30831,7 +33519,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1601 i32.const 1 call $~lib/builtins/abort @@ -30851,7 +33539,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1602 i32.const 1 call $~lib/builtins/abort @@ -30871,7 +33559,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1603 i32.const 1 call $~lib/builtins/abort @@ -30891,7 +33579,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1604 i32.const 1 call $~lib/builtins/abort @@ -30911,7 +33599,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1605 i32.const 1 call $~lib/builtins/abort @@ -30925,7 +33613,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1617 i32.const 1 call $~lib/builtins/abort @@ -30939,7 +33627,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1618 i32.const 1 call $~lib/builtins/abort @@ -30953,7 +33641,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1619 i32.const 1 call $~lib/builtins/abort @@ -30967,7 +33655,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1620 i32.const 1 call $~lib/builtins/abort @@ -30981,7 +33669,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1621 i32.const 1 call $~lib/builtins/abort @@ -30995,7 +33683,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1622 i32.const 1 call $~lib/builtins/abort @@ -31009,7 +33697,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1623 i32.const 1 call $~lib/builtins/abort @@ -31023,7 +33711,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1624 i32.const 1 call $~lib/builtins/abort @@ -31037,7 +33725,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1625 i32.const 1 call $~lib/builtins/abort @@ -31051,7 +33739,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1626 i32.const 1 call $~lib/builtins/abort @@ -31065,7 +33753,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1629 i32.const 1 call $~lib/builtins/abort @@ -31079,7 +33767,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1630 i32.const 1 call $~lib/builtins/abort @@ -31095,7 +33783,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1631 i32.const 1 call $~lib/builtins/abort @@ -31109,7 +33797,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1632 i32.const 1 call $~lib/builtins/abort @@ -31123,7 +33811,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1633 i32.const 1 call $~lib/builtins/abort @@ -31137,7 +33825,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1634 i32.const 1 call $~lib/builtins/abort @@ -31151,7 +33839,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1635 i32.const 1 call $~lib/builtins/abort @@ -31165,7 +33853,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1636 i32.const 1 call $~lib/builtins/abort @@ -31179,7 +33867,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1637 i32.const 1 call $~lib/builtins/abort @@ -31193,7 +33881,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1638 i32.const 1 call $~lib/builtins/abort @@ -31207,7 +33895,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1639 i32.const 1 call $~lib/builtins/abort @@ -31221,7 +33909,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1640 i32.const 1 call $~lib/builtins/abort @@ -31235,7 +33923,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1641 i32.const 1 call $~lib/builtins/abort @@ -31249,7 +33937,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1642 i32.const 1 call $~lib/builtins/abort @@ -31263,7 +33951,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1643 i32.const 1 call $~lib/builtins/abort @@ -31277,7 +33965,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1652 i32.const 1 call $~lib/builtins/abort @@ -31291,7 +33979,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1653 i32.const 1 call $~lib/builtins/abort @@ -31305,7 +33993,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1654 i32.const 1 call $~lib/builtins/abort @@ -31319,7 +34007,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1655 i32.const 1 call $~lib/builtins/abort @@ -31333,7 +34021,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1656 i32.const 1 call $~lib/builtins/abort @@ -31347,7 +34035,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1657 i32.const 1 call $~lib/builtins/abort @@ -31361,7 +34049,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1658 i32.const 1 call $~lib/builtins/abort @@ -31375,7 +34063,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1659 i32.const 1 call $~lib/builtins/abort @@ -31389,7 +34077,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1660 i32.const 1 call $~lib/builtins/abort @@ -31403,7 +34091,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1661 i32.const 1 call $~lib/builtins/abort @@ -31417,7 +34105,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1664 i32.const 1 call $~lib/builtins/abort @@ -31431,7 +34119,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1665 i32.const 1 call $~lib/builtins/abort @@ -31447,7 +34135,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1666 i32.const 1 call $~lib/builtins/abort @@ -31461,7 +34149,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1667 i32.const 1 call $~lib/builtins/abort @@ -31475,7 +34163,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1668 i32.const 1 call $~lib/builtins/abort @@ -31489,7 +34177,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1669 i32.const 1 call $~lib/builtins/abort @@ -31503,7 +34191,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1670 i32.const 1 call $~lib/builtins/abort @@ -31517,7 +34205,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1671 i32.const 1 call $~lib/builtins/abort @@ -31531,7 +34219,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1672 i32.const 1 call $~lib/builtins/abort @@ -31545,7 +34233,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1673 i32.const 1 call $~lib/builtins/abort @@ -31559,7 +34247,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1674 i32.const 1 call $~lib/builtins/abort @@ -31573,7 +34261,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1675 i32.const 1 call $~lib/builtins/abort @@ -31587,7 +34275,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1676 i32.const 1 call $~lib/builtins/abort @@ -31601,7 +34289,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1677 i32.const 1 call $~lib/builtins/abort @@ -31615,7 +34303,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1678 i32.const 1 call $~lib/builtins/abort @@ -31630,7 +34318,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1692 i32.const 1 call $~lib/builtins/abort @@ -31645,7 +34333,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1693 i32.const 1 call $~lib/builtins/abort @@ -31660,7 +34348,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1694 i32.const 1 call $~lib/builtins/abort @@ -31675,7 +34363,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1695 i32.const 1 call $~lib/builtins/abort @@ -31690,7 +34378,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1696 i32.const 1 call $~lib/builtins/abort @@ -31705,7 +34393,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1697 i32.const 1 call $~lib/builtins/abort @@ -31720,7 +34408,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1698 i32.const 1 call $~lib/builtins/abort @@ -31735,7 +34423,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1699 i32.const 1 call $~lib/builtins/abort @@ -31750,7 +34438,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1700 i32.const 1 call $~lib/builtins/abort @@ -31765,7 +34453,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1701 i32.const 1 call $~lib/builtins/abort @@ -31780,7 +34468,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1704 i32.const 1 call $~lib/builtins/abort @@ -31795,7 +34483,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1705 i32.const 1 call $~lib/builtins/abort @@ -31810,7 +34498,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1706 i32.const 1 call $~lib/builtins/abort @@ -31825,7 +34513,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1707 i32.const 1 call $~lib/builtins/abort @@ -31840,7 +34528,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1708 i32.const 1 call $~lib/builtins/abort @@ -31855,7 +34543,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1709 i32.const 1 call $~lib/builtins/abort @@ -31870,7 +34558,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1710 i32.const 1 call $~lib/builtins/abort @@ -31885,7 +34573,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1711 i32.const 1 call $~lib/builtins/abort @@ -31900,7 +34588,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1712 i32.const 1 call $~lib/builtins/abort @@ -31915,7 +34603,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1713 i32.const 1 call $~lib/builtins/abort @@ -31930,7 +34618,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1714 i32.const 1 call $~lib/builtins/abort @@ -31945,7 +34633,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1715 i32.const 1 call $~lib/builtins/abort @@ -31960,7 +34648,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1716 i32.const 1 call $~lib/builtins/abort @@ -31976,7 +34664,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1717 i32.const 1 call $~lib/builtins/abort @@ -31992,7 +34680,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1718 i32.const 1 call $~lib/builtins/abort @@ -32008,7 +34696,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1719 i32.const 1 call $~lib/builtins/abort @@ -32024,7 +34712,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1720 i32.const 1 call $~lib/builtins/abort @@ -32039,7 +34727,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1721 i32.const 1 call $~lib/builtins/abort @@ -32054,7 +34742,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1722 i32.const 1 call $~lib/builtins/abort @@ -32069,7 +34757,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1723 i32.const 1 call $~lib/builtins/abort @@ -32084,7 +34772,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1724 i32.const 1 call $~lib/builtins/abort @@ -32099,7 +34787,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1733 i32.const 1 call $~lib/builtins/abort @@ -32114,7 +34802,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1734 i32.const 1 call $~lib/builtins/abort @@ -32129,7 +34817,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1735 i32.const 1 call $~lib/builtins/abort @@ -32144,7 +34832,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1736 i32.const 1 call $~lib/builtins/abort @@ -32159,7 +34847,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1737 i32.const 1 call $~lib/builtins/abort @@ -32174,7 +34862,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1738 i32.const 1 call $~lib/builtins/abort @@ -32189,7 +34877,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1739 i32.const 1 call $~lib/builtins/abort @@ -32204,7 +34892,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1740 i32.const 1 call $~lib/builtins/abort @@ -32219,7 +34907,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1741 i32.const 1 call $~lib/builtins/abort @@ -32234,7 +34922,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1742 i32.const 1 call $~lib/builtins/abort @@ -32249,7 +34937,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1745 i32.const 1 call $~lib/builtins/abort @@ -32264,7 +34952,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1746 i32.const 1 call $~lib/builtins/abort @@ -32279,7 +34967,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1747 i32.const 1 call $~lib/builtins/abort @@ -32294,7 +34982,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1748 i32.const 1 call $~lib/builtins/abort @@ -32309,7 +34997,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1749 i32.const 1 call $~lib/builtins/abort @@ -32324,7 +35012,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1750 i32.const 1 call $~lib/builtins/abort @@ -32339,7 +35027,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1751 i32.const 1 call $~lib/builtins/abort @@ -32354,7 +35042,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1752 i32.const 1 call $~lib/builtins/abort @@ -32369,7 +35057,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1753 i32.const 1 call $~lib/builtins/abort @@ -32384,7 +35072,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1754 i32.const 1 call $~lib/builtins/abort @@ -32399,7 +35087,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1755 i32.const 1 call $~lib/builtins/abort @@ -32414,7 +35102,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1756 i32.const 1 call $~lib/builtins/abort @@ -32429,7 +35117,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1757 i32.const 1 call $~lib/builtins/abort @@ -32445,7 +35133,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1758 i32.const 1 call $~lib/builtins/abort @@ -32461,7 +35149,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1759 i32.const 1 call $~lib/builtins/abort @@ -32477,7 +35165,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1760 i32.const 1 call $~lib/builtins/abort @@ -32493,7 +35181,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1761 i32.const 1 call $~lib/builtins/abort @@ -32508,7 +35196,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1762 i32.const 1 call $~lib/builtins/abort @@ -32523,7 +35211,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1763 i32.const 1 call $~lib/builtins/abort @@ -32537,7 +35225,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1775 i32.const 1 call $~lib/builtins/abort @@ -32551,7 +35239,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1776 i32.const 1 call $~lib/builtins/abort @@ -32565,7 +35253,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1777 i32.const 1 call $~lib/builtins/abort @@ -32579,7 +35267,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1778 i32.const 1 call $~lib/builtins/abort @@ -32593,7 +35281,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1779 i32.const 1 call $~lib/builtins/abort @@ -32607,7 +35295,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1780 i32.const 1 call $~lib/builtins/abort @@ -32621,7 +35309,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1781 i32.const 1 call $~lib/builtins/abort @@ -32635,7 +35323,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1782 i32.const 1 call $~lib/builtins/abort @@ -32649,7 +35337,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1783 i32.const 1 call $~lib/builtins/abort @@ -32663,7 +35351,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1784 i32.const 1 call $~lib/builtins/abort @@ -32678,7 +35366,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1787 i32.const 1 call $~lib/builtins/abort @@ -32693,7 +35381,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1788 i32.const 1 call $~lib/builtins/abort @@ -32707,7 +35395,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1789 i32.const 1 call $~lib/builtins/abort @@ -32721,7 +35409,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1790 i32.const 1 call $~lib/builtins/abort @@ -32735,7 +35423,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1791 i32.const 1 call $~lib/builtins/abort @@ -32749,7 +35437,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1792 i32.const 1 call $~lib/builtins/abort @@ -32764,7 +35452,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1793 i32.const 1 call $~lib/builtins/abort @@ -32778,7 +35466,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1794 i32.const 1 call $~lib/builtins/abort @@ -32793,7 +35481,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1803 i32.const 1 call $~lib/builtins/abort @@ -32808,7 +35496,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1804 i32.const 1 call $~lib/builtins/abort @@ -32822,7 +35510,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1805 i32.const 1 call $~lib/builtins/abort @@ -32836,7 +35524,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1806 i32.const 1 call $~lib/builtins/abort @@ -32850,7 +35538,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1807 i32.const 1 call $~lib/builtins/abort @@ -32864,7 +35552,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1808 i32.const 1 call $~lib/builtins/abort @@ -32879,7 +35567,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1809 i32.const 1 call $~lib/builtins/abort @@ -32893,7 +35581,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1810 i32.const 1 call $~lib/builtins/abort @@ -32908,7 +35596,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1813 i32.const 1 call $~lib/builtins/abort @@ -32923,7 +35611,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1814 i32.const 1 call $~lib/builtins/abort @@ -32937,7 +35625,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1815 i32.const 1 call $~lib/builtins/abort @@ -32951,7 +35639,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1816 i32.const 1 call $~lib/builtins/abort @@ -32965,7 +35653,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1817 i32.const 1 call $~lib/builtins/abort @@ -32979,7 +35667,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1818 i32.const 1 call $~lib/builtins/abort @@ -32994,7 +35682,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1819 i32.const 1 call $~lib/builtins/abort @@ -33008,7 +35696,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1820 i32.const 1 call $~lib/builtins/abort @@ -33022,7 +35710,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1832 i32.const 1 call $~lib/builtins/abort @@ -33036,7 +35724,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1833 i32.const 1 call $~lib/builtins/abort @@ -33050,7 +35738,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1834 i32.const 1 call $~lib/builtins/abort @@ -33064,7 +35752,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1835 i32.const 1 call $~lib/builtins/abort @@ -33078,7 +35766,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1836 i32.const 1 call $~lib/builtins/abort @@ -33092,7 +35780,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1837 i32.const 1 call $~lib/builtins/abort @@ -33106,7 +35794,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1838 i32.const 1 call $~lib/builtins/abort @@ -33120,7 +35808,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1839 i32.const 1 call $~lib/builtins/abort @@ -33134,7 +35822,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1840 i32.const 1 call $~lib/builtins/abort @@ -33148,7 +35836,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1841 i32.const 1 call $~lib/builtins/abort @@ -33163,7 +35851,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1844 i32.const 1 call $~lib/builtins/abort @@ -33178,7 +35866,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1845 i32.const 1 call $~lib/builtins/abort @@ -33192,7 +35880,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1846 i32.const 1 call $~lib/builtins/abort @@ -33206,7 +35894,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1847 i32.const 1 call $~lib/builtins/abort @@ -33220,7 +35908,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1848 i32.const 1 call $~lib/builtins/abort @@ -33234,7 +35922,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1849 i32.const 1 call $~lib/builtins/abort @@ -33249,7 +35937,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1850 i32.const 1 call $~lib/builtins/abort @@ -33263,7 +35951,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1851 i32.const 1 call $~lib/builtins/abort @@ -33277,7 +35965,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1860 i32.const 1 call $~lib/builtins/abort @@ -33291,7 +35979,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1861 i32.const 1 call $~lib/builtins/abort @@ -33305,7 +35993,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1862 i32.const 1 call $~lib/builtins/abort @@ -33319,7 +36007,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1863 i32.const 1 call $~lib/builtins/abort @@ -33333,7 +36021,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1864 i32.const 1 call $~lib/builtins/abort @@ -33347,7 +36035,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1865 i32.const 1 call $~lib/builtins/abort @@ -33361,7 +36049,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1866 i32.const 1 call $~lib/builtins/abort @@ -33375,7 +36063,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1867 i32.const 1 call $~lib/builtins/abort @@ -33389,7 +36077,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1868 i32.const 1 call $~lib/builtins/abort @@ -33403,7 +36091,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1869 i32.const 1 call $~lib/builtins/abort @@ -33418,7 +36106,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1872 i32.const 1 call $~lib/builtins/abort @@ -33433,7 +36121,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1873 i32.const 1 call $~lib/builtins/abort @@ -33447,7 +36135,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1874 i32.const 1 call $~lib/builtins/abort @@ -33461,7 +36149,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1875 i32.const 1 call $~lib/builtins/abort @@ -33475,7 +36163,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1876 i32.const 1 call $~lib/builtins/abort @@ -33489,7 +36177,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1877 i32.const 1 call $~lib/builtins/abort @@ -33504,7 +36192,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1878 i32.const 1 call $~lib/builtins/abort @@ -33518,7 +36206,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1879 i32.const 1 call $~lib/builtins/abort @@ -33532,7 +36220,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1891 i32.const 1 call $~lib/builtins/abort @@ -33546,7 +36234,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1892 i32.const 1 call $~lib/builtins/abort @@ -33560,7 +36248,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1893 i32.const 1 call $~lib/builtins/abort @@ -33574,7 +36262,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1894 i32.const 1 call $~lib/builtins/abort @@ -33588,7 +36276,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1895 i32.const 1 call $~lib/builtins/abort @@ -33602,7 +36290,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1896 i32.const 1 call $~lib/builtins/abort @@ -33616,7 +36304,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1897 i32.const 1 call $~lib/builtins/abort @@ -33630,7 +36318,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1898 i32.const 1 call $~lib/builtins/abort @@ -33644,7 +36332,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1899 i32.const 1 call $~lib/builtins/abort @@ -33658,7 +36346,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1900 i32.const 1 call $~lib/builtins/abort @@ -33672,7 +36360,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1903 i32.const 1 call $~lib/builtins/abort @@ -33686,7 +36374,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1904 i32.const 1 call $~lib/builtins/abort @@ -33700,7 +36388,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1905 i32.const 1 call $~lib/builtins/abort @@ -33714,7 +36402,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1906 i32.const 1 call $~lib/builtins/abort @@ -33729,7 +36417,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1907 i32.const 1 call $~lib/builtins/abort @@ -33743,7 +36431,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1908 i32.const 1 call $~lib/builtins/abort @@ -33758,7 +36446,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1909 i32.const 1 call $~lib/builtins/abort @@ -33772,7 +36460,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1910 i32.const 1 call $~lib/builtins/abort @@ -33786,7 +36474,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1919 i32.const 1 call $~lib/builtins/abort @@ -33800,7 +36488,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1920 i32.const 1 call $~lib/builtins/abort @@ -33814,7 +36502,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1921 i32.const 1 call $~lib/builtins/abort @@ -33828,7 +36516,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1922 i32.const 1 call $~lib/builtins/abort @@ -33842,7 +36530,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1923 i32.const 1 call $~lib/builtins/abort @@ -33856,7 +36544,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1924 i32.const 1 call $~lib/builtins/abort @@ -33870,7 +36558,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1925 i32.const 1 call $~lib/builtins/abort @@ -33884,7 +36572,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1926 i32.const 1 call $~lib/builtins/abort @@ -33898,7 +36586,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1927 i32.const 1 call $~lib/builtins/abort @@ -33912,7 +36600,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1928 i32.const 1 call $~lib/builtins/abort @@ -33926,7 +36614,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1931 i32.const 1 call $~lib/builtins/abort @@ -33940,7 +36628,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1932 i32.const 1 call $~lib/builtins/abort @@ -33954,7 +36642,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1933 i32.const 1 call $~lib/builtins/abort @@ -33968,7 +36656,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1934 i32.const 1 call $~lib/builtins/abort @@ -33983,7 +36671,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1935 i32.const 1 call $~lib/builtins/abort @@ -33997,7 +36685,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1936 i32.const 1 call $~lib/builtins/abort @@ -34012,7 +36700,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1937 i32.const 1 call $~lib/builtins/abort @@ -34026,7 +36714,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1938 i32.const 1 call $~lib/builtins/abort @@ -34042,7 +36730,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1939 i32.const 1 call $~lib/builtins/abort @@ -34056,7 +36744,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1951 i32.const 1 call $~lib/builtins/abort @@ -34070,7 +36758,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1952 i32.const 1 call $~lib/builtins/abort @@ -34084,7 +36772,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1953 i32.const 1 call $~lib/builtins/abort @@ -34098,7 +36786,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1954 i32.const 1 call $~lib/builtins/abort @@ -34112,7 +36800,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1955 i32.const 1 call $~lib/builtins/abort @@ -34126,7 +36814,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1956 i32.const 1 call $~lib/builtins/abort @@ -34140,7 +36828,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1957 i32.const 1 call $~lib/builtins/abort @@ -34154,7 +36842,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1958 i32.const 1 call $~lib/builtins/abort @@ -34168,7 +36856,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1959 i32.const 1 call $~lib/builtins/abort @@ -34182,7 +36870,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1960 i32.const 1 call $~lib/builtins/abort @@ -34197,7 +36885,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1963 i32.const 1 call $~lib/builtins/abort @@ -34212,7 +36900,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1964 i32.const 1 call $~lib/builtins/abort @@ -34226,7 +36914,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1965 i32.const 1 call $~lib/builtins/abort @@ -34240,7 +36928,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1966 i32.const 1 call $~lib/builtins/abort @@ -34254,7 +36942,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1967 i32.const 1 call $~lib/builtins/abort @@ -34268,7 +36956,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1968 i32.const 1 call $~lib/builtins/abort @@ -34283,7 +36971,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1969 i32.const 1 call $~lib/builtins/abort @@ -34297,7 +36985,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1970 i32.const 1 call $~lib/builtins/abort @@ -34311,7 +36999,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1979 i32.const 1 call $~lib/builtins/abort @@ -34325,7 +37013,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1980 i32.const 1 call $~lib/builtins/abort @@ -34339,7 +37027,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1981 i32.const 1 call $~lib/builtins/abort @@ -34353,7 +37041,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1982 i32.const 1 call $~lib/builtins/abort @@ -34367,7 +37055,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1983 i32.const 1 call $~lib/builtins/abort @@ -34381,7 +37069,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1984 i32.const 1 call $~lib/builtins/abort @@ -34395,7 +37083,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1985 i32.const 1 call $~lib/builtins/abort @@ -34409,7 +37097,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1986 i32.const 1 call $~lib/builtins/abort @@ -34423,7 +37111,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1987 i32.const 1 call $~lib/builtins/abort @@ -34437,7 +37125,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1988 i32.const 1 call $~lib/builtins/abort @@ -34452,7 +37140,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1991 i32.const 1 call $~lib/builtins/abort @@ -34467,7 +37155,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1992 i32.const 1 call $~lib/builtins/abort @@ -34481,7 +37169,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1993 i32.const 1 call $~lib/builtins/abort @@ -34495,7 +37183,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1994 i32.const 1 call $~lib/builtins/abort @@ -34509,7 +37197,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1995 i32.const 1 call $~lib/builtins/abort @@ -34523,7 +37211,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1996 i32.const 1 call $~lib/builtins/abort @@ -34538,7 +37226,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1997 i32.const 1 call $~lib/builtins/abort @@ -34552,7 +37240,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 1998 i32.const 1 call $~lib/builtins/abort @@ -34567,7 +37255,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2010 i32.const 1 call $~lib/builtins/abort @@ -34582,7 +37270,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2011 i32.const 1 call $~lib/builtins/abort @@ -34597,7 +37285,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2012 i32.const 1 call $~lib/builtins/abort @@ -34612,7 +37300,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2013 i32.const 1 call $~lib/builtins/abort @@ -34627,7 +37315,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2014 i32.const 1 call $~lib/builtins/abort @@ -34642,7 +37330,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2015 i32.const 1 call $~lib/builtins/abort @@ -34657,7 +37345,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2016 i32.const 1 call $~lib/builtins/abort @@ -34672,7 +37360,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2017 i32.const 1 call $~lib/builtins/abort @@ -34687,7 +37375,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2018 i32.const 1 call $~lib/builtins/abort @@ -34702,7 +37390,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2019 i32.const 1 call $~lib/builtins/abort @@ -34717,7 +37405,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2022 i32.const 1 call $~lib/builtins/abort @@ -34732,7 +37420,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2023 i32.const 1 call $~lib/builtins/abort @@ -34747,7 +37435,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2024 i32.const 1 call $~lib/builtins/abort @@ -34762,7 +37450,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2025 i32.const 1 call $~lib/builtins/abort @@ -34777,7 +37465,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2026 i32.const 1 call $~lib/builtins/abort @@ -34792,7 +37480,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2027 i32.const 1 call $~lib/builtins/abort @@ -34807,7 +37495,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2028 i32.const 1 call $~lib/builtins/abort @@ -34823,7 +37511,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2029 i32.const 1 call $~lib/builtins/abort @@ -34838,7 +37526,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2030 i32.const 1 call $~lib/builtins/abort @@ -34853,7 +37541,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2031 i32.const 1 call $~lib/builtins/abort @@ -34868,7 +37556,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2032 i32.const 1 call $~lib/builtins/abort @@ -34883,7 +37571,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2033 i32.const 1 call $~lib/builtins/abort @@ -34898,7 +37586,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2034 i32.const 1 call $~lib/builtins/abort @@ -34913,7 +37601,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2035 i32.const 1 call $~lib/builtins/abort @@ -34928,7 +37616,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2036 i32.const 1 call $~lib/builtins/abort @@ -34943,7 +37631,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2037 i32.const 1 call $~lib/builtins/abort @@ -34959,7 +37647,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2038 i32.const 1 call $~lib/builtins/abort @@ -34974,7 +37662,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2039 i32.const 1 call $~lib/builtins/abort @@ -34989,7 +37677,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2040 i32.const 1 call $~lib/builtins/abort @@ -35004,7 +37692,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2041 i32.const 1 call $~lib/builtins/abort @@ -35019,7 +37707,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2042 i32.const 1 call $~lib/builtins/abort @@ -35035,7 +37723,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2043 i32.const 1 call $~lib/builtins/abort @@ -35050,7 +37738,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2044 i32.const 1 call $~lib/builtins/abort @@ -35065,7 +37753,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2045 i32.const 1 call $~lib/builtins/abort @@ -35080,7 +37768,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2046 i32.const 1 call $~lib/builtins/abort @@ -35095,7 +37783,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2047 i32.const 1 call $~lib/builtins/abort @@ -35111,7 +37799,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2048 i32.const 1 call $~lib/builtins/abort @@ -35126,7 +37814,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2049 i32.const 1 call $~lib/builtins/abort @@ -35141,7 +37829,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2050 i32.const 1 call $~lib/builtins/abort @@ -35156,7 +37844,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2051 i32.const 1 call $~lib/builtins/abort @@ -35171,7 +37859,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2052 i32.const 1 call $~lib/builtins/abort @@ -35187,7 +37875,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2053 i32.const 1 call $~lib/builtins/abort @@ -35202,7 +37890,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2054 i32.const 1 call $~lib/builtins/abort @@ -35217,7 +37905,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2055 i32.const 1 call $~lib/builtins/abort @@ -35232,7 +37920,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2056 i32.const 1 call $~lib/builtins/abort @@ -35248,7 +37936,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2057 i32.const 1 call $~lib/builtins/abort @@ -35263,7 +37951,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2058 i32.const 1 call $~lib/builtins/abort @@ -35278,7 +37966,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2059 i32.const 1 call $~lib/builtins/abort @@ -35293,7 +37981,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2060 i32.const 1 call $~lib/builtins/abort @@ -35308,7 +37996,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2061 i32.const 1 call $~lib/builtins/abort @@ -35324,7 +38012,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2062 i32.const 1 call $~lib/builtins/abort @@ -35340,7 +38028,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2063 i32.const 1 call $~lib/builtins/abort @@ -35356,7 +38044,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2064 i32.const 1 call $~lib/builtins/abort @@ -35371,7 +38059,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2065 i32.const 1 call $~lib/builtins/abort @@ -35386,7 +38074,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2066 i32.const 1 call $~lib/builtins/abort @@ -35401,7 +38089,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2067 i32.const 1 call $~lib/builtins/abort @@ -35416,7 +38104,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2068 i32.const 1 call $~lib/builtins/abort @@ -35431,7 +38119,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2069 i32.const 1 call $~lib/builtins/abort @@ -35446,7 +38134,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2070 i32.const 1 call $~lib/builtins/abort @@ -35462,7 +38150,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2071 i32.const 1 call $~lib/builtins/abort @@ -35478,7 +38166,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2072 i32.const 1 call $~lib/builtins/abort @@ -35494,7 +38182,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2073 i32.const 1 call $~lib/builtins/abort @@ -35510,7 +38198,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2074 i32.const 1 call $~lib/builtins/abort @@ -35528,7 +38216,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2075 i32.const 1 call $~lib/builtins/abort @@ -35543,7 +38231,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2076 i32.const 1 call $~lib/builtins/abort @@ -35558,7 +38246,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2077 i32.const 1 call $~lib/builtins/abort @@ -35573,7 +38261,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2078 i32.const 1 call $~lib/builtins/abort @@ -35588,7 +38276,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2079 i32.const 1 call $~lib/builtins/abort @@ -35603,7 +38291,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2088 i32.const 1 call $~lib/builtins/abort @@ -35618,7 +38306,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2089 i32.const 1 call $~lib/builtins/abort @@ -35633,7 +38321,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2090 i32.const 1 call $~lib/builtins/abort @@ -35648,7 +38336,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2091 i32.const 1 call $~lib/builtins/abort @@ -35663,7 +38351,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2092 i32.const 1 call $~lib/builtins/abort @@ -35678,7 +38366,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2093 i32.const 1 call $~lib/builtins/abort @@ -35693,7 +38381,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2094 i32.const 1 call $~lib/builtins/abort @@ -35708,7 +38396,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2095 i32.const 1 call $~lib/builtins/abort @@ -35723,7 +38411,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2096 i32.const 1 call $~lib/builtins/abort @@ -35738,7 +38426,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2097 i32.const 1 call $~lib/builtins/abort @@ -35753,7 +38441,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2100 i32.const 1 call $~lib/builtins/abort @@ -35768,7 +38456,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2101 i32.const 1 call $~lib/builtins/abort @@ -35783,7 +38471,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2102 i32.const 1 call $~lib/builtins/abort @@ -35798,7 +38486,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2103 i32.const 1 call $~lib/builtins/abort @@ -35813,7 +38501,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2104 i32.const 1 call $~lib/builtins/abort @@ -35828,7 +38516,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2105 i32.const 1 call $~lib/builtins/abort @@ -35843,7 +38531,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2106 i32.const 1 call $~lib/builtins/abort @@ -35859,7 +38547,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2107 i32.const 1 call $~lib/builtins/abort @@ -35874,7 +38562,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2108 i32.const 1 call $~lib/builtins/abort @@ -35889,7 +38577,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2109 i32.const 1 call $~lib/builtins/abort @@ -35904,7 +38592,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2110 i32.const 1 call $~lib/builtins/abort @@ -35919,7 +38607,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2111 i32.const 1 call $~lib/builtins/abort @@ -35934,7 +38622,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2112 i32.const 1 call $~lib/builtins/abort @@ -35949,7 +38637,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2113 i32.const 1 call $~lib/builtins/abort @@ -35964,7 +38652,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2114 i32.const 1 call $~lib/builtins/abort @@ -35979,7 +38667,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2115 i32.const 1 call $~lib/builtins/abort @@ -35995,7 +38683,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2116 i32.const 1 call $~lib/builtins/abort @@ -36010,7 +38698,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2117 i32.const 1 call $~lib/builtins/abort @@ -36025,7 +38713,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2118 i32.const 1 call $~lib/builtins/abort @@ -36040,7 +38728,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2119 i32.const 1 call $~lib/builtins/abort @@ -36055,7 +38743,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2120 i32.const 1 call $~lib/builtins/abort @@ -36071,7 +38759,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2121 i32.const 1 call $~lib/builtins/abort @@ -36086,7 +38774,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2122 i32.const 1 call $~lib/builtins/abort @@ -36101,7 +38789,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2123 i32.const 1 call $~lib/builtins/abort @@ -36116,7 +38804,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2124 i32.const 1 call $~lib/builtins/abort @@ -36131,7 +38819,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2125 i32.const 1 call $~lib/builtins/abort @@ -36147,7 +38835,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2126 i32.const 1 call $~lib/builtins/abort @@ -36162,7 +38850,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2127 i32.const 1 call $~lib/builtins/abort @@ -36177,7 +38865,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2128 i32.const 1 call $~lib/builtins/abort @@ -36192,7 +38880,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2129 i32.const 1 call $~lib/builtins/abort @@ -36207,7 +38895,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2130 i32.const 1 call $~lib/builtins/abort @@ -36223,7 +38911,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2131 i32.const 1 call $~lib/builtins/abort @@ -36238,7 +38926,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2132 i32.const 1 call $~lib/builtins/abort @@ -36253,7 +38941,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2133 i32.const 1 call $~lib/builtins/abort @@ -36268,7 +38956,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2134 i32.const 1 call $~lib/builtins/abort @@ -36284,7 +38972,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2135 i32.const 1 call $~lib/builtins/abort @@ -36299,7 +38987,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2136 i32.const 1 call $~lib/builtins/abort @@ -36314,7 +39002,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2137 i32.const 1 call $~lib/builtins/abort @@ -36329,7 +39017,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2138 i32.const 1 call $~lib/builtins/abort @@ -36344,7 +39032,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2139 i32.const 1 call $~lib/builtins/abort @@ -36360,7 +39048,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2140 i32.const 1 call $~lib/builtins/abort @@ -36376,7 +39064,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2141 i32.const 1 call $~lib/builtins/abort @@ -36392,7 +39080,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2142 i32.const 1 call $~lib/builtins/abort @@ -36407,7 +39095,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2143 i32.const 1 call $~lib/builtins/abort @@ -36422,7 +39110,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2144 i32.const 1 call $~lib/builtins/abort @@ -36437,7 +39125,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2145 i32.const 1 call $~lib/builtins/abort @@ -36452,7 +39140,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2146 i32.const 1 call $~lib/builtins/abort @@ -36467,7 +39155,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2147 i32.const 1 call $~lib/builtins/abort @@ -36482,7 +39170,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2148 i32.const 1 call $~lib/builtins/abort @@ -36498,7 +39186,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2149 i32.const 1 call $~lib/builtins/abort @@ -36514,7 +39202,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2150 i32.const 1 call $~lib/builtins/abort @@ -36530,7 +39218,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2151 i32.const 1 call $~lib/builtins/abort @@ -36546,7 +39234,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2152 i32.const 1 call $~lib/builtins/abort @@ -36564,7 +39252,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2153 i32.const 1 call $~lib/builtins/abort @@ -36579,7 +39267,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2154 i32.const 1 call $~lib/builtins/abort @@ -36594,7 +39282,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2155 i32.const 1 call $~lib/builtins/abort @@ -36609,7 +39297,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2156 i32.const 1 call $~lib/builtins/abort @@ -36624,7 +39312,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2157 i32.const 1 call $~lib/builtins/abort @@ -36639,7 +39327,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2169 i32.const 1 call $~lib/builtins/abort @@ -36654,7 +39342,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2170 i32.const 1 call $~lib/builtins/abort @@ -36669,7 +39357,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2171 i32.const 1 call $~lib/builtins/abort @@ -36684,7 +39372,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2172 i32.const 1 call $~lib/builtins/abort @@ -36699,7 +39387,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2173 i32.const 1 call $~lib/builtins/abort @@ -36714,7 +39402,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2174 i32.const 1 call $~lib/builtins/abort @@ -36729,7 +39417,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2175 i32.const 1 call $~lib/builtins/abort @@ -36744,7 +39432,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2176 i32.const 1 call $~lib/builtins/abort @@ -36759,7 +39447,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2177 i32.const 1 call $~lib/builtins/abort @@ -36774,7 +39462,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2178 i32.const 1 call $~lib/builtins/abort @@ -36789,7 +39477,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2181 i32.const 1 call $~lib/builtins/abort @@ -36804,7 +39492,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2182 i32.const 1 call $~lib/builtins/abort @@ -36819,7 +39507,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2183 i32.const 1 call $~lib/builtins/abort @@ -36834,7 +39522,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2184 i32.const 1 call $~lib/builtins/abort @@ -36849,7 +39537,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2185 i32.const 1 call $~lib/builtins/abort @@ -36864,7 +39552,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2186 i32.const 1 call $~lib/builtins/abort @@ -36879,7 +39567,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2187 i32.const 1 call $~lib/builtins/abort @@ -36896,7 +39584,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2188 i32.const 1 call $~lib/builtins/abort @@ -36911,7 +39599,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2189 i32.const 1 call $~lib/builtins/abort @@ -36926,7 +39614,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2190 i32.const 1 call $~lib/builtins/abort @@ -36941,7 +39629,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2191 i32.const 1 call $~lib/builtins/abort @@ -36956,7 +39644,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2192 i32.const 1 call $~lib/builtins/abort @@ -36971,7 +39659,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2193 i32.const 1 call $~lib/builtins/abort @@ -36986,7 +39674,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2194 i32.const 1 call $~lib/builtins/abort @@ -37001,7 +39689,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2195 i32.const 1 call $~lib/builtins/abort @@ -37016,7 +39704,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2196 i32.const 1 call $~lib/builtins/abort @@ -37033,7 +39721,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2197 i32.const 1 call $~lib/builtins/abort @@ -37048,7 +39736,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2198 i32.const 1 call $~lib/builtins/abort @@ -37063,7 +39751,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2199 i32.const 1 call $~lib/builtins/abort @@ -37078,7 +39766,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2200 i32.const 1 call $~lib/builtins/abort @@ -37093,7 +39781,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2201 i32.const 1 call $~lib/builtins/abort @@ -37110,7 +39798,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2202 i32.const 1 call $~lib/builtins/abort @@ -37125,7 +39813,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2203 i32.const 1 call $~lib/builtins/abort @@ -37140,7 +39828,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2204 i32.const 1 call $~lib/builtins/abort @@ -37155,7 +39843,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2205 i32.const 1 call $~lib/builtins/abort @@ -37170,7 +39858,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2206 i32.const 1 call $~lib/builtins/abort @@ -37187,7 +39875,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2207 i32.const 1 call $~lib/builtins/abort @@ -37202,7 +39890,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2208 i32.const 1 call $~lib/builtins/abort @@ -37217,7 +39905,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2209 i32.const 1 call $~lib/builtins/abort @@ -37232,7 +39920,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2210 i32.const 1 call $~lib/builtins/abort @@ -37247,7 +39935,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2211 i32.const 1 call $~lib/builtins/abort @@ -37264,7 +39952,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2212 i32.const 1 call $~lib/builtins/abort @@ -37279,7 +39967,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2213 i32.const 1 call $~lib/builtins/abort @@ -37294,7 +39982,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2214 i32.const 1 call $~lib/builtins/abort @@ -37309,7 +39997,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2215 i32.const 1 call $~lib/builtins/abort @@ -37326,7 +40014,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2216 i32.const 1 call $~lib/builtins/abort @@ -37341,7 +40029,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2217 i32.const 1 call $~lib/builtins/abort @@ -37356,7 +40044,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2218 i32.const 1 call $~lib/builtins/abort @@ -37371,7 +40059,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2219 i32.const 1 call $~lib/builtins/abort @@ -37386,7 +40074,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2220 i32.const 1 call $~lib/builtins/abort @@ -37403,7 +40091,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2221 i32.const 1 call $~lib/builtins/abort @@ -37420,7 +40108,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2222 i32.const 1 call $~lib/builtins/abort @@ -37436,7 +40124,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2223 i32.const 1 call $~lib/builtins/abort @@ -37451,7 +40139,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2224 i32.const 1 call $~lib/builtins/abort @@ -37466,7 +40154,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2225 i32.const 1 call $~lib/builtins/abort @@ -37481,7 +40169,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2226 i32.const 1 call $~lib/builtins/abort @@ -37496,7 +40184,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2227 i32.const 1 call $~lib/builtins/abort @@ -37511,7 +40199,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2228 i32.const 1 call $~lib/builtins/abort @@ -37526,7 +40214,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2229 i32.const 1 call $~lib/builtins/abort @@ -37543,7 +40231,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2230 i32.const 1 call $~lib/builtins/abort @@ -37560,7 +40248,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2231 i32.const 1 call $~lib/builtins/abort @@ -37577,7 +40265,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2232 i32.const 1 call $~lib/builtins/abort @@ -37594,7 +40282,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2233 i32.const 1 call $~lib/builtins/abort @@ -37612,7 +40300,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2234 i32.const 1 call $~lib/builtins/abort @@ -37627,7 +40315,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2235 i32.const 1 call $~lib/builtins/abort @@ -37642,7 +40330,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2236 i32.const 1 call $~lib/builtins/abort @@ -37657,7 +40345,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2237 i32.const 1 call $~lib/builtins/abort @@ -37672,7 +40360,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2238 i32.const 1 call $~lib/builtins/abort @@ -37687,7 +40375,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2247 i32.const 1 call $~lib/builtins/abort @@ -37702,7 +40390,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2248 i32.const 1 call $~lib/builtins/abort @@ -37717,7 +40405,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2249 i32.const 1 call $~lib/builtins/abort @@ -37732,7 +40420,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2250 i32.const 1 call $~lib/builtins/abort @@ -37747,7 +40435,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2251 i32.const 1 call $~lib/builtins/abort @@ -37762,7 +40450,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2252 i32.const 1 call $~lib/builtins/abort @@ -37777,7 +40465,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2253 i32.const 1 call $~lib/builtins/abort @@ -37792,7 +40480,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2254 i32.const 1 call $~lib/builtins/abort @@ -37807,7 +40495,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2255 i32.const 1 call $~lib/builtins/abort @@ -37822,7 +40510,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2256 i32.const 1 call $~lib/builtins/abort @@ -37837,7 +40525,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2259 i32.const 1 call $~lib/builtins/abort @@ -37852,7 +40540,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2260 i32.const 1 call $~lib/builtins/abort @@ -37867,7 +40555,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2261 i32.const 1 call $~lib/builtins/abort @@ -37882,7 +40570,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2262 i32.const 1 call $~lib/builtins/abort @@ -37897,7 +40585,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2263 i32.const 1 call $~lib/builtins/abort @@ -37912,7 +40600,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2264 i32.const 1 call $~lib/builtins/abort @@ -37927,7 +40615,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2265 i32.const 1 call $~lib/builtins/abort @@ -37944,7 +40632,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2266 i32.const 1 call $~lib/builtins/abort @@ -37959,7 +40647,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2267 i32.const 1 call $~lib/builtins/abort @@ -37974,7 +40662,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2268 i32.const 1 call $~lib/builtins/abort @@ -37989,7 +40677,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2269 i32.const 1 call $~lib/builtins/abort @@ -38004,7 +40692,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2270 i32.const 1 call $~lib/builtins/abort @@ -38019,7 +40707,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2271 i32.const 1 call $~lib/builtins/abort @@ -38034,7 +40722,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2272 i32.const 1 call $~lib/builtins/abort @@ -38049,7 +40737,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2273 i32.const 1 call $~lib/builtins/abort @@ -38064,7 +40752,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2274 i32.const 1 call $~lib/builtins/abort @@ -38081,7 +40769,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2275 i32.const 1 call $~lib/builtins/abort @@ -38096,7 +40784,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2276 i32.const 1 call $~lib/builtins/abort @@ -38111,7 +40799,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2277 i32.const 1 call $~lib/builtins/abort @@ -38126,7 +40814,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2278 i32.const 1 call $~lib/builtins/abort @@ -38141,7 +40829,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2279 i32.const 1 call $~lib/builtins/abort @@ -38158,7 +40846,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2280 i32.const 1 call $~lib/builtins/abort @@ -38173,7 +40861,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2281 i32.const 1 call $~lib/builtins/abort @@ -38188,7 +40876,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2282 i32.const 1 call $~lib/builtins/abort @@ -38203,7 +40891,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2283 i32.const 1 call $~lib/builtins/abort @@ -38218,7 +40906,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2284 i32.const 1 call $~lib/builtins/abort @@ -38235,7 +40923,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2285 i32.const 1 call $~lib/builtins/abort @@ -38250,7 +40938,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2286 i32.const 1 call $~lib/builtins/abort @@ -38265,7 +40953,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2287 i32.const 1 call $~lib/builtins/abort @@ -38280,7 +40968,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2288 i32.const 1 call $~lib/builtins/abort @@ -38295,7 +40983,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2289 i32.const 1 call $~lib/builtins/abort @@ -38312,7 +41000,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2290 i32.const 1 call $~lib/builtins/abort @@ -38327,7 +41015,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2291 i32.const 1 call $~lib/builtins/abort @@ -38342,7 +41030,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2292 i32.const 1 call $~lib/builtins/abort @@ -38357,7 +41045,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2293 i32.const 1 call $~lib/builtins/abort @@ -38374,7 +41062,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2294 i32.const 1 call $~lib/builtins/abort @@ -38389,7 +41077,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2295 i32.const 1 call $~lib/builtins/abort @@ -38404,7 +41092,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2296 i32.const 1 call $~lib/builtins/abort @@ -38419,7 +41107,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2297 i32.const 1 call $~lib/builtins/abort @@ -38434,7 +41122,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2298 i32.const 1 call $~lib/builtins/abort @@ -38451,7 +41139,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2299 i32.const 1 call $~lib/builtins/abort @@ -38468,7 +41156,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2300 i32.const 1 call $~lib/builtins/abort @@ -38484,7 +41172,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2301 i32.const 1 call $~lib/builtins/abort @@ -38499,7 +41187,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2302 i32.const 1 call $~lib/builtins/abort @@ -38514,7 +41202,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2303 i32.const 1 call $~lib/builtins/abort @@ -38529,7 +41217,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2304 i32.const 1 call $~lib/builtins/abort @@ -38544,7 +41232,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2305 i32.const 1 call $~lib/builtins/abort @@ -38559,7 +41247,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2306 i32.const 1 call $~lib/builtins/abort @@ -38574,7 +41262,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2307 i32.const 1 call $~lib/builtins/abort @@ -38591,7 +41279,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2308 i32.const 1 call $~lib/builtins/abort @@ -38608,7 +41296,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2309 i32.const 1 call $~lib/builtins/abort @@ -38625,7 +41313,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2310 i32.const 1 call $~lib/builtins/abort @@ -38642,7 +41330,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2311 i32.const 1 call $~lib/builtins/abort @@ -38660,7 +41348,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2312 i32.const 1 call $~lib/builtins/abort @@ -38675,7 +41363,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2313 i32.const 1 call $~lib/builtins/abort @@ -38690,7 +41378,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2314 i32.const 1 call $~lib/builtins/abort @@ -38705,7 +41393,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2315 i32.const 1 call $~lib/builtins/abort @@ -38720,7 +41408,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2316 i32.const 1 call $~lib/builtins/abort @@ -38735,7 +41423,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2330 i32.const 1 call $~lib/builtins/abort @@ -38750,7 +41438,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2331 i32.const 1 call $~lib/builtins/abort @@ -38765,7 +41453,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2332 i32.const 1 call $~lib/builtins/abort @@ -38780,7 +41468,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2333 i32.const 1 call $~lib/builtins/abort @@ -38795,7 +41483,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2334 i32.const 1 call $~lib/builtins/abort @@ -38810,7 +41498,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2335 i32.const 1 call $~lib/builtins/abort @@ -38825,7 +41513,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2336 i32.const 1 call $~lib/builtins/abort @@ -38840,7 +41528,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2337 i32.const 1 call $~lib/builtins/abort @@ -38855,7 +41543,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2338 i32.const 1 call $~lib/builtins/abort @@ -38870,7 +41558,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2339 i32.const 1 call $~lib/builtins/abort @@ -38885,7 +41573,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2342 i32.const 1 call $~lib/builtins/abort @@ -38900,7 +41588,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2343 i32.const 1 call $~lib/builtins/abort @@ -38915,7 +41603,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2344 i32.const 1 call $~lib/builtins/abort @@ -38930,7 +41618,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2345 i32.const 1 call $~lib/builtins/abort @@ -38945,7 +41633,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2346 i32.const 1 call $~lib/builtins/abort @@ -38960,7 +41648,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2347 i32.const 1 call $~lib/builtins/abort @@ -38975,7 +41663,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2348 i32.const 1 call $~lib/builtins/abort @@ -38990,7 +41678,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2349 i32.const 1 call $~lib/builtins/abort @@ -39005,7 +41693,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2350 i32.const 1 call $~lib/builtins/abort @@ -39020,7 +41708,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2351 i32.const 1 call $~lib/builtins/abort @@ -39035,7 +41723,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2352 i32.const 1 call $~lib/builtins/abort @@ -39051,7 +41739,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2353 i32.const 1 call $~lib/builtins/abort @@ -39066,7 +41754,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2354 i32.const 1 call $~lib/builtins/abort @@ -39081,7 +41769,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2355 i32.const 1 call $~lib/builtins/abort @@ -39096,7 +41784,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2356 i32.const 1 call $~lib/builtins/abort @@ -39111,7 +41799,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2357 i32.const 1 call $~lib/builtins/abort @@ -39126,7 +41814,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2358 i32.const 1 call $~lib/builtins/abort @@ -39141,7 +41829,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2359 i32.const 1 call $~lib/builtins/abort @@ -39156,7 +41844,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2360 i32.const 1 call $~lib/builtins/abort @@ -39171,7 +41859,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2361 i32.const 1 call $~lib/builtins/abort @@ -39186,7 +41874,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2362 i32.const 1 call $~lib/builtins/abort @@ -39201,7 +41889,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2363 i32.const 1 call $~lib/builtins/abort @@ -39216,7 +41904,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2364 i32.const 1 call $~lib/builtins/abort @@ -39231,7 +41919,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2365 i32.const 1 call $~lib/builtins/abort @@ -39247,7 +41935,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2366 i32.const 1 call $~lib/builtins/abort @@ -39262,7 +41950,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2367 i32.const 1 call $~lib/builtins/abort @@ -39277,7 +41965,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2368 i32.const 1 call $~lib/builtins/abort @@ -39292,7 +41980,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2369 i32.const 1 call $~lib/builtins/abort @@ -39307,7 +41995,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2370 i32.const 1 call $~lib/builtins/abort @@ -39323,7 +42011,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2371 i32.const 1 call $~lib/builtins/abort @@ -39338,7 +42026,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2372 i32.const 1 call $~lib/builtins/abort @@ -39353,7 +42041,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2373 i32.const 1 call $~lib/builtins/abort @@ -39368,7 +42056,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2374 i32.const 1 call $~lib/builtins/abort @@ -39383,7 +42071,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2375 i32.const 1 call $~lib/builtins/abort @@ -39399,7 +42087,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2376 i32.const 1 call $~lib/builtins/abort @@ -39414,7 +42102,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2377 i32.const 1 call $~lib/builtins/abort @@ -39429,7 +42117,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2378 i32.const 1 call $~lib/builtins/abort @@ -39444,7 +42132,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2379 i32.const 1 call $~lib/builtins/abort @@ -39459,7 +42147,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2380 i32.const 1 call $~lib/builtins/abort @@ -39475,7 +42163,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2381 i32.const 1 call $~lib/builtins/abort @@ -39490,7 +42178,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2382 i32.const 1 call $~lib/builtins/abort @@ -39505,7 +42193,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2383 i32.const 1 call $~lib/builtins/abort @@ -39520,7 +42208,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2384 i32.const 1 call $~lib/builtins/abort @@ -39536,7 +42224,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2385 i32.const 1 call $~lib/builtins/abort @@ -39551,7 +42239,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2386 i32.const 1 call $~lib/builtins/abort @@ -39566,7 +42254,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2387 i32.const 1 call $~lib/builtins/abort @@ -39581,7 +42269,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2388 i32.const 1 call $~lib/builtins/abort @@ -39596,7 +42284,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2389 i32.const 1 call $~lib/builtins/abort @@ -39612,7 +42300,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2390 i32.const 1 call $~lib/builtins/abort @@ -39628,7 +42316,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2391 i32.const 1 call $~lib/builtins/abort @@ -39644,7 +42332,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2392 i32.const 1 call $~lib/builtins/abort @@ -39659,7 +42347,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2393 i32.const 1 call $~lib/builtins/abort @@ -39674,7 +42362,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2394 i32.const 1 call $~lib/builtins/abort @@ -39689,7 +42377,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2395 i32.const 1 call $~lib/builtins/abort @@ -39704,7 +42392,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2396 i32.const 1 call $~lib/builtins/abort @@ -39719,7 +42407,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2397 i32.const 1 call $~lib/builtins/abort @@ -39734,7 +42422,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2398 i32.const 1 call $~lib/builtins/abort @@ -39750,7 +42438,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2399 i32.const 1 call $~lib/builtins/abort @@ -39766,7 +42454,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2400 i32.const 1 call $~lib/builtins/abort @@ -39782,7 +42470,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2401 i32.const 1 call $~lib/builtins/abort @@ -39798,7 +42486,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2402 i32.const 1 call $~lib/builtins/abort @@ -39815,7 +42503,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2403 i32.const 1 call $~lib/builtins/abort @@ -39830,7 +42518,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2404 i32.const 1 call $~lib/builtins/abort @@ -39845,7 +42533,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2405 i32.const 1 call $~lib/builtins/abort @@ -39860,7 +42548,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2406 i32.const 1 call $~lib/builtins/abort @@ -39875,7 +42563,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2407 i32.const 1 call $~lib/builtins/abort @@ -39892,7 +42580,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2410 i32.const 1 call $~lib/builtins/abort @@ -39909,7 +42597,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2411 i32.const 1 call $~lib/builtins/abort @@ -39926,7 +42614,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2412 i32.const 1 call $~lib/builtins/abort @@ -39943,7 +42631,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2413 i32.const 1 call $~lib/builtins/abort @@ -39960,7 +42648,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2414 i32.const 1 call $~lib/builtins/abort @@ -39977,7 +42665,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2415 i32.const 1 call $~lib/builtins/abort @@ -39994,7 +42682,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2416 i32.const 1 call $~lib/builtins/abort @@ -40011,7 +42699,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2417 i32.const 1 call $~lib/builtins/abort @@ -40028,7 +42716,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2420 i32.const 1 call $~lib/builtins/abort @@ -40045,7 +42733,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2421 i32.const 1 call $~lib/builtins/abort @@ -40062,7 +42750,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2422 i32.const 1 call $~lib/builtins/abort @@ -40079,7 +42767,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2423 i32.const 1 call $~lib/builtins/abort @@ -40096,7 +42784,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2424 i32.const 1 call $~lib/builtins/abort @@ -40113,7 +42801,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2425 i32.const 1 call $~lib/builtins/abort @@ -40130,7 +42818,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2426 i32.const 1 call $~lib/builtins/abort @@ -40147,7 +42835,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2427 i32.const 1 call $~lib/builtins/abort @@ -40165,7 +42853,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2430 i32.const 1 call $~lib/builtins/abort @@ -40183,7 +42871,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2431 i32.const 1 call $~lib/builtins/abort @@ -40201,7 +42889,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2433 i32.const 1 call $~lib/builtins/abort @@ -40219,7 +42907,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2434 i32.const 1 call $~lib/builtins/abort @@ -40237,7 +42925,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2436 i32.const 1 call $~lib/builtins/abort @@ -40255,7 +42943,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2437 i32.const 1 call $~lib/builtins/abort @@ -40273,7 +42961,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2439 i32.const 1 call $~lib/builtins/abort @@ -40291,7 +42979,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2440 i32.const 1 call $~lib/builtins/abort @@ -40309,7 +42997,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2442 i32.const 1 call $~lib/builtins/abort @@ -40327,7 +43015,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2443 i32.const 1 call $~lib/builtins/abort @@ -40345,7 +43033,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2445 i32.const 1 call $~lib/builtins/abort @@ -40363,7 +43051,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2446 i32.const 1 call $~lib/builtins/abort @@ -40381,7 +43069,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2448 i32.const 1 call $~lib/builtins/abort @@ -40399,7 +43087,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2449 i32.const 1 call $~lib/builtins/abort @@ -40417,7 +43105,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2451 i32.const 1 call $~lib/builtins/abort @@ -40435,7 +43123,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2452 i32.const 1 call $~lib/builtins/abort @@ -40453,7 +43141,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2454 i32.const 1 call $~lib/builtins/abort @@ -40471,7 +43159,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2455 i32.const 1 call $~lib/builtins/abort @@ -40487,7 +43175,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2457 i32.const 1 call $~lib/builtins/abort @@ -40503,7 +43191,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2458 i32.const 1 call $~lib/builtins/abort @@ -40519,7 +43207,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2459 i32.const 1 call $~lib/builtins/abort @@ -40535,7 +43223,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2460 i32.const 1 call $~lib/builtins/abort @@ -40551,7 +43239,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2461 i32.const 1 call $~lib/builtins/abort @@ -40567,7 +43255,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2462 i32.const 1 call $~lib/builtins/abort @@ -40583,7 +43271,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2463 i32.const 1 call $~lib/builtins/abort @@ -40599,7 +43287,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2464 i32.const 1 call $~lib/builtins/abort @@ -40617,7 +43305,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2466 i32.const 1 call $~lib/builtins/abort @@ -40635,7 +43323,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2467 i32.const 1 call $~lib/builtins/abort @@ -40653,7 +43341,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2468 i32.const 1 call $~lib/builtins/abort @@ -40671,7 +43359,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2469 i32.const 1 call $~lib/builtins/abort @@ -40689,7 +43377,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2470 i32.const 1 call $~lib/builtins/abort @@ -40707,7 +43395,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2471 i32.const 1 call $~lib/builtins/abort @@ -40725,7 +43413,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2472 i32.const 1 call $~lib/builtins/abort @@ -40743,7 +43431,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2473 i32.const 1 call $~lib/builtins/abort @@ -40761,7 +43449,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2474 i32.const 1 call $~lib/builtins/abort @@ -40779,7 +43467,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2475 i32.const 1 call $~lib/builtins/abort @@ -40797,7 +43485,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2476 i32.const 1 call $~lib/builtins/abort @@ -40815,7 +43503,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2477 i32.const 1 call $~lib/builtins/abort @@ -40833,7 +43521,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2478 i32.const 1 call $~lib/builtins/abort @@ -40851,7 +43539,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2479 i32.const 1 call $~lib/builtins/abort @@ -40869,7 +43557,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2480 i32.const 1 call $~lib/builtins/abort @@ -40887,7 +43575,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2481 i32.const 1 call $~lib/builtins/abort @@ -40905,7 +43593,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2482 i32.const 1 call $~lib/builtins/abort @@ -40923,7 +43611,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2483 i32.const 1 call $~lib/builtins/abort @@ -40941,7 +43629,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2484 i32.const 1 call $~lib/builtins/abort @@ -40959,7 +43647,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2485 i32.const 1 call $~lib/builtins/abort @@ -40974,7 +43662,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2494 i32.const 1 call $~lib/builtins/abort @@ -40989,7 +43677,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2495 i32.const 1 call $~lib/builtins/abort @@ -41004,7 +43692,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2496 i32.const 1 call $~lib/builtins/abort @@ -41019,7 +43707,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2497 i32.const 1 call $~lib/builtins/abort @@ -41034,7 +43722,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2498 i32.const 1 call $~lib/builtins/abort @@ -41049,7 +43737,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2499 i32.const 1 call $~lib/builtins/abort @@ -41064,7 +43752,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2500 i32.const 1 call $~lib/builtins/abort @@ -41079,7 +43767,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2501 i32.const 1 call $~lib/builtins/abort @@ -41094,7 +43782,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2502 i32.const 1 call $~lib/builtins/abort @@ -41109,7 +43797,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2503 i32.const 1 call $~lib/builtins/abort @@ -41124,7 +43812,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2506 i32.const 1 call $~lib/builtins/abort @@ -41139,7 +43827,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2507 i32.const 1 call $~lib/builtins/abort @@ -41154,7 +43842,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2508 i32.const 1 call $~lib/builtins/abort @@ -41169,7 +43857,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2509 i32.const 1 call $~lib/builtins/abort @@ -41184,7 +43872,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2510 i32.const 1 call $~lib/builtins/abort @@ -41199,7 +43887,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2511 i32.const 1 call $~lib/builtins/abort @@ -41214,7 +43902,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2512 i32.const 1 call $~lib/builtins/abort @@ -41229,7 +43917,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2513 i32.const 1 call $~lib/builtins/abort @@ -41244,7 +43932,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2514 i32.const 1 call $~lib/builtins/abort @@ -41259,7 +43947,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2515 i32.const 1 call $~lib/builtins/abort @@ -41274,7 +43962,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2516 i32.const 1 call $~lib/builtins/abort @@ -41290,7 +43978,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2517 i32.const 1 call $~lib/builtins/abort @@ -41305,7 +43993,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2518 i32.const 1 call $~lib/builtins/abort @@ -41320,7 +44008,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2519 i32.const 1 call $~lib/builtins/abort @@ -41335,7 +44023,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2520 i32.const 1 call $~lib/builtins/abort @@ -41350,7 +44038,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2521 i32.const 1 call $~lib/builtins/abort @@ -41365,7 +44053,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2522 i32.const 1 call $~lib/builtins/abort @@ -41380,7 +44068,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2523 i32.const 1 call $~lib/builtins/abort @@ -41395,7 +44083,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2524 i32.const 1 call $~lib/builtins/abort @@ -41410,7 +44098,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2525 i32.const 1 call $~lib/builtins/abort @@ -41425,7 +44113,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2526 i32.const 1 call $~lib/builtins/abort @@ -41440,7 +44128,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2527 i32.const 1 call $~lib/builtins/abort @@ -41455,7 +44143,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2528 i32.const 1 call $~lib/builtins/abort @@ -41470,7 +44158,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2529 i32.const 1 call $~lib/builtins/abort @@ -41486,7 +44174,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2530 i32.const 1 call $~lib/builtins/abort @@ -41501,7 +44189,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2531 i32.const 1 call $~lib/builtins/abort @@ -41516,7 +44204,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2532 i32.const 1 call $~lib/builtins/abort @@ -41531,7 +44219,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2533 i32.const 1 call $~lib/builtins/abort @@ -41546,7 +44234,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2534 i32.const 1 call $~lib/builtins/abort @@ -41562,7 +44250,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2535 i32.const 1 call $~lib/builtins/abort @@ -41577,7 +44265,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2536 i32.const 1 call $~lib/builtins/abort @@ -41592,7 +44280,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2537 i32.const 1 call $~lib/builtins/abort @@ -41607,7 +44295,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2538 i32.const 1 call $~lib/builtins/abort @@ -41622,7 +44310,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2539 i32.const 1 call $~lib/builtins/abort @@ -41638,7 +44326,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2540 i32.const 1 call $~lib/builtins/abort @@ -41653,7 +44341,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2541 i32.const 1 call $~lib/builtins/abort @@ -41668,7 +44356,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2542 i32.const 1 call $~lib/builtins/abort @@ -41683,7 +44371,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2543 i32.const 1 call $~lib/builtins/abort @@ -41698,7 +44386,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2544 i32.const 1 call $~lib/builtins/abort @@ -41714,7 +44402,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2545 i32.const 1 call $~lib/builtins/abort @@ -41729,7 +44417,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2546 i32.const 1 call $~lib/builtins/abort @@ -41744,7 +44432,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2547 i32.const 1 call $~lib/builtins/abort @@ -41759,7 +44447,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2548 i32.const 1 call $~lib/builtins/abort @@ -41775,7 +44463,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2549 i32.const 1 call $~lib/builtins/abort @@ -41790,7 +44478,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2550 i32.const 1 call $~lib/builtins/abort @@ -41805,7 +44493,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2551 i32.const 1 call $~lib/builtins/abort @@ -41820,7 +44508,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2552 i32.const 1 call $~lib/builtins/abort @@ -41835,7 +44523,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2553 i32.const 1 call $~lib/builtins/abort @@ -41851,7 +44539,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2554 i32.const 1 call $~lib/builtins/abort @@ -41867,7 +44555,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2555 i32.const 1 call $~lib/builtins/abort @@ -41883,7 +44571,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2556 i32.const 1 call $~lib/builtins/abort @@ -41898,7 +44586,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2557 i32.const 1 call $~lib/builtins/abort @@ -41913,7 +44601,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2558 i32.const 1 call $~lib/builtins/abort @@ -41928,7 +44616,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2559 i32.const 1 call $~lib/builtins/abort @@ -41943,7 +44631,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2560 i32.const 1 call $~lib/builtins/abort @@ -41958,7 +44646,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2561 i32.const 1 call $~lib/builtins/abort @@ -41973,7 +44661,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2562 i32.const 1 call $~lib/builtins/abort @@ -41989,7 +44677,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2563 i32.const 1 call $~lib/builtins/abort @@ -42005,7 +44693,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2564 i32.const 1 call $~lib/builtins/abort @@ -42021,7 +44709,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2565 i32.const 1 call $~lib/builtins/abort @@ -42037,7 +44725,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2566 i32.const 1 call $~lib/builtins/abort @@ -42054,7 +44742,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2567 i32.const 1 call $~lib/builtins/abort @@ -42069,7 +44757,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2568 i32.const 1 call $~lib/builtins/abort @@ -42084,7 +44772,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2569 i32.const 1 call $~lib/builtins/abort @@ -42099,7 +44787,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2570 i32.const 1 call $~lib/builtins/abort @@ -42114,7 +44802,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2571 i32.const 1 call $~lib/builtins/abort @@ -42129,7 +44817,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2583 i32.const 1 call $~lib/builtins/abort @@ -42144,7 +44832,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2584 i32.const 1 call $~lib/builtins/abort @@ -42159,7 +44847,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2585 i32.const 1 call $~lib/builtins/abort @@ -42174,7 +44862,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2586 i32.const 1 call $~lib/builtins/abort @@ -42189,7 +44877,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2587 i32.const 1 call $~lib/builtins/abort @@ -42204,7 +44892,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2588 i32.const 1 call $~lib/builtins/abort @@ -42219,7 +44907,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2589 i32.const 1 call $~lib/builtins/abort @@ -42234,7 +44922,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2590 i32.const 1 call $~lib/builtins/abort @@ -42249,7 +44937,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2591 i32.const 1 call $~lib/builtins/abort @@ -42264,7 +44952,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2592 i32.const 1 call $~lib/builtins/abort @@ -42279,7 +44967,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2595 i32.const 1 call $~lib/builtins/abort @@ -42294,7 +44982,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2596 i32.const 1 call $~lib/builtins/abort @@ -42309,7 +44997,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2597 i32.const 1 call $~lib/builtins/abort @@ -42324,7 +45012,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2598 i32.const 1 call $~lib/builtins/abort @@ -42339,7 +45027,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2599 i32.const 1 call $~lib/builtins/abort @@ -42354,7 +45042,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2600 i32.const 1 call $~lib/builtins/abort @@ -42369,7 +45057,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2601 i32.const 1 call $~lib/builtins/abort @@ -42384,7 +45072,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2602 i32.const 1 call $~lib/builtins/abort @@ -42399,7 +45087,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2603 i32.const 1 call $~lib/builtins/abort @@ -42414,7 +45102,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2604 i32.const 1 call $~lib/builtins/abort @@ -42429,7 +45117,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2605 i32.const 1 call $~lib/builtins/abort @@ -42444,7 +45132,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2606 i32.const 1 call $~lib/builtins/abort @@ -42459,7 +45147,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2607 i32.const 1 call $~lib/builtins/abort @@ -42475,7 +45163,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2608 i32.const 1 call $~lib/builtins/abort @@ -42490,7 +45178,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2609 i32.const 1 call $~lib/builtins/abort @@ -42505,7 +45193,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2610 i32.const 1 call $~lib/builtins/abort @@ -42520,7 +45208,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2611 i32.const 1 call $~lib/builtins/abort @@ -42535,7 +45223,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2612 i32.const 1 call $~lib/builtins/abort @@ -42550,7 +45238,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2613 i32.const 1 call $~lib/builtins/abort @@ -42565,7 +45253,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2614 i32.const 1 call $~lib/builtins/abort @@ -42580,7 +45268,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2615 i32.const 1 call $~lib/builtins/abort @@ -42595,7 +45283,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2616 i32.const 1 call $~lib/builtins/abort @@ -42610,7 +45298,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2617 i32.const 1 call $~lib/builtins/abort @@ -42626,7 +45314,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2618 i32.const 1 call $~lib/builtins/abort @@ -42641,7 +45329,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2619 i32.const 1 call $~lib/builtins/abort @@ -42657,7 +45345,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2620 i32.const 1 call $~lib/builtins/abort @@ -42672,7 +45360,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2621 i32.const 1 call $~lib/builtins/abort @@ -42688,7 +45376,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2622 i32.const 1 call $~lib/builtins/abort @@ -42703,7 +45391,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2623 i32.const 1 call $~lib/builtins/abort @@ -42718,7 +45406,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2624 i32.const 1 call $~lib/builtins/abort @@ -42734,7 +45422,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2625 i32.const 1 call $~lib/builtins/abort @@ -42749,7 +45437,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2626 i32.const 1 call $~lib/builtins/abort @@ -42764,7 +45452,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2627 i32.const 1 call $~lib/builtins/abort @@ -42779,7 +45467,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2628 i32.const 1 call $~lib/builtins/abort @@ -42794,7 +45482,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2629 i32.const 1 call $~lib/builtins/abort @@ -42809,7 +45497,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2630 i32.const 1 call $~lib/builtins/abort @@ -42825,7 +45513,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2631 i32.const 1 call $~lib/builtins/abort @@ -42840,7 +45528,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2632 i32.const 1 call $~lib/builtins/abort @@ -42855,7 +45543,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2633 i32.const 1 call $~lib/builtins/abort @@ -42870,7 +45558,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2634 i32.const 1 call $~lib/builtins/abort @@ -42885,7 +45573,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2635 i32.const 1 call $~lib/builtins/abort @@ -42900,7 +45588,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2636 i32.const 1 call $~lib/builtins/abort @@ -42916,7 +45604,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2637 i32.const 1 call $~lib/builtins/abort @@ -42931,7 +45619,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2638 i32.const 1 call $~lib/builtins/abort @@ -42946,7 +45634,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2639 i32.const 1 call $~lib/builtins/abort @@ -42961,7 +45649,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2640 i32.const 1 call $~lib/builtins/abort @@ -42976,7 +45664,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2641 i32.const 1 call $~lib/builtins/abort @@ -42991,7 +45679,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2642 i32.const 1 call $~lib/builtins/abort @@ -43006,7 +45694,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2643 i32.const 1 call $~lib/builtins/abort @@ -43021,7 +45709,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2644 i32.const 1 call $~lib/builtins/abort @@ -43037,7 +45725,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2645 i32.const 1 call $~lib/builtins/abort @@ -43052,7 +45740,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2646 i32.const 1 call $~lib/builtins/abort @@ -43067,7 +45755,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2647 i32.const 1 call $~lib/builtins/abort @@ -43082,7 +45770,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2648 i32.const 1 call $~lib/builtins/abort @@ -43097,7 +45785,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2649 i32.const 1 call $~lib/builtins/abort @@ -43112,7 +45800,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2650 i32.const 1 call $~lib/builtins/abort @@ -43127,7 +45815,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2651 i32.const 1 call $~lib/builtins/abort @@ -43142,7 +45830,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2652 i32.const 1 call $~lib/builtins/abort @@ -43157,7 +45845,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2653 i32.const 1 call $~lib/builtins/abort @@ -43172,7 +45860,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2654 i32.const 1 call $~lib/builtins/abort @@ -43188,7 +45876,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2655 i32.const 1 call $~lib/builtins/abort @@ -43203,7 +45891,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2656 i32.const 1 call $~lib/builtins/abort @@ -43218,7 +45906,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2657 i32.const 1 call $~lib/builtins/abort @@ -43234,7 +45922,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2658 i32.const 1 call $~lib/builtins/abort @@ -43249,7 +45937,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2659 i32.const 1 call $~lib/builtins/abort @@ -43264,7 +45952,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2660 i32.const 1 call $~lib/builtins/abort @@ -43280,7 +45968,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2661 i32.const 1 call $~lib/builtins/abort @@ -43295,7 +45983,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2662 i32.const 1 call $~lib/builtins/abort @@ -43310,7 +45998,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2663 i32.const 1 call $~lib/builtins/abort @@ -43325,7 +46013,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2664 i32.const 1 call $~lib/builtins/abort @@ -43341,7 +46029,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2665 i32.const 1 call $~lib/builtins/abort @@ -43356,7 +46044,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2666 i32.const 1 call $~lib/builtins/abort @@ -43371,7 +46059,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2667 i32.const 1 call $~lib/builtins/abort @@ -43386,7 +46074,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2668 i32.const 1 call $~lib/builtins/abort @@ -43401,7 +46089,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2669 i32.const 1 call $~lib/builtins/abort @@ -43416,7 +46104,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2670 i32.const 1 call $~lib/builtins/abort @@ -43431,7 +46119,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2671 i32.const 1 call $~lib/builtins/abort @@ -43446,7 +46134,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2672 i32.const 1 call $~lib/builtins/abort @@ -43462,7 +46150,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2673 i32.const 1 call $~lib/builtins/abort @@ -43478,7 +46166,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2674 i32.const 1 call $~lib/builtins/abort @@ -43495,7 +46183,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2675 i32.const 1 call $~lib/builtins/abort @@ -43512,7 +46200,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2676 i32.const 1 call $~lib/builtins/abort @@ -43528,7 +46216,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2677 i32.const 1 call $~lib/builtins/abort @@ -43545,7 +46233,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2678 i32.const 1 call $~lib/builtins/abort @@ -43561,7 +46249,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2679 i32.const 1 call $~lib/builtins/abort @@ -43577,7 +46265,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2680 i32.const 1 call $~lib/builtins/abort @@ -43593,7 +46281,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2681 i32.const 1 call $~lib/builtins/abort @@ -43609,7 +46297,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2682 i32.const 1 call $~lib/builtins/abort @@ -43624,7 +46312,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2683 i32.const 1 call $~lib/builtins/abort @@ -43639,7 +46327,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2684 i32.const 1 call $~lib/builtins/abort @@ -43654,7 +46342,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2685 i32.const 1 call $~lib/builtins/abort @@ -43669,7 +46357,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2686 i32.const 1 call $~lib/builtins/abort @@ -43683,7 +46371,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2689 i32.const 1 call $~lib/builtins/abort @@ -43697,7 +46385,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2690 i32.const 1 call $~lib/builtins/abort @@ -43711,7 +46399,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2691 i32.const 1 call $~lib/builtins/abort @@ -43725,7 +46413,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2692 i32.const 1 call $~lib/builtins/abort @@ -43739,7 +46427,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2693 i32.const 1 call $~lib/builtins/abort @@ -43753,7 +46441,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2694 i32.const 1 call $~lib/builtins/abort @@ -43768,7 +46456,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2695 i32.const 1 call $~lib/builtins/abort @@ -43782,7 +46470,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2696 i32.const 1 call $~lib/builtins/abort @@ -43798,7 +46486,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2698 i32.const 1 call $~lib/builtins/abort @@ -43814,7 +46502,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2699 i32.const 1 call $~lib/builtins/abort @@ -43828,7 +46516,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2700 i32.const 1 call $~lib/builtins/abort @@ -43842,7 +46530,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2701 i32.const 1 call $~lib/builtins/abort @@ -43858,7 +46546,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2702 i32.const 1 call $~lib/builtins/abort @@ -43873,7 +46561,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2703 i32.const 1 call $~lib/builtins/abort @@ -43887,7 +46575,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2705 i32.const 1 call $~lib/builtins/abort @@ -43902,7 +46590,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2706 i32.const 1 call $~lib/builtins/abort @@ -43916,7 +46604,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2707 i32.const 1 call $~lib/builtins/abort @@ -43930,7 +46618,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2708 i32.const 1 call $~lib/builtins/abort @@ -43944,7 +46632,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2709 i32.const 1 call $~lib/builtins/abort @@ -43960,7 +46648,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2710 i32.const 1 call $~lib/builtins/abort @@ -43977,7 +46665,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2711 i32.const 1 call $~lib/builtins/abort @@ -43992,7 +46680,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2712 i32.const 1 call $~lib/builtins/abort @@ -44006,7 +46694,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2714 i32.const 1 call $~lib/builtins/abort @@ -44020,7 +46708,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2715 i32.const 1 call $~lib/builtins/abort @@ -44034,7 +46722,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2716 i32.const 1 call $~lib/builtins/abort @@ -44048,7 +46736,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2717 i32.const 1 call $~lib/builtins/abort @@ -44062,7 +46750,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2718 i32.const 1 call $~lib/builtins/abort @@ -44076,7 +46764,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2719 i32.const 1 call $~lib/builtins/abort @@ -44091,7 +46779,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2720 i32.const 1 call $~lib/builtins/abort @@ -44106,7 +46794,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2721 i32.const 1 call $~lib/builtins/abort @@ -44120,7 +46808,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2723 i32.const 1 call $~lib/builtins/abort @@ -44134,7 +46822,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2724 i32.const 1 call $~lib/builtins/abort @@ -44149,7 +46837,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2725 i32.const 1 call $~lib/builtins/abort @@ -44163,7 +46851,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2726 i32.const 1 call $~lib/builtins/abort @@ -44177,7 +46865,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2727 i32.const 1 call $~lib/builtins/abort @@ -44191,7 +46879,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2728 i32.const 1 call $~lib/builtins/abort @@ -44206,7 +46894,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2729 i32.const 1 call $~lib/builtins/abort @@ -44221,7 +46909,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2730 i32.const 1 call $~lib/builtins/abort @@ -44236,7 +46924,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2739 i32.const 1 call $~lib/builtins/abort @@ -44251,7 +46939,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2740 i32.const 1 call $~lib/builtins/abort @@ -44266,7 +46954,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2741 i32.const 1 call $~lib/builtins/abort @@ -44281,7 +46969,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2742 i32.const 1 call $~lib/builtins/abort @@ -44296,7 +46984,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2743 i32.const 1 call $~lib/builtins/abort @@ -44311,7 +46999,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2744 i32.const 1 call $~lib/builtins/abort @@ -44326,7 +47014,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2745 i32.const 1 call $~lib/builtins/abort @@ -44341,7 +47029,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2746 i32.const 1 call $~lib/builtins/abort @@ -44356,7 +47044,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2747 i32.const 1 call $~lib/builtins/abort @@ -44371,7 +47059,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2748 i32.const 1 call $~lib/builtins/abort @@ -44386,7 +47074,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2751 i32.const 1 call $~lib/builtins/abort @@ -44401,7 +47089,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2752 i32.const 1 call $~lib/builtins/abort @@ -44416,7 +47104,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2753 i32.const 1 call $~lib/builtins/abort @@ -44431,7 +47119,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2754 i32.const 1 call $~lib/builtins/abort @@ -44446,7 +47134,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2755 i32.const 1 call $~lib/builtins/abort @@ -44461,7 +47149,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2756 i32.const 1 call $~lib/builtins/abort @@ -44476,7 +47164,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2757 i32.const 1 call $~lib/builtins/abort @@ -44491,7 +47179,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2758 i32.const 1 call $~lib/builtins/abort @@ -44506,7 +47194,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2759 i32.const 1 call $~lib/builtins/abort @@ -44521,7 +47209,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2760 i32.const 1 call $~lib/builtins/abort @@ -44536,7 +47224,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2761 i32.const 1 call $~lib/builtins/abort @@ -44551,7 +47239,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2762 i32.const 1 call $~lib/builtins/abort @@ -44566,7 +47254,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2763 i32.const 1 call $~lib/builtins/abort @@ -44582,7 +47270,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2764 i32.const 1 call $~lib/builtins/abort @@ -44597,7 +47285,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2765 i32.const 1 call $~lib/builtins/abort @@ -44612,7 +47300,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2766 i32.const 1 call $~lib/builtins/abort @@ -44627,7 +47315,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2767 i32.const 1 call $~lib/builtins/abort @@ -44642,7 +47330,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2768 i32.const 1 call $~lib/builtins/abort @@ -44657,7 +47345,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2769 i32.const 1 call $~lib/builtins/abort @@ -44672,7 +47360,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2770 i32.const 1 call $~lib/builtins/abort @@ -44687,7 +47375,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2771 i32.const 1 call $~lib/builtins/abort @@ -44702,7 +47390,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2772 i32.const 1 call $~lib/builtins/abort @@ -44717,7 +47405,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2773 i32.const 1 call $~lib/builtins/abort @@ -44733,7 +47421,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2774 i32.const 1 call $~lib/builtins/abort @@ -44748,7 +47436,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2775 i32.const 1 call $~lib/builtins/abort @@ -44764,7 +47452,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2776 i32.const 1 call $~lib/builtins/abort @@ -44779,7 +47467,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2777 i32.const 1 call $~lib/builtins/abort @@ -44795,7 +47483,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2778 i32.const 1 call $~lib/builtins/abort @@ -44810,7 +47498,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2779 i32.const 1 call $~lib/builtins/abort @@ -44825,7 +47513,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2780 i32.const 1 call $~lib/builtins/abort @@ -44841,7 +47529,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2781 i32.const 1 call $~lib/builtins/abort @@ -44856,7 +47544,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2782 i32.const 1 call $~lib/builtins/abort @@ -44871,7 +47559,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2783 i32.const 1 call $~lib/builtins/abort @@ -44886,7 +47574,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2784 i32.const 1 call $~lib/builtins/abort @@ -44901,7 +47589,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2785 i32.const 1 call $~lib/builtins/abort @@ -44916,7 +47604,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2786 i32.const 1 call $~lib/builtins/abort @@ -44932,7 +47620,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2787 i32.const 1 call $~lib/builtins/abort @@ -44947,7 +47635,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2788 i32.const 1 call $~lib/builtins/abort @@ -44962,7 +47650,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2789 i32.const 1 call $~lib/builtins/abort @@ -44977,7 +47665,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2790 i32.const 1 call $~lib/builtins/abort @@ -44992,7 +47680,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2791 i32.const 1 call $~lib/builtins/abort @@ -45007,7 +47695,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2792 i32.const 1 call $~lib/builtins/abort @@ -45023,7 +47711,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2793 i32.const 1 call $~lib/builtins/abort @@ -45038,7 +47726,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2794 i32.const 1 call $~lib/builtins/abort @@ -45053,7 +47741,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2795 i32.const 1 call $~lib/builtins/abort @@ -45068,7 +47756,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2796 i32.const 1 call $~lib/builtins/abort @@ -45083,7 +47771,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2797 i32.const 1 call $~lib/builtins/abort @@ -45098,7 +47786,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2798 i32.const 1 call $~lib/builtins/abort @@ -45113,7 +47801,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2799 i32.const 1 call $~lib/builtins/abort @@ -45128,7 +47816,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2800 i32.const 1 call $~lib/builtins/abort @@ -45144,7 +47832,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2801 i32.const 1 call $~lib/builtins/abort @@ -45159,7 +47847,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2802 i32.const 1 call $~lib/builtins/abort @@ -45174,7 +47862,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2803 i32.const 1 call $~lib/builtins/abort @@ -45189,7 +47877,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2804 i32.const 1 call $~lib/builtins/abort @@ -45204,7 +47892,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2805 i32.const 1 call $~lib/builtins/abort @@ -45219,7 +47907,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2806 i32.const 1 call $~lib/builtins/abort @@ -45234,7 +47922,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2807 i32.const 1 call $~lib/builtins/abort @@ -45249,7 +47937,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2808 i32.const 1 call $~lib/builtins/abort @@ -45264,7 +47952,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2809 i32.const 1 call $~lib/builtins/abort @@ -45279,7 +47967,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2810 i32.const 1 call $~lib/builtins/abort @@ -45295,7 +47983,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2811 i32.const 1 call $~lib/builtins/abort @@ -45310,7 +47998,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2812 i32.const 1 call $~lib/builtins/abort @@ -45325,7 +48013,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2813 i32.const 1 call $~lib/builtins/abort @@ -45341,7 +48029,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2814 i32.const 1 call $~lib/builtins/abort @@ -45356,7 +48044,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2815 i32.const 1 call $~lib/builtins/abort @@ -45371,7 +48059,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2816 i32.const 1 call $~lib/builtins/abort @@ -45387,7 +48075,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2817 i32.const 1 call $~lib/builtins/abort @@ -45402,7 +48090,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2818 i32.const 1 call $~lib/builtins/abort @@ -45417,7 +48105,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2819 i32.const 1 call $~lib/builtins/abort @@ -45432,7 +48120,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2820 i32.const 1 call $~lib/builtins/abort @@ -45448,7 +48136,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2821 i32.const 1 call $~lib/builtins/abort @@ -45463,7 +48151,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2822 i32.const 1 call $~lib/builtins/abort @@ -45478,7 +48166,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2823 i32.const 1 call $~lib/builtins/abort @@ -45493,7 +48181,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2824 i32.const 1 call $~lib/builtins/abort @@ -45508,7 +48196,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2825 i32.const 1 call $~lib/builtins/abort @@ -45523,7 +48211,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2826 i32.const 1 call $~lib/builtins/abort @@ -45538,7 +48226,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2827 i32.const 1 call $~lib/builtins/abort @@ -45553,7 +48241,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2828 i32.const 1 call $~lib/builtins/abort @@ -45569,7 +48257,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2829 i32.const 1 call $~lib/builtins/abort @@ -45585,7 +48273,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2830 i32.const 1 call $~lib/builtins/abort @@ -45602,7 +48290,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2831 i32.const 1 call $~lib/builtins/abort @@ -45619,7 +48307,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2832 i32.const 1 call $~lib/builtins/abort @@ -45635,7 +48323,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2833 i32.const 1 call $~lib/builtins/abort @@ -45652,7 +48340,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2834 i32.const 1 call $~lib/builtins/abort @@ -45668,7 +48356,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2835 i32.const 1 call $~lib/builtins/abort @@ -45684,7 +48372,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2836 i32.const 1 call $~lib/builtins/abort @@ -45700,7 +48388,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2837 i32.const 1 call $~lib/builtins/abort @@ -45716,7 +48404,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2838 i32.const 1 call $~lib/builtins/abort @@ -45731,7 +48419,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2839 i32.const 1 call $~lib/builtins/abort @@ -45746,7 +48434,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2840 i32.const 1 call $~lib/builtins/abort @@ -45761,7 +48449,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2841 i32.const 1 call $~lib/builtins/abort @@ -45776,7 +48464,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2842 i32.const 1 call $~lib/builtins/abort @@ -45791,7 +48479,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2845 i32.const 1 call $~lib/builtins/abort @@ -45806,7 +48494,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2846 i32.const 1 call $~lib/builtins/abort @@ -45823,7 +48511,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2847 i32.const 1 call $~lib/builtins/abort @@ -45840,7 +48528,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2848 i32.const 1 call $~lib/builtins/abort @@ -45857,7 +48545,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2849 i32.const 1 call $~lib/builtins/abort @@ -45874,7 +48562,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2850 i32.const 1 call $~lib/builtins/abort @@ -45890,7 +48578,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2852 i32.const 1 call $~lib/builtins/abort @@ -45906,7 +48594,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2853 i32.const 1 call $~lib/builtins/abort @@ -45922,7 +48610,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2854 i32.const 1 call $~lib/builtins/abort @@ -45938,7 +48626,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2855 i32.const 1 call $~lib/builtins/abort @@ -45953,7 +48641,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2856 i32.const 1 call $~lib/builtins/abort @@ -45969,7 +48657,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2857 i32.const 1 call $~lib/builtins/abort @@ -45988,7 +48676,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2859 i32.const 1 call $~lib/builtins/abort @@ -46006,7 +48694,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2861 i32.const 1 call $~lib/builtins/abort @@ -46024,7 +48712,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2862 i32.const 1 call $~lib/builtins/abort @@ -46042,7 +48730,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2863 i32.const 1 call $~lib/builtins/abort @@ -46060,7 +48748,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2864 i32.const 1 call $~lib/builtins/abort @@ -46079,7 +48767,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2866 i32.const 1 call $~lib/builtins/abort @@ -46098,7 +48786,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2867 i32.const 1 call $~lib/builtins/abort @@ -46117,7 +48805,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2868 i32.const 1 call $~lib/builtins/abort @@ -46136,7 +48824,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2869 i32.const 1 call $~lib/builtins/abort @@ -46155,7 +48843,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2870 i32.const 1 call $~lib/builtins/abort @@ -46174,7 +48862,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2871 i32.const 1 call $~lib/builtins/abort @@ -46193,7 +48881,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2872 i32.const 1 call $~lib/builtins/abort @@ -46212,7 +48900,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2873 i32.const 1 call $~lib/builtins/abort @@ -46231,7 +48919,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2874 i32.const 1 call $~lib/builtins/abort @@ -46250,7 +48938,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2875 i32.const 1 call $~lib/builtins/abort @@ -46265,7 +48953,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2877 i32.const 1 call $~lib/builtins/abort @@ -46280,7 +48968,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2878 i32.const 1 call $~lib/builtins/abort @@ -46295,7 +48983,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2879 i32.const 1 call $~lib/builtins/abort @@ -46311,7 +48999,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2880 i32.const 1 call $~lib/builtins/abort @@ -46327,7 +49015,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2881 i32.const 1 call $~lib/builtins/abort @@ -46343,7 +49031,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2882 i32.const 1 call $~lib/builtins/abort @@ -46358,7 +49046,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2884 i32.const 1 call $~lib/builtins/abort @@ -46373,7 +49061,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2885 i32.const 1 call $~lib/builtins/abort @@ -46388,7 +49076,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2886 i32.const 1 call $~lib/builtins/abort @@ -46405,7 +49093,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2887 i32.const 1 call $~lib/builtins/abort @@ -46420,7 +49108,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2889 i32.const 1 call $~lib/builtins/abort @@ -46435,7 +49123,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2890 i32.const 1 call $~lib/builtins/abort @@ -46451,7 +49139,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2891 i32.const 1 call $~lib/builtins/abort @@ -46466,7 +49154,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2892 i32.const 1 call $~lib/builtins/abort @@ -46481,7 +49169,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2893 i32.const 1 call $~lib/builtins/abort @@ -46496,7 +49184,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2894 i32.const 1 call $~lib/builtins/abort @@ -46511,7 +49199,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2895 i32.const 1 call $~lib/builtins/abort @@ -46527,7 +49215,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2897 i32.const 1 call $~lib/builtins/abort @@ -46542,7 +49230,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2898 i32.const 1 call $~lib/builtins/abort @@ -46558,7 +49246,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2899 i32.const 1 call $~lib/builtins/abort @@ -46574,7 +49262,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2900 i32.const 1 call $~lib/builtins/abort @@ -46591,7 +49279,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2902 i32.const 1 call $~lib/builtins/abort @@ -46607,7 +49295,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2903 i32.const 1 call $~lib/builtins/abort @@ -46624,7 +49312,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2904 i32.const 1 call $~lib/builtins/abort @@ -46641,7 +49329,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2905 i32.const 1 call $~lib/builtins/abort @@ -46657,7 +49345,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2907 i32.const 1 call $~lib/builtins/abort @@ -46673,7 +49361,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2908 i32.const 1 call $~lib/builtins/abort @@ -46688,7 +49376,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2909 i32.const 1 call $~lib/builtins/abort @@ -46704,7 +49392,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2910 i32.const 1 call $~lib/builtins/abort @@ -46720,7 +49408,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2911 i32.const 1 call $~lib/builtins/abort @@ -46735,7 +49423,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2912 i32.const 1 call $~lib/builtins/abort @@ -46751,7 +49439,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2914 i32.const 1 call $~lib/builtins/abort @@ -46767,7 +49455,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2915 i32.const 1 call $~lib/builtins/abort @@ -46783,7 +49471,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2917 i32.const 1 call $~lib/builtins/abort @@ -46799,7 +49487,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2918 i32.const 1 call $~lib/builtins/abort @@ -46815,7 +49503,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2919 i32.const 1 call $~lib/builtins/abort @@ -46830,7 +49518,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2920 i32.const 1 call $~lib/builtins/abort @@ -46846,7 +49534,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2921 i32.const 1 call $~lib/builtins/abort @@ -46862,7 +49550,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2922 i32.const 1 call $~lib/builtins/abort @@ -46879,7 +49567,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2923 i32.const 1 call $~lib/builtins/abort @@ -46895,7 +49583,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2925 i32.const 1 call $~lib/builtins/abort @@ -46911,7 +49599,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2926 i32.const 1 call $~lib/builtins/abort @@ -46928,7 +49616,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2928 i32.const 1 call $~lib/builtins/abort @@ -46945,7 +49633,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2929 i32.const 1 call $~lib/builtins/abort @@ -46962,7 +49650,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2930 i32.const 1 call $~lib/builtins/abort @@ -46979,7 +49667,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2931 i32.const 1 call $~lib/builtins/abort @@ -46997,7 +49685,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2932 i32.const 1 call $~lib/builtins/abort @@ -47014,7 +49702,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2933 i32.const 1 call $~lib/builtins/abort @@ -47031,7 +49719,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2934 i32.const 1 call $~lib/builtins/abort @@ -47048,7 +49736,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2935 i32.const 1 call $~lib/builtins/abort @@ -47065,7 +49753,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2937 i32.const 1 call $~lib/builtins/abort @@ -47081,7 +49769,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2938 i32.const 1 call $~lib/builtins/abort @@ -47098,7 +49786,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2939 i32.const 1 call $~lib/builtins/abort @@ -47118,7 +49806,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2941 i32.const 1 call $~lib/builtins/abort @@ -47134,7 +49822,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2942 i32.const 1 call $~lib/builtins/abort @@ -47151,7 +49839,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2944 i32.const 1 call $~lib/builtins/abort @@ -47168,7 +49856,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2945 i32.const 1 call $~lib/builtins/abort @@ -47185,7 +49873,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2946 i32.const 1 call $~lib/builtins/abort @@ -47202,7 +49890,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2947 i32.const 1 call $~lib/builtins/abort @@ -47219,7 +49907,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2948 i32.const 1 call $~lib/builtins/abort @@ -47236,7 +49924,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2949 i32.const 1 call $~lib/builtins/abort @@ -47253,7 +49941,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2950 i32.const 1 call $~lib/builtins/abort @@ -47270,7 +49958,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2951 i32.const 1 call $~lib/builtins/abort @@ -47287,7 +49975,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2952 i32.const 1 call $~lib/builtins/abort @@ -47304,7 +49992,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2953 i32.const 1 call $~lib/builtins/abort @@ -47321,7 +50009,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2954 i32.const 1 call $~lib/builtins/abort @@ -47338,7 +50026,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2955 i32.const 1 call $~lib/builtins/abort @@ -47355,7 +50043,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2956 i32.const 1 call $~lib/builtins/abort @@ -47372,7 +50060,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2957 i32.const 1 call $~lib/builtins/abort @@ -47389,7 +50077,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2958 i32.const 1 call $~lib/builtins/abort @@ -47406,7 +50094,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2959 i32.const 1 call $~lib/builtins/abort @@ -47423,7 +50111,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2960 i32.const 1 call $~lib/builtins/abort @@ -47440,7 +50128,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2961 i32.const 1 call $~lib/builtins/abort @@ -47455,7 +50143,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2962 i32.const 1 call $~lib/builtins/abort @@ -47470,7 +50158,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2963 i32.const 1 call $~lib/builtins/abort @@ -47487,7 +50175,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2965 i32.const 1 call $~lib/builtins/abort @@ -47504,7 +50192,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2966 i32.const 1 call $~lib/builtins/abort @@ -47520,7 +50208,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2967 i32.const 1 call $~lib/builtins/abort @@ -47537,7 +50225,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2968 i32.const 1 call $~lib/builtins/abort @@ -47554,7 +50242,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2969 i32.const 1 call $~lib/builtins/abort @@ -47571,7 +50259,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2970 i32.const 1 call $~lib/builtins/abort @@ -47588,7 +50276,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2971 i32.const 1 call $~lib/builtins/abort @@ -47604,7 +50292,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2973 i32.const 1 call $~lib/builtins/abort @@ -47621,7 +50309,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2974 i32.const 1 call $~lib/builtins/abort @@ -47640,7 +50328,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2976 i32.const 1 call $~lib/builtins/abort @@ -47659,7 +50347,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2977 i32.const 1 call $~lib/builtins/abort @@ -47678,7 +50366,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2978 i32.const 1 call $~lib/builtins/abort @@ -47696,7 +50384,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2979 i32.const 1 call $~lib/builtins/abort @@ -47715,7 +50403,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2980 i32.const 1 call $~lib/builtins/abort @@ -47734,7 +50422,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2981 i32.const 1 call $~lib/builtins/abort @@ -47753,7 +50441,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2982 i32.const 1 call $~lib/builtins/abort @@ -47772,7 +50460,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2983 i32.const 1 call $~lib/builtins/abort @@ -47790,7 +50478,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2984 i32.const 1 call $~lib/builtins/abort @@ -47810,7 +50498,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2985 i32.const 1 call $~lib/builtins/abort @@ -47829,7 +50517,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2986 i32.const 1 call $~lib/builtins/abort @@ -47848,7 +50536,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2988 i32.const 1 call $~lib/builtins/abort @@ -47866,7 +50554,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2989 i32.const 1 call $~lib/builtins/abort @@ -47886,7 +50574,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2990 i32.const 1 call $~lib/builtins/abort @@ -47905,7 +50593,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 2991 i32.const 1 call $~lib/builtins/abort @@ -47937,7 +50625,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3000 i32.const 3 call $~lib/builtins/abort @@ -47978,7 +50666,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3008 i32.const 3 call $~lib/builtins/abort @@ -47999,7 +50687,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3022 i32.const 1 call $~lib/builtins/abort @@ -48013,7 +50701,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3023 i32.const 1 call $~lib/builtins/abort @@ -48027,7 +50715,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3024 i32.const 1 call $~lib/builtins/abort @@ -48041,7 +50729,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3025 i32.const 1 call $~lib/builtins/abort @@ -48055,7 +50743,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3026 i32.const 1 call $~lib/builtins/abort @@ -48069,7 +50757,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3027 i32.const 1 call $~lib/builtins/abort @@ -48083,7 +50771,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3028 i32.const 1 call $~lib/builtins/abort @@ -48097,7 +50785,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3029 i32.const 1 call $~lib/builtins/abort @@ -48111,7 +50799,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3030 i32.const 1 call $~lib/builtins/abort @@ -48125,7 +50813,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3031 i32.const 1 call $~lib/builtins/abort @@ -48139,7 +50827,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3034 i32.const 1 call $~lib/builtins/abort @@ -48153,7 +50841,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3035 i32.const 1 call $~lib/builtins/abort @@ -48169,7 +50857,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3036 i32.const 1 call $~lib/builtins/abort @@ -48183,7 +50871,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3037 i32.const 1 call $~lib/builtins/abort @@ -48197,7 +50885,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3038 i32.const 1 call $~lib/builtins/abort @@ -48211,7 +50899,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3039 i32.const 1 call $~lib/builtins/abort @@ -48225,7 +50913,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3040 i32.const 1 call $~lib/builtins/abort @@ -48239,7 +50927,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3041 i32.const 1 call $~lib/builtins/abort @@ -48253,7 +50941,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3042 i32.const 1 call $~lib/builtins/abort @@ -48267,7 +50955,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3043 i32.const 1 call $~lib/builtins/abort @@ -48281,7 +50969,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3044 i32.const 1 call $~lib/builtins/abort @@ -48295,7 +50983,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3045 i32.const 1 call $~lib/builtins/abort @@ -48309,7 +50997,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3046 i32.const 1 call $~lib/builtins/abort @@ -48323,7 +51011,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3047 i32.const 1 call $~lib/builtins/abort @@ -48337,7 +51025,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3048 i32.const 1 call $~lib/builtins/abort @@ -48351,7 +51039,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3049 i32.const 1 call $~lib/builtins/abort @@ -48365,7 +51053,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3050 i32.const 1 call $~lib/builtins/abort @@ -48378,7 +51066,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3052 i32.const 1 call $~lib/builtins/abort @@ -48391,7 +51079,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3053 i32.const 1 call $~lib/builtins/abort @@ -48404,7 +51092,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3054 i32.const 1 call $~lib/builtins/abort @@ -48417,7 +51105,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3055 i32.const 1 call $~lib/builtins/abort @@ -48430,7 +51118,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3056 i32.const 1 call $~lib/builtins/abort @@ -48444,7 +51132,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3065 i32.const 1 call $~lib/builtins/abort @@ -48458,7 +51146,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3066 i32.const 1 call $~lib/builtins/abort @@ -48472,7 +51160,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3067 i32.const 1 call $~lib/builtins/abort @@ -48486,7 +51174,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3068 i32.const 1 call $~lib/builtins/abort @@ -48500,7 +51188,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3069 i32.const 1 call $~lib/builtins/abort @@ -48514,7 +51202,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3070 i32.const 1 call $~lib/builtins/abort @@ -48528,7 +51216,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3071 i32.const 1 call $~lib/builtins/abort @@ -48542,7 +51230,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3072 i32.const 1 call $~lib/builtins/abort @@ -48556,7 +51244,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3073 i32.const 1 call $~lib/builtins/abort @@ -48570,7 +51258,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3074 i32.const 1 call $~lib/builtins/abort @@ -48584,7 +51272,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3077 i32.const 1 call $~lib/builtins/abort @@ -48598,7 +51286,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3078 i32.const 1 call $~lib/builtins/abort @@ -48614,7 +51302,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3079 i32.const 1 call $~lib/builtins/abort @@ -48628,7 +51316,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3080 i32.const 1 call $~lib/builtins/abort @@ -48642,7 +51330,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3081 i32.const 1 call $~lib/builtins/abort @@ -48656,7 +51344,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3082 i32.const 1 call $~lib/builtins/abort @@ -48670,7 +51358,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3083 i32.const 1 call $~lib/builtins/abort @@ -48684,7 +51372,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3084 i32.const 1 call $~lib/builtins/abort @@ -48698,7 +51386,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3085 i32.const 1 call $~lib/builtins/abort @@ -48712,7 +51400,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3086 i32.const 1 call $~lib/builtins/abort @@ -48726,7 +51414,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3087 i32.const 1 call $~lib/builtins/abort @@ -48740,7 +51428,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3088 i32.const 1 call $~lib/builtins/abort @@ -48754,7 +51442,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3089 i32.const 1 call $~lib/builtins/abort @@ -48768,7 +51456,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3090 i32.const 1 call $~lib/builtins/abort @@ -48782,7 +51470,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3091 i32.const 1 call $~lib/builtins/abort @@ -48796,7 +51484,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3092 i32.const 1 call $~lib/builtins/abort @@ -48810,7 +51498,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3093 i32.const 1 call $~lib/builtins/abort @@ -48824,7 +51512,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3104 i32.const 1 call $~lib/builtins/abort @@ -48838,7 +51526,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3105 i32.const 1 call $~lib/builtins/abort @@ -48852,7 +51540,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3106 i32.const 1 call $~lib/builtins/abort @@ -48866,7 +51554,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3107 i32.const 1 call $~lib/builtins/abort @@ -48880,7 +51568,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3108 i32.const 1 call $~lib/builtins/abort @@ -48894,7 +51582,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3109 i32.const 1 call $~lib/builtins/abort @@ -48908,7 +51596,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3110 i32.const 1 call $~lib/builtins/abort @@ -48923,7 +51611,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3111 i32.const 1 call $~lib/builtins/abort @@ -48937,7 +51625,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3112 i32.const 1 call $~lib/builtins/abort @@ -48951,7 +51639,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3120 i32.const 1 call $~lib/builtins/abort @@ -48965,7 +51653,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3121 i32.const 1 call $~lib/builtins/abort @@ -48979,7 +51667,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3122 i32.const 1 call $~lib/builtins/abort @@ -48993,7 +51681,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3123 i32.const 1 call $~lib/builtins/abort @@ -49007,7 +51695,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3124 i32.const 1 call $~lib/builtins/abort @@ -49021,7 +51709,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3125 i32.const 1 call $~lib/builtins/abort @@ -49035,7 +51723,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3126 i32.const 1 call $~lib/builtins/abort @@ -49050,7 +51738,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3127 i32.const 1 call $~lib/builtins/abort @@ -49064,7 +51752,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3128 i32.const 1 call $~lib/builtins/abort @@ -49323,7 +52011,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3165 i32.const 1 call $~lib/builtins/abort @@ -49338,7 +52026,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3166 i32.const 1 call $~lib/builtins/abort @@ -49353,7 +52041,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3167 i32.const 1 call $~lib/builtins/abort @@ -49368,7 +52056,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3168 i32.const 1 call $~lib/builtins/abort @@ -49383,7 +52071,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3169 i32.const 1 call $~lib/builtins/abort @@ -49398,7 +52086,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3170 i32.const 1 call $~lib/builtins/abort @@ -49413,7 +52101,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3171 i32.const 1 call $~lib/builtins/abort @@ -49428,7 +52116,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3172 i32.const 1 call $~lib/builtins/abort @@ -49443,7 +52131,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3173 i32.const 1 call $~lib/builtins/abort @@ -49458,7 +52146,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3174 i32.const 1 call $~lib/builtins/abort @@ -49473,7 +52161,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3177 i32.const 1 call $~lib/builtins/abort @@ -49488,7 +52176,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3178 i32.const 1 call $~lib/builtins/abort @@ -49503,7 +52191,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3179 i32.const 1 call $~lib/builtins/abort @@ -49518,7 +52206,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3180 i32.const 1 call $~lib/builtins/abort @@ -49533,7 +52221,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3181 i32.const 1 call $~lib/builtins/abort @@ -49548,7 +52236,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3182 i32.const 1 call $~lib/builtins/abort @@ -49563,7 +52251,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3183 i32.const 1 call $~lib/builtins/abort @@ -49578,7 +52266,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3184 i32.const 1 call $~lib/builtins/abort @@ -49593,7 +52281,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3185 i32.const 1 call $~lib/builtins/abort @@ -49608,7 +52296,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3186 i32.const 1 call $~lib/builtins/abort @@ -49623,7 +52311,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3187 i32.const 1 call $~lib/builtins/abort @@ -49639,7 +52327,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3188 i32.const 1 call $~lib/builtins/abort @@ -49654,7 +52342,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3189 i32.const 1 call $~lib/builtins/abort @@ -49669,7 +52357,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3190 i32.const 1 call $~lib/builtins/abort @@ -49684,7 +52372,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3191 i32.const 1 call $~lib/builtins/abort @@ -49699,7 +52387,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3192 i32.const 1 call $~lib/builtins/abort @@ -49714,7 +52402,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3193 i32.const 1 call $~lib/builtins/abort @@ -49729,7 +52417,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3194 i32.const 1 call $~lib/builtins/abort @@ -49744,7 +52432,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3195 i32.const 1 call $~lib/builtins/abort @@ -49759,7 +52447,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3196 i32.const 1 call $~lib/builtins/abort @@ -49774,7 +52462,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3197 i32.const 1 call $~lib/builtins/abort @@ -49789,7 +52477,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3198 i32.const 1 call $~lib/builtins/abort @@ -49804,7 +52492,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3199 i32.const 1 call $~lib/builtins/abort @@ -49819,7 +52507,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3200 i32.const 1 call $~lib/builtins/abort @@ -49835,7 +52523,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3201 i32.const 1 call $~lib/builtins/abort @@ -49850,7 +52538,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3202 i32.const 1 call $~lib/builtins/abort @@ -49865,7 +52553,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3203 i32.const 1 call $~lib/builtins/abort @@ -49880,7 +52568,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3204 i32.const 1 call $~lib/builtins/abort @@ -49895,7 +52583,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3205 i32.const 1 call $~lib/builtins/abort @@ -49911,7 +52599,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3206 i32.const 1 call $~lib/builtins/abort @@ -49926,7 +52614,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3207 i32.const 1 call $~lib/builtins/abort @@ -49941,7 +52629,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3208 i32.const 1 call $~lib/builtins/abort @@ -49956,7 +52644,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3209 i32.const 1 call $~lib/builtins/abort @@ -49971,7 +52659,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3210 i32.const 1 call $~lib/builtins/abort @@ -49987,7 +52675,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3211 i32.const 1 call $~lib/builtins/abort @@ -50002,7 +52690,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3212 i32.const 1 call $~lib/builtins/abort @@ -50017,7 +52705,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3213 i32.const 1 call $~lib/builtins/abort @@ -50032,7 +52720,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3214 i32.const 1 call $~lib/builtins/abort @@ -50047,7 +52735,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3215 i32.const 1 call $~lib/builtins/abort @@ -50063,7 +52751,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3216 i32.const 1 call $~lib/builtins/abort @@ -50078,7 +52766,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3217 i32.const 1 call $~lib/builtins/abort @@ -50093,7 +52781,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3218 i32.const 1 call $~lib/builtins/abort @@ -50108,7 +52796,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3219 i32.const 1 call $~lib/builtins/abort @@ -50124,7 +52812,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3220 i32.const 1 call $~lib/builtins/abort @@ -50139,7 +52827,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3221 i32.const 1 call $~lib/builtins/abort @@ -50154,7 +52842,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3222 i32.const 1 call $~lib/builtins/abort @@ -50169,7 +52857,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3223 i32.const 1 call $~lib/builtins/abort @@ -50184,7 +52872,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3224 i32.const 1 call $~lib/builtins/abort @@ -50200,7 +52888,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3225 i32.const 1 call $~lib/builtins/abort @@ -50216,7 +52904,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3226 i32.const 1 call $~lib/builtins/abort @@ -50232,7 +52920,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3227 i32.const 1 call $~lib/builtins/abort @@ -50247,7 +52935,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3228 i32.const 1 call $~lib/builtins/abort @@ -50262,7 +52950,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3229 i32.const 1 call $~lib/builtins/abort @@ -50277,7 +52965,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3230 i32.const 1 call $~lib/builtins/abort @@ -50292,7 +52980,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3231 i32.const 1 call $~lib/builtins/abort @@ -50307,7 +52995,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3232 i32.const 1 call $~lib/builtins/abort @@ -50322,7 +53010,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3233 i32.const 1 call $~lib/builtins/abort @@ -50338,7 +53026,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3234 i32.const 1 call $~lib/builtins/abort @@ -50354,7 +53042,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3235 i32.const 1 call $~lib/builtins/abort @@ -50370,7 +53058,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3236 i32.const 1 call $~lib/builtins/abort @@ -50386,7 +53074,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3237 i32.const 1 call $~lib/builtins/abort @@ -50403,7 +53091,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3238 i32.const 1 call $~lib/builtins/abort @@ -50418,7 +53106,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3239 i32.const 1 call $~lib/builtins/abort @@ -50433,7 +53121,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3240 i32.const 1 call $~lib/builtins/abort @@ -50448,7 +53136,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3241 i32.const 1 call $~lib/builtins/abort @@ -50463,7 +53151,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3242 i32.const 1 call $~lib/builtins/abort @@ -50478,7 +53166,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3243 i32.const 1 call $~lib/builtins/abort @@ -50493,7 +53181,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3252 i32.const 1 call $~lib/builtins/abort @@ -50508,7 +53196,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3253 i32.const 1 call $~lib/builtins/abort @@ -50523,7 +53211,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3254 i32.const 1 call $~lib/builtins/abort @@ -50538,7 +53226,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3255 i32.const 1 call $~lib/builtins/abort @@ -50553,7 +53241,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3256 i32.const 1 call $~lib/builtins/abort @@ -50568,7 +53256,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3257 i32.const 1 call $~lib/builtins/abort @@ -50583,7 +53271,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3258 i32.const 1 call $~lib/builtins/abort @@ -50598,7 +53286,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3259 i32.const 1 call $~lib/builtins/abort @@ -50613,7 +53301,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3260 i32.const 1 call $~lib/builtins/abort @@ -50628,7 +53316,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3261 i32.const 1 call $~lib/builtins/abort @@ -50643,7 +53331,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3264 i32.const 1 call $~lib/builtins/abort @@ -50658,7 +53346,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3265 i32.const 1 call $~lib/builtins/abort @@ -50673,7 +53361,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3266 i32.const 1 call $~lib/builtins/abort @@ -50688,7 +53376,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3267 i32.const 1 call $~lib/builtins/abort @@ -50703,7 +53391,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3268 i32.const 1 call $~lib/builtins/abort @@ -50718,7 +53406,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3269 i32.const 1 call $~lib/builtins/abort @@ -50733,7 +53421,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3270 i32.const 1 call $~lib/builtins/abort @@ -50748,7 +53436,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3271 i32.const 1 call $~lib/builtins/abort @@ -50763,7 +53451,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3272 i32.const 1 call $~lib/builtins/abort @@ -50778,7 +53466,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3273 i32.const 1 call $~lib/builtins/abort @@ -50793,7 +53481,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3274 i32.const 1 call $~lib/builtins/abort @@ -50809,7 +53497,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3275 i32.const 1 call $~lib/builtins/abort @@ -50824,7 +53512,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3276 i32.const 1 call $~lib/builtins/abort @@ -50839,7 +53527,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3277 i32.const 1 call $~lib/builtins/abort @@ -50854,7 +53542,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3278 i32.const 1 call $~lib/builtins/abort @@ -50869,7 +53557,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3279 i32.const 1 call $~lib/builtins/abort @@ -50884,7 +53572,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3280 i32.const 1 call $~lib/builtins/abort @@ -50899,7 +53587,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3281 i32.const 1 call $~lib/builtins/abort @@ -50914,7 +53602,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3282 i32.const 1 call $~lib/builtins/abort @@ -50929,7 +53617,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3283 i32.const 1 call $~lib/builtins/abort @@ -50944,7 +53632,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3284 i32.const 1 call $~lib/builtins/abort @@ -50959,7 +53647,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3285 i32.const 1 call $~lib/builtins/abort @@ -50974,7 +53662,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3286 i32.const 1 call $~lib/builtins/abort @@ -50989,7 +53677,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3287 i32.const 1 call $~lib/builtins/abort @@ -51005,7 +53693,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3288 i32.const 1 call $~lib/builtins/abort @@ -51020,7 +53708,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3289 i32.const 1 call $~lib/builtins/abort @@ -51035,7 +53723,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3290 i32.const 1 call $~lib/builtins/abort @@ -51050,7 +53738,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3291 i32.const 1 call $~lib/builtins/abort @@ -51065,7 +53753,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3292 i32.const 1 call $~lib/builtins/abort @@ -51081,7 +53769,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3293 i32.const 1 call $~lib/builtins/abort @@ -51096,7 +53784,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3294 i32.const 1 call $~lib/builtins/abort @@ -51111,7 +53799,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3295 i32.const 1 call $~lib/builtins/abort @@ -51126,7 +53814,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3296 i32.const 1 call $~lib/builtins/abort @@ -51141,7 +53829,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3297 i32.const 1 call $~lib/builtins/abort @@ -51157,7 +53845,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3298 i32.const 1 call $~lib/builtins/abort @@ -51172,7 +53860,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3299 i32.const 1 call $~lib/builtins/abort @@ -51187,7 +53875,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3300 i32.const 1 call $~lib/builtins/abort @@ -51202,7 +53890,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3301 i32.const 1 call $~lib/builtins/abort @@ -51217,7 +53905,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3302 i32.const 1 call $~lib/builtins/abort @@ -51233,7 +53921,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3303 i32.const 1 call $~lib/builtins/abort @@ -51248,7 +53936,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3304 i32.const 1 call $~lib/builtins/abort @@ -51263,7 +53951,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3305 i32.const 1 call $~lib/builtins/abort @@ -51278,7 +53966,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3306 i32.const 1 call $~lib/builtins/abort @@ -51294,7 +53982,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3307 i32.const 1 call $~lib/builtins/abort @@ -51309,7 +53997,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3308 i32.const 1 call $~lib/builtins/abort @@ -51324,7 +54012,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3309 i32.const 1 call $~lib/builtins/abort @@ -51339,7 +54027,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3310 i32.const 1 call $~lib/builtins/abort @@ -51354,7 +54042,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3311 i32.const 1 call $~lib/builtins/abort @@ -51370,7 +54058,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3312 i32.const 1 call $~lib/builtins/abort @@ -51386,7 +54074,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3313 i32.const 1 call $~lib/builtins/abort @@ -51402,7 +54090,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3314 i32.const 1 call $~lib/builtins/abort @@ -51417,7 +54105,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3315 i32.const 1 call $~lib/builtins/abort @@ -51432,7 +54120,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3316 i32.const 1 call $~lib/builtins/abort @@ -51447,7 +54135,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3317 i32.const 1 call $~lib/builtins/abort @@ -51462,7 +54150,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3318 i32.const 1 call $~lib/builtins/abort @@ -51477,7 +54165,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3319 i32.const 1 call $~lib/builtins/abort @@ -51492,7 +54180,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3320 i32.const 1 call $~lib/builtins/abort @@ -51508,7 +54196,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3321 i32.const 1 call $~lib/builtins/abort @@ -51524,7 +54212,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3322 i32.const 1 call $~lib/builtins/abort @@ -51540,7 +54228,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3323 i32.const 1 call $~lib/builtins/abort @@ -51556,7 +54244,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3324 i32.const 1 call $~lib/builtins/abort @@ -51573,7 +54261,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3325 i32.const 1 call $~lib/builtins/abort @@ -51588,7 +54276,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3326 i32.const 1 call $~lib/builtins/abort @@ -51603,7 +54291,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3327 i32.const 1 call $~lib/builtins/abort @@ -51618,7 +54306,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3328 i32.const 1 call $~lib/builtins/abort @@ -51633,7 +54321,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3329 i32.const 1 call $~lib/builtins/abort @@ -51648,7 +54336,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3330 i32.const 1 call $~lib/builtins/abort @@ -51662,7 +54350,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3342 i32.const 1 call $~lib/builtins/abort @@ -51676,7 +54364,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3343 i32.const 1 call $~lib/builtins/abort @@ -51690,7 +54378,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3344 i32.const 1 call $~lib/builtins/abort @@ -51704,7 +54392,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3345 i32.const 1 call $~lib/builtins/abort @@ -51718,7 +54406,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3346 i32.const 1 call $~lib/builtins/abort @@ -51732,7 +54420,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3347 i32.const 1 call $~lib/builtins/abort @@ -51746,7 +54434,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3348 i32.const 1 call $~lib/builtins/abort @@ -51760,7 +54448,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3349 i32.const 1 call $~lib/builtins/abort @@ -51774,7 +54462,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3350 i32.const 1 call $~lib/builtins/abort @@ -51788,7 +54476,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3351 i32.const 1 call $~lib/builtins/abort @@ -51802,7 +54490,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3354 i32.const 1 call $~lib/builtins/abort @@ -51816,7 +54504,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3355 i32.const 1 call $~lib/builtins/abort @@ -51830,7 +54518,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3356 i32.const 1 call $~lib/builtins/abort @@ -51844,7 +54532,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3357 i32.const 1 call $~lib/builtins/abort @@ -51860,7 +54548,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3358 i32.const 1 call $~lib/builtins/abort @@ -51876,7 +54564,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3359 i32.const 1 call $~lib/builtins/abort @@ -51890,7 +54578,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3360 i32.const 1 call $~lib/builtins/abort @@ -51904,7 +54592,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3361 i32.const 1 call $~lib/builtins/abort @@ -51918,7 +54606,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3362 i32.const 1 call $~lib/builtins/abort @@ -51932,7 +54620,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3363 i32.const 1 call $~lib/builtins/abort @@ -51946,7 +54634,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3364 i32.const 1 call $~lib/builtins/abort @@ -51960,7 +54648,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3365 i32.const 1 call $~lib/builtins/abort @@ -51974,7 +54662,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3366 i32.const 1 call $~lib/builtins/abort @@ -51988,7 +54676,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3367 i32.const 1 call $~lib/builtins/abort @@ -52002,7 +54690,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3368 i32.const 1 call $~lib/builtins/abort @@ -52016,7 +54704,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3369 i32.const 1 call $~lib/builtins/abort @@ -52030,7 +54718,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3370 i32.const 1 call $~lib/builtins/abort @@ -52044,7 +54732,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3371 i32.const 1 call $~lib/builtins/abort @@ -52058,7 +54746,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3372 i32.const 1 call $~lib/builtins/abort @@ -52072,7 +54760,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3373 i32.const 1 call $~lib/builtins/abort @@ -52086,7 +54774,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3374 i32.const 1 call $~lib/builtins/abort @@ -52100,7 +54788,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3375 i32.const 1 call $~lib/builtins/abort @@ -52114,7 +54802,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3376 i32.const 1 call $~lib/builtins/abort @@ -52128,7 +54816,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3377 i32.const 1 call $~lib/builtins/abort @@ -52142,7 +54830,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3378 i32.const 1 call $~lib/builtins/abort @@ -52158,7 +54846,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3379 i32.const 1 call $~lib/builtins/abort @@ -52174,7 +54862,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3380 i32.const 1 call $~lib/builtins/abort @@ -52190,7 +54878,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3381 i32.const 1 call $~lib/builtins/abort @@ -52206,7 +54894,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3382 i32.const 1 call $~lib/builtins/abort @@ -52222,7 +54910,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3383 i32.const 1 call $~lib/builtins/abort @@ -52238,7 +54926,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3384 i32.const 1 call $~lib/builtins/abort @@ -52254,7 +54942,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3385 i32.const 1 call $~lib/builtins/abort @@ -52270,7 +54958,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3386 i32.const 1 call $~lib/builtins/abort @@ -52286,7 +54974,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3387 i32.const 1 call $~lib/builtins/abort @@ -52302,7 +54990,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3388 i32.const 1 call $~lib/builtins/abort @@ -52318,7 +55006,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3389 i32.const 1 call $~lib/builtins/abort @@ -52334,7 +55022,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3390 i32.const 1 call $~lib/builtins/abort @@ -52348,7 +55036,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3393 i32.const 1 call $~lib/builtins/abort @@ -52362,7 +55050,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3394 i32.const 1 call $~lib/builtins/abort @@ -52376,7 +55064,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3395 i32.const 1 call $~lib/builtins/abort @@ -52391,7 +55079,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3396 i32.const 1 call $~lib/builtins/abort @@ -52405,7 +55093,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3397 i32.const 1 call $~lib/builtins/abort @@ -52423,7 +55111,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3400 i32.const 1 call $~lib/builtins/abort @@ -52445,7 +55133,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3401 i32.const 1 call $~lib/builtins/abort @@ -52458,7 +55146,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3404 i32.const 1 call $~lib/builtins/abort @@ -52471,7 +55159,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3405 i32.const 1 call $~lib/builtins/abort @@ -52484,7 +55172,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3407 i32.const 1 call $~lib/builtins/abort @@ -52497,7 +55185,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3408 i32.const 1 call $~lib/builtins/abort @@ -52510,7 +55198,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3411 i32.const 1 call $~lib/builtins/abort @@ -52523,7 +55211,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3412 i32.const 1 call $~lib/builtins/abort @@ -52538,7 +55226,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3413 i32.const 1 call $~lib/builtins/abort @@ -52554,7 +55242,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3414 i32.const 1 call $~lib/builtins/abort @@ -52567,7 +55255,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3416 i32.const 1 call $~lib/builtins/abort @@ -52582,7 +55270,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3417 i32.const 1 call $~lib/builtins/abort @@ -52599,7 +55287,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3419 i32.const 1 call $~lib/builtins/abort @@ -52616,7 +55304,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3420 i32.const 1 call $~lib/builtins/abort @@ -52633,7 +55321,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3421 i32.const 1 call $~lib/builtins/abort @@ -52650,7 +55338,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3422 i32.const 1 call $~lib/builtins/abort @@ -52667,7 +55355,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3423 i32.const 1 call $~lib/builtins/abort @@ -52680,7 +55368,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3426 i32.const 1 call $~lib/builtins/abort @@ -52694,7 +55382,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3427 i32.const 1 call $~lib/builtins/abort @@ -52708,7 +55396,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3436 i32.const 1 call $~lib/builtins/abort @@ -52722,7 +55410,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3437 i32.const 1 call $~lib/builtins/abort @@ -52736,7 +55424,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3438 i32.const 1 call $~lib/builtins/abort @@ -52750,7 +55438,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3439 i32.const 1 call $~lib/builtins/abort @@ -52764,7 +55452,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3440 i32.const 1 call $~lib/builtins/abort @@ -52778,7 +55466,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3441 i32.const 1 call $~lib/builtins/abort @@ -52792,7 +55480,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3442 i32.const 1 call $~lib/builtins/abort @@ -52806,7 +55494,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3443 i32.const 1 call $~lib/builtins/abort @@ -52820,7 +55508,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3444 i32.const 1 call $~lib/builtins/abort @@ -52834,7 +55522,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3445 i32.const 1 call $~lib/builtins/abort @@ -52848,7 +55536,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3448 i32.const 1 call $~lib/builtins/abort @@ -52862,7 +55550,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3449 i32.const 1 call $~lib/builtins/abort @@ -52876,7 +55564,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3450 i32.const 1 call $~lib/builtins/abort @@ -52891,7 +55579,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3451 i32.const 1 call $~lib/builtins/abort @@ -52905,7 +55593,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3452 i32.const 1 call $~lib/builtins/abort @@ -52919,7 +55607,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3455 i32.const 1 call $~lib/builtins/abort @@ -52933,7 +55621,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3456 i32.const 1 call $~lib/builtins/abort @@ -52947,7 +55635,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3457 i32.const 1 call $~lib/builtins/abort @@ -52961,7 +55649,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3458 i32.const 1 call $~lib/builtins/abort @@ -52977,7 +55665,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3459 i32.const 1 call $~lib/builtins/abort @@ -52993,7 +55681,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3460 i32.const 1 call $~lib/builtins/abort @@ -53007,7 +55695,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3461 i32.const 1 call $~lib/builtins/abort @@ -53021,7 +55709,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3462 i32.const 1 call $~lib/builtins/abort @@ -53035,7 +55723,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3463 i32.const 1 call $~lib/builtins/abort @@ -53049,7 +55737,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3464 i32.const 1 call $~lib/builtins/abort @@ -53063,7 +55751,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3465 i32.const 1 call $~lib/builtins/abort @@ -53077,7 +55765,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3466 i32.const 1 call $~lib/builtins/abort @@ -53091,7 +55779,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3467 i32.const 1 call $~lib/builtins/abort @@ -53105,7 +55793,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3468 i32.const 1 call $~lib/builtins/abort @@ -53119,7 +55807,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3469 i32.const 1 call $~lib/builtins/abort @@ -53133,7 +55821,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3470 i32.const 1 call $~lib/builtins/abort @@ -53147,7 +55835,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3471 i32.const 1 call $~lib/builtins/abort @@ -53161,7 +55849,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3472 i32.const 1 call $~lib/builtins/abort @@ -53175,7 +55863,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3473 i32.const 1 call $~lib/builtins/abort @@ -53189,7 +55877,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3474 i32.const 1 call $~lib/builtins/abort @@ -53203,7 +55891,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3475 i32.const 1 call $~lib/builtins/abort @@ -53217,7 +55905,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3476 i32.const 1 call $~lib/builtins/abort @@ -53231,7 +55919,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3477 i32.const 1 call $~lib/builtins/abort @@ -53245,7 +55933,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3478 i32.const 1 call $~lib/builtins/abort @@ -53259,7 +55947,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3479 i32.const 1 call $~lib/builtins/abort @@ -53273,7 +55961,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3480 i32.const 1 call $~lib/builtins/abort @@ -53289,7 +55977,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3481 i32.const 1 call $~lib/builtins/abort @@ -53305,7 +55993,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3482 i32.const 1 call $~lib/builtins/abort @@ -53321,7 +56009,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3483 i32.const 1 call $~lib/builtins/abort @@ -53337,7 +56025,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3484 i32.const 1 call $~lib/builtins/abort @@ -53353,7 +56041,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3485 i32.const 1 call $~lib/builtins/abort @@ -53369,7 +56057,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3486 i32.const 1 call $~lib/builtins/abort @@ -53385,7 +56073,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3487 i32.const 1 call $~lib/builtins/abort @@ -53401,7 +56089,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3488 i32.const 1 call $~lib/builtins/abort @@ -53417,7 +56105,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3489 i32.const 1 call $~lib/builtins/abort @@ -53433,7 +56121,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3490 i32.const 1 call $~lib/builtins/abort @@ -53449,7 +56137,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3491 i32.const 1 call $~lib/builtins/abort @@ -53465,7 +56153,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3492 i32.const 1 call $~lib/builtins/abort @@ -53479,7 +56167,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3495 i32.const 1 call $~lib/builtins/abort @@ -53493,7 +56181,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3496 i32.const 1 call $~lib/builtins/abort @@ -53507,7 +56195,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3497 i32.const 1 call $~lib/builtins/abort @@ -53521,7 +56209,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3498 i32.const 1 call $~lib/builtins/abort @@ -53535,7 +56223,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3499 i32.const 1 call $~lib/builtins/abort @@ -53549,7 +56237,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3500 i32.const 1 call $~lib/builtins/abort @@ -53563,7 +56251,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3501 i32.const 1 call $~lib/builtins/abort @@ -53577,7 +56265,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3502 i32.const 1 call $~lib/builtins/abort @@ -53591,7 +56279,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3503 i32.const 1 call $~lib/builtins/abort @@ -53605,7 +56293,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3504 i32.const 1 call $~lib/builtins/abort @@ -53619,7 +56307,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3505 i32.const 1 call $~lib/builtins/abort @@ -53633,7 +56321,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3506 i32.const 1 call $~lib/builtins/abort @@ -53647,7 +56335,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3507 i32.const 1 call $~lib/builtins/abort @@ -53662,7 +56350,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3508 i32.const 1 call $~lib/builtins/abort @@ -53676,7 +56364,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3520 i32.const 1 call $~lib/builtins/abort @@ -53690,7 +56378,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3521 i32.const 1 call $~lib/builtins/abort @@ -53704,7 +56392,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3522 i32.const 1 call $~lib/builtins/abort @@ -53718,7 +56406,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3523 i32.const 1 call $~lib/builtins/abort @@ -53732,7 +56420,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3524 i32.const 1 call $~lib/builtins/abort @@ -53746,7 +56434,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3525 i32.const 1 call $~lib/builtins/abort @@ -53760,7 +56448,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3526 i32.const 1 call $~lib/builtins/abort @@ -53774,7 +56462,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3527 i32.const 1 call $~lib/builtins/abort @@ -53788,7 +56476,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3528 i32.const 1 call $~lib/builtins/abort @@ -53802,7 +56490,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3529 i32.const 1 call $~lib/builtins/abort @@ -53816,7 +56504,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3532 i32.const 1 call $~lib/builtins/abort @@ -53830,7 +56518,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3533 i32.const 1 call $~lib/builtins/abort @@ -53844,7 +56532,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3534 i32.const 1 call $~lib/builtins/abort @@ -53860,7 +56548,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3535 i32.const 1 call $~lib/builtins/abort @@ -53874,7 +56562,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3536 i32.const 1 call $~lib/builtins/abort @@ -53888,7 +56576,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3545 i32.const 1 call $~lib/builtins/abort @@ -53902,7 +56590,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3546 i32.const 1 call $~lib/builtins/abort @@ -53916,7 +56604,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3547 i32.const 1 call $~lib/builtins/abort @@ -53930,7 +56618,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3548 i32.const 1 call $~lib/builtins/abort @@ -53944,7 +56632,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3549 i32.const 1 call $~lib/builtins/abort @@ -53958,7 +56646,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3550 i32.const 1 call $~lib/builtins/abort @@ -53972,7 +56660,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3551 i32.const 1 call $~lib/builtins/abort @@ -53986,7 +56674,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3552 i32.const 1 call $~lib/builtins/abort @@ -54000,7 +56688,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3553 i32.const 1 call $~lib/builtins/abort @@ -54014,7 +56702,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3554 i32.const 1 call $~lib/builtins/abort @@ -54028,7 +56716,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3557 i32.const 1 call $~lib/builtins/abort @@ -54042,7 +56730,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3558 i32.const 1 call $~lib/builtins/abort @@ -54056,7 +56744,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3559 i32.const 1 call $~lib/builtins/abort @@ -54072,7 +56760,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3560 i32.const 1 call $~lib/builtins/abort @@ -54086,7 +56774,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3561 i32.const 1 call $~lib/builtins/abort @@ -54100,7 +56788,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3573 i32.const 1 call $~lib/builtins/abort @@ -54114,7 +56802,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3574 i32.const 1 call $~lib/builtins/abort @@ -54128,7 +56816,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3575 i32.const 1 call $~lib/builtins/abort @@ -54142,7 +56830,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3576 i32.const 1 call $~lib/builtins/abort @@ -54156,7 +56844,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3577 i32.const 1 call $~lib/builtins/abort @@ -54170,7 +56858,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3578 i32.const 1 call $~lib/builtins/abort @@ -54184,7 +56872,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3579 i32.const 1 call $~lib/builtins/abort @@ -54198,7 +56886,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3580 i32.const 1 call $~lib/builtins/abort @@ -54212,7 +56900,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3581 i32.const 1 call $~lib/builtins/abort @@ -54226,7 +56914,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3582 i32.const 1 call $~lib/builtins/abort @@ -54240,7 +56928,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3585 i32.const 1 call $~lib/builtins/abort @@ -54254,7 +56942,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3586 i32.const 1 call $~lib/builtins/abort @@ -54269,7 +56957,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3587 i32.const 1 call $~lib/builtins/abort @@ -54283,7 +56971,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3588 i32.const 1 call $~lib/builtins/abort @@ -54297,7 +56985,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3589 i32.const 1 call $~lib/builtins/abort @@ -54311,7 +56999,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3590 i32.const 1 call $~lib/builtins/abort @@ -54325,7 +57013,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3591 i32.const 1 call $~lib/builtins/abort @@ -54339,7 +57027,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3592 i32.const 1 call $~lib/builtins/abort @@ -54353,7 +57041,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3593 i32.const 1 call $~lib/builtins/abort @@ -54367,7 +57055,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3594 i32.const 1 call $~lib/builtins/abort @@ -54381,7 +57069,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3595 i32.const 1 call $~lib/builtins/abort @@ -54395,7 +57083,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3596 i32.const 1 call $~lib/builtins/abort @@ -54409,7 +57097,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3597 i32.const 1 call $~lib/builtins/abort @@ -54423,7 +57111,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3598 i32.const 1 call $~lib/builtins/abort @@ -54437,7 +57125,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3599 i32.const 1 call $~lib/builtins/abort @@ -54451,7 +57139,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3600 i32.const 1 call $~lib/builtins/abort @@ -54465,7 +57153,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3601 i32.const 1 call $~lib/builtins/abort @@ -54479,7 +57167,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3602 i32.const 1 call $~lib/builtins/abort @@ -54493,7 +57181,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3603 i32.const 1 call $~lib/builtins/abort @@ -54507,7 +57195,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3604 i32.const 1 call $~lib/builtins/abort @@ -54521,7 +57209,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3605 i32.const 1 call $~lib/builtins/abort @@ -54535,7 +57223,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3606 i32.const 1 call $~lib/builtins/abort @@ -54549,7 +57237,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3607 i32.const 1 call $~lib/builtins/abort @@ -54563,7 +57251,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3608 i32.const 1 call $~lib/builtins/abort @@ -54577,7 +57265,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3609 i32.const 1 call $~lib/builtins/abort @@ -54591,7 +57279,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3610 i32.const 1 call $~lib/builtins/abort @@ -54605,7 +57293,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3611 i32.const 1 call $~lib/builtins/abort @@ -54619,7 +57307,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3612 i32.const 1 call $~lib/builtins/abort @@ -54633,7 +57321,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3613 i32.const 1 call $~lib/builtins/abort @@ -54647,7 +57335,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3614 i32.const 1 call $~lib/builtins/abort @@ -54661,7 +57349,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3615 i32.const 1 call $~lib/builtins/abort @@ -54675,7 +57363,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3616 i32.const 1 call $~lib/builtins/abort @@ -54689,7 +57377,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3617 i32.const 1 call $~lib/builtins/abort @@ -54703,7 +57391,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3618 i32.const 1 call $~lib/builtins/abort @@ -54717,7 +57405,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3619 i32.const 1 call $~lib/builtins/abort @@ -54731,7 +57419,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3620 i32.const 1 call $~lib/builtins/abort @@ -54745,7 +57433,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3621 i32.const 1 call $~lib/builtins/abort @@ -54759,7 +57447,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3622 i32.const 1 call $~lib/builtins/abort @@ -54773,7 +57461,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3623 i32.const 1 call $~lib/builtins/abort @@ -54787,7 +57475,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3624 i32.const 1 call $~lib/builtins/abort @@ -54801,7 +57489,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3625 i32.const 1 call $~lib/builtins/abort @@ -54815,7 +57503,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3626 i32.const 1 call $~lib/builtins/abort @@ -54829,7 +57517,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3627 i32.const 1 call $~lib/builtins/abort @@ -54843,7 +57531,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3628 i32.const 1 call $~lib/builtins/abort @@ -54857,7 +57545,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3629 i32.const 1 call $~lib/builtins/abort @@ -54871,7 +57559,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3630 i32.const 1 call $~lib/builtins/abort @@ -54885,7 +57573,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3631 i32.const 1 call $~lib/builtins/abort @@ -54899,7 +57587,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3632 i32.const 1 call $~lib/builtins/abort @@ -54913,7 +57601,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3633 i32.const 1 call $~lib/builtins/abort @@ -54927,7 +57615,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3634 i32.const 1 call $~lib/builtins/abort @@ -54941,7 +57629,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3635 i32.const 1 call $~lib/builtins/abort @@ -54955,7 +57643,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3636 i32.const 1 call $~lib/builtins/abort @@ -54969,7 +57657,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3637 i32.const 1 call $~lib/builtins/abort @@ -54983,7 +57671,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3638 i32.const 1 call $~lib/builtins/abort @@ -54997,7 +57685,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3639 i32.const 1 call $~lib/builtins/abort @@ -55011,7 +57699,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3640 i32.const 1 call $~lib/builtins/abort @@ -55025,7 +57713,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3641 i32.const 1 call $~lib/builtins/abort @@ -55039,7 +57727,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3642 i32.const 1 call $~lib/builtins/abort @@ -55053,7 +57741,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3643 i32.const 1 call $~lib/builtins/abort @@ -55067,7 +57755,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3644 i32.const 1 call $~lib/builtins/abort @@ -55081,7 +57769,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3645 i32.const 1 call $~lib/builtins/abort @@ -55095,7 +57783,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3646 i32.const 1 call $~lib/builtins/abort @@ -55109,7 +57797,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3647 i32.const 1 call $~lib/builtins/abort @@ -55123,7 +57811,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3648 i32.const 1 call $~lib/builtins/abort @@ -55137,7 +57825,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3649 i32.const 1 call $~lib/builtins/abort @@ -55151,7 +57839,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3650 i32.const 1 call $~lib/builtins/abort @@ -55165,7 +57853,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3651 i32.const 1 call $~lib/builtins/abort @@ -55179,7 +57867,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3652 i32.const 1 call $~lib/builtins/abort @@ -55193,7 +57881,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3653 i32.const 1 call $~lib/builtins/abort @@ -55207,7 +57895,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3654 i32.const 1 call $~lib/builtins/abort @@ -55221,7 +57909,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3655 i32.const 1 call $~lib/builtins/abort @@ -55235,7 +57923,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3656 i32.const 1 call $~lib/builtins/abort @@ -55249,7 +57937,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3657 i32.const 1 call $~lib/builtins/abort @@ -55263,7 +57951,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3658 i32.const 1 call $~lib/builtins/abort @@ -55277,7 +57965,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3667 i32.const 1 call $~lib/builtins/abort @@ -55291,7 +57979,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3668 i32.const 1 call $~lib/builtins/abort @@ -55305,7 +57993,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3669 i32.const 1 call $~lib/builtins/abort @@ -55319,7 +58007,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3670 i32.const 1 call $~lib/builtins/abort @@ -55333,7 +58021,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3671 i32.const 1 call $~lib/builtins/abort @@ -55347,7 +58035,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3672 i32.const 1 call $~lib/builtins/abort @@ -55361,7 +58049,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3673 i32.const 1 call $~lib/builtins/abort @@ -55375,7 +58063,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3674 i32.const 1 call $~lib/builtins/abort @@ -55389,7 +58077,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3675 i32.const 1 call $~lib/builtins/abort @@ -55403,7 +58091,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3676 i32.const 1 call $~lib/builtins/abort @@ -55417,7 +58105,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3679 i32.const 1 call $~lib/builtins/abort @@ -55431,7 +58119,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3680 i32.const 1 call $~lib/builtins/abort @@ -55446,7 +58134,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3681 i32.const 1 call $~lib/builtins/abort @@ -55460,7 +58148,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3682 i32.const 1 call $~lib/builtins/abort @@ -55474,7 +58162,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3683 i32.const 1 call $~lib/builtins/abort @@ -55488,7 +58176,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3684 i32.const 1 call $~lib/builtins/abort @@ -55502,7 +58190,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3685 i32.const 1 call $~lib/builtins/abort @@ -55516,7 +58204,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3686 i32.const 1 call $~lib/builtins/abort @@ -55530,7 +58218,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3687 i32.const 1 call $~lib/builtins/abort @@ -55544,7 +58232,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3688 i32.const 1 call $~lib/builtins/abort @@ -55558,7 +58246,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3689 i32.const 1 call $~lib/builtins/abort @@ -55572,7 +58260,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3690 i32.const 1 call $~lib/builtins/abort @@ -55586,7 +58274,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3691 i32.const 1 call $~lib/builtins/abort @@ -55600,7 +58288,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3692 i32.const 1 call $~lib/builtins/abort @@ -55614,7 +58302,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3693 i32.const 1 call $~lib/builtins/abort @@ -55628,7 +58316,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3694 i32.const 1 call $~lib/builtins/abort @@ -55642,7 +58330,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3695 i32.const 1 call $~lib/builtins/abort @@ -55656,7 +58344,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3696 i32.const 1 call $~lib/builtins/abort @@ -55670,7 +58358,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3697 i32.const 1 call $~lib/builtins/abort @@ -55684,7 +58372,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3698 i32.const 1 call $~lib/builtins/abort @@ -55698,7 +58386,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3699 i32.const 1 call $~lib/builtins/abort @@ -55712,7 +58400,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3700 i32.const 1 call $~lib/builtins/abort @@ -55726,7 +58414,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3712 i32.const 1 call $~lib/builtins/abort @@ -55740,7 +58428,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3713 i32.const 1 call $~lib/builtins/abort @@ -55754,7 +58442,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3714 i32.const 1 call $~lib/builtins/abort @@ -55768,7 +58456,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3715 i32.const 1 call $~lib/builtins/abort @@ -55782,7 +58470,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3716 i32.const 1 call $~lib/builtins/abort @@ -55796,7 +58484,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3717 i32.const 1 call $~lib/builtins/abort @@ -55810,7 +58498,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3718 i32.const 1 call $~lib/builtins/abort @@ -55824,7 +58512,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3719 i32.const 1 call $~lib/builtins/abort @@ -55838,7 +58526,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3720 i32.const 1 call $~lib/builtins/abort @@ -55852,7 +58540,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3721 i32.const 1 call $~lib/builtins/abort @@ -55866,7 +58554,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3724 i32.const 1 call $~lib/builtins/abort @@ -55880,7 +58568,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3725 i32.const 1 call $~lib/builtins/abort @@ -55894,7 +58582,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3726 i32.const 1 call $~lib/builtins/abort @@ -55908,7 +58596,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3727 i32.const 1 call $~lib/builtins/abort @@ -55924,7 +58612,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3728 i32.const 1 call $~lib/builtins/abort @@ -55940,7 +58628,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3729 i32.const 1 call $~lib/builtins/abort @@ -55954,7 +58642,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3730 i32.const 1 call $~lib/builtins/abort @@ -55968,7 +58656,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3731 i32.const 1 call $~lib/builtins/abort @@ -55982,7 +58670,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3732 i32.const 1 call $~lib/builtins/abort @@ -55996,7 +58684,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3733 i32.const 1 call $~lib/builtins/abort @@ -56010,7 +58698,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3734 i32.const 1 call $~lib/builtins/abort @@ -56024,7 +58712,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3735 i32.const 1 call $~lib/builtins/abort @@ -56038,7 +58726,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3736 i32.const 1 call $~lib/builtins/abort @@ -56052,7 +58740,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3737 i32.const 1 call $~lib/builtins/abort @@ -56066,7 +58754,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3738 i32.const 1 call $~lib/builtins/abort @@ -56080,7 +58768,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3739 i32.const 1 call $~lib/builtins/abort @@ -56094,7 +58782,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3740 i32.const 1 call $~lib/builtins/abort @@ -56108,7 +58796,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3741 i32.const 1 call $~lib/builtins/abort @@ -56122,7 +58810,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3742 i32.const 1 call $~lib/builtins/abort @@ -56136,7 +58824,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3743 i32.const 1 call $~lib/builtins/abort @@ -56150,7 +58838,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3744 i32.const 1 call $~lib/builtins/abort @@ -56164,7 +58852,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3745 i32.const 1 call $~lib/builtins/abort @@ -56178,7 +58866,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3746 i32.const 1 call $~lib/builtins/abort @@ -56192,7 +58880,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3747 i32.const 1 call $~lib/builtins/abort @@ -56206,7 +58894,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3748 i32.const 1 call $~lib/builtins/abort @@ -56220,7 +58908,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3749 i32.const 1 call $~lib/builtins/abort @@ -56236,7 +58924,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3750 i32.const 1 call $~lib/builtins/abort @@ -56252,7 +58940,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3751 i32.const 1 call $~lib/builtins/abort @@ -56268,7 +58956,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3752 i32.const 1 call $~lib/builtins/abort @@ -56284,7 +58972,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3753 i32.const 1 call $~lib/builtins/abort @@ -56300,7 +58988,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3754 i32.const 1 call $~lib/builtins/abort @@ -56316,7 +59004,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3755 i32.const 1 call $~lib/builtins/abort @@ -56332,7 +59020,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3756 i32.const 1 call $~lib/builtins/abort @@ -56348,7 +59036,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3757 i32.const 1 call $~lib/builtins/abort @@ -56364,7 +59052,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3758 i32.const 1 call $~lib/builtins/abort @@ -56380,7 +59068,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3759 i32.const 1 call $~lib/builtins/abort @@ -56396,7 +59084,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3760 i32.const 1 call $~lib/builtins/abort @@ -56412,7 +59100,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3761 i32.const 1 call $~lib/builtins/abort @@ -56426,7 +59114,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3764 i32.const 1 call $~lib/builtins/abort @@ -56440,7 +59128,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3765 i32.const 1 call $~lib/builtins/abort @@ -56458,7 +59146,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3766 i32.const 1 call $~lib/builtins/abort @@ -56476,7 +59164,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3767 i32.const 1 call $~lib/builtins/abort @@ -56490,7 +59178,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3768 i32.const 1 call $~lib/builtins/abort @@ -56504,7 +59192,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3769 i32.const 1 call $~lib/builtins/abort @@ -56518,7 +59206,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3770 i32.const 1 call $~lib/builtins/abort @@ -56536,7 +59224,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3771 i32.const 1 call $~lib/builtins/abort @@ -56550,7 +59238,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3773 i32.const 1 call $~lib/builtins/abort @@ -56564,7 +59252,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3774 i32.const 1 call $~lib/builtins/abort @@ -56586,7 +59274,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3775 i32.const 1 call $~lib/builtins/abort @@ -56608,7 +59296,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3776 i32.const 1 call $~lib/builtins/abort @@ -56630,7 +59318,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3777 i32.const 1 call $~lib/builtins/abort @@ -56652,7 +59340,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3778 i32.const 1 call $~lib/builtins/abort @@ -56666,7 +59354,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3779 i32.const 1 call $~lib/builtins/abort @@ -56682,7 +59370,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3780 i32.const 1 call $~lib/builtins/abort @@ -56696,7 +59384,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3783 i32.const 1 call $~lib/builtins/abort @@ -56710,7 +59398,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3784 i32.const 1 call $~lib/builtins/abort @@ -56724,7 +59412,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3785 i32.const 1 call $~lib/builtins/abort @@ -56739,7 +59427,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3786 i32.const 1 call $~lib/builtins/abort @@ -56753,7 +59441,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3787 i32.const 1 call $~lib/builtins/abort @@ -56767,7 +59455,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3796 i32.const 1 call $~lib/builtins/abort @@ -56781,7 +59469,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3797 i32.const 1 call $~lib/builtins/abort @@ -56795,7 +59483,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3798 i32.const 1 call $~lib/builtins/abort @@ -56809,7 +59497,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3799 i32.const 1 call $~lib/builtins/abort @@ -56823,7 +59511,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3800 i32.const 1 call $~lib/builtins/abort @@ -56837,7 +59525,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3801 i32.const 1 call $~lib/builtins/abort @@ -56851,7 +59539,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3802 i32.const 1 call $~lib/builtins/abort @@ -56865,7 +59553,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3803 i32.const 1 call $~lib/builtins/abort @@ -56879,7 +59567,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3804 i32.const 1 call $~lib/builtins/abort @@ -56893,7 +59581,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3805 i32.const 1 call $~lib/builtins/abort @@ -56907,7 +59595,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3808 i32.const 1 call $~lib/builtins/abort @@ -56921,7 +59609,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3809 i32.const 1 call $~lib/builtins/abort @@ -56935,7 +59623,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3810 i32.const 1 call $~lib/builtins/abort @@ -56950,7 +59638,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3811 i32.const 1 call $~lib/builtins/abort @@ -56964,7 +59652,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3812 i32.const 1 call $~lib/builtins/abort @@ -56978,7 +59666,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3815 i32.const 1 call $~lib/builtins/abort @@ -56992,7 +59680,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3816 i32.const 1 call $~lib/builtins/abort @@ -57006,7 +59694,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3817 i32.const 1 call $~lib/builtins/abort @@ -57020,7 +59708,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3818 i32.const 1 call $~lib/builtins/abort @@ -57036,7 +59724,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3819 i32.const 1 call $~lib/builtins/abort @@ -57052,7 +59740,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3820 i32.const 1 call $~lib/builtins/abort @@ -57066,7 +59754,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3821 i32.const 1 call $~lib/builtins/abort @@ -57080,7 +59768,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3822 i32.const 1 call $~lib/builtins/abort @@ -57094,7 +59782,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3823 i32.const 1 call $~lib/builtins/abort @@ -57108,7 +59796,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3824 i32.const 1 call $~lib/builtins/abort @@ -57122,7 +59810,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3825 i32.const 1 call $~lib/builtins/abort @@ -57136,7 +59824,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3826 i32.const 1 call $~lib/builtins/abort @@ -57150,7 +59838,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3827 i32.const 1 call $~lib/builtins/abort @@ -57164,7 +59852,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3828 i32.const 1 call $~lib/builtins/abort @@ -57178,7 +59866,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3829 i32.const 1 call $~lib/builtins/abort @@ -57192,7 +59880,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3830 i32.const 1 call $~lib/builtins/abort @@ -57206,7 +59894,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3831 i32.const 1 call $~lib/builtins/abort @@ -57220,7 +59908,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3832 i32.const 1 call $~lib/builtins/abort @@ -57234,7 +59922,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3833 i32.const 1 call $~lib/builtins/abort @@ -57248,7 +59936,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3834 i32.const 1 call $~lib/builtins/abort @@ -57262,7 +59950,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3835 i32.const 1 call $~lib/builtins/abort @@ -57276,7 +59964,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3836 i32.const 1 call $~lib/builtins/abort @@ -57290,7 +59978,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3837 i32.const 1 call $~lib/builtins/abort @@ -57304,7 +59992,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3838 i32.const 1 call $~lib/builtins/abort @@ -57320,7 +60008,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3839 i32.const 1 call $~lib/builtins/abort @@ -57336,7 +60024,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3840 i32.const 1 call $~lib/builtins/abort @@ -57352,7 +60040,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3841 i32.const 1 call $~lib/builtins/abort @@ -57368,7 +60056,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3842 i32.const 1 call $~lib/builtins/abort @@ -57384,7 +60072,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3843 i32.const 1 call $~lib/builtins/abort @@ -57400,7 +60088,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3844 i32.const 1 call $~lib/builtins/abort @@ -57416,7 +60104,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3845 i32.const 1 call $~lib/builtins/abort @@ -57432,7 +60120,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3846 i32.const 1 call $~lib/builtins/abort @@ -57448,7 +60136,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3847 i32.const 1 call $~lib/builtins/abort @@ -57464,7 +60152,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3848 i32.const 1 call $~lib/builtins/abort @@ -57480,7 +60168,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3849 i32.const 1 call $~lib/builtins/abort @@ -57496,7 +60184,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3850 i32.const 1 call $~lib/builtins/abort @@ -57510,7 +60198,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3862 i32.const 1 call $~lib/builtins/abort @@ -57524,7 +60212,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3863 i32.const 1 call $~lib/builtins/abort @@ -57538,7 +60226,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3864 i32.const 1 call $~lib/builtins/abort @@ -57552,7 +60240,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3865 i32.const 1 call $~lib/builtins/abort @@ -57566,7 +60254,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3866 i32.const 1 call $~lib/builtins/abort @@ -57580,7 +60268,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3867 i32.const 1 call $~lib/builtins/abort @@ -57594,7 +60282,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3868 i32.const 1 call $~lib/builtins/abort @@ -57608,7 +60296,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3869 i32.const 1 call $~lib/builtins/abort @@ -57622,7 +60310,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3870 i32.const 1 call $~lib/builtins/abort @@ -57636,7 +60324,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3871 i32.const 1 call $~lib/builtins/abort @@ -57650,7 +60338,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3874 i32.const 1 call $~lib/builtins/abort @@ -57664,7 +60352,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3875 i32.const 1 call $~lib/builtins/abort @@ -57678,7 +60366,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3876 i32.const 1 call $~lib/builtins/abort @@ -57693,7 +60381,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3877 i32.const 1 call $~lib/builtins/abort @@ -57707,7 +60395,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3878 i32.const 1 call $~lib/builtins/abort @@ -57721,7 +60409,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3887 i32.const 1 call $~lib/builtins/abort @@ -57735,7 +60423,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3888 i32.const 1 call $~lib/builtins/abort @@ -57749,7 +60437,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3889 i32.const 1 call $~lib/builtins/abort @@ -57763,7 +60451,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3890 i32.const 1 call $~lib/builtins/abort @@ -57777,7 +60465,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3891 i32.const 1 call $~lib/builtins/abort @@ -57791,7 +60479,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3892 i32.const 1 call $~lib/builtins/abort @@ -57805,7 +60493,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3893 i32.const 1 call $~lib/builtins/abort @@ -57819,7 +60507,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3894 i32.const 1 call $~lib/builtins/abort @@ -57833,7 +60521,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3895 i32.const 1 call $~lib/builtins/abort @@ -57847,7 +60535,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3896 i32.const 1 call $~lib/builtins/abort @@ -57861,7 +60549,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3899 i32.const 1 call $~lib/builtins/abort @@ -57875,7 +60563,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3900 i32.const 1 call $~lib/builtins/abort @@ -57889,7 +60577,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3901 i32.const 1 call $~lib/builtins/abort @@ -57904,7 +60592,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3902 i32.const 1 call $~lib/builtins/abort @@ -57918,7 +60606,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3903 i32.const 1 call $~lib/builtins/abort @@ -57932,7 +60620,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3915 i32.const 1 call $~lib/builtins/abort @@ -57946,7 +60634,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3916 i32.const 1 call $~lib/builtins/abort @@ -57960,7 +60648,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3917 i32.const 1 call $~lib/builtins/abort @@ -57974,7 +60662,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3918 i32.const 1 call $~lib/builtins/abort @@ -57988,7 +60676,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3919 i32.const 1 call $~lib/builtins/abort @@ -58002,7 +60690,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3920 i32.const 1 call $~lib/builtins/abort @@ -58016,7 +60704,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3921 i32.const 1 call $~lib/builtins/abort @@ -58030,7 +60718,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3922 i32.const 1 call $~lib/builtins/abort @@ -58044,7 +60732,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3923 i32.const 1 call $~lib/builtins/abort @@ -58058,7 +60746,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3924 i32.const 1 call $~lib/builtins/abort @@ -58072,7 +60760,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3927 i32.const 1 call $~lib/builtins/abort @@ -58086,7 +60774,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3928 i32.const 1 call $~lib/builtins/abort @@ -58102,7 +60790,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3929 i32.const 1 call $~lib/builtins/abort @@ -58116,7 +60804,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3930 i32.const 1 call $~lib/builtins/abort @@ -58130,7 +60818,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3931 i32.const 1 call $~lib/builtins/abort @@ -58144,7 +60832,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3932 i32.const 1 call $~lib/builtins/abort @@ -58158,7 +60846,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3933 i32.const 1 call $~lib/builtins/abort @@ -58172,7 +60860,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3934 i32.const 1 call $~lib/builtins/abort @@ -58186,7 +60874,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3935 i32.const 1 call $~lib/builtins/abort @@ -58200,7 +60888,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3936 i32.const 1 call $~lib/builtins/abort @@ -58214,7 +60902,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3937 i32.const 1 call $~lib/builtins/abort @@ -58228,7 +60916,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3938 i32.const 1 call $~lib/builtins/abort @@ -58242,7 +60930,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3939 i32.const 1 call $~lib/builtins/abort @@ -58256,7 +60944,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3940 i32.const 1 call $~lib/builtins/abort @@ -58270,7 +60958,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3941 i32.const 1 call $~lib/builtins/abort @@ -58284,7 +60972,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3950 i32.const 1 call $~lib/builtins/abort @@ -58298,7 +60986,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3951 i32.const 1 call $~lib/builtins/abort @@ -58312,7 +61000,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3952 i32.const 1 call $~lib/builtins/abort @@ -58326,7 +61014,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3953 i32.const 1 call $~lib/builtins/abort @@ -58340,7 +61028,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3954 i32.const 1 call $~lib/builtins/abort @@ -58354,7 +61042,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3955 i32.const 1 call $~lib/builtins/abort @@ -58368,7 +61056,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3956 i32.const 1 call $~lib/builtins/abort @@ -58382,7 +61070,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3957 i32.const 1 call $~lib/builtins/abort @@ -58396,7 +61084,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3958 i32.const 1 call $~lib/builtins/abort @@ -58410,7 +61098,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3959 i32.const 1 call $~lib/builtins/abort @@ -58424,7 +61112,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3962 i32.const 1 call $~lib/builtins/abort @@ -58438,7 +61126,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3963 i32.const 1 call $~lib/builtins/abort @@ -58454,7 +61142,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3964 i32.const 1 call $~lib/builtins/abort @@ -58468,7 +61156,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3965 i32.const 1 call $~lib/builtins/abort @@ -58482,7 +61170,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3966 i32.const 1 call $~lib/builtins/abort @@ -58496,7 +61184,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3967 i32.const 1 call $~lib/builtins/abort @@ -58510,7 +61198,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3968 i32.const 1 call $~lib/builtins/abort @@ -58524,7 +61212,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3969 i32.const 1 call $~lib/builtins/abort @@ -58538,7 +61226,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3970 i32.const 1 call $~lib/builtins/abort @@ -58552,7 +61240,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3971 i32.const 1 call $~lib/builtins/abort @@ -58566,7 +61254,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3972 i32.const 1 call $~lib/builtins/abort @@ -58580,7 +61268,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3973 i32.const 1 call $~lib/builtins/abort @@ -58594,7 +61282,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3974 i32.const 1 call $~lib/builtins/abort @@ -58608,7 +61296,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3975 i32.const 1 call $~lib/builtins/abort @@ -58622,7 +61310,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 3976 i32.const 1 call $~lib/builtins/abort @@ -58716,7 +61404,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4017 i32.const 1 call $~lib/builtins/abort @@ -58730,7 +61418,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4018 i32.const 1 call $~lib/builtins/abort @@ -58744,7 +61432,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4019 i32.const 1 call $~lib/builtins/abort @@ -58758,7 +61446,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4020 i32.const 1 call $~lib/builtins/abort @@ -58772,7 +61460,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4021 i32.const 1 call $~lib/builtins/abort @@ -58786,7 +61474,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4022 i32.const 1 call $~lib/builtins/abort @@ -58800,7 +61488,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4023 i32.const 1 call $~lib/builtins/abort @@ -58814,7 +61502,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4024 i32.const 1 call $~lib/builtins/abort @@ -58828,7 +61516,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4025 i32.const 1 call $~lib/builtins/abort @@ -58842,7 +61530,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4026 i32.const 1 call $~lib/builtins/abort @@ -58856,7 +61544,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4027 i32.const 1 call $~lib/builtins/abort @@ -58870,7 +61558,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4028 i32.const 1 call $~lib/builtins/abort @@ -58883,7 +61571,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4032 i32.const 1 call $~lib/builtins/abort @@ -58896,7 +61584,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4033 i32.const 1 call $~lib/builtins/abort @@ -58909,7 +61597,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4034 i32.const 1 call $~lib/builtins/abort @@ -58922,7 +61610,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4035 i32.const 1 call $~lib/builtins/abort @@ -58935,7 +61623,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4036 i32.const 1 call $~lib/builtins/abort @@ -58948,7 +61636,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4037 i32.const 1 call $~lib/builtins/abort @@ -58961,7 +61649,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4038 i32.const 1 call $~lib/builtins/abort @@ -58974,7 +61662,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4039 i32.const 1 call $~lib/builtins/abort @@ -58987,7 +61675,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4040 i32.const 1 call $~lib/builtins/abort @@ -59000,7 +61688,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4041 i32.const 1 call $~lib/builtins/abort @@ -59013,7 +61701,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4042 i32.const 1 call $~lib/builtins/abort @@ -59027,7 +61715,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4043 i32.const 1 call $~lib/builtins/abort @@ -59040,7 +61728,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4044 i32.const 1 call $~lib/builtins/abort @@ -59053,7 +61741,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4045 i32.const 1 call $~lib/builtins/abort @@ -59067,7 +61755,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4046 i32.const 1 call $~lib/builtins/abort @@ -59080,7 +61768,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4047 i32.const 1 call $~lib/builtins/abort @@ -59094,7 +61782,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4051 i32.const 1 call $~lib/builtins/abort @@ -59108,7 +61796,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4052 i32.const 1 call $~lib/builtins/abort @@ -59122,7 +61810,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4053 i32.const 1 call $~lib/builtins/abort @@ -59136,7 +61824,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4054 i32.const 1 call $~lib/builtins/abort @@ -59150,7 +61838,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4056 i32.const 1 call $~lib/builtins/abort @@ -59164,7 +61852,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4057 i32.const 1 call $~lib/builtins/abort @@ -59178,7 +61866,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4058 i32.const 1 call $~lib/builtins/abort @@ -59192,7 +61880,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4059 i32.const 1 call $~lib/builtins/abort @@ -59206,7 +61894,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4061 i32.const 1 call $~lib/builtins/abort @@ -59220,7 +61908,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4062 i32.const 1 call $~lib/builtins/abort @@ -59234,7 +61922,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4063 i32.const 1 call $~lib/builtins/abort @@ -59248,7 +61936,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4064 i32.const 1 call $~lib/builtins/abort @@ -59262,7 +61950,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4066 i32.const 1 call $~lib/builtins/abort @@ -59276,7 +61964,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4067 i32.const 1 call $~lib/builtins/abort @@ -59290,7 +61978,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4068 i32.const 1 call $~lib/builtins/abort @@ -59304,7 +61992,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4069 i32.const 1 call $~lib/builtins/abort @@ -59318,7 +62006,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4071 i32.const 1 call $~lib/builtins/abort @@ -59332,7 +62020,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4072 i32.const 1 call $~lib/builtins/abort @@ -59346,7 +62034,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4073 i32.const 1 call $~lib/builtins/abort @@ -59360,7 +62048,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4074 i32.const 1 call $~lib/builtins/abort @@ -59374,7 +62062,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4076 i32.const 1 call $~lib/builtins/abort @@ -59388,7 +62076,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4077 i32.const 1 call $~lib/builtins/abort @@ -59402,7 +62090,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4078 i32.const 1 call $~lib/builtins/abort @@ -59416,7 +62104,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4079 i32.const 1 call $~lib/builtins/abort @@ -59430,7 +62118,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4080 i32.const 1 call $~lib/builtins/abort @@ -59444,7 +62132,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4082 i32.const 1 call $~lib/builtins/abort @@ -59458,7 +62146,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4083 i32.const 1 call $~lib/builtins/abort @@ -59472,7 +62160,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4084 i32.const 1 call $~lib/builtins/abort @@ -59486,7 +62174,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4085 i32.const 1 call $~lib/builtins/abort @@ -59518,7 +62206,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4091 i32.const 1 call $~lib/builtins/abort @@ -59532,7 +62220,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4092 i32.const 1 call $~lib/builtins/abort @@ -59546,7 +62234,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4093 i32.const 1 call $~lib/builtins/abort @@ -59560,7 +62248,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4094 i32.const 1 call $~lib/builtins/abort @@ -59574,7 +62262,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4095 i32.const 1 call $~lib/builtins/abort @@ -59588,7 +62276,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4096 i32.const 1 call $~lib/builtins/abort @@ -59602,7 +62290,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4098 i32.const 1 call $~lib/builtins/abort @@ -59616,7 +62304,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4099 i32.const 1 call $~lib/builtins/abort @@ -59648,7 +62336,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4102 i32.const 1 call $~lib/builtins/abort @@ -59662,7 +62350,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4104 i32.const 1 call $~lib/builtins/abort @@ -59676,7 +62364,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4105 i32.const 1 call $~lib/builtins/abort @@ -59708,7 +62396,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4108 i32.const 1 call $~lib/builtins/abort @@ -59723,7 +62411,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4110 i32.const 1 call $~lib/builtins/abort @@ -59738,7 +62426,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4111 i32.const 1 call $~lib/builtins/abort @@ -59754,7 +62442,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4112 i32.const 1 call $~lib/builtins/abort @@ -59770,7 +62458,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4113 i32.const 1 call $~lib/builtins/abort @@ -59786,7 +62474,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4114 i32.const 1 call $~lib/builtins/abort @@ -59800,7 +62488,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4116 i32.const 1 call $~lib/builtins/abort @@ -59814,7 +62502,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4117 i32.const 1 call $~lib/builtins/abort @@ -59828,7 +62516,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4118 i32.const 1 call $~lib/builtins/abort @@ -59842,7 +62530,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4119 i32.const 1 call $~lib/builtins/abort @@ -59856,7 +62544,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4120 i32.const 1 call $~lib/builtins/abort @@ -59870,7 +62558,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4121 i32.const 1 call $~lib/builtins/abort @@ -59884,7 +62572,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4122 i32.const 1 call $~lib/builtins/abort @@ -59898,7 +62586,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4123 i32.const 1 call $~lib/builtins/abort @@ -59912,7 +62600,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4124 i32.const 1 call $~lib/builtins/abort @@ -59932,7 +62620,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4126 i32.const 1 call $~lib/builtins/abort @@ -59950,7 +62638,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4127 i32.const 1 call $~lib/builtins/abort @@ -59965,7 +62653,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4129 i32.const 1 call $~lib/builtins/abort @@ -59980,7 +62668,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4130 i32.const 1 call $~lib/builtins/abort @@ -59995,7 +62683,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4131 i32.const 1 call $~lib/builtins/abort @@ -60009,7 +62697,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4132 i32.const 1 call $~lib/builtins/abort @@ -60023,7 +62711,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4133 i32.const 1 call $~lib/builtins/abort @@ -60037,7 +62725,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4136 i32.const 1 call $~lib/builtins/abort @@ -60051,7 +62739,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4137 i32.const 1 call $~lib/builtins/abort @@ -60065,7 +62753,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4138 i32.const 1 call $~lib/builtins/abort @@ -60079,7 +62767,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4139 i32.const 1 call $~lib/builtins/abort @@ -60093,7 +62781,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4140 i32.const 1 call $~lib/builtins/abort @@ -60107,7 +62795,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4141 i32.const 1 call $~lib/builtins/abort @@ -60121,7 +62809,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4142 i32.const 1 call $~lib/builtins/abort @@ -60135,7 +62823,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4143 i32.const 1 call $~lib/builtins/abort @@ -60149,7 +62837,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4144 i32.const 1 call $~lib/builtins/abort @@ -60163,7 +62851,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4145 i32.const 1 call $~lib/builtins/abort @@ -60177,7 +62865,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4146 i32.const 1 call $~lib/builtins/abort @@ -60191,7 +62879,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4147 i32.const 1 call $~lib/builtins/abort @@ -60205,7 +62893,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4148 i32.const 1 call $~lib/builtins/abort @@ -60219,7 +62907,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4149 i32.const 1 call $~lib/builtins/abort @@ -60233,7 +62921,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 4150 i32.const 1 call $~lib/builtins/abort @@ -60243,4 +62931,421 @@ (func $~start call $start:std/math ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 48528 + i32.const 48576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/std/math.release.wat b/tests/compiler/std/math.release.wat index 8dc86c5333..4d0067cb9f 100644 --- a/tests/compiler/std/math.release.wat +++ b/tests/compiler/std/math.release.wat @@ -4,21 +4,27 @@ (type $2 (func (param f32 f32 f32) (result i32))) (type $3 (func (param f32) (result f32))) (type $4 (func (param f64 f64) (result f64))) - (type $5 (func (param f32 f32) (result f32))) - (type $6 (func (param f64 f64 f64 f64) (result i32))) - (type $7 (func (result f64))) - (type $8 (func (param f64 f64) (result i32))) - (type $9 (func (param f32 f32) (result i32))) - (type $10 (func)) - (type $11 (func (param f64 i32) (result f64))) - (type $12 (func (param i32 i32 i32 i32))) - (type $13 (func (param i64) (result i32))) - (type $14 (func (param f32 f32 f32 f32) (result i32))) - (type $15 (func (param i64))) - (type $16 (func (param f64 f64 i32) (result f64))) - (type $17 (func (param f64))) - (type $18 (func (param i64 i64 i64 i64 i64))) - (type $19 (func (param i64 i64) (result i64))) + (type $5 (func)) + (type $6 (func (param f32 f32) (result f32))) + (type $7 (func (param f64 f64 f64 f64) (result i32))) + (type $8 (func (param i32))) + (type $9 (func (param i32 i32))) + (type $10 (func (param i32 i32) (result i32))) + (type $11 (func (param i32) (result i32))) + (type $12 (func (result f64))) + (type $13 (func (param f64 f64) (result i32))) + (type $14 (func (param f32 f32) (result i32))) + (type $15 (func (param f64 i32) (result f64))) + (type $16 (func (param i32 i32 i64))) + (type $17 (func (result i32))) + (type $18 (func (param i64) (result i32))) + (type $19 (func (param f32 f32 f32 f32) (result i32))) + (type $20 (func (param i64))) + (type $21 (func (param f64 f64 i32) (result f64))) + (type $22 (func (param f64))) + (type $23 (func (param i64 i64 i64 i64 i64))) + (type $24 (func (param i64 i64) (result i64))) + (type $25 (func (param i32 i32 i32 i32))) (import "env" "Math.E" (global $~lib/bindings/dom/Math.E f64)) (import "env" "Math.LN2" (global $~lib/bindings/dom/Math.LN2 f64)) (import "env" "Math.LN10" (global $~lib/bindings/dom/Math.LN10 f64)) @@ -26,7 +32,6 @@ (import "env" "Math.PI" (global $~lib/bindings/dom/Math.PI f64)) (import "env" "Math.SQRT1_2" (global $~lib/bindings/dom/Math.SQRT1_2 f64)) (import "env" "Math.SQRT2" (global $~lib/bindings/dom/Math.SQRT2 f64)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "Math.abs" (func $~lib/bindings/dom/Math.abs (param f64) (result f64))) (import "env" "Math.acos" (func $~lib/bindings/dom/Math.acos (param f64) (result f64))) (import "env" "Math.acosh" (func $~lib/bindings/dom/Math.acosh (param f64) (result f64))) @@ -59,6 +64,16 @@ (import "env" "Math.tan" (func $~lib/bindings/dom/Math.tan (param f64) (result f64))) (import "env" "Math.tanh" (func $~lib/bindings/dom/Math.tanh (param f64) (result f64))) (import "env" "Math.trunc" (func $~lib/bindings/dom/Math.trunc (param f64) (result f64))) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/math/rempio2_y0 (mut f64) (f64.const 0)) (global $~lib/math/rempio2_y1 (mut f64) (f64.const 0)) (global $~lib/math/res128_hi (mut i64) (i64.const 0)) @@ -71,148 +86,181 @@ (global $~lib/math/random_seeded (mut i32) (i32.const 0)) (global $~lib/math/NativeMath.sincos_sin (mut f64) (f64.const 0)) (global $~lib/math/NativeMath.sincos_cos (mut f64) (f64.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 49524)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s") - (data $1 (i32.const 1088) "\9f\de\e0\c3\f04\f7?\00\90\e6y\7f\cc\d7\bf\1f\e9,jx\13\f7?\00\00\r\c2\eeo\d7\bf\a0\b5\fa\08`\f2\f6?\00\e0Q\13\e3\13\d7\bf}\8c\13\1f\a6\d1\f6?\00x(8[\b8\d6\bf\d1\b4\c5\0bI\b1\f6?\00x\80\90U]\d6\bf\ba\0c/3G\91\f6?\00\00\18v\d0\02\d6\bf#B\"\18\9fq\f6?\00\90\90\86\ca\a8\d5\bf\d9\1e\a5\99OR\f6?\00P\03VCO\d5\bf\c4$\8f\aaV3\f6?\00@k\c37\f6\d4\bf\14\dc\9dk\b3\14\f6?\00P\a8\fd\a7\9d\d4\bfL\\\c6Rd\f6\f5?\00\a8\899\92E\d4\bfO,\91\b5g\d8\f5?\00\b8\b09\f4\ed\d3\bf\de\90[\cb\bc\ba\f5?\00p\8fD\ce\96\d3\bfx\1a\d9\f2a\9d\f5?\00\a0\bd\17\1e@\d3\bf\87VF\12V\80\f5?\00\80F\ef\e2\e9\d2\bf\d3k\e7\ce\97c\f5?\00\e008\1b\94\d2\bf\93\7f\a7\e2%G\f5?\00\88\da\8c\c5>\d2\bf\83E\06B\ff*\f5?\00\90\')\e1\e9\d1\bf\df\bd\b2\db\"\0f\f5?\00\f8H+m\95\d1\bf\d7\de4G\8f\f3\f4?\00\f8\b9\9agA\d1\bf@(\de\cfC\d8\f4?\00\98\ef\94\d0\ed\d0\bf\c8\a3x\c0>\bd\f4?\00\10\db\18\a5\9a\d0\bf\8a%\e0\c3\7f\a2\f4?\00\b8cR\e6G\d0\bf4\84\d4$\05\88\f4?\00\f0\86E\"\eb\cf\bf\0b-\19\1b\cem\f4?\00\b0\17uJG\cf\bfT\189\d3\d9S\f4?\000\10=D\a4\ce\bfZ\84\b4D\':\f4?\00\b0\e9D\r\02\ce\bf\fb\f8\15A\b5 \f4?\00\f0w)\a2`\cd\bf\b1\f4>\da\82\07\f4?\00\90\95\04\01\c0\cc\bf\8f\feW]\8f\ee\f3?\00\10\89V) \cc\bf\e9L\0b\a0\d9\d5\f3?\00\10\81\8d\17\81\cb\bf+\c1\10\c0`\bd\f3?\00\d0\d3\cc\c9\e2\ca\bf\b8\dau+$\a5\f3?\00\90\12.@E\ca\bf\02\d0\9f\cd\"\8d\f3?\00\f0\1dhw\a8\c9\bf\1cz\84\c5[u\f3?\000Him\0c\c9\bf\e26\adI\ce]\f3?\00\c0E\a6 q\c8\bf@\d4M\98yF\f3?\000\14\b4\8f\d6\c7\bf$\cb\ff\ce\\/\f3?\00pb<\b8<\c7\bfI\r\a1uw\18\f3?\00`7\9b\9a\a3\c6\bf\909>7\c8\01\f3?\00\a0\b7T1\0b\c6\bfA\f8\95\bbN\eb\f2?\000$v}s\c5\bf\d1\a9\19\02\n\d5\f2?\000\c2\8f{\dc\c4\bf*\fd\b7\a8\f9\be\f2?\00\00\d2Q,F\c4\bf\ab\1b\0cz\1c\a9\f2?\00\00\83\bc\8a\b0\c3\bf0\b5\14`r\93\f2?\00\00Ik\99\1b\c3\bf\f5\a1WW\fa}\f2?\00@\a4\90T\87\c2\bf\bf;\1d\9b\b3h\f2?\00\a0y\f8\b9\f3\c1\bf\bd\f5\8f\83\9dS\f2?\00\a0,%\c8`\c1\bf;\08\c9\aa\b7>\f2?\00 \f7W\7f\ce\c0\bf\b6@\a9+\01*\f2?\00\a0\feI\dc<\c0\bf2A\cc\96y\15\f2?\00\80K\bc\bdW\bf\bf\9b\fc\d2\1d \01\f2?\00@@\96\087\be\bf\0bHMI\f4\ec\f1?\00@\f9>\98\17\bd\bfie\8fR\f5\d8\f1?\00\a0\d8Ng\f9\bb\bf|~W\11#\c5\f1?\00`/ y\dc\ba\bf\e9&\cbt|\b1\f1?\00\80(\e7\c3\c0\b9\bf\b6\1a,\0c\01\9e\f1?\00\c0r\b3F\a6\b8\bf\bdp\b6{\b0\8a\f1?\00\00\ac\b3\01\8d\b7\bf\b6\bc\ef%\8aw\f1?\00\008E\f1t\b6\bf\da1L5\8dd\f1?\00\80\87m\0e^\b5\bf\dd_\'\90\b9Q\f1?\00\e0\a1\de\\H\b4\bfL\d22\a4\0e?\f1?\00\a0jM\d93\b3\bf\da\f9\10r\8b,\f1?\00`\c5\f8y \b2\bf1\b5\ec(0\1a\f1?\00 b\98F\0e\b1\bf\af4\84\da\fb\07\f1?\00\00\d2jl\fa\af\bf\b3kN\0f\ee\f5\f0?\00@wJ\8d\da\ad\bf\ce\9f*]\06\e4\f0?\00\00\85\e4\ec\bc\ab\bf!\a5,cD\d2\f0?\00\c0\12@\89\a1\a9\bf\1a\98\e2|\a7\c0\f0?\00\c0\023X\88\a7\bf\d16\c6\83/\af\f0?\00\80\d6g^q\a5\bf9\13\a0\98\db\9d\f0?\00\80eI\8a\\\a3\bf\df\e7R\af\ab\8c\f0?\00@\15d\e3I\a1\bf\fb(N/\9f{\f0?\00\80\eb\82\c0r\9e\bf\19\8f5\8c\b5j\f0?\00\80RR\f1U\9a\bf,\f9\ec\a5\eeY\f0?\00\80\81\cfb=\96\bf\90,\d1\cdII\f0?\00\00\aa\8c\fb(\92\bf\a9\ad\f0\c6\c68\f0?\00\00\f9 {1\8c\bf\a92y\13e(\f0?\00\00\aa]5\19\84\bfHs\ea\'$\18\f0?\00\00\ec\c2\03\12x\bf\95\b1\14\06\04\08\f0?\00\00$y\t\04`\bf\1a\fa&\f7\1f\e0\ef?\00\00\90\84\f3\efo?t\eaa\c2\1c\a1\ef?\00\00=5A\dc\87?.\99\81\b0\10c\ef?\00\80\c2\c4\a3\ce\93?\cd\ad\ee<\f6%\ef?\00\00\89\14\c1\9f\9b?\e7\13\91\03\c8\e9\ee?\00\00\11\ce\d8\b0\a1?\ab\b1\cbx\80\ae\ee?\00\c0\01\d0[\8a\a5?\9b\0c\9d\a2\1at\ee?\00\80\d8@\83\\\a9?\b5\99\n\83\91:\ee?\00\80W\efj\'\ad?V\9a`\t\e0\01\ee?\00\c0\98\e5\98u\b0?\98\bbw\e5\01\ca\ed?\00 \r\e3\f5S\b2?\03\91|\0b\f2\92\ed?\00\008\8b\dd.\b4?\ce\\\fbf\ac\\\ed?\00\c0W\87Y\06\b6?\9d\de^\aa,\'\ed?\00\00j5v\da\b7?\cd,k>n\f2\ec?\00`\1cNC\ab\b9?\02y\a7\a2m\be\ec?\00`\r\bb\c7x\bb?m\087m&\8b\ec?\00 \e72\13C\bd?\04X]\bd\94X\ec?\00`\deq1\n\bf?\8c\9f\bb3\b5&\ec?\00@\91+\15g\c0??\e7\ec\ee\83\f5\eb?\00\b0\92\82\85G\c1?\c1\96\dbu\fd\c4\eb?\000\ca\cdn&\c2?(J\86\0c\1e\95\eb?\00P\c5\a6\d7\03\c3?,>\ef\c5\e2e\eb?\00\103<\c3\df\c3?\8b\88\c9gH7\eb?\00\80zk6\ba\c4?J0\1d!K\t\eb?\00\f0\d1(9\93\c5?~\ef\f2\85\e8\db\ea?\00\f0\18$\cdj\c6?\a2=`1\1d\af\ea?\00\90f\ec\f8@\c7?\a7X\d3?\e6\82\ea?\00\f0\1a\f5\c0\15\c8?\8bs\t\ef@W\ea?\00\80\f6T)\e9\c8?\'K\ab\90*,\ea?\00@\f8\026\bb\c9?\d1\f2\93\13\a0\01\ea?\00\00,\1c\ed\8b\ca?\1b<\db$\9f\d7\e9?\00\d0\01\\Q[\cb?\90\b1\c7\05%\ae\e9?\00\c0\bc\ccg)\cc?/\ce\97\f2.\85\e9?\00`H\d55\f6\cc?uK\a4\ee\ba\\\e9?\00\c0F4\bd\c1\cd?8H\e7\9d\c64\e9?\00\e0\cf\b8\01\8c\ce?\e6Rg/O\r\e9?\00\90\17\c0\tU\cf?\9d\d7\ff\8eR\e6\e8?\00\b8\1f\12l\0e\d0?|\00\cc\9f\ce\bf\e8?\00\d0\93\0e\b8q\d0?\0e\c3\be\da\c0\99\e8?\00p\86\9ek\d4\d0?\fb\17#\aa\'t\e8?\00\d0K3\876\d1?\08\9a\b3\ac\00O\e8?\00H#g\r\98\d1?U>e\e8I*\e8?\00\80\cc\e0\ff\f8\d1?`\02\f4\95\01\06\e8?\00hc\d7_Y\d2?)\a3\e0c%\e2\e7?\00\a8\14\t0\b9\d2?\ad\b5\dcw\b3\be\e7?\00`C\10r\18\d3?\c2%\97g\aa\9b\e7?\00\18\ecm&w\d3?W\06\17\f2\07y\e7?\000\af\fbO\d5\d3?\0c\13\d6\db\caV\e7?\00\e0/\e3\ee2\d4?") - (data $2 (i32.const 3136) "k\b6O\01\00\10\e6?<[B\91l\02~<\95\b4M\03\000\e6?A]\00H\ea\bf\8d\f6\05\eb\ff\ef\e6?S-\e2\1a\04\80~\bc\80\97\86\0e\00\10\e7?Ry\tqf\ff{<\12\e9g\fc\ff/\e7?$\87\bd&\e2\00\8c\89<\b9{F\13\000\e9?v\02\98KN\80\7f.\98\dd\ff\af\e9?7\93Z\8a\e0@\87\bcf\fbI\ed\ff\cf\e9?\00\e0\9b\c1\08\ce?O*\00\b0\ea?_?\ff<\04\fdi\bc\d1\1e\ae\d7\ff\cf\ea?\b4p\90\12\e7>\82\bcx\04Q\ee\ff\ef\ea?\a3\de\0e\e0>\06j<[\re\db\ff\0f\eb?\b9\n\1f8\c8\06ZO\86\d0E\ff\8a<@\16\87\f9\ff\8f\eb?\f9\c3\c2\96w\fe|\f0\0f\00\f0\f4?\1cS\85\0b\89\7f\97<\d1K\dc\12\00\10\f5?6\a4fqe\04`\c9\03\00\b0\f5?\c0\0c\bf\n\08A\9f\bc\bc\19I\1d\00\d0\f5?)G%\fb*\81\98\bc\89z\b8\e7\ff\ef\f5?\04i\ed\80\b7~\94\bc") - (data $3 (i32.const 5184) "\be\f3\f8y\eca\f6?\de\aa\8c\80\f7{\d5\bf=\88\afJ\edq\f5?\dbm\c0\a7\f0\be\d2\bf\b0\10\f0\f09\95\f4?g:Q\7f\ae\1e\d0\bf\85\03\b8\b0\95\c9\f3?\e9$\82\a6\d81\cb\bf\a5d\88\0c\19\r\f3?Xw\c0\nOW\c6\bf\a0\8e\0b{\"^\f2?\00\81\9c\c7+\aa\c1\bf?4\1aJJ\bb\f1?^\0e\8c\cevN\ba\bf\ba\e5\8a\f0X#\f1?\cc\1caZ<\97\b1\bf\a7\00\99A?\95\f0?\1e\0c\e18\f4R\a2\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?\84Y\f2]\aa\a5\aa?\a0j\02\1f\b3\a4\ec?\b4.6\aaS^\bc?\e6\fcjW6 \eb?\08\db w\e5&\c5?-\aa\a1c\d1\c2\e9?pG\"\r\86\c2\cb?\edAx\03\e6\86\e8?\e1~\a0\c8\8b\05\d1?bHS\f5\dcg\e7?\t\ee\b6W0\04\d4?") - (data $4 (i32.const 5440) "n\83\f9\a2\00\00\00\00\d1W\'\fc)\15DN\99\95b\db\c0\dd4\f5\abcQ\feA\90C<:n$\b7a\c5\bb\de\ea.I\06\e0\d2MB\1c\eb\1d\fe\1c\92\d1\t\f55\82\e8>\a7)\b1&p\9c\e9\84D\bb.9\d6\919A~_\b4\8b_\84\9c\f49S\83\ff\97\f8\1f;(\f9\bd\8b\11/\ef\0f\98\05\de\cf~6m\1fm\nZf?FO\b7\t\cb\'\c7\ba\'u-\ea_\9e\f79\07={\f1\e5\eb\b1_\fbk\ea\92R\8aF0\03V\08]\8d\1f \bc\cf\f0\abk{\fca\91\e3\a9\1d6\f4\9a_\85\99e\08\1b\e6^\80\d8\ff\8d@h\a0\14W\15\06\061\'sM") - (data $5 (i32.const 5632) ")\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") - (data $6 (i32.const 5678) "\f0?n\bf\88\1aO;\9b<53\fb\a9=\f6\ef?]\dc\d8\9c\13`q\bca\80w>\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\rG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") - (data $7 (i32.const 7718) "\f0?t\85\15\d3\b0\d9\ef?\0f\89\f9lX\b5\ef?Q[\12\d0\01\93\ef?{Q}<\b8r\ef?\aa\b9h1\87T\ef?8bunz8\ef?\e1\de\1f\f5\9d\1e\ef?\15\b71\n\fe\06\ef?\cb\a9:7\a7\f1\ee?\"4\12L\a6\de\ee?-\89a`\08\ce\ee?\'*6\d5\da\bf\ee?\82O\9dV+\b4\ee?)TH\dd\07\ab\ee?\85U:\b0~\a4\ee?\cd;\7ff\9e\a0\ee?t_\ec\e8u\9f\ee?\87\01\ebs\14\a1\ee?\13\ceL\99\89\a5\ee?\db\a0*B\e5\ac\ee?\e5\c5\cd\b07\b7\ee?\90\f0\a3\82\91\c4\ee?]%>\b2\03\d5\ee?\ad\d3Z\99\9f\e8\ee?G^\fb\f2v\ff\ee?\9cR\85\dd\9b\19\ef?i\90\ef\dc 7\ef?\87\a4\fb\dc\18X\ef?_\9b{3\97|\ef?\da\90\a4\a2\af\a4\ef?@En[v\d0\ef?") - (data $8 (i32.const 7968) "\f8\ac\b1k($\f7?\00\b0\cd\ee_\t\e1\bf\a1\cc\d2f\f7\e1\f6?\00\d0v\bd\94\84\e0\bf\8a\d40\0e=\a1\f6?\00\f8\e8\aeC\01\e0\bf\85l\d02\eca\f6?\00@\0b6\c5\fe\de\bf\f8\98\11\95\fa#\f6?\00\e0\b7\1a\d9\fd\dd\bfl\02\cf\a4[\e7\f5?\00\90\c7\0c\ae\ff\dc\bf\b8O!Z\05\ac\f5?\00\a0\fd\118\04\dc\bf\1en\16\0f\edq\f5?\00\e0:2g\0b\db\bf5\f8\0bY\t9\f5?\00\b0-Z/\15\da\bf\dd\ada\edO\01\f5?\00`\f8Z\7f!\d9\bf\d0{H\8e\b8\ca\f4?\00\90q\b0M0\d8\bf\eeO3\b49\95\f4?\00\e0\a9\f9\89A\d7\bfi\d5\af\df\cb`\f4?\00\90\19\b5+U\d6\bfS\b9\e4Nf-\f4?\00\10\9b\a2#k\d5\bf\a6\d8\1d\11\01\fb\f3?\00\a0_\0fe\83\d4\bf6X\0c\b7\95\c9\f3?\00\a0\f67\e9\9d\d3\bfJ\fd\b6J\1c\99\f3?\00`\8dS\a1\ba\d2\bf\b5\99\e0\0c\8ei\f3?\00@\ca@\83\d9\d1\bf\b2\e7\13\82\e4:\f3?\00\e0@:\85\fa\d0\bf\b1\bd\85\19\19\r\f3?\000\e72\9c\1d\d0\bf\d7q\b2\ca%\e0\f2?\00`\fa\a2}\85\ce\bf\82\cd\13\cf\04\b4\f2?\00\80=c\c8\d3\cc\bfP\cb|,\b0\88\f2?\00\a0\14L\03&\cb\bf\e5M\94c\"^\f2?\00\e0O/\1c|\c9\bf\b1\15\86=V4\f2?\00\00\80?\02\d6\c7\bf8\af>\e3F\0b\f2?\00\e0\05\1a\a73\c6\bf\dd\a3\cd\fd\ee\e2\f1?\00\00W\e9\f5\94\c4\bf09\0bXJ\bb\f1?\00\a0\e0$\e4\f9\c2\bf\00\"\7f\84S\94\f1?\00\c0\fdZYb\c1\bf<\d7\d5\c0\06n\f1?\00\80\bdu\9a\9c\bf\bf\c2\e4\b7G_H\f1?\00\c0\f9[W{\bc\bf\d1\85\00\adX#\f1?\00\80\f4\0f\c6`\b9\bf\'\"S\0f\f0\fe\f0?\00\00\b6G\e2L\b6\bf\8f:\d0w \db\f0?\00@\01\b2x?\b3\bf\d9\80Y\d6\e6\b7\f0?\00\c0B\1a}8\b0\bf\8d@{\fe>\95\f0?\00\00\b5\08\92o\aa\bf\83;\c5\ca%s\f0?\00\00wO\95z\a4\bf\\\1b\r\e4\97Q\f0?\00\00\0c\c5\a8#\9d\bf\a2\8e \c1\910\f0?\00\00x)&j\91\bf!~\b3%\10\10\f0?\00\00\e8\d8\f8 w\bfk\a7\ca\f9~\c0\ef?\00\00P\b1S\fe\86?\84\f1\f6\d3eD\ef?\00\80\0f\e1\cc\1c\a1?\7f\10\84\9f\07\cc\ee?\00\80\8b\8c\fcM\ac?\e8Z\97\99:W\ee?\00@W\1e2\aa\b3?\e6=\bd\f0\d6\e5\ed?\00\80\8b\d0\a0\18\b9?\b38\ff\81\b6w\ed?\00@\04\da\e9r\be?C\e9Mr\b5\0c\ed?\00`\7fP\d2\dc\c1?cu\0e\dc\b2\a4\ec?\00\a0\de\03\abv\c4?Q\cb\d6\e8\8e?\ec?\00 \e2wC\07\c7?L\0c\02O+\dd\eb?\00@\a9\8b\de\8e\c9?\ca\15`\00l}\eb?\00\e0\d2j\b8\r\cc?\8f3.n6 \eb?\00\e0\ce\af\n\84\ce?9P)&p\c5\ea?\00\80g\b4\ny\d0?\dd1\'\bc\01m\ea?\00\c0\01h\05\ac\d1?\8b\f1?\bc\d3\16\ea?\00\e0\fe\d4\11\db\d2?\ad\fegI\d1\c2\e9?\00\80\c5NF\06\d4?\02\99|\f4\e4p\e9?\00\f0:\t\be-\d5?\f2\bc\829\fb \e9?\00\d0P \90Q\d6?\f1Y\f7\87\01\d3\e8?\00\f0\ea\cd\d2q\d7?m\f6\b9\eb\e5\86\e8?\00\90}\85\9c\8e\d8?\94\b9X\b6\97<\e8?\00`\e1U\01\a8\d9?\"\10\c6\ff\05\f4\e7?\00\d0\d3n\18\be\da?\ca\15\14\18\"\ad\e7?\00\e0\a0\ae\f2\d0\db?\8c\ff\9e\f9\dcg\e7?\00@\bf=\a4\e0\dc?") - (data $9 (i32.const 8992) "\8e\n\b9\12\00 \e6?\05\b6D\06\ab\04\89<\a64W\04\00`\e6?\a9\f7b\ea\9b\ffa<\c5\f2%\c3\ff\9f\e6?\ba\90<\cb\cf~\82<\04Z\b98\00\e0\e6?&\93sV\88\ff\88<\e3\94\99\e0\ff\1f\e7?\b1\82_\'@\fd\8a<\10\0eY\15\00`\e7?A\83#\b4u\fdr\bc\d5[e\12\00\a0\e7?v+$|\e6\08x<\a6\e9Y2\00\e0\e7?\b7\"\f6&\e4\08b\bc\d2\b2\b4\ed\ff\1f\e8?/\c9\a5\1eF\02\84\bc\c3\fc\fa-\00`\e8?\1f\9a\f2\a2\f4\f7m)\e0\ff\df\f2?\f9\a6\b2\da9|\9b<\82\f0\dc\f7\ff\1f\f3?TR\dcn3\f1}<`\8bZ\f0\ff_\f3?\eb1\cdLV\03\9e\bc\cc\ae\0e.\00\a0\f3?w\a4\d3K\e7\f0u<6\b2;\04\00\e0\f3?3\88\9d\14\cb}\9c<\ff\87\d1\02\00 \f4?(=-\cf\af\08~<\b1|8\r\00`\f4?\a6\99e\857\08\82<\89\9fV\04\00\a0\f4?\d2\bcO\90\\\fa\89\bc\f3C5\04\00\e0\f4?)S\17\ed%\11x\bc\0f\7f\02\cc\ff\1f\f5?\dcTw\84\d8\83\98\e90.\90\80\91\bc") - (data $10 (i32.const 10016) "\be\f3\f8y\eca\f6?\190\96[\c6\fe\de\bf=\88\afJ\edq\f5?\a4\fc\d42h\0b\db\bf\b0\10\f0\f09\95\f4?{\b7\1f\n\8bA\d7\bf\85\03\b8\b0\95\c9\f3?{\cfm\1a\e9\9d\d3\bf\a5d\88\0c\19\r\f3?1\b6\f2\f3\9b\1d\d0\bf\a0\8e\0b{\"^\f2?\f0z;\1b\1d|\c9\bf?4\1aJJ\bb\f1?\9f<\af\93\e3\f9\c2\bf\ba\e5\8a\f0X#\f1?\\\8dx\bf\cb`\b9\bf\a7\00\99A?\95\f0?\ce_G\b6\9do\aa\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?=\f5$\9f\ca8\b3?\a0j\02\1f\b3\a4\ec?\ba\918T\a9v\c4?\e6\fcjW6 \eb?\d2\e4\c4J\0b\84\ce?-\aa\a1c\d1\c2\e9?\1ce\c6\f0E\06\d4?\edAx\03\e6\86\e8?\f8\9f\1b,\9c\8e\d8?bHS\f5\dcg\e7?\cc{\b1N\a4\e0\dc?") - (data $11 (i32.const 10277) "\a0\f6?") - (data $11.1 (i32.const 10289) "\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?") - (data $11.2 (i32.const 10321) "\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?") - (data $11.3 (i32.const 10353) "XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?") - (data $11.4 (i32.const 10385) "\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?") - (data $11.5 (i32.const 10417) "xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?") - (data $11.6 (i32.const 10449) "`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?") - (data $11.7 (i32.const 10481) "\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?") - (data $11.8 (i32.const 10513) "HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?") - (data $11.9 (i32.const 10545) "\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?") - (data $11.10 (i32.const 10577) " \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?") - (data $11.11 (i32.const 10609) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?") - (data $11.12 (i32.const 10641) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?") - (data $11.13 (i32.const 10673) "x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?") - (data $11.14 (i32.const 10705) "\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?") - (data $11.15 (i32.const 10737) "\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?") - (data $11.16 (i32.const 10769) "H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?") - (data $11.17 (i32.const 10801) "\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?") - (data $11.18 (i32.const 10833) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?") - (data $11.19 (i32.const 10865) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?") - (data $11.20 (i32.const 10897) "@^m\18\b9\cf\bf\87<\99\ab*W\r=\00\00\00\00\00`\f4?") - (data $11.21 (i32.const 10929) "`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?") - (data $11.22 (i32.const 10961) "\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?") - (data $11.23 (i32.const 10993) "\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?") - (data $11.24 (i32.const 11025) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?") - (data $11.25 (i32.const 11057) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?") - (data $11.26 (i32.const 11089) "\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?") - (data $11.27 (i32.const 11121) "\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?") - (data $11.28 (i32.const 11153) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?") - (data $11.29 (i32.const 11185) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?") - (data $11.30 (i32.const 11217) "P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?") - (data $11.31 (i32.const 11249) "\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?") - (data $11.32 (i32.const 11281) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?") - (data $11.33 (i32.const 11313) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?") - (data $11.34 (i32.const 11345) "\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?") - (data $11.35 (i32.const 11377) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?") - (data $11.36 (i32.const 11409) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?") - (data $11.37 (i32.const 11441) "\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?") - (data $11.38 (i32.const 11473) "\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?") - (data $11.85 (i32.const 12977) "`F\d1;\97\b1?\9b\9e\rV]2%\bd\00\00\00\00\00\a0\ed?") - (data $11.86 (i32.const 13009) "\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?") - (data $11.87 (i32.const 13041) "\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?") - (data $11.88 (i32.const 13073) "\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?") - (data $11.89 (i32.const 13105) "@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?") - (data $11.90 (i32.const 13137) "`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?") - (data $11.91 (i32.const 13169) "@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?") - (data $11.92 (i32.const 13201) " \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?") - (data $11.93 (i32.const 13233) "\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?") - (data $11.94 (i32.const 13265) "\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?") - (data $11.95 (i32.const 13297) "\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?") - (data $11.96 (i32.const 13329) "\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?") - (data $11.97 (i32.const 13361) "\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?") - (data $11.98 (i32.const 13393) "\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?") - (data $11.99 (i32.const 13425) "\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?") - (data $11.100 (i32.const 13457) "\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?") - (data $11.101 (i32.const 13489) "pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?") - (data $11.102 (i32.const 13521) "PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?") - (data $11.103 (i32.const 13554) "9\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?") - (data $11.104 (i32.const 13586) "\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?") - (data $11.105 (i32.const 13617) "\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?") - (data $11.106 (i32.const 13649) "\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?") - (data $11.107 (i32.const 13681) "\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?") - (data $11.108 (i32.const 13713) "\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?") - (data $11.109 (i32.const 13745) "\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?") - (data $11.110 (i32.const 13777) "\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?") - (data $11.111 (i32.const 13810) "\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?") - (data $11.112 (i32.const 13841) "\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?") - (data $11.113 (i32.const 13873) "XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?") - (data $11.114 (i32.const 13905) "`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?") - (data $11.115 (i32.const 13937) "\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?") - (data $11.116 (i32.const 13969) "\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?") - (data $11.117 (i32.const 14001) "hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?") - (data $11.118 (i32.const 14033) "\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?") - (data $11.119 (i32.const 14065) "\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?") - (data $11.120 (i32.const 14097) "`\d3\e1\f1\14\d3?\b8\d2\bf\83E\06B\ff*\f5?\00\90\')\e1\e9\d1\bf\df\bd\b2\db\"\0f\f5?\00\f8H+m\95\d1\bf\d7\de4G\8f\f3\f4?\00\f8\b9\9agA\d1\bf@(\de\cfC\d8\f4?\00\98\ef\94\d0\ed\d0\bf\c8\a3x\c0>\bd\f4?\00\10\db\18\a5\9a\d0\bf\8a%\e0\c3\7f\a2\f4?\00\b8cR\e6G\d0\bf4\84\d4$\05\88\f4?\00\f0\86E\"\eb\cf\bf\0b-\19\1b\cem\f4?\00\b0\17uJG\cf\bfT\189\d3\d9S\f4?\000\10=D\a4\ce\bfZ\84\b4D\':\f4?\00\b0\e9D\r\02\ce\bf\fb\f8\15A\b5 \f4?\00\f0w)\a2`\cd\bf\b1\f4>\da\82\07\f4?\00\90\95\04\01\c0\cc\bf\8f\feW]\8f\ee\f3?\00\10\89V) \cc\bf\e9L\0b\a0\d9\d5\f3?\00\10\81\8d\17\81\cb\bf+\c1\10\c0`\bd\f3?\00\d0\d3\cc\c9\e2\ca\bf\b8\dau+$\a5\f3?\00\90\12.@E\ca\bf\02\d0\9f\cd\"\8d\f3?\00\f0\1dhw\a8\c9\bf\1cz\84\c5[u\f3?\000Him\0c\c9\bf\e26\adI\ce]\f3?\00\c0E\a6 q\c8\bf@\d4M\98yF\f3?\000\14\b4\8f\d6\c7\bf$\cb\ff\ce\\/\f3?\00pb<\b8<\c7\bfI\r\a1uw\18\f3?\00`7\9b\9a\a3\c6\bf\909>7\c8\01\f3?\00\a0\b7T1\0b\c6\bfA\f8\95\bbN\eb\f2?\000$v}s\c5\bf\d1\a9\19\02\n\d5\f2?\000\c2\8f{\dc\c4\bf*\fd\b7\a8\f9\be\f2?\00\00\d2Q,F\c4\bf\ab\1b\0cz\1c\a9\f2?\00\00\83\bc\8a\b0\c3\bf0\b5\14`r\93\f2?\00\00Ik\99\1b\c3\bf\f5\a1WW\fa}\f2?\00@\a4\90T\87\c2\bf\bf;\1d\9b\b3h\f2?\00\a0y\f8\b9\f3\c1\bf\bd\f5\8f\83\9dS\f2?\00\a0,%\c8`\c1\bf;\08\c9\aa\b7>\f2?\00 \f7W\7f\ce\c0\bf\b6@\a9+\01*\f2?\00\a0\feI\dc<\c0\bf2A\cc\96y\15\f2?\00\80K\bc\bdW\bf\bf\9b\fc\d2\1d \01\f2?\00@@\96\087\be\bf\0bHMI\f4\ec\f1?\00@\f9>\98\17\bd\bfie\8fR\f5\d8\f1?\00\a0\d8Ng\f9\bb\bf|~W\11#\c5\f1?\00`/ y\dc\ba\bf\e9&\cbt|\b1\f1?\00\80(\e7\c3\c0\b9\bf\b6\1a,\0c\01\9e\f1?\00\c0r\b3F\a6\b8\bf\bdp\b6{\b0\8a\f1?\00\00\ac\b3\01\8d\b7\bf\b6\bc\ef%\8aw\f1?\00\008E\f1t\b6\bf\da1L5\8dd\f1?\00\80\87m\0e^\b5\bf\dd_\'\90\b9Q\f1?\00\e0\a1\de\\H\b4\bfL\d22\a4\0e?\f1?\00\a0jM\d93\b3\bf\da\f9\10r\8b,\f1?\00`\c5\f8y \b2\bf1\b5\ec(0\1a\f1?\00 b\98F\0e\b1\bf\af4\84\da\fb\07\f1?\00\00\d2jl\fa\af\bf\b3kN\0f\ee\f5\f0?\00@wJ\8d\da\ad\bf\ce\9f*]\06\e4\f0?\00\00\85\e4\ec\bc\ab\bf!\a5,cD\d2\f0?\00\c0\12@\89\a1\a9\bf\1a\98\e2|\a7\c0\f0?\00\c0\023X\88\a7\bf\d16\c6\83/\af\f0?\00\80\d6g^q\a5\bf9\13\a0\98\db\9d\f0?\00\80eI\8a\\\a3\bf\df\e7R\af\ab\8c\f0?\00@\15d\e3I\a1\bf\fb(N/\9f{\f0?\00\80\eb\82\c0r\9e\bf\19\8f5\8c\b5j\f0?\00\80RR\f1U\9a\bf,\f9\ec\a5\eeY\f0?\00\80\81\cfb=\96\bf\90,\d1\cdII\f0?\00\00\aa\8c\fb(\92\bf\a9\ad\f0\c6\c68\f0?\00\00\f9 {1\8c\bf\a92y\13e(\f0?\00\00\aa]5\19\84\bfHs\ea\'$\18\f0?\00\00\ec\c2\03\12x\bf\95\b1\14\06\04\08\f0?\00\00$y\t\04`\bf\1a\fa&\f7\1f\e0\ef?\00\00\90\84\f3\efo?t\eaa\c2\1c\a1\ef?\00\00=5A\dc\87?.\99\81\b0\10c\ef?\00\80\c2\c4\a3\ce\93?\cd\ad\ee<\f6%\ef?\00\00\89\14\c1\9f\9b?\e7\13\91\03\c8\e9\ee?\00\00\11\ce\d8\b0\a1?\ab\b1\cbx\80\ae\ee?\00\c0\01\d0[\8a\a5?\9b\0c\9d\a2\1at\ee?\00\80\d8@\83\\\a9?\b5\99\n\83\91:\ee?\00\80W\efj\'\ad?V\9a`\t\e0\01\ee?\00\c0\98\e5\98u\b0?\98\bbw\e5\01\ca\ed?\00 \r\e3\f5S\b2?\03\91|\0b\f2\92\ed?\00\008\8b\dd.\b4?\ce\\\fbf\ac\\\ed?\00\c0W\87Y\06\b6?\9d\de^\aa,\'\ed?\00\00j5v\da\b7?\cd,k>n\f2\ec?\00`\1cNC\ab\b9?\02y\a7\a2m\be\ec?\00`\r\bb\c7x\bb?m\087m&\8b\ec?\00 \e72\13C\bd?\04X]\bd\94X\ec?\00`\deq1\n\bf?\8c\9f\bb3\b5&\ec?\00@\91+\15g\c0??\e7\ec\ee\83\f5\eb?\00\b0\92\82\85G\c1?\c1\96\dbu\fd\c4\eb?\000\ca\cdn&\c2?(J\86\0c\1e\95\eb?\00P\c5\a6\d7\03\c3?,>\ef\c5\e2e\eb?\00\103<\c3\df\c3?\8b\88\c9gH7\eb?\00\80zk6\ba\c4?J0\1d!K\t\eb?\00\f0\d1(9\93\c5?~\ef\f2\85\e8\db\ea?\00\f0\18$\cdj\c6?\a2=`1\1d\af\ea?\00\90f\ec\f8@\c7?\a7X\d3?\e6\82\ea?\00\f0\1a\f5\c0\15\c8?\8bs\t\ef@W\ea?\00\80\f6T)\e9\c8?\'K\ab\90*,\ea?\00@\f8\026\bb\c9?\d1\f2\93\13\a0\01\ea?\00\00,\1c\ed\8b\ca?\1b<\db$\9f\d7\e9?\00\d0\01\\Q[\cb?\90\b1\c7\05%\ae\e9?\00\c0\bc\ccg)\cc?/\ce\97\f2.\85\e9?\00`H\d55\f6\cc?uK\a4\ee\ba\\\e9?\00\c0F4\bd\c1\cd?8H\e7\9d\c64\e9?\00\e0\cf\b8\01\8c\ce?\e6Rg/O\r\e9?\00\90\17\c0\tU\cf?\9d\d7\ff\8eR\e6\e8?\00\b8\1f\12l\0e\d0?|\00\cc\9f\ce\bf\e8?\00\d0\93\0e\b8q\d0?\0e\c3\be\da\c0\99\e8?\00p\86\9ek\d4\d0?\fb\17#\aa\'t\e8?\00\d0K3\876\d1?\08\9a\b3\ac\00O\e8?\00H#g\r\98\d1?U>e\e8I*\e8?\00\80\cc\e0\ff\f8\d1?`\02\f4\95\01\06\e8?\00hc\d7_Y\d2?)\a3\e0c%\e2\e7?\00\a8\14\t0\b9\d2?\ad\b5\dcw\b3\be\e7?\00`C\10r\18\d3?\c2%\97g\aa\9b\e7?\00\18\ecm&w\d3?W\06\17\f2\07y\e7?\000\af\fbO\d5\d3?\0c\13\d6\db\caV\e7?\00\e0/\e3\ee2\d4?") + (data $21 (i32.const 5504) "k\b6O\01\00\10\e6?<[B\91l\02~<\95\b4M\03\000\e6?A]\00H\ea\bf\8d\f6\05\eb\ff\ef\e6?S-\e2\1a\04\80~\bc\80\97\86\0e\00\10\e7?Ry\tqf\ff{<\12\e9g\fc\ff/\e7?$\87\bd&\e2\00\8c\89<\b9{F\13\000\e9?v\02\98KN\80\7f.\98\dd\ff\af\e9?7\93Z\8a\e0@\87\bcf\fbI\ed\ff\cf\e9?\00\e0\9b\c1\08\ce?O*\00\b0\ea?_?\ff<\04\fdi\bc\d1\1e\ae\d7\ff\cf\ea?\b4p\90\12\e7>\82\bcx\04Q\ee\ff\ef\ea?\a3\de\0e\e0>\06j<[\re\db\ff\0f\eb?\b9\n\1f8\c8\06ZO\86\d0E\ff\8a<@\16\87\f9\ff\8f\eb?\f9\c3\c2\96w\fe|\f0\0f\00\f0\f4?\1cS\85\0b\89\7f\97<\d1K\dc\12\00\10\f5?6\a4fqe\04`\c9\03\00\b0\f5?\c0\0c\bf\n\08A\9f\bc\bc\19I\1d\00\d0\f5?)G%\fb*\81\98\bc\89z\b8\e7\ff\ef\f5?\04i\ed\80\b7~\94\bc") + (data $22 (i32.const 7552) "\be\f3\f8y\eca\f6?\de\aa\8c\80\f7{\d5\bf=\88\afJ\edq\f5?\dbm\c0\a7\f0\be\d2\bf\b0\10\f0\f09\95\f4?g:Q\7f\ae\1e\d0\bf\85\03\b8\b0\95\c9\f3?\e9$\82\a6\d81\cb\bf\a5d\88\0c\19\r\f3?Xw\c0\nOW\c6\bf\a0\8e\0b{\"^\f2?\00\81\9c\c7+\aa\c1\bf?4\1aJJ\bb\f1?^\0e\8c\cevN\ba\bf\ba\e5\8a\f0X#\f1?\cc\1caZ<\97\b1\bf\a7\00\99A?\95\f0?\1e\0c\e18\f4R\a2\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?\84Y\f2]\aa\a5\aa?\a0j\02\1f\b3\a4\ec?\b4.6\aaS^\bc?\e6\fcjW6 \eb?\08\db w\e5&\c5?-\aa\a1c\d1\c2\e9?pG\"\r\86\c2\cb?\edAx\03\e6\86\e8?\e1~\a0\c8\8b\05\d1?bHS\f5\dcg\e7?\t\ee\b6W0\04\d4?") + (data $23 (i32.const 7808) "n\83\f9\a2\00\00\00\00\d1W\'\fc)\15DN\99\95b\db\c0\dd4\f5\abcQ\feA\90C<:n$\b7a\c5\bb\de\ea.I\06\e0\d2MB\1c\eb\1d\fe\1c\92\d1\t\f55\82\e8>\a7)\b1&p\9c\e9\84D\bb.9\d6\919A~_\b4\8b_\84\9c\f49S\83\ff\97\f8\1f;(\f9\bd\8b\11/\ef\0f\98\05\de\cf~6m\1fm\nZf?FO\b7\t\cb\'\c7\ba\'u-\ea_\9e\f79\07={\f1\e5\eb\b1_\fbk\ea\92R\8aF0\03V\08]\8d\1f \bc\cf\f0\abk{\fca\91\e3\a9\1d6\f4\9a_\85\99e\08\1b\e6^\80\d8\ff\8d@h\a0\14W\15\06\061\'sM") + (data $24 (i32.const 8000) ")\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") + (data $25 (i32.const 8046) "\f0?n\bf\88\1aO;\9b<53\fb\a9=\f6\ef?]\dc\d8\9c\13`q\bca\80w>\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\rG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") + (data $26 (i32.const 10086) "\f0?t\85\15\d3\b0\d9\ef?\0f\89\f9lX\b5\ef?Q[\12\d0\01\93\ef?{Q}<\b8r\ef?\aa\b9h1\87T\ef?8bunz8\ef?\e1\de\1f\f5\9d\1e\ef?\15\b71\n\fe\06\ef?\cb\a9:7\a7\f1\ee?\"4\12L\a6\de\ee?-\89a`\08\ce\ee?\'*6\d5\da\bf\ee?\82O\9dV+\b4\ee?)TH\dd\07\ab\ee?\85U:\b0~\a4\ee?\cd;\7ff\9e\a0\ee?t_\ec\e8u\9f\ee?\87\01\ebs\14\a1\ee?\13\ceL\99\89\a5\ee?\db\a0*B\e5\ac\ee?\e5\c5\cd\b07\b7\ee?\90\f0\a3\82\91\c4\ee?]%>\b2\03\d5\ee?\ad\d3Z\99\9f\e8\ee?G^\fb\f2v\ff\ee?\9cR\85\dd\9b\19\ef?i\90\ef\dc 7\ef?\87\a4\fb\dc\18X\ef?_\9b{3\97|\ef?\da\90\a4\a2\af\a4\ef?@En[v\d0\ef?") + (data $27 (i32.const 10336) "\f8\ac\b1k($\f7?\00\b0\cd\ee_\t\e1\bf\a1\cc\d2f\f7\e1\f6?\00\d0v\bd\94\84\e0\bf\8a\d40\0e=\a1\f6?\00\f8\e8\aeC\01\e0\bf\85l\d02\eca\f6?\00@\0b6\c5\fe\de\bf\f8\98\11\95\fa#\f6?\00\e0\b7\1a\d9\fd\dd\bfl\02\cf\a4[\e7\f5?\00\90\c7\0c\ae\ff\dc\bf\b8O!Z\05\ac\f5?\00\a0\fd\118\04\dc\bf\1en\16\0f\edq\f5?\00\e0:2g\0b\db\bf5\f8\0bY\t9\f5?\00\b0-Z/\15\da\bf\dd\ada\edO\01\f5?\00`\f8Z\7f!\d9\bf\d0{H\8e\b8\ca\f4?\00\90q\b0M0\d8\bf\eeO3\b49\95\f4?\00\e0\a9\f9\89A\d7\bfi\d5\af\df\cb`\f4?\00\90\19\b5+U\d6\bfS\b9\e4Nf-\f4?\00\10\9b\a2#k\d5\bf\a6\d8\1d\11\01\fb\f3?\00\a0_\0fe\83\d4\bf6X\0c\b7\95\c9\f3?\00\a0\f67\e9\9d\d3\bfJ\fd\b6J\1c\99\f3?\00`\8dS\a1\ba\d2\bf\b5\99\e0\0c\8ei\f3?\00@\ca@\83\d9\d1\bf\b2\e7\13\82\e4:\f3?\00\e0@:\85\fa\d0\bf\b1\bd\85\19\19\r\f3?\000\e72\9c\1d\d0\bf\d7q\b2\ca%\e0\f2?\00`\fa\a2}\85\ce\bf\82\cd\13\cf\04\b4\f2?\00\80=c\c8\d3\cc\bfP\cb|,\b0\88\f2?\00\a0\14L\03&\cb\bf\e5M\94c\"^\f2?\00\e0O/\1c|\c9\bf\b1\15\86=V4\f2?\00\00\80?\02\d6\c7\bf8\af>\e3F\0b\f2?\00\e0\05\1a\a73\c6\bf\dd\a3\cd\fd\ee\e2\f1?\00\00W\e9\f5\94\c4\bf09\0bXJ\bb\f1?\00\a0\e0$\e4\f9\c2\bf\00\"\7f\84S\94\f1?\00\c0\fdZYb\c1\bf<\d7\d5\c0\06n\f1?\00\80\bdu\9a\9c\bf\bf\c2\e4\b7G_H\f1?\00\c0\f9[W{\bc\bf\d1\85\00\adX#\f1?\00\80\f4\0f\c6`\b9\bf\'\"S\0f\f0\fe\f0?\00\00\b6G\e2L\b6\bf\8f:\d0w \db\f0?\00@\01\b2x?\b3\bf\d9\80Y\d6\e6\b7\f0?\00\c0B\1a}8\b0\bf\8d@{\fe>\95\f0?\00\00\b5\08\92o\aa\bf\83;\c5\ca%s\f0?\00\00wO\95z\a4\bf\\\1b\r\e4\97Q\f0?\00\00\0c\c5\a8#\9d\bf\a2\8e \c1\910\f0?\00\00x)&j\91\bf!~\b3%\10\10\f0?\00\00\e8\d8\f8 w\bfk\a7\ca\f9~\c0\ef?\00\00P\b1S\fe\86?\84\f1\f6\d3eD\ef?\00\80\0f\e1\cc\1c\a1?\7f\10\84\9f\07\cc\ee?\00\80\8b\8c\fcM\ac?\e8Z\97\99:W\ee?\00@W\1e2\aa\b3?\e6=\bd\f0\d6\e5\ed?\00\80\8b\d0\a0\18\b9?\b38\ff\81\b6w\ed?\00@\04\da\e9r\be?C\e9Mr\b5\0c\ed?\00`\7fP\d2\dc\c1?cu\0e\dc\b2\a4\ec?\00\a0\de\03\abv\c4?Q\cb\d6\e8\8e?\ec?\00 \e2wC\07\c7?L\0c\02O+\dd\eb?\00@\a9\8b\de\8e\c9?\ca\15`\00l}\eb?\00\e0\d2j\b8\r\cc?\8f3.n6 \eb?\00\e0\ce\af\n\84\ce?9P)&p\c5\ea?\00\80g\b4\ny\d0?\dd1\'\bc\01m\ea?\00\c0\01h\05\ac\d1?\8b\f1?\bc\d3\16\ea?\00\e0\fe\d4\11\db\d2?\ad\fegI\d1\c2\e9?\00\80\c5NF\06\d4?\02\99|\f4\e4p\e9?\00\f0:\t\be-\d5?\f2\bc\829\fb \e9?\00\d0P \90Q\d6?\f1Y\f7\87\01\d3\e8?\00\f0\ea\cd\d2q\d7?m\f6\b9\eb\e5\86\e8?\00\90}\85\9c\8e\d8?\94\b9X\b6\97<\e8?\00`\e1U\01\a8\d9?\"\10\c6\ff\05\f4\e7?\00\d0\d3n\18\be\da?\ca\15\14\18\"\ad\e7?\00\e0\a0\ae\f2\d0\db?\8c\ff\9e\f9\dcg\e7?\00@\bf=\a4\e0\dc?") + (data $28 (i32.const 11360) "\8e\n\b9\12\00 \e6?\05\b6D\06\ab\04\89<\a64W\04\00`\e6?\a9\f7b\ea\9b\ffa<\c5\f2%\c3\ff\9f\e6?\ba\90<\cb\cf~\82<\04Z\b98\00\e0\e6?&\93sV\88\ff\88<\e3\94\99\e0\ff\1f\e7?\b1\82_\'@\fd\8a<\10\0eY\15\00`\e7?A\83#\b4u\fdr\bc\d5[e\12\00\a0\e7?v+$|\e6\08x<\a6\e9Y2\00\e0\e7?\b7\"\f6&\e4\08b\bc\d2\b2\b4\ed\ff\1f\e8?/\c9\a5\1eF\02\84\bc\c3\fc\fa-\00`\e8?\1f\9a\f2\a2\f4\f7m)\e0\ff\df\f2?\f9\a6\b2\da9|\9b<\82\f0\dc\f7\ff\1f\f3?TR\dcn3\f1}<`\8bZ\f0\ff_\f3?\eb1\cdLV\03\9e\bc\cc\ae\0e.\00\a0\f3?w\a4\d3K\e7\f0u<6\b2;\04\00\e0\f3?3\88\9d\14\cb}\9c<\ff\87\d1\02\00 \f4?(=-\cf\af\08~<\b1|8\r\00`\f4?\a6\99e\857\08\82<\89\9fV\04\00\a0\f4?\d2\bcO\90\\\fa\89\bc\f3C5\04\00\e0\f4?)S\17\ed%\11x\bc\0f\7f\02\cc\ff\1f\f5?\dcTw\84\d8\83\98\e90.\90\80\91\bc") + (data $29 (i32.const 12384) "\be\f3\f8y\eca\f6?\190\96[\c6\fe\de\bf=\88\afJ\edq\f5?\a4\fc\d42h\0b\db\bf\b0\10\f0\f09\95\f4?{\b7\1f\n\8bA\d7\bf\85\03\b8\b0\95\c9\f3?{\cfm\1a\e9\9d\d3\bf\a5d\88\0c\19\r\f3?1\b6\f2\f3\9b\1d\d0\bf\a0\8e\0b{\"^\f2?\f0z;\1b\1d|\c9\bf?4\1aJJ\bb\f1?\9f<\af\93\e3\f9\c2\bf\ba\e5\8a\f0X#\f1?\\\8dx\bf\cb`\b9\bf\a7\00\99A?\95\f0?\ce_G\b6\9do\aa\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?=\f5$\9f\ca8\b3?\a0j\02\1f\b3\a4\ec?\ba\918T\a9v\c4?\e6\fcjW6 \eb?\d2\e4\c4J\0b\84\ce?-\aa\a1c\d1\c2\e9?\1ce\c6\f0E\06\d4?\edAx\03\e6\86\e8?\f8\9f\1b,\9c\8e\d8?bHS\f5\dcg\e7?\cc{\b1N\a4\e0\dc?") + (data $30 (i32.const 12645) "\a0\f6?") + (data $30.1 (i32.const 12657) "\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?") + (data $30.2 (i32.const 12689) "\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?") + (data $30.3 (i32.const 12721) "XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?") + (data $30.4 (i32.const 12753) "\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?") + (data $30.5 (i32.const 12785) "xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?") + (data $30.6 (i32.const 12817) "`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?") + (data $30.7 (i32.const 12849) "\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?") + (data $30.8 (i32.const 12881) "HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?") + (data $30.9 (i32.const 12913) "\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?") + (data $30.10 (i32.const 12945) " \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?") + (data $30.11 (i32.const 12977) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?") + (data $30.12 (i32.const 13009) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?") + (data $30.13 (i32.const 13041) "x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?") + (data $30.14 (i32.const 13073) "\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?") + (data $30.15 (i32.const 13105) "\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?") + (data $30.16 (i32.const 13137) "H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?") + (data $30.17 (i32.const 13169) "\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?") + (data $30.18 (i32.const 13201) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?") + (data $30.19 (i32.const 13233) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?") + (data $30.20 (i32.const 13265) "@^m\18\b9\cf\bf\87<\99\ab*W\r=\00\00\00\00\00`\f4?") + (data $30.21 (i32.const 13297) "`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?") + (data $30.22 (i32.const 13329) "\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?") + (data $30.23 (i32.const 13361) "\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?") + (data $30.24 (i32.const 13393) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?") + (data $30.25 (i32.const 13425) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?") + (data $30.26 (i32.const 13457) "\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?") + (data $30.27 (i32.const 13489) "\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?") + (data $30.28 (i32.const 13521) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?") + (data $30.29 (i32.const 13553) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?") + (data $30.30 (i32.const 13585) "P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?") + (data $30.31 (i32.const 13617) "\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?") + (data $30.32 (i32.const 13649) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?") + (data $30.33 (i32.const 13681) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?") + (data $30.34 (i32.const 13713) "\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?") + (data $30.35 (i32.const 13745) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?") + (data $30.36 (i32.const 13777) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?") + (data $30.37 (i32.const 13809) "\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?") + (data $30.38 (i32.const 13841) "\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?") + (data $30.85 (i32.const 15345) "`F\d1;\97\b1?\9b\9e\rV]2%\bd\00\00\00\00\00\a0\ed?") + (data $30.86 (i32.const 15377) "\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?") + (data $30.87 (i32.const 15409) "\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?") + (data $30.88 (i32.const 15441) "\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?") + (data $30.89 (i32.const 15473) "@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?") + (data $30.90 (i32.const 15505) "`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?") + (data $30.91 (i32.const 15537) "@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?") + (data $30.92 (i32.const 15569) " \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?") + (data $30.93 (i32.const 15601) "\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?") + (data $30.94 (i32.const 15633) "\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?") + (data $30.95 (i32.const 15665) "\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?") + (data $30.96 (i32.const 15697) "\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?") + (data $30.97 (i32.const 15729) "\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?") + (data $30.98 (i32.const 15761) "\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?") + (data $30.99 (i32.const 15793) "\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?") + (data $30.100 (i32.const 15825) "\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?") + (data $30.101 (i32.const 15857) "pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?") + (data $30.102 (i32.const 15889) "PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?") + (data $30.103 (i32.const 15922) "9\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?") + (data $30.104 (i32.const 15954) "\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?") + (data $30.105 (i32.const 15985) "\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?") + (data $30.106 (i32.const 16017) "\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?") + (data $30.107 (i32.const 16049) "\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?") + (data $30.108 (i32.const 16081) "\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?") + (data $30.109 (i32.const 16113) "\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?") + (data $30.110 (i32.const 16145) "\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?") + (data $30.111 (i32.const 16178) "\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?") + (data $30.112 (i32.const 16209) "\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?") + (data $30.113 (i32.const 16241) "XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?") + (data $30.114 (i32.const 16273) "`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?") + (data $30.115 (i32.const 16305) "\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?") + (data $30.116 (i32.const 16337) "\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?") + (data $30.117 (i32.const 16369) "hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?") + (data $30.118 (i32.const 16401) "\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?") + (data $30.119 (i32.const 16433) "\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?") + (data $30.120 (i32.const 16465) "`\d3\e1\f1\14\d3?\b8 (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 i32) local.get $0 @@ -406,7 +2143,7 @@ f32.ne return end - block $__inlined_func$std/math/ulperrf$1078 (result f32) + block $__inlined_func$std/math/ulperrf$1191 (result f32) f32.const 0 local.get $1 local.get $1 @@ -415,7 +2152,7 @@ local.get $0 f32.ne i32.and - br_if $__inlined_func$std/math/ulperrf$1078 + br_if $__inlined_func$std/math/ulperrf$1191 drop local.get $0 local.get $1 @@ -431,10 +2168,10 @@ i32.const 31 i32.shr_u i32.eq - br_if $__inlined_func$std/math/ulperrf$1078 + br_if $__inlined_func$std/math/ulperrf$1191 drop f32.const inf - br $__inlined_func$std/math/ulperrf$1078 + br $__inlined_func$std/math/ulperrf$1191 end local.get $0 local.get $0 @@ -1322,7 +3059,7 @@ i32.const 4 i32.shl local.tee $2 - i32.const 1088 + i32.const 3456 i32.add local.set $7 local.get $3 @@ -1343,7 +3080,7 @@ i64.sub f64.reinterpret_i64 local.get $2 - i32.const 3136 + i32.const 5504 i32.add local.tee $2 f64.load @@ -1398,7 +3135,7 @@ (func $std/math/test_acosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 f64) (local $4 i64) - block $__inlined_func$~lib/math/NativeMath.acosh$8 (result f64) + block $__inlined_func$~lib/math/NativeMath.acosh$83 (result f64) local.get $0 local.get $0 f64.sub @@ -1409,7 +3146,7 @@ local.tee $4 i64.const 4607182418800017408 i64.lt_s - br_if $__inlined_func$~lib/math/NativeMath.acosh$8 + br_if $__inlined_func$~lib/math/NativeMath.acosh$83 drop local.get $4 i64.const 52 @@ -1434,7 +3171,7 @@ f64.sqrt f64.add call $~lib/math/NativeMath.log1p - br $__inlined_func$~lib/math/NativeMath.acosh$8 + br $__inlined_func$~lib/math/NativeMath.acosh$83 end local.get $4 i64.const 1049 @@ -1455,7 +3192,7 @@ f64.div f64.sub call $~lib/math/NativeMath.log - br $__inlined_func$~lib/math/NativeMath.acosh$8 + br $__inlined_func$~lib/math/NativeMath.acosh$83 end local.get $0 call $~lib/math/NativeMath.log @@ -1707,7 +3444,7 @@ i32.and i32.const 4 i32.shl - i32.const 5184 + i32.const 7552 i32.add local.set $5 local.get $1 @@ -1754,7 +3491,7 @@ ) (func $std/math/test_acoshf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 i32) - block $__inlined_func$~lib/math/NativeMathf.acosh$9 (result f32) + block $__inlined_func$~lib/math/NativeMathf.acosh$84 (result f32) local.get $0 i32.reinterpret_f32 local.tee $3 @@ -1775,7 +3512,7 @@ f32.sqrt f32.add call $~lib/math/NativeMathf.log1p - br $__inlined_func$~lib/math/NativeMathf.acosh$9 + br $__inlined_func$~lib/math/NativeMathf.acosh$84 end local.get $3 i32.const 1166016512 @@ -1796,7 +3533,7 @@ f32.div f32.sub call $~lib/math/NativeMathf.log - br $__inlined_func$~lib/math/NativeMathf.acosh$9 + br $__inlined_func$~lib/math/NativeMathf.acosh$84 end local.get $0 call $~lib/math/NativeMathf.log @@ -3208,7 +4945,7 @@ local.get $0 f64.add local.set $3 - block $__inlined_func$~lib/math/NativeMath.cbrt$18 + block $__inlined_func$~lib/math/NativeMath.cbrt$93 local.get $0 i64.reinterpret_f64 local.tee $5 @@ -3220,7 +4957,7 @@ local.tee $4 i32.const 2146435072 i32.ge_u - br_if $__inlined_func$~lib/math/NativeMath.cbrt$18 + br_if $__inlined_func$~lib/math/NativeMath.cbrt$93 local.get $4 i32.const 1048576 i32.lt_u @@ -3238,7 +4975,7 @@ i32.and local.tee $4 i32.eqz - br_if $__inlined_func$~lib/math/NativeMath.cbrt$18 + br_if $__inlined_func$~lib/math/NativeMath.cbrt$93 local.get $4 i32.const 3 i32.div_u @@ -3340,7 +5077,7 @@ (local $6 i32) (local $7 f64) (local $8 f64) - block $__inlined_func$~lib/math/NativeMathf.cbrt$19 (result f32) + block $__inlined_func$~lib/math/NativeMathf.cbrt$94 (result f32) local.get $0 local.get $0 f32.add @@ -3352,7 +5089,7 @@ local.tee $6 i32.const 2139095040 i32.ge_u - br_if $__inlined_func$~lib/math/NativeMathf.cbrt$19 + br_if $__inlined_func$~lib/math/NativeMathf.cbrt$94 drop local.get $6 i32.const 8388608 @@ -3361,7 +5098,7 @@ local.get $0 local.get $6 i32.eqz - br_if $__inlined_func$~lib/math/NativeMathf.cbrt$19 + br_if $__inlined_func$~lib/math/NativeMathf.cbrt$94 drop local.get $0 f32.const 16777216 @@ -3462,7 +5199,7 @@ i32.wrap_i64 i32.const 3 i32.shl - i32.const 5440 + i32.const 7808 i32.add local.tee $4 i64.load @@ -4399,7 +6136,7 @@ i32.shr_s i32.const 3 i32.shl - i32.const 5632 + i32.const 8000 i32.add local.tee $7 i64.load offset=8 @@ -4918,7 +6655,7 @@ i32.wrap_i64 i32.const 3 i32.shl - i32.const 5664 + i32.const 8032 i32.add local.tee $5 i64.load offset=8 @@ -5058,7 +6795,7 @@ (local $3 i32) (local $4 i64) (local $5 f64) - block $__inlined_func$~lib/math/NativeMath.cosh$20 (result f64) + block $__inlined_func$~lib/math/NativeMath.cosh$95 (result f64) local.get $0 i64.reinterpret_f64 i64.const 9223372036854775807 @@ -5078,7 +6815,7 @@ local.get $3 i32.const 1045430272 i32.lt_u - br_if $__inlined_func$~lib/math/NativeMath.cosh$20 + br_if $__inlined_func$~lib/math/NativeMath.cosh$95 drop local.get $5 call $~lib/math/NativeMath.expm1 @@ -5093,7 +6830,7 @@ f64.div f64.const 1 f64.add - br $__inlined_func$~lib/math/NativeMath.cosh$20 + br $__inlined_func$~lib/math/NativeMath.cosh$95 end local.get $3 i32.const 1082535490 @@ -5108,7 +6845,7 @@ f64.add f64.const 0.5 f64.mul - br $__inlined_func$~lib/math/NativeMath.cosh$20 + br $__inlined_func$~lib/math/NativeMath.cosh$95 end local.get $5 f64.const -1416.0996898839683 @@ -5463,7 +7200,7 @@ i32.and i32.const 3 i32.shl - i32.const 7712 + i32.const 10080 i32.add i64.load local.get $2 @@ -5477,7 +7214,7 @@ ) (func $std/math/test_coshf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 i32) - block $__inlined_func$~lib/math/NativeMathf.cosh$21 (result f32) + block $__inlined_func$~lib/math/NativeMathf.cosh$96 (result f32) local.get $0 i32.reinterpret_f32 i32.const 2147483647 @@ -5493,7 +7230,7 @@ local.get $3 i32.const 964689920 i32.lt_u - br_if $__inlined_func$~lib/math/NativeMathf.cosh$21 + br_if $__inlined_func$~lib/math/NativeMathf.cosh$96 drop local.get $0 call $~lib/math/NativeMathf.expm1 @@ -5508,7 +7245,7 @@ f32.div f32.const 1 f32.add - br $__inlined_func$~lib/math/NativeMathf.cosh$21 + br $__inlined_func$~lib/math/NativeMathf.cosh$96 end local.get $3 i32.const 1118925335 @@ -5523,7 +7260,7 @@ local.get $0 f32.div f32.add - br $__inlined_func$~lib/math/NativeMathf.cosh$21 + br $__inlined_func$~lib/math/NativeMathf.cosh$96 end local.get $0 f32.const -162.88958740234375 @@ -5623,7 +7360,7 @@ i32.wrap_i64 i32.const 3 i32.shl - i32.const 5664 + i32.const 8032 i32.add local.tee $7 i64.load offset=8 @@ -5831,7 +7568,7 @@ i32.and i32.const 3 i32.shl - i32.const 7712 + i32.const 10080 i32.add i64.load local.get $4 @@ -5878,7 +7615,7 @@ f64.reinterpret_i64 local.tee $9 local.set $0 - block $__inlined_func$~lib/math/NativeMath.hypot$23 + block $__inlined_func$~lib/math/NativeMath.hypot$98 local.get $5 i64.const 52 i64.shr_u @@ -5886,7 +7623,7 @@ local.tee $7 i32.const 2047 i32.eq - br_if $__inlined_func$~lib/math/NativeMath.hypot$23 + br_if $__inlined_func$~lib/math/NativeMath.hypot$98 local.get $4 f64.reinterpret_i64 local.tee $1 @@ -5901,7 +7638,7 @@ i32.const 2047 i32.eq i32.or - br_if $__inlined_func$~lib/math/NativeMath.hypot$23 + br_if $__inlined_func$~lib/math/NativeMath.hypot$98 local.get $1 local.get $9 f64.add @@ -5911,7 +7648,7 @@ i32.sub i32.const 64 i32.gt_s - br_if $__inlined_func$~lib/math/NativeMath.hypot$23 + br_if $__inlined_func$~lib/math/NativeMath.hypot$98 f64.const 1 local.set $0 local.get $8 @@ -6042,14 +7779,14 @@ local.get $4 f32.reinterpret_i32 local.set $0 - block $__inlined_func$~lib/math/NativeMathf.hypot$24 (result f32) + block $__inlined_func$~lib/math/NativeMathf.hypot$99 (result f32) local.get $5 f32.reinterpret_i32 local.tee $1 local.get $5 i32.const 2139095040 i32.eq - br_if $__inlined_func$~lib/math/NativeMathf.hypot$24 + br_if $__inlined_func$~lib/math/NativeMathf.hypot$99 drop local.get $0 local.get $1 @@ -6066,7 +7803,7 @@ i32.const 209715200 i32.ge_u i32.or - br_if $__inlined_func$~lib/math/NativeMathf.hypot$24 + br_if $__inlined_func$~lib/math/NativeMathf.hypot$99 drop local.get $4 i32.const 1568669696 @@ -6339,7 +8076,7 @@ (local $8 f32) (local $9 f32) (local $10 f32) - block $__inlined_func$~lib/math/NativeMathf.log10$25 (result f32) + block $__inlined_func$~lib/math/NativeMathf.log10$100 (result f32) local.get $0 i32.reinterpret_f32 local.tee $3 @@ -6360,7 +8097,7 @@ i32.const 1 i32.shl i32.eqz - br_if $__inlined_func$~lib/math/NativeMathf.log10$25 + br_if $__inlined_func$~lib/math/NativeMathf.log10$100 drop local.get $0 local.get $0 @@ -6368,7 +8105,7 @@ f32.const 0 f32.div local.get $4 - br_if $__inlined_func$~lib/math/NativeMathf.log10$25 + br_if $__inlined_func$~lib/math/NativeMathf.log10$100 drop i32.const -25 local.set $6 @@ -6383,13 +8120,13 @@ i32.ge_u if local.get $0 - br $__inlined_func$~lib/math/NativeMathf.log10$25 + br $__inlined_func$~lib/math/NativeMathf.log10$100 else f32.const 0 local.get $3 i32.const 1065353216 i32.eq - br_if $__inlined_func$~lib/math/NativeMathf.log10$25 + br_if $__inlined_func$~lib/math/NativeMathf.log10$100 drop end end @@ -6653,7 +8390,7 @@ i32.const 4 i32.shl local.tee $2 - i32.const 7968 + i32.const 10336 i32.add local.set $10 local.get $3 @@ -6671,7 +8408,7 @@ i64.sub f64.reinterpret_i64 local.get $2 - i32.const 8992 + i32.const 11360 i32.add local.tee $2 f64.load @@ -6804,7 +8541,7 @@ i32.and i32.const 4 i32.shl - i32.const 10016 + i32.const 12384 i32.add local.set $7 local.get $3 @@ -6897,7 +8634,7 @@ (local $8 f64) (local $9 i64) (local $10 i64) - block $__inlined_func$~lib/math/NativeMath.mod$2 (result f64) + block $__inlined_func$~lib/math/NativeMath.mod$3 (result f64) local.get $0 local.get $0 f64.trunc @@ -6908,7 +8645,7 @@ f64.abs f64.const 1 f64.eq - br_if $__inlined_func$~lib/math/NativeMath.mod$2 + br_if $__inlined_func$~lib/math/NativeMath.mod$3 drop local.get $1 i64.reinterpret_f64 @@ -6945,7 +8682,7 @@ local.tee $8 local.get $8 f64.div - br $__inlined_func$~lib/math/NativeMath.mod$2 + br $__inlined_func$~lib/math/NativeMath.mod$3 end local.get $4 i64.const 1 @@ -6960,7 +8697,7 @@ i64.ne f64.convert_i32_u f64.mul - br $__inlined_func$~lib/math/NativeMath.mod$2 + br $__inlined_func$~lib/math/NativeMath.mod$3 end local.get $4 i64.const 63 @@ -7025,7 +8762,7 @@ local.get $3 local.get $4 i64.eq - br_if $__inlined_func$~lib/math/NativeMath.mod$2 + br_if $__inlined_func$~lib/math/NativeMath.mod$3 drop local.get $3 local.get $4 @@ -7053,7 +8790,7 @@ local.get $3 local.get $4 i64.eq - br_if $__inlined_func$~lib/math/NativeMath.mod$2 + br_if $__inlined_func$~lib/math/NativeMath.mod$3 drop local.get $3 local.get $4 @@ -7693,7 +9430,7 @@ i32.wrap_i64 i32.const 5 i32.shl - i32.const 10272 + i32.const 12640 i32.add local.tee $3 f64.load @@ -7872,7 +9609,7 @@ i32.wrap_i64 i32.const 3 i32.shl - i32.const 5664 + i32.const 8032 i32.add local.tee $18 i64.load offset=8 @@ -8348,7 +10085,7 @@ i32.and i32.const 4 i32.shl - i32.const 10016 + i32.const 12384 i32.add local.tee $2 f64.load @@ -8451,7 +10188,7 @@ i32.and i32.const 3 i32.shl - i32.const 7712 + i32.const 10080 i32.add i64.load local.get $5 @@ -9817,7 +11554,7 @@ i32.shr_s i32.const 3 i32.shl - i32.const 5632 + i32.const 8000 i32.add local.tee $7 i64.load offset=8 @@ -9995,7 +11732,7 @@ (local $4 i32) (local $5 i64) (local $6 f64) - block $__inlined_func$~lib/math/NativeMath.sinh$35 (result f64) + block $__inlined_func$~lib/math/NativeMath.sinh$110 (result f64) local.get $0 i64.reinterpret_f64 i64.const 9223372036854775807 @@ -10026,7 +11763,7 @@ local.get $4 i32.const 1045430272 i32.lt_u - br_if $__inlined_func$~lib/math/NativeMath.sinh$35 + br_if $__inlined_func$~lib/math/NativeMath.sinh$110 drop local.get $3 local.get $6 @@ -10041,7 +11778,7 @@ f64.div f64.sub f64.mul - br $__inlined_func$~lib/math/NativeMath.sinh$35 + br $__inlined_func$~lib/math/NativeMath.sinh$110 end local.get $3 local.get $6 @@ -10052,7 +11789,7 @@ f64.div f64.add f64.mul - br $__inlined_func$~lib/math/NativeMath.sinh$35 + br $__inlined_func$~lib/math/NativeMath.sinh$110 end local.get $6 f64.const -1416.0996898839683 @@ -10095,7 +11832,7 @@ local.get $0 f32.copysign local.set $3 - block $__inlined_func$~lib/math/NativeMathf.sinh$36 + block $__inlined_func$~lib/math/NativeMathf.sinh$111 local.get $4 i32.const 1118925335 i32.lt_u @@ -10110,7 +11847,7 @@ local.get $4 i32.const 964689920 i32.lt_u - br_if $__inlined_func$~lib/math/NativeMathf.sinh$36 + br_if $__inlined_func$~lib/math/NativeMathf.sinh$111 local.get $3 local.get $5 local.get $5 @@ -10125,7 +11862,7 @@ f32.sub f32.mul local.set $0 - br $__inlined_func$~lib/math/NativeMathf.sinh$36 + br $__inlined_func$~lib/math/NativeMathf.sinh$111 end local.get $3 local.get $5 @@ -10137,7 +11874,7 @@ f32.add f32.mul local.set $0 - br $__inlined_func$~lib/math/NativeMathf.sinh$36 + br $__inlined_func$~lib/math/NativeMathf.sinh$111 end local.get $5 f32.const -162.88958740234375 @@ -10782,7 +12519,7 @@ i32.shr_s i32.const 3 i32.shl - i32.const 5632 + i32.const 8000 i32.add local.tee $7 i64.load offset=8 @@ -11947,6 +13684,38 @@ (local $4 f32) (local $5 i64) (local $6 i32) + memory.size + i32.const 16 + i32.shl + i32.const 49524 + 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 f64.const 2.718281828459045 global.get $~lib/bindings/dom/Math.E f64.const 0 @@ -11954,7 +13723,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 111 i32.const 1 call $~lib/builtins/abort @@ -11967,7 +13736,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 112 i32.const 1 call $~lib/builtins/abort @@ -11980,7 +13749,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 113 i32.const 1 call $~lib/builtins/abort @@ -11993,7 +13762,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 114 i32.const 1 call $~lib/builtins/abort @@ -12006,7 +13775,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 115 i32.const 1 call $~lib/builtins/abort @@ -12019,7 +13788,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 116 i32.const 1 call $~lib/builtins/abort @@ -12032,7 +13801,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 117 i32.const 1 call $~lib/builtins/abort @@ -12046,7 +13815,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 119 i32.const 1 call $~lib/builtins/abort @@ -12060,7 +13829,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 120 i32.const 1 call $~lib/builtins/abort @@ -12074,7 +13843,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 121 i32.const 1 call $~lib/builtins/abort @@ -12088,7 +13857,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 122 i32.const 1 call $~lib/builtins/abort @@ -12102,7 +13871,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 123 i32.const 1 call $~lib/builtins/abort @@ -12116,7 +13885,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 124 i32.const 1 call $~lib/builtins/abort @@ -12130,7 +13899,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 125 i32.const 1 call $~lib/builtins/abort @@ -12145,7 +13914,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 136 i32.const 1 call $~lib/builtins/abort @@ -12160,7 +13929,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 137 i32.const 1 call $~lib/builtins/abort @@ -12175,7 +13944,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 138 i32.const 1 call $~lib/builtins/abort @@ -12190,7 +13959,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 139 i32.const 1 call $~lib/builtins/abort @@ -12205,7 +13974,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 140 i32.const 1 call $~lib/builtins/abort @@ -12220,7 +13989,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 141 i32.const 1 call $~lib/builtins/abort @@ -12235,7 +14004,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 142 i32.const 1 call $~lib/builtins/abort @@ -12250,7 +14019,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 143 i32.const 1 call $~lib/builtins/abort @@ -12265,7 +14034,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 144 i32.const 1 call $~lib/builtins/abort @@ -12280,7 +14049,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 145 i32.const 1 call $~lib/builtins/abort @@ -12295,7 +14064,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 148 i32.const 1 call $~lib/builtins/abort @@ -12310,7 +14079,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 149 i32.const 1 call $~lib/builtins/abort @@ -12325,7 +14094,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 150 i32.const 1 call $~lib/builtins/abort @@ -12340,7 +14109,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 151 i32.const 1 call $~lib/builtins/abort @@ -12355,7 +14124,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 152 i32.const 1 call $~lib/builtins/abort @@ -12370,7 +14139,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 153 i32.const 1 call $~lib/builtins/abort @@ -12385,7 +14154,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 154 i32.const 1 call $~lib/builtins/abort @@ -12400,7 +14169,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 155 i32.const 1 call $~lib/builtins/abort @@ -12415,7 +14184,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 156 i32.const 1 call $~lib/builtins/abort @@ -12430,7 +14199,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 157 i32.const 1 call $~lib/builtins/abort @@ -12445,7 +14214,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 158 i32.const 1 call $~lib/builtins/abort @@ -12460,7 +14229,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 159 i32.const 1 call $~lib/builtins/abort @@ -12475,7 +14244,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 160 i32.const 1 call $~lib/builtins/abort @@ -12490,7 +14259,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 161 i32.const 1 call $~lib/builtins/abort @@ -12505,7 +14274,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 162 i32.const 1 call $~lib/builtins/abort @@ -12520,7 +14289,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 163 i32.const 1 call $~lib/builtins/abort @@ -12535,7 +14304,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 164 i32.const 1 call $~lib/builtins/abort @@ -12550,7 +14319,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 165 i32.const 1 call $~lib/builtins/abort @@ -12565,7 +14334,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 166 i32.const 1 call $~lib/builtins/abort @@ -12578,7 +14347,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 175 i32.const 1 call $~lib/builtins/abort @@ -12591,7 +14360,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 176 i32.const 1 call $~lib/builtins/abort @@ -12604,7 +14373,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 177 i32.const 1 call $~lib/builtins/abort @@ -12617,7 +14386,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 178 i32.const 1 call $~lib/builtins/abort @@ -12630,7 +14399,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 179 i32.const 1 call $~lib/builtins/abort @@ -12643,7 +14412,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 180 i32.const 1 call $~lib/builtins/abort @@ -12656,7 +14425,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 181 i32.const 1 call $~lib/builtins/abort @@ -12669,7 +14438,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 182 i32.const 1 call $~lib/builtins/abort @@ -12682,7 +14451,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 183 i32.const 1 call $~lib/builtins/abort @@ -12695,7 +14464,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 184 i32.const 1 call $~lib/builtins/abort @@ -12708,7 +14477,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 187 i32.const 1 call $~lib/builtins/abort @@ -12721,7 +14490,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 188 i32.const 1 call $~lib/builtins/abort @@ -12734,7 +14503,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 189 i32.const 1 call $~lib/builtins/abort @@ -12747,7 +14516,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 190 i32.const 1 call $~lib/builtins/abort @@ -12760,7 +14529,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 191 i32.const 1 call $~lib/builtins/abort @@ -12773,7 +14542,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 192 i32.const 1 call $~lib/builtins/abort @@ -12786,7 +14555,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 193 i32.const 1 call $~lib/builtins/abort @@ -12799,7 +14568,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 194 i32.const 1 call $~lib/builtins/abort @@ -12812,7 +14581,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 195 i32.const 1 call $~lib/builtins/abort @@ -12825,7 +14594,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 196 i32.const 1 call $~lib/builtins/abort @@ -12838,7 +14607,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 197 i32.const 1 call $~lib/builtins/abort @@ -12851,7 +14620,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 198 i32.const 1 call $~lib/builtins/abort @@ -12864,7 +14633,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 199 i32.const 1 call $~lib/builtins/abort @@ -12877,7 +14646,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 200 i32.const 1 call $~lib/builtins/abort @@ -12890,7 +14659,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 201 i32.const 1 call $~lib/builtins/abort @@ -12903,7 +14672,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 202 i32.const 1 call $~lib/builtins/abort @@ -12916,7 +14685,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 203 i32.const 1 call $~lib/builtins/abort @@ -12929,7 +14698,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 204 i32.const 1 call $~lib/builtins/abort @@ -12942,7 +14711,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 205 i32.const 1 call $~lib/builtins/abort @@ -12964,7 +14733,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 217 i32.const 1 call $~lib/builtins/abort @@ -12986,7 +14755,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 218 i32.const 1 call $~lib/builtins/abort @@ -13008,7 +14777,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 219 i32.const 1 call $~lib/builtins/abort @@ -13030,7 +14799,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 220 i32.const 1 call $~lib/builtins/abort @@ -13052,7 +14821,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 221 i32.const 1 call $~lib/builtins/abort @@ -13074,7 +14843,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 222 i32.const 1 call $~lib/builtins/abort @@ -13096,7 +14865,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 223 i32.const 1 call $~lib/builtins/abort @@ -13118,7 +14887,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 224 i32.const 1 call $~lib/builtins/abort @@ -13140,7 +14909,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 225 i32.const 1 call $~lib/builtins/abort @@ -13162,7 +14931,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 226 i32.const 1 call $~lib/builtins/abort @@ -13184,7 +14953,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 229 i32.const 1 call $~lib/builtins/abort @@ -13206,7 +14975,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 230 i32.const 1 call $~lib/builtins/abort @@ -13228,7 +14997,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 231 i32.const 1 call $~lib/builtins/abort @@ -13250,7 +15019,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 232 i32.const 1 call $~lib/builtins/abort @@ -13272,7 +15041,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 233 i32.const 1 call $~lib/builtins/abort @@ -13294,7 +15063,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 234 i32.const 1 call $~lib/builtins/abort @@ -13316,7 +15085,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 235 i32.const 1 call $~lib/builtins/abort @@ -13329,7 +15098,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 244 i32.const 1 call $~lib/builtins/abort @@ -13342,7 +15111,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 245 i32.const 1 call $~lib/builtins/abort @@ -13355,7 +15124,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 246 i32.const 1 call $~lib/builtins/abort @@ -13368,7 +15137,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 247 i32.const 1 call $~lib/builtins/abort @@ -13381,7 +15150,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 248 i32.const 1 call $~lib/builtins/abort @@ -13394,7 +15163,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 249 i32.const 1 call $~lib/builtins/abort @@ -13407,7 +15176,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 250 i32.const 1 call $~lib/builtins/abort @@ -13420,7 +15189,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 251 i32.const 1 call $~lib/builtins/abort @@ -13433,7 +15202,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 252 i32.const 1 call $~lib/builtins/abort @@ -13446,7 +15215,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 253 i32.const 1 call $~lib/builtins/abort @@ -13459,7 +15228,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 256 i32.const 1 call $~lib/builtins/abort @@ -13472,7 +15241,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 257 i32.const 1 call $~lib/builtins/abort @@ -13485,7 +15254,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 258 i32.const 1 call $~lib/builtins/abort @@ -13498,7 +15267,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 259 i32.const 1 call $~lib/builtins/abort @@ -13511,7 +15280,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 260 i32.const 1 call $~lib/builtins/abort @@ -13524,7 +15293,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 261 i32.const 1 call $~lib/builtins/abort @@ -13537,7 +15306,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 262 i32.const 1 call $~lib/builtins/abort @@ -13560,7 +15329,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 274 i32.const 1 call $~lib/builtins/abort @@ -13583,7 +15352,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 275 i32.const 1 call $~lib/builtins/abort @@ -13606,7 +15375,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 276 i32.const 1 call $~lib/builtins/abort @@ -13629,7 +15398,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 277 i32.const 1 call $~lib/builtins/abort @@ -13652,7 +15421,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 278 i32.const 1 call $~lib/builtins/abort @@ -13675,7 +15444,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 279 i32.const 1 call $~lib/builtins/abort @@ -13698,7 +15467,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 280 i32.const 1 call $~lib/builtins/abort @@ -13721,7 +15490,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 281 i32.const 1 call $~lib/builtins/abort @@ -13744,7 +15513,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 282 i32.const 1 call $~lib/builtins/abort @@ -13767,7 +15536,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 283 i32.const 1 call $~lib/builtins/abort @@ -13790,7 +15559,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 286 i32.const 1 call $~lib/builtins/abort @@ -13813,7 +15582,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 287 i32.const 1 call $~lib/builtins/abort @@ -13836,7 +15605,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 288 i32.const 1 call $~lib/builtins/abort @@ -13859,7 +15628,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 289 i32.const 1 call $~lib/builtins/abort @@ -13882,7 +15651,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 290 i32.const 1 call $~lib/builtins/abort @@ -13905,7 +15674,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 291 i32.const 1 call $~lib/builtins/abort @@ -13928,7 +15697,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 292 i32.const 1 call $~lib/builtins/abort @@ -13951,7 +15720,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 293 i32.const 1 call $~lib/builtins/abort @@ -13974,7 +15743,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 294 i32.const 1 call $~lib/builtins/abort @@ -13997,7 +15766,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 295 i32.const 1 call $~lib/builtins/abort @@ -14011,7 +15780,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 304 i32.const 1 call $~lib/builtins/abort @@ -14025,7 +15794,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 305 i32.const 1 call $~lib/builtins/abort @@ -14039,7 +15808,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 306 i32.const 1 call $~lib/builtins/abort @@ -14053,7 +15822,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 307 i32.const 1 call $~lib/builtins/abort @@ -14067,7 +15836,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 308 i32.const 1 call $~lib/builtins/abort @@ -14081,7 +15850,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 309 i32.const 1 call $~lib/builtins/abort @@ -14095,7 +15864,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 310 i32.const 1 call $~lib/builtins/abort @@ -14109,7 +15878,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 311 i32.const 1 call $~lib/builtins/abort @@ -14123,7 +15892,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 312 i32.const 1 call $~lib/builtins/abort @@ -14137,7 +15906,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 313 i32.const 1 call $~lib/builtins/abort @@ -14151,7 +15920,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 316 i32.const 1 call $~lib/builtins/abort @@ -14165,7 +15934,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 317 i32.const 1 call $~lib/builtins/abort @@ -14179,7 +15948,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 318 i32.const 1 call $~lib/builtins/abort @@ -14193,7 +15962,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 319 i32.const 1 call $~lib/builtins/abort @@ -14207,7 +15976,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 320 i32.const 1 call $~lib/builtins/abort @@ -14221,7 +15990,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 321 i32.const 1 call $~lib/builtins/abort @@ -14235,7 +16004,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 322 i32.const 1 call $~lib/builtins/abort @@ -14249,7 +16018,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 323 i32.const 1 call $~lib/builtins/abort @@ -14263,7 +16032,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 324 i32.const 1 call $~lib/builtins/abort @@ -14277,7 +16046,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 325 i32.const 1 call $~lib/builtins/abort @@ -14291,7 +16060,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 326 i32.const 1 call $~lib/builtins/abort @@ -14304,7 +16073,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 338 i32.const 1 call $~lib/builtins/abort @@ -14317,7 +16086,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 339 i32.const 1 call $~lib/builtins/abort @@ -14330,7 +16099,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 340 i32.const 1 call $~lib/builtins/abort @@ -14343,7 +16112,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 341 i32.const 1 call $~lib/builtins/abort @@ -14356,7 +16125,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 342 i32.const 1 call $~lib/builtins/abort @@ -14369,7 +16138,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 343 i32.const 1 call $~lib/builtins/abort @@ -14382,7 +16151,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 344 i32.const 1 call $~lib/builtins/abort @@ -14395,7 +16164,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 345 i32.const 1 call $~lib/builtins/abort @@ -14408,7 +16177,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 346 i32.const 1 call $~lib/builtins/abort @@ -14421,7 +16190,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 347 i32.const 1 call $~lib/builtins/abort @@ -14434,7 +16203,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 350 i32.const 1 call $~lib/builtins/abort @@ -14447,7 +16216,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 351 i32.const 1 call $~lib/builtins/abort @@ -14460,7 +16229,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 352 i32.const 1 call $~lib/builtins/abort @@ -14473,7 +16242,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 353 i32.const 1 call $~lib/builtins/abort @@ -14486,7 +16255,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 354 i32.const 1 call $~lib/builtins/abort @@ -14499,7 +16268,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 355 i32.const 1 call $~lib/builtins/abort @@ -14512,7 +16281,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 356 i32.const 1 call $~lib/builtins/abort @@ -14525,7 +16294,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 357 i32.const 1 call $~lib/builtins/abort @@ -14538,7 +16307,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 373 i32.const 1 call $~lib/builtins/abort @@ -14551,7 +16320,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 375 i32.const 1 call $~lib/builtins/abort @@ -14564,7 +16333,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 376 i32.const 1 call $~lib/builtins/abort @@ -14577,7 +16346,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 385 i32.const 1 call $~lib/builtins/abort @@ -14590,7 +16359,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 386 i32.const 1 call $~lib/builtins/abort @@ -14603,7 +16372,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 387 i32.const 1 call $~lib/builtins/abort @@ -14616,7 +16385,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 388 i32.const 1 call $~lib/builtins/abort @@ -14629,7 +16398,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 389 i32.const 1 call $~lib/builtins/abort @@ -14642,7 +16411,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 390 i32.const 1 call $~lib/builtins/abort @@ -14655,7 +16424,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 391 i32.const 1 call $~lib/builtins/abort @@ -14668,7 +16437,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 392 i32.const 1 call $~lib/builtins/abort @@ -14681,7 +16450,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 393 i32.const 1 call $~lib/builtins/abort @@ -14694,7 +16463,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 394 i32.const 1 call $~lib/builtins/abort @@ -14707,7 +16476,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 397 i32.const 1 call $~lib/builtins/abort @@ -14720,7 +16489,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 398 i32.const 1 call $~lib/builtins/abort @@ -14733,7 +16502,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 399 i32.const 1 call $~lib/builtins/abort @@ -14746,7 +16515,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 400 i32.const 1 call $~lib/builtins/abort @@ -14759,7 +16528,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 401 i32.const 1 call $~lib/builtins/abort @@ -14772,7 +16541,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 402 i32.const 1 call $~lib/builtins/abort @@ -14785,7 +16554,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 403 i32.const 1 call $~lib/builtins/abort @@ -14798,7 +16567,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 404 i32.const 1 call $~lib/builtins/abort @@ -14821,7 +16590,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 416 i32.const 1 call $~lib/builtins/abort @@ -14844,7 +16613,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 417 i32.const 1 call $~lib/builtins/abort @@ -14867,7 +16636,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 418 i32.const 1 call $~lib/builtins/abort @@ -14890,7 +16659,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 419 i32.const 1 call $~lib/builtins/abort @@ -14913,7 +16682,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 420 i32.const 1 call $~lib/builtins/abort @@ -14936,7 +16705,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 421 i32.const 1 call $~lib/builtins/abort @@ -14959,7 +16728,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 422 i32.const 1 call $~lib/builtins/abort @@ -14982,7 +16751,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 423 i32.const 1 call $~lib/builtins/abort @@ -15005,7 +16774,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 424 i32.const 1 call $~lib/builtins/abort @@ -15028,7 +16797,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 425 i32.const 1 call $~lib/builtins/abort @@ -15051,7 +16820,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 428 i32.const 1 call $~lib/builtins/abort @@ -15074,7 +16843,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 429 i32.const 1 call $~lib/builtins/abort @@ -15097,7 +16866,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 430 i32.const 1 call $~lib/builtins/abort @@ -15120,7 +16889,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 431 i32.const 1 call $~lib/builtins/abort @@ -15143,7 +16912,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 432 i32.const 1 call $~lib/builtins/abort @@ -15166,7 +16935,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 433 i32.const 1 call $~lib/builtins/abort @@ -15189,7 +16958,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 434 i32.const 1 call $~lib/builtins/abort @@ -15212,7 +16981,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 435 i32.const 1 call $~lib/builtins/abort @@ -15235,7 +17004,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 436 i32.const 1 call $~lib/builtins/abort @@ -15258,7 +17027,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 437 i32.const 1 call $~lib/builtins/abort @@ -15272,7 +17041,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 446 i32.const 1 call $~lib/builtins/abort @@ -15286,7 +17055,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 447 i32.const 1 call $~lib/builtins/abort @@ -15300,7 +17069,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 448 i32.const 1 call $~lib/builtins/abort @@ -15314,7 +17083,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 449 i32.const 1 call $~lib/builtins/abort @@ -15328,7 +17097,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 450 i32.const 1 call $~lib/builtins/abort @@ -15342,7 +17111,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 451 i32.const 1 call $~lib/builtins/abort @@ -15356,7 +17125,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 452 i32.const 1 call $~lib/builtins/abort @@ -15370,7 +17139,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 453 i32.const 1 call $~lib/builtins/abort @@ -15384,7 +17153,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 454 i32.const 1 call $~lib/builtins/abort @@ -15398,7 +17167,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 455 i32.const 1 call $~lib/builtins/abort @@ -15412,7 +17181,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 458 i32.const 1 call $~lib/builtins/abort @@ -15426,7 +17195,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 459 i32.const 1 call $~lib/builtins/abort @@ -15440,7 +17209,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 460 i32.const 1 call $~lib/builtins/abort @@ -15454,7 +17223,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 461 i32.const 1 call $~lib/builtins/abort @@ -15468,7 +17237,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 462 i32.const 1 call $~lib/builtins/abort @@ -15482,7 +17251,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 463 i32.const 1 call $~lib/builtins/abort @@ -15496,7 +17265,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 464 i32.const 1 call $~lib/builtins/abort @@ -15510,7 +17279,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 465 i32.const 1 call $~lib/builtins/abort @@ -15524,7 +17293,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 466 i32.const 1 call $~lib/builtins/abort @@ -15538,7 +17307,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 467 i32.const 1 call $~lib/builtins/abort @@ -15551,7 +17320,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 479 i32.const 1 call $~lib/builtins/abort @@ -15564,7 +17333,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 480 i32.const 1 call $~lib/builtins/abort @@ -15577,7 +17346,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 481 i32.const 1 call $~lib/builtins/abort @@ -15590,7 +17359,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 482 i32.const 1 call $~lib/builtins/abort @@ -15603,7 +17372,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 483 i32.const 1 call $~lib/builtins/abort @@ -15616,7 +17385,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 484 i32.const 1 call $~lib/builtins/abort @@ -15629,7 +17398,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 485 i32.const 1 call $~lib/builtins/abort @@ -15642,7 +17411,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 486 i32.const 1 call $~lib/builtins/abort @@ -15655,7 +17424,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 487 i32.const 1 call $~lib/builtins/abort @@ -15668,7 +17437,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 488 i32.const 1 call $~lib/builtins/abort @@ -15681,7 +17450,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 491 i32.const 1 call $~lib/builtins/abort @@ -15694,7 +17463,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 492 i32.const 1 call $~lib/builtins/abort @@ -15707,7 +17476,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 493 i32.const 1 call $~lib/builtins/abort @@ -15720,7 +17489,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 494 i32.const 1 call $~lib/builtins/abort @@ -15733,7 +17502,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 495 i32.const 1 call $~lib/builtins/abort @@ -15746,7 +17515,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 524 i32.const 1 call $~lib/builtins/abort @@ -15759,7 +17528,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 525 i32.const 1 call $~lib/builtins/abort @@ -15772,7 +17541,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 526 i32.const 1 call $~lib/builtins/abort @@ -15785,7 +17554,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 527 i32.const 1 call $~lib/builtins/abort @@ -15798,7 +17567,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 528 i32.const 1 call $~lib/builtins/abort @@ -15811,7 +17580,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 529 i32.const 1 call $~lib/builtins/abort @@ -15824,7 +17593,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 530 i32.const 1 call $~lib/builtins/abort @@ -15837,7 +17606,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 531 i32.const 1 call $~lib/builtins/abort @@ -15850,7 +17619,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 532 i32.const 1 call $~lib/builtins/abort @@ -15863,7 +17632,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 533 i32.const 1 call $~lib/builtins/abort @@ -15876,7 +17645,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 536 i32.const 1 call $~lib/builtins/abort @@ -15889,7 +17658,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 537 i32.const 1 call $~lib/builtins/abort @@ -15902,7 +17671,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 538 i32.const 1 call $~lib/builtins/abort @@ -15915,7 +17684,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 539 i32.const 1 call $~lib/builtins/abort @@ -15928,7 +17697,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 540 i32.const 1 call $~lib/builtins/abort @@ -15951,7 +17720,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 552 i32.const 1 call $~lib/builtins/abort @@ -15974,7 +17743,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 553 i32.const 1 call $~lib/builtins/abort @@ -15997,7 +17766,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 554 i32.const 1 call $~lib/builtins/abort @@ -16020,7 +17789,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 555 i32.const 1 call $~lib/builtins/abort @@ -16043,7 +17812,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 556 i32.const 1 call $~lib/builtins/abort @@ -16066,7 +17835,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 557 i32.const 1 call $~lib/builtins/abort @@ -16089,7 +17858,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 558 i32.const 1 call $~lib/builtins/abort @@ -16112,7 +17881,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 559 i32.const 1 call $~lib/builtins/abort @@ -16135,7 +17904,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 560 i32.const 1 call $~lib/builtins/abort @@ -16158,7 +17927,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 561 i32.const 1 call $~lib/builtins/abort @@ -16181,7 +17950,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 564 i32.const 1 call $~lib/builtins/abort @@ -16204,7 +17973,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 565 i32.const 1 call $~lib/builtins/abort @@ -16227,7 +17996,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 566 i32.const 1 call $~lib/builtins/abort @@ -16250,7 +18019,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 567 i32.const 1 call $~lib/builtins/abort @@ -16273,7 +18042,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 568 i32.const 1 call $~lib/builtins/abort @@ -16296,7 +18065,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 569 i32.const 1 call $~lib/builtins/abort @@ -16319,7 +18088,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 570 i32.const 1 call $~lib/builtins/abort @@ -16342,7 +18111,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 571 i32.const 1 call $~lib/builtins/abort @@ -16356,7 +18125,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 580 i32.const 1 call $~lib/builtins/abort @@ -16370,7 +18139,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 581 i32.const 1 call $~lib/builtins/abort @@ -16384,7 +18153,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 582 i32.const 1 call $~lib/builtins/abort @@ -16398,7 +18167,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 583 i32.const 1 call $~lib/builtins/abort @@ -16412,7 +18181,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 584 i32.const 1 call $~lib/builtins/abort @@ -16426,7 +18195,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 585 i32.const 1 call $~lib/builtins/abort @@ -16440,7 +18209,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 586 i32.const 1 call $~lib/builtins/abort @@ -16454,7 +18223,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 587 i32.const 1 call $~lib/builtins/abort @@ -16468,7 +18237,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 588 i32.const 1 call $~lib/builtins/abort @@ -16482,7 +18251,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 589 i32.const 1 call $~lib/builtins/abort @@ -16496,7 +18265,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 592 i32.const 1 call $~lib/builtins/abort @@ -16510,7 +18279,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 593 i32.const 1 call $~lib/builtins/abort @@ -16524,7 +18293,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 594 i32.const 1 call $~lib/builtins/abort @@ -16538,7 +18307,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 595 i32.const 1 call $~lib/builtins/abort @@ -16552,7 +18321,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 596 i32.const 1 call $~lib/builtins/abort @@ -16566,7 +18335,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 597 i32.const 1 call $~lib/builtins/abort @@ -16580,7 +18349,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 598 i32.const 1 call $~lib/builtins/abort @@ -16593,7 +18362,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 610 i32.const 1 call $~lib/builtins/abort @@ -16606,7 +18375,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 611 i32.const 1 call $~lib/builtins/abort @@ -16619,7 +18388,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 612 i32.const 1 call $~lib/builtins/abort @@ -16632,7 +18401,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 613 i32.const 1 call $~lib/builtins/abort @@ -16645,7 +18414,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 614 i32.const 1 call $~lib/builtins/abort @@ -16658,7 +18427,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 615 i32.const 1 call $~lib/builtins/abort @@ -16671,7 +18440,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 616 i32.const 1 call $~lib/builtins/abort @@ -16684,7 +18453,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 617 i32.const 1 call $~lib/builtins/abort @@ -16697,7 +18466,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 618 i32.const 1 call $~lib/builtins/abort @@ -16710,7 +18479,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 619 i32.const 1 call $~lib/builtins/abort @@ -16723,7 +18492,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 622 i32.const 1 call $~lib/builtins/abort @@ -16736,7 +18505,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 623 i32.const 1 call $~lib/builtins/abort @@ -16749,7 +18518,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 624 i32.const 1 call $~lib/builtins/abort @@ -16762,7 +18531,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 625 i32.const 1 call $~lib/builtins/abort @@ -16775,7 +18544,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 626 i32.const 1 call $~lib/builtins/abort @@ -16788,7 +18557,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 627 i32.const 1 call $~lib/builtins/abort @@ -16801,7 +18570,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 628 i32.const 1 call $~lib/builtins/abort @@ -16814,7 +18583,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 629 i32.const 1 call $~lib/builtins/abort @@ -16827,7 +18596,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 630 i32.const 1 call $~lib/builtins/abort @@ -16840,7 +18609,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 631 i32.const 1 call $~lib/builtins/abort @@ -16853,7 +18622,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 632 i32.const 1 call $~lib/builtins/abort @@ -16866,7 +18635,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 633 i32.const 1 call $~lib/builtins/abort @@ -16879,7 +18648,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 634 i32.const 1 call $~lib/builtins/abort @@ -16892,7 +18661,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 635 i32.const 1 call $~lib/builtins/abort @@ -16905,7 +18674,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 644 i32.const 1 call $~lib/builtins/abort @@ -16918,7 +18687,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 645 i32.const 1 call $~lib/builtins/abort @@ -16931,7 +18700,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 646 i32.const 1 call $~lib/builtins/abort @@ -16944,7 +18713,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 647 i32.const 1 call $~lib/builtins/abort @@ -16957,7 +18726,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 648 i32.const 1 call $~lib/builtins/abort @@ -16970,7 +18739,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 649 i32.const 1 call $~lib/builtins/abort @@ -16983,7 +18752,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 650 i32.const 1 call $~lib/builtins/abort @@ -16996,7 +18765,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 651 i32.const 1 call $~lib/builtins/abort @@ -17009,7 +18778,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 652 i32.const 1 call $~lib/builtins/abort @@ -17022,7 +18791,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 653 i32.const 1 call $~lib/builtins/abort @@ -17035,7 +18804,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 656 i32.const 1 call $~lib/builtins/abort @@ -17048,7 +18817,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 657 i32.const 1 call $~lib/builtins/abort @@ -17061,7 +18830,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 658 i32.const 1 call $~lib/builtins/abort @@ -17074,7 +18843,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 659 i32.const 1 call $~lib/builtins/abort @@ -17087,7 +18856,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 660 i32.const 1 call $~lib/builtins/abort @@ -17100,7 +18869,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 661 i32.const 1 call $~lib/builtins/abort @@ -17113,7 +18882,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 662 i32.const 1 call $~lib/builtins/abort @@ -17126,7 +18895,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 663 i32.const 1 call $~lib/builtins/abort @@ -17139,7 +18908,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 664 i32.const 1 call $~lib/builtins/abort @@ -17152,7 +18921,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 665 i32.const 1 call $~lib/builtins/abort @@ -17165,7 +18934,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 666 i32.const 1 call $~lib/builtins/abort @@ -17178,7 +18947,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 667 i32.const 1 call $~lib/builtins/abort @@ -17191,7 +18960,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 668 i32.const 1 call $~lib/builtins/abort @@ -17204,7 +18973,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 669 i32.const 1 call $~lib/builtins/abort @@ -17218,7 +18987,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 681 i32.const 1 call $~lib/builtins/abort @@ -17232,7 +19001,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 682 i32.const 1 call $~lib/builtins/abort @@ -17246,7 +19015,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 683 i32.const 1 call $~lib/builtins/abort @@ -17260,7 +19029,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 684 i32.const 1 call $~lib/builtins/abort @@ -17274,7 +19043,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 685 i32.const 1 call $~lib/builtins/abort @@ -17288,7 +19057,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 686 i32.const 1 call $~lib/builtins/abort @@ -17302,7 +19071,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 687 i32.const 1 call $~lib/builtins/abort @@ -17316,7 +19085,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 688 i32.const 1 call $~lib/builtins/abort @@ -17330,7 +19099,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 689 i32.const 1 call $~lib/builtins/abort @@ -17344,7 +19113,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 690 i32.const 1 call $~lib/builtins/abort @@ -17358,7 +19127,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 693 i32.const 1 call $~lib/builtins/abort @@ -17372,7 +19141,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 694 i32.const 1 call $~lib/builtins/abort @@ -17386,7 +19155,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 695 i32.const 1 call $~lib/builtins/abort @@ -17400,7 +19169,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 696 i32.const 1 call $~lib/builtins/abort @@ -17414,7 +19183,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 697 i32.const 1 call $~lib/builtins/abort @@ -17428,7 +19197,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 698 i32.const 1 call $~lib/builtins/abort @@ -17442,7 +19211,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 699 i32.const 1 call $~lib/builtins/abort @@ -17456,7 +19225,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 700 i32.const 1 call $~lib/builtins/abort @@ -17470,7 +19239,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 701 i32.const 1 call $~lib/builtins/abort @@ -17484,7 +19253,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 702 i32.const 1 call $~lib/builtins/abort @@ -17498,7 +19267,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 703 i32.const 1 call $~lib/builtins/abort @@ -17512,7 +19281,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 704 i32.const 1 call $~lib/builtins/abort @@ -17526,7 +19295,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 705 i32.const 1 call $~lib/builtins/abort @@ -17540,7 +19309,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 706 i32.const 1 call $~lib/builtins/abort @@ -17554,7 +19323,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 707 i32.const 1 call $~lib/builtins/abort @@ -17568,7 +19337,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 708 i32.const 1 call $~lib/builtins/abort @@ -17582,7 +19351,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 709 i32.const 1 call $~lib/builtins/abort @@ -17596,7 +19365,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 710 i32.const 1 call $~lib/builtins/abort @@ -17610,7 +19379,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 711 i32.const 1 call $~lib/builtins/abort @@ -17624,7 +19393,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 712 i32.const 1 call $~lib/builtins/abort @@ -17638,7 +19407,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 713 i32.const 1 call $~lib/builtins/abort @@ -17652,7 +19421,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 714 i32.const 1 call $~lib/builtins/abort @@ -17666,7 +19435,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 715 i32.const 1 call $~lib/builtins/abort @@ -17680,7 +19449,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 716 i32.const 1 call $~lib/builtins/abort @@ -17694,7 +19463,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 717 i32.const 1 call $~lib/builtins/abort @@ -17708,7 +19477,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 718 i32.const 1 call $~lib/builtins/abort @@ -17722,7 +19491,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 719 i32.const 1 call $~lib/builtins/abort @@ -17736,7 +19505,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 720 i32.const 1 call $~lib/builtins/abort @@ -17750,7 +19519,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 721 i32.const 1 call $~lib/builtins/abort @@ -17764,7 +19533,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 722 i32.const 1 call $~lib/builtins/abort @@ -17779,7 +19548,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 731 i32.const 1 call $~lib/builtins/abort @@ -17794,7 +19563,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 732 i32.const 1 call $~lib/builtins/abort @@ -17809,7 +19578,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 733 i32.const 1 call $~lib/builtins/abort @@ -17824,7 +19593,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 734 i32.const 1 call $~lib/builtins/abort @@ -17839,7 +19608,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 735 i32.const 1 call $~lib/builtins/abort @@ -17854,7 +19623,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 736 i32.const 1 call $~lib/builtins/abort @@ -17869,7 +19638,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 737 i32.const 1 call $~lib/builtins/abort @@ -17884,7 +19653,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 738 i32.const 1 call $~lib/builtins/abort @@ -17899,7 +19668,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 739 i32.const 1 call $~lib/builtins/abort @@ -17914,7 +19683,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 740 i32.const 1 call $~lib/builtins/abort @@ -17929,7 +19698,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 743 i32.const 1 call $~lib/builtins/abort @@ -17944,7 +19713,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 744 i32.const 1 call $~lib/builtins/abort @@ -17959,7 +19728,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 745 i32.const 1 call $~lib/builtins/abort @@ -17974,7 +19743,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 746 i32.const 1 call $~lib/builtins/abort @@ -17989,7 +19758,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 747 i32.const 1 call $~lib/builtins/abort @@ -18004,7 +19773,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 748 i32.const 1 call $~lib/builtins/abort @@ -18019,7 +19788,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 749 i32.const 1 call $~lib/builtins/abort @@ -18034,7 +19803,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 750 i32.const 1 call $~lib/builtins/abort @@ -18049,7 +19818,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 751 i32.const 1 call $~lib/builtins/abort @@ -18064,7 +19833,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 752 i32.const 1 call $~lib/builtins/abort @@ -18079,7 +19848,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 753 i32.const 1 call $~lib/builtins/abort @@ -18094,7 +19863,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 754 i32.const 1 call $~lib/builtins/abort @@ -18109,7 +19878,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 755 i32.const 1 call $~lib/builtins/abort @@ -18124,7 +19893,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 756 i32.const 1 call $~lib/builtins/abort @@ -18139,7 +19908,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 757 i32.const 1 call $~lib/builtins/abort @@ -18154,7 +19923,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 758 i32.const 1 call $~lib/builtins/abort @@ -18169,7 +19938,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 759 i32.const 1 call $~lib/builtins/abort @@ -18184,7 +19953,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 760 i32.const 1 call $~lib/builtins/abort @@ -18199,7 +19968,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 761 i32.const 1 call $~lib/builtins/abort @@ -18214,7 +19983,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 762 i32.const 1 call $~lib/builtins/abort @@ -18229,7 +19998,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 763 i32.const 1 call $~lib/builtins/abort @@ -18244,7 +20013,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 764 i32.const 1 call $~lib/builtins/abort @@ -18259,7 +20028,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 765 i32.const 1 call $~lib/builtins/abort @@ -18274,7 +20043,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 766 i32.const 1 call $~lib/builtins/abort @@ -18289,7 +20058,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 767 i32.const 1 call $~lib/builtins/abort @@ -18304,7 +20073,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 768 i32.const 1 call $~lib/builtins/abort @@ -18319,7 +20088,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 769 i32.const 1 call $~lib/builtins/abort @@ -18334,7 +20103,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 770 i32.const 1 call $~lib/builtins/abort @@ -18347,7 +20116,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 782 i32.const 1 call $~lib/builtins/abort @@ -18360,7 +20129,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 783 i32.const 1 call $~lib/builtins/abort @@ -18373,7 +20142,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 784 i32.const 1 call $~lib/builtins/abort @@ -18386,7 +20155,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 785 i32.const 1 call $~lib/builtins/abort @@ -18399,7 +20168,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 786 i32.const 1 call $~lib/builtins/abort @@ -18412,7 +20181,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 787 i32.const 1 call $~lib/builtins/abort @@ -18425,7 +20194,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 788 i32.const 1 call $~lib/builtins/abort @@ -18438,7 +20207,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 789 i32.const 1 call $~lib/builtins/abort @@ -18451,7 +20220,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 790 i32.const 1 call $~lib/builtins/abort @@ -18464,7 +20233,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 791 i32.const 1 call $~lib/builtins/abort @@ -18477,7 +20246,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 794 i32.const 1 call $~lib/builtins/abort @@ -18490,7 +20259,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 795 i32.const 1 call $~lib/builtins/abort @@ -18503,7 +20272,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 796 i32.const 1 call $~lib/builtins/abort @@ -18516,7 +20285,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 797 i32.const 1 call $~lib/builtins/abort @@ -18529,7 +20298,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 798 i32.const 1 call $~lib/builtins/abort @@ -18542,7 +20311,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 799 i32.const 1 call $~lib/builtins/abort @@ -18555,7 +20324,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 800 i32.const 1 call $~lib/builtins/abort @@ -18568,7 +20337,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 801 i32.const 1 call $~lib/builtins/abort @@ -18581,7 +20350,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 802 i32.const 1 call $~lib/builtins/abort @@ -18594,7 +20363,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 803 i32.const 1 call $~lib/builtins/abort @@ -18607,7 +20376,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 812 i32.const 1 call $~lib/builtins/abort @@ -18620,7 +20389,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 813 i32.const 1 call $~lib/builtins/abort @@ -18633,7 +20402,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 814 i32.const 1 call $~lib/builtins/abort @@ -18646,7 +20415,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 815 i32.const 1 call $~lib/builtins/abort @@ -18659,7 +20428,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 816 i32.const 1 call $~lib/builtins/abort @@ -18672,7 +20441,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 817 i32.const 1 call $~lib/builtins/abort @@ -18685,7 +20454,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 818 i32.const 1 call $~lib/builtins/abort @@ -18698,7 +20467,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 819 i32.const 1 call $~lib/builtins/abort @@ -18711,7 +20480,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 820 i32.const 1 call $~lib/builtins/abort @@ -18724,7 +20493,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 821 i32.const 1 call $~lib/builtins/abort @@ -18737,7 +20506,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 824 i32.const 1 call $~lib/builtins/abort @@ -18750,7 +20519,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 825 i32.const 1 call $~lib/builtins/abort @@ -18763,7 +20532,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 826 i32.const 1 call $~lib/builtins/abort @@ -18776,7 +20545,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 827 i32.const 1 call $~lib/builtins/abort @@ -18789,7 +20558,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 828 i32.const 1 call $~lib/builtins/abort @@ -18802,7 +20571,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 829 i32.const 1 call $~lib/builtins/abort @@ -18815,7 +20584,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 830 i32.const 1 call $~lib/builtins/abort @@ -18828,7 +20597,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 831 i32.const 1 call $~lib/builtins/abort @@ -18841,7 +20610,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 832 i32.const 1 call $~lib/builtins/abort @@ -18854,7 +20623,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 833 i32.const 1 call $~lib/builtins/abort @@ -18876,7 +20645,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 845 i32.const 1 call $~lib/builtins/abort @@ -18898,7 +20667,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 846 i32.const 1 call $~lib/builtins/abort @@ -18920,7 +20689,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 847 i32.const 1 call $~lib/builtins/abort @@ -18942,7 +20711,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 848 i32.const 1 call $~lib/builtins/abort @@ -18964,7 +20733,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 849 i32.const 1 call $~lib/builtins/abort @@ -18986,7 +20755,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 850 i32.const 1 call $~lib/builtins/abort @@ -19008,7 +20777,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 851 i32.const 1 call $~lib/builtins/abort @@ -19030,7 +20799,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 852 i32.const 1 call $~lib/builtins/abort @@ -19052,7 +20821,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 853 i32.const 1 call $~lib/builtins/abort @@ -19074,7 +20843,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 854 i32.const 1 call $~lib/builtins/abort @@ -19096,7 +20865,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 857 i32.const 1 call $~lib/builtins/abort @@ -19118,7 +20887,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 858 i32.const 1 call $~lib/builtins/abort @@ -19140,7 +20909,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 859 i32.const 1 call $~lib/builtins/abort @@ -19162,7 +20931,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 860 i32.const 1 call $~lib/builtins/abort @@ -19184,7 +20953,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 861 i32.const 1 call $~lib/builtins/abort @@ -19206,7 +20975,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 862 i32.const 1 call $~lib/builtins/abort @@ -19228,7 +20997,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 863 i32.const 1 call $~lib/builtins/abort @@ -19250,7 +21019,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 864 i32.const 1 call $~lib/builtins/abort @@ -19272,7 +21041,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 865 i32.const 1 call $~lib/builtins/abort @@ -19294,7 +21063,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 866 i32.const 1 call $~lib/builtins/abort @@ -19316,7 +21085,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 867 i32.const 1 call $~lib/builtins/abort @@ -19338,7 +21107,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 868 i32.const 1 call $~lib/builtins/abort @@ -19360,7 +21129,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 869 i32.const 1 call $~lib/builtins/abort @@ -19382,7 +21151,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 870 i32.const 1 call $~lib/builtins/abort @@ -19404,7 +21173,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 871 i32.const 1 call $~lib/builtins/abort @@ -19426,7 +21195,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 872 i32.const 1 call $~lib/builtins/abort @@ -19448,7 +21217,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 873 i32.const 1 call $~lib/builtins/abort @@ -19470,7 +21239,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 874 i32.const 1 call $~lib/builtins/abort @@ -19492,7 +21261,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 875 i32.const 1 call $~lib/builtins/abort @@ -19514,7 +21283,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 876 i32.const 1 call $~lib/builtins/abort @@ -19536,7 +21305,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 877 i32.const 1 call $~lib/builtins/abort @@ -19558,7 +21327,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 878 i32.const 1 call $~lib/builtins/abort @@ -19580,7 +21349,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 879 i32.const 1 call $~lib/builtins/abort @@ -19602,7 +21371,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 880 i32.const 1 call $~lib/builtins/abort @@ -19624,7 +21393,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 881 i32.const 1 call $~lib/builtins/abort @@ -19646,7 +21415,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 882 i32.const 1 call $~lib/builtins/abort @@ -19668,7 +21437,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 883 i32.const 1 call $~lib/builtins/abort @@ -19690,7 +21459,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 884 i32.const 1 call $~lib/builtins/abort @@ -19712,7 +21481,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 885 i32.const 1 call $~lib/builtins/abort @@ -19734,7 +21503,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 886 i32.const 1 call $~lib/builtins/abort @@ -19756,7 +21525,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 887 i32.const 1 call $~lib/builtins/abort @@ -19778,7 +21547,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 888 i32.const 1 call $~lib/builtins/abort @@ -19800,7 +21569,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 889 i32.const 1 call $~lib/builtins/abort @@ -19822,7 +21591,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 890 i32.const 1 call $~lib/builtins/abort @@ -19844,7 +21613,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 891 i32.const 1 call $~lib/builtins/abort @@ -19866,7 +21635,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 892 i32.const 1 call $~lib/builtins/abort @@ -19888,7 +21657,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 893 i32.const 1 call $~lib/builtins/abort @@ -19910,7 +21679,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 894 i32.const 1 call $~lib/builtins/abort @@ -19932,7 +21701,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 895 i32.const 1 call $~lib/builtins/abort @@ -19954,7 +21723,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 896 i32.const 1 call $~lib/builtins/abort @@ -19976,7 +21745,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 897 i32.const 1 call $~lib/builtins/abort @@ -19998,7 +21767,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 898 i32.const 1 call $~lib/builtins/abort @@ -20020,7 +21789,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 899 i32.const 1 call $~lib/builtins/abort @@ -20042,7 +21811,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 900 i32.const 1 call $~lib/builtins/abort @@ -20064,7 +21833,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 901 i32.const 1 call $~lib/builtins/abort @@ -20077,7 +21846,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 910 i32.const 1 call $~lib/builtins/abort @@ -20090,7 +21859,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 911 i32.const 1 call $~lib/builtins/abort @@ -20103,7 +21872,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 912 i32.const 1 call $~lib/builtins/abort @@ -20116,7 +21885,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 913 i32.const 1 call $~lib/builtins/abort @@ -20129,7 +21898,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 914 i32.const 1 call $~lib/builtins/abort @@ -20142,7 +21911,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 915 i32.const 1 call $~lib/builtins/abort @@ -20155,7 +21924,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 916 i32.const 1 call $~lib/builtins/abort @@ -20168,7 +21937,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 917 i32.const 1 call $~lib/builtins/abort @@ -20181,7 +21950,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 918 i32.const 1 call $~lib/builtins/abort @@ -20194,7 +21963,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 919 i32.const 1 call $~lib/builtins/abort @@ -20207,7 +21976,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 922 i32.const 1 call $~lib/builtins/abort @@ -20220,7 +21989,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 923 i32.const 1 call $~lib/builtins/abort @@ -20233,7 +22002,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 924 i32.const 1 call $~lib/builtins/abort @@ -20246,7 +22015,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 925 i32.const 1 call $~lib/builtins/abort @@ -20259,7 +22028,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 926 i32.const 1 call $~lib/builtins/abort @@ -20272,7 +22041,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 927 i32.const 1 call $~lib/builtins/abort @@ -20285,7 +22054,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 928 i32.const 1 call $~lib/builtins/abort @@ -20298,7 +22067,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 929 i32.const 1 call $~lib/builtins/abort @@ -20311,7 +22080,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 930 i32.const 1 call $~lib/builtins/abort @@ -20324,7 +22093,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 931 i32.const 1 call $~lib/builtins/abort @@ -20337,7 +22106,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 932 i32.const 1 call $~lib/builtins/abort @@ -20350,7 +22119,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 933 i32.const 1 call $~lib/builtins/abort @@ -20363,7 +22132,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 934 i32.const 1 call $~lib/builtins/abort @@ -20376,7 +22145,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 935 i32.const 1 call $~lib/builtins/abort @@ -20389,7 +22158,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 936 i32.const 1 call $~lib/builtins/abort @@ -20402,7 +22171,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 937 i32.const 1 call $~lib/builtins/abort @@ -20415,7 +22184,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 938 i32.const 1 call $~lib/builtins/abort @@ -20428,7 +22197,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 939 i32.const 1 call $~lib/builtins/abort @@ -20441,7 +22210,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 940 i32.const 1 call $~lib/builtins/abort @@ -20454,7 +22223,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 941 i32.const 1 call $~lib/builtins/abort @@ -20467,7 +22236,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 942 i32.const 1 call $~lib/builtins/abort @@ -20480,7 +22249,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 943 i32.const 1 call $~lib/builtins/abort @@ -20493,7 +22262,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 944 i32.const 1 call $~lib/builtins/abort @@ -20506,7 +22275,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 945 i32.const 1 call $~lib/builtins/abort @@ -20519,7 +22288,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 946 i32.const 1 call $~lib/builtins/abort @@ -20532,7 +22301,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 947 i32.const 1 call $~lib/builtins/abort @@ -20545,7 +22314,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 948 i32.const 1 call $~lib/builtins/abort @@ -20558,7 +22327,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 949 i32.const 1 call $~lib/builtins/abort @@ -20571,7 +22340,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 950 i32.const 1 call $~lib/builtins/abort @@ -20584,7 +22353,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 951 i32.const 1 call $~lib/builtins/abort @@ -20597,7 +22366,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 952 i32.const 1 call $~lib/builtins/abort @@ -20610,7 +22379,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 953 i32.const 1 call $~lib/builtins/abort @@ -20623,7 +22392,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 954 i32.const 1 call $~lib/builtins/abort @@ -20636,7 +22405,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 955 i32.const 1 call $~lib/builtins/abort @@ -20649,7 +22418,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 956 i32.const 1 call $~lib/builtins/abort @@ -20662,7 +22431,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 957 i32.const 1 call $~lib/builtins/abort @@ -20675,7 +22444,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 958 i32.const 1 call $~lib/builtins/abort @@ -20688,7 +22457,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 959 i32.const 1 call $~lib/builtins/abort @@ -20701,7 +22470,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 960 i32.const 1 call $~lib/builtins/abort @@ -20714,7 +22483,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 961 i32.const 1 call $~lib/builtins/abort @@ -20727,7 +22496,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 962 i32.const 1 call $~lib/builtins/abort @@ -20740,7 +22509,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 963 i32.const 1 call $~lib/builtins/abort @@ -20753,7 +22522,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 964 i32.const 1 call $~lib/builtins/abort @@ -20766,7 +22535,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 965 i32.const 1 call $~lib/builtins/abort @@ -20779,7 +22548,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 966 i32.const 1 call $~lib/builtins/abort @@ -20802,7 +22571,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 977 i32.const 1 call $~lib/builtins/abort @@ -20825,7 +22594,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 978 i32.const 1 call $~lib/builtins/abort @@ -20848,7 +22617,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 979 i32.const 1 call $~lib/builtins/abort @@ -20871,7 +22640,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 980 i32.const 1 call $~lib/builtins/abort @@ -20894,7 +22663,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 981 i32.const 1 call $~lib/builtins/abort @@ -20917,7 +22686,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 982 i32.const 1 call $~lib/builtins/abort @@ -20940,7 +22709,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 983 i32.const 1 call $~lib/builtins/abort @@ -20963,7 +22732,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 984 i32.const 1 call $~lib/builtins/abort @@ -20986,7 +22755,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 985 i32.const 1 call $~lib/builtins/abort @@ -21009,7 +22778,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 986 i32.const 1 call $~lib/builtins/abort @@ -21032,7 +22801,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 989 i32.const 1 call $~lib/builtins/abort @@ -21055,7 +22824,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 990 i32.const 1 call $~lib/builtins/abort @@ -21078,7 +22847,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 991 i32.const 1 call $~lib/builtins/abort @@ -21101,7 +22870,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 992 i32.const 1 call $~lib/builtins/abort @@ -21124,7 +22893,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 993 i32.const 1 call $~lib/builtins/abort @@ -21147,7 +22916,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 994 i32.const 1 call $~lib/builtins/abort @@ -21170,7 +22939,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 995 i32.const 1 call $~lib/builtins/abort @@ -21193,7 +22962,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 996 i32.const 1 call $~lib/builtins/abort @@ -21216,7 +22985,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 997 i32.const 1 call $~lib/builtins/abort @@ -21239,7 +23008,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 998 i32.const 1 call $~lib/builtins/abort @@ -21262,7 +23031,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 999 i32.const 1 call $~lib/builtins/abort @@ -21285,7 +23054,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1000 i32.const 1 call $~lib/builtins/abort @@ -21308,7 +23077,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1001 i32.const 1 call $~lib/builtins/abort @@ -21331,7 +23100,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1002 i32.const 1 call $~lib/builtins/abort @@ -21354,7 +23123,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1003 i32.const 1 call $~lib/builtins/abort @@ -21377,7 +23146,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1004 i32.const 1 call $~lib/builtins/abort @@ -21400,7 +23169,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1005 i32.const 1 call $~lib/builtins/abort @@ -21423,7 +23192,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1006 i32.const 1 call $~lib/builtins/abort @@ -21446,7 +23215,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1007 i32.const 1 call $~lib/builtins/abort @@ -21469,7 +23238,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1008 i32.const 1 call $~lib/builtins/abort @@ -21492,7 +23261,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1009 i32.const 1 call $~lib/builtins/abort @@ -21515,7 +23284,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1010 i32.const 1 call $~lib/builtins/abort @@ -21538,7 +23307,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1011 i32.const 1 call $~lib/builtins/abort @@ -21561,7 +23330,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1012 i32.const 1 call $~lib/builtins/abort @@ -21584,7 +23353,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1013 i32.const 1 call $~lib/builtins/abort @@ -21607,7 +23376,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1014 i32.const 1 call $~lib/builtins/abort @@ -21630,7 +23399,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1015 i32.const 1 call $~lib/builtins/abort @@ -21653,7 +23422,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1016 i32.const 1 call $~lib/builtins/abort @@ -21676,7 +23445,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1017 i32.const 1 call $~lib/builtins/abort @@ -21699,7 +23468,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1018 i32.const 1 call $~lib/builtins/abort @@ -21722,7 +23491,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1019 i32.const 1 call $~lib/builtins/abort @@ -21745,7 +23514,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1020 i32.const 1 call $~lib/builtins/abort @@ -21768,7 +23537,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1021 i32.const 1 call $~lib/builtins/abort @@ -21791,7 +23560,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1022 i32.const 1 call $~lib/builtins/abort @@ -21814,7 +23583,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1023 i32.const 1 call $~lib/builtins/abort @@ -21837,7 +23606,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1024 i32.const 1 call $~lib/builtins/abort @@ -21860,7 +23629,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1025 i32.const 1 call $~lib/builtins/abort @@ -21883,7 +23652,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1026 i32.const 1 call $~lib/builtins/abort @@ -21906,7 +23675,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1027 i32.const 1 call $~lib/builtins/abort @@ -21929,7 +23698,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1028 i32.const 1 call $~lib/builtins/abort @@ -21952,7 +23721,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1029 i32.const 1 call $~lib/builtins/abort @@ -21975,7 +23744,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1030 i32.const 1 call $~lib/builtins/abort @@ -21998,7 +23767,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1031 i32.const 1 call $~lib/builtins/abort @@ -22021,7 +23790,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1032 i32.const 1 call $~lib/builtins/abort @@ -22044,7 +23813,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1033 i32.const 1 call $~lib/builtins/abort @@ -22067,7 +23836,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1034 i32.const 1 call $~lib/builtins/abort @@ -22090,7 +23859,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1035 i32.const 1 call $~lib/builtins/abort @@ -22113,7 +23882,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1036 i32.const 1 call $~lib/builtins/abort @@ -22136,7 +23905,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1037 i32.const 1 call $~lib/builtins/abort @@ -22159,7 +23928,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1038 i32.const 1 call $~lib/builtins/abort @@ -22182,7 +23951,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1039 i32.const 1 call $~lib/builtins/abort @@ -22205,7 +23974,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1040 i32.const 1 call $~lib/builtins/abort @@ -22228,7 +23997,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1041 i32.const 1 call $~lib/builtins/abort @@ -22251,7 +24020,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1042 i32.const 1 call $~lib/builtins/abort @@ -22274,7 +24043,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1043 i32.const 1 call $~lib/builtins/abort @@ -22297,7 +24066,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1044 i32.const 1 call $~lib/builtins/abort @@ -22320,7 +24089,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1045 i32.const 1 call $~lib/builtins/abort @@ -22343,7 +24112,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1046 i32.const 1 call $~lib/builtins/abort @@ -22366,7 +24135,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1047 i32.const 1 call $~lib/builtins/abort @@ -22389,7 +24158,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1048 i32.const 1 call $~lib/builtins/abort @@ -22412,7 +24181,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1049 i32.const 1 call $~lib/builtins/abort @@ -22435,7 +24204,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1050 i32.const 1 call $~lib/builtins/abort @@ -22458,7 +24227,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1051 i32.const 1 call $~lib/builtins/abort @@ -22481,7 +24250,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1052 i32.const 1 call $~lib/builtins/abort @@ -22504,7 +24273,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1053 i32.const 1 call $~lib/builtins/abort @@ -22527,7 +24296,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1054 i32.const 1 call $~lib/builtins/abort @@ -22550,7 +24319,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1055 i32.const 1 call $~lib/builtins/abort @@ -22573,7 +24342,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1056 i32.const 1 call $~lib/builtins/abort @@ -22596,7 +24365,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1057 i32.const 1 call $~lib/builtins/abort @@ -22619,7 +24388,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1058 i32.const 1 call $~lib/builtins/abort @@ -22642,7 +24411,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1059 i32.const 1 call $~lib/builtins/abort @@ -22665,7 +24434,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1060 i32.const 1 call $~lib/builtins/abort @@ -22688,7 +24457,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1061 i32.const 1 call $~lib/builtins/abort @@ -22711,7 +24480,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1062 i32.const 1 call $~lib/builtins/abort @@ -22734,7 +24503,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1063 i32.const 1 call $~lib/builtins/abort @@ -22757,7 +24526,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1064 i32.const 1 call $~lib/builtins/abort @@ -22780,7 +24549,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1065 i32.const 1 call $~lib/builtins/abort @@ -22803,7 +24572,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1066 i32.const 1 call $~lib/builtins/abort @@ -22826,7 +24595,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1069 i32.const 1 call $~lib/builtins/abort @@ -22849,7 +24618,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1070 i32.const 1 call $~lib/builtins/abort @@ -22872,7 +24641,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1071 i32.const 1 call $~lib/builtins/abort @@ -22895,7 +24664,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1072 i32.const 1 call $~lib/builtins/abort @@ -22918,7 +24687,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1073 i32.const 1 call $~lib/builtins/abort @@ -22941,7 +24710,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1074 i32.const 1 call $~lib/builtins/abort @@ -22964,7 +24733,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1075 i32.const 1 call $~lib/builtins/abort @@ -22987,7 +24756,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1076 i32.const 1 call $~lib/builtins/abort @@ -23010,7 +24779,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1077 i32.const 1 call $~lib/builtins/abort @@ -23033,7 +24802,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1078 i32.const 1 call $~lib/builtins/abort @@ -23056,7 +24825,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1079 i32.const 1 call $~lib/builtins/abort @@ -23079,7 +24848,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1080 i32.const 1 call $~lib/builtins/abort @@ -23102,7 +24871,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1081 i32.const 1 call $~lib/builtins/abort @@ -23125,7 +24894,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1082 i32.const 1 call $~lib/builtins/abort @@ -23148,7 +24917,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1083 i32.const 1 call $~lib/builtins/abort @@ -23171,7 +24940,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1084 i32.const 1 call $~lib/builtins/abort @@ -23194,7 +24963,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1085 i32.const 1 call $~lib/builtins/abort @@ -23217,7 +24986,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1086 i32.const 1 call $~lib/builtins/abort @@ -23240,7 +25009,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1087 i32.const 1 call $~lib/builtins/abort @@ -23263,7 +25032,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1088 i32.const 1 call $~lib/builtins/abort @@ -23286,7 +25055,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1089 i32.const 1 call $~lib/builtins/abort @@ -23309,7 +25078,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1090 i32.const 1 call $~lib/builtins/abort @@ -23332,7 +25101,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1091 i32.const 1 call $~lib/builtins/abort @@ -23355,7 +25124,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1092 i32.const 1 call $~lib/builtins/abort @@ -23378,7 +25147,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1093 i32.const 1 call $~lib/builtins/abort @@ -23401,7 +25170,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1094 i32.const 1 call $~lib/builtins/abort @@ -23424,7 +25193,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1095 i32.const 1 call $~lib/builtins/abort @@ -23447,7 +25216,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1096 i32.const 1 call $~lib/builtins/abort @@ -23470,7 +25239,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1097 i32.const 1 call $~lib/builtins/abort @@ -23493,7 +25262,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1098 i32.const 1 call $~lib/builtins/abort @@ -23516,7 +25285,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1099 i32.const 1 call $~lib/builtins/abort @@ -23539,7 +25308,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1100 i32.const 1 call $~lib/builtins/abort @@ -23562,7 +25331,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1101 i32.const 1 call $~lib/builtins/abort @@ -23585,7 +25354,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1102 i32.const 1 call $~lib/builtins/abort @@ -23608,7 +25377,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1103 i32.const 1 call $~lib/builtins/abort @@ -23631,7 +25400,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1104 i32.const 1 call $~lib/builtins/abort @@ -23654,7 +25423,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1105 i32.const 1 call $~lib/builtins/abort @@ -23677,7 +25446,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1106 i32.const 1 call $~lib/builtins/abort @@ -23690,7 +25459,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1108 i32.const 1 call $~lib/builtins/abort @@ -23703,7 +25472,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1109 i32.const 1 call $~lib/builtins/abort @@ -23716,7 +25485,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1110 i32.const 1 call $~lib/builtins/abort @@ -23728,7 +25497,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1114 i32.const 1 call $~lib/builtins/abort @@ -23740,7 +25509,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1115 i32.const 1 call $~lib/builtins/abort @@ -23752,7 +25521,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1118 i32.const 1 call $~lib/builtins/abort @@ -23764,7 +25533,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1120 i32.const 1 call $~lib/builtins/abort @@ -23776,7 +25545,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1121 i32.const 1 call $~lib/builtins/abort @@ -23788,7 +25557,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1124 i32.const 1 call $~lib/builtins/abort @@ -23800,7 +25569,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1126 i32.const 1 call $~lib/builtins/abort @@ -23812,7 +25581,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1129 i32.const 1 call $~lib/builtins/abort @@ -23824,7 +25593,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1131 i32.const 1 call $~lib/builtins/abort @@ -23836,7 +25605,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1132 i32.const 1 call $~lib/builtins/abort @@ -23848,7 +25617,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1133 i32.const 1 call $~lib/builtins/abort @@ -23860,7 +25629,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1135 i32.const 1 call $~lib/builtins/abort @@ -23872,7 +25641,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1137 i32.const 1 call $~lib/builtins/abort @@ -23884,7 +25653,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1138 i32.const 1 call $~lib/builtins/abort @@ -23896,7 +25665,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1139 i32.const 1 call $~lib/builtins/abort @@ -23908,7 +25677,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1140 i32.const 1 call $~lib/builtins/abort @@ -23920,7 +25689,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1141 i32.const 1 call $~lib/builtins/abort @@ -23932,7 +25701,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1142 i32.const 1 call $~lib/builtins/abort @@ -23946,7 +25715,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1151 i32.const 1 call $~lib/builtins/abort @@ -23960,7 +25729,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1152 i32.const 1 call $~lib/builtins/abort @@ -23974,7 +25743,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1153 i32.const 1 call $~lib/builtins/abort @@ -23988,7 +25757,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1154 i32.const 1 call $~lib/builtins/abort @@ -24002,7 +25771,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1155 i32.const 1 call $~lib/builtins/abort @@ -24016,7 +25785,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1156 i32.const 1 call $~lib/builtins/abort @@ -24030,7 +25799,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1157 i32.const 1 call $~lib/builtins/abort @@ -24044,7 +25813,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1158 i32.const 1 call $~lib/builtins/abort @@ -24058,7 +25827,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1159 i32.const 1 call $~lib/builtins/abort @@ -24072,7 +25841,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1160 i32.const 1 call $~lib/builtins/abort @@ -24086,7 +25855,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1163 i32.const 1 call $~lib/builtins/abort @@ -24100,7 +25869,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1164 i32.const 1 call $~lib/builtins/abort @@ -24114,7 +25883,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1165 i32.const 1 call $~lib/builtins/abort @@ -24128,7 +25897,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1166 i32.const 1 call $~lib/builtins/abort @@ -24142,7 +25911,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1167 i32.const 1 call $~lib/builtins/abort @@ -24156,7 +25925,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1170 i32.const 1 call $~lib/builtins/abort @@ -24170,7 +25939,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1171 i32.const 1 call $~lib/builtins/abort @@ -24184,7 +25953,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1172 i32.const 1 call $~lib/builtins/abort @@ -24198,7 +25967,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1173 i32.const 1 call $~lib/builtins/abort @@ -24212,7 +25981,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1174 i32.const 1 call $~lib/builtins/abort @@ -24226,7 +25995,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1175 i32.const 1 call $~lib/builtins/abort @@ -24240,7 +26009,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1176 i32.const 1 call $~lib/builtins/abort @@ -24254,7 +26023,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1177 i32.const 1 call $~lib/builtins/abort @@ -24268,7 +26037,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1178 i32.const 1 call $~lib/builtins/abort @@ -24282,7 +26051,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1179 i32.const 1 call $~lib/builtins/abort @@ -24296,7 +26065,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1180 i32.const 1 call $~lib/builtins/abort @@ -24310,7 +26079,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1181 i32.const 1 call $~lib/builtins/abort @@ -24324,7 +26093,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1182 i32.const 1 call $~lib/builtins/abort @@ -24338,7 +26107,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1183 i32.const 1 call $~lib/builtins/abort @@ -24352,7 +26121,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1184 i32.const 1 call $~lib/builtins/abort @@ -24366,7 +26135,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1185 i32.const 1 call $~lib/builtins/abort @@ -24380,7 +26149,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1186 i32.const 1 call $~lib/builtins/abort @@ -24394,7 +26163,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1187 i32.const 1 call $~lib/builtins/abort @@ -24408,7 +26177,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1188 i32.const 1 call $~lib/builtins/abort @@ -24422,7 +26191,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1189 i32.const 1 call $~lib/builtins/abort @@ -24436,7 +26205,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1190 i32.const 1 call $~lib/builtins/abort @@ -24450,7 +26219,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1191 i32.const 1 call $~lib/builtins/abort @@ -24464,7 +26233,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1192 i32.const 1 call $~lib/builtins/abort @@ -24478,7 +26247,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1193 i32.const 1 call $~lib/builtins/abort @@ -24492,7 +26261,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1194 i32.const 1 call $~lib/builtins/abort @@ -24506,7 +26275,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1195 i32.const 1 call $~lib/builtins/abort @@ -24520,7 +26289,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1196 i32.const 1 call $~lib/builtins/abort @@ -24534,7 +26303,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1197 i32.const 1 call $~lib/builtins/abort @@ -24548,7 +26317,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1198 i32.const 1 call $~lib/builtins/abort @@ -24562,7 +26331,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1199 i32.const 1 call $~lib/builtins/abort @@ -24576,7 +26345,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1200 i32.const 1 call $~lib/builtins/abort @@ -24590,7 +26359,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1201 i32.const 1 call $~lib/builtins/abort @@ -24604,7 +26373,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1202 i32.const 1 call $~lib/builtins/abort @@ -24618,7 +26387,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1203 i32.const 1 call $~lib/builtins/abort @@ -24632,7 +26401,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1204 i32.const 1 call $~lib/builtins/abort @@ -24646,7 +26415,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1205 i32.const 1 call $~lib/builtins/abort @@ -24660,7 +26429,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1206 i32.const 1 call $~lib/builtins/abort @@ -24674,7 +26443,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1207 i32.const 1 call $~lib/builtins/abort @@ -24688,7 +26457,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1210 i32.const 1 call $~lib/builtins/abort @@ -24702,7 +26471,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1211 i32.const 1 call $~lib/builtins/abort @@ -24716,7 +26485,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1212 i32.const 1 call $~lib/builtins/abort @@ -24730,7 +26499,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1213 i32.const 1 call $~lib/builtins/abort @@ -24744,7 +26513,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1214 i32.const 1 call $~lib/builtins/abort @@ -24758,7 +26527,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1215 i32.const 1 call $~lib/builtins/abort @@ -24772,7 +26541,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1216 i32.const 1 call $~lib/builtins/abort @@ -24786,7 +26555,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1217 i32.const 1 call $~lib/builtins/abort @@ -24800,7 +26569,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1218 i32.const 1 call $~lib/builtins/abort @@ -24814,7 +26583,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1219 i32.const 1 call $~lib/builtins/abort @@ -24828,7 +26597,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1220 i32.const 1 call $~lib/builtins/abort @@ -24842,7 +26611,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1221 i32.const 1 call $~lib/builtins/abort @@ -24856,7 +26625,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1222 i32.const 1 call $~lib/builtins/abort @@ -24870,7 +26639,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1223 i32.const 1 call $~lib/builtins/abort @@ -24883,7 +26652,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1234 i32.const 1 call $~lib/builtins/abort @@ -24896,7 +26665,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1235 i32.const 1 call $~lib/builtins/abort @@ -24909,7 +26678,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1236 i32.const 1 call $~lib/builtins/abort @@ -24922,7 +26691,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1237 i32.const 1 call $~lib/builtins/abort @@ -24935,7 +26704,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1238 i32.const 1 call $~lib/builtins/abort @@ -24948,7 +26717,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1239 i32.const 1 call $~lib/builtins/abort @@ -24961,7 +26730,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1240 i32.const 1 call $~lib/builtins/abort @@ -24974,7 +26743,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1241 i32.const 1 call $~lib/builtins/abort @@ -24987,7 +26756,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1242 i32.const 1 call $~lib/builtins/abort @@ -25000,7 +26769,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1243 i32.const 1 call $~lib/builtins/abort @@ -25013,7 +26782,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1246 i32.const 1 call $~lib/builtins/abort @@ -25026,7 +26795,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1247 i32.const 1 call $~lib/builtins/abort @@ -25039,7 +26808,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1248 i32.const 1 call $~lib/builtins/abort @@ -25052,7 +26821,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1249 i32.const 1 call $~lib/builtins/abort @@ -25065,7 +26834,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1250 i32.const 1 call $~lib/builtins/abort @@ -25078,7 +26847,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1259 i32.const 1 call $~lib/builtins/abort @@ -25091,7 +26860,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1260 i32.const 1 call $~lib/builtins/abort @@ -25104,7 +26873,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1261 i32.const 1 call $~lib/builtins/abort @@ -25117,7 +26886,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1262 i32.const 1 call $~lib/builtins/abort @@ -25130,7 +26899,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1263 i32.const 1 call $~lib/builtins/abort @@ -25143,7 +26912,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1264 i32.const 1 call $~lib/builtins/abort @@ -25156,7 +26925,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1265 i32.const 1 call $~lib/builtins/abort @@ -25169,7 +26938,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1266 i32.const 1 call $~lib/builtins/abort @@ -25182,7 +26951,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1267 i32.const 1 call $~lib/builtins/abort @@ -25195,7 +26964,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1268 i32.const 1 call $~lib/builtins/abort @@ -25208,7 +26977,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1271 i32.const 1 call $~lib/builtins/abort @@ -25221,7 +26990,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1272 i32.const 1 call $~lib/builtins/abort @@ -25234,7 +27003,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1273 i32.const 1 call $~lib/builtins/abort @@ -25247,7 +27016,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1274 i32.const 1 call $~lib/builtins/abort @@ -25260,7 +27029,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1275 i32.const 1 call $~lib/builtins/abort @@ -25283,7 +27052,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1287 i32.const 1 call $~lib/builtins/abort @@ -25306,7 +27075,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1288 i32.const 1 call $~lib/builtins/abort @@ -25329,7 +27098,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1289 i32.const 1 call $~lib/builtins/abort @@ -25352,7 +27121,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1290 i32.const 1 call $~lib/builtins/abort @@ -25375,7 +27144,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1291 i32.const 1 call $~lib/builtins/abort @@ -25398,7 +27167,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1292 i32.const 1 call $~lib/builtins/abort @@ -25421,7 +27190,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1293 i32.const 1 call $~lib/builtins/abort @@ -25444,7 +27213,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1294 i32.const 1 call $~lib/builtins/abort @@ -25467,7 +27236,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1295 i32.const 1 call $~lib/builtins/abort @@ -25490,7 +27259,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1296 i32.const 1 call $~lib/builtins/abort @@ -25513,7 +27282,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1299 i32.const 1 call $~lib/builtins/abort @@ -25536,7 +27305,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1300 i32.const 1 call $~lib/builtins/abort @@ -25559,7 +27328,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1301 i32.const 1 call $~lib/builtins/abort @@ -25582,7 +27351,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1302 i32.const 1 call $~lib/builtins/abort @@ -25605,7 +27374,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1303 i32.const 1 call $~lib/builtins/abort @@ -25628,7 +27397,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1304 i32.const 1 call $~lib/builtins/abort @@ -25651,7 +27420,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1305 i32.const 1 call $~lib/builtins/abort @@ -25674,7 +27443,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1306 i32.const 1 call $~lib/builtins/abort @@ -25697,7 +27466,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1307 i32.const 1 call $~lib/builtins/abort @@ -25720,7 +27489,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1308 i32.const 1 call $~lib/builtins/abort @@ -25743,7 +27512,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1309 i32.const 1 call $~lib/builtins/abort @@ -25766,7 +27535,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1312 i32.const 1 call $~lib/builtins/abort @@ -25789,7 +27558,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1313 i32.const 1 call $~lib/builtins/abort @@ -25812,7 +27581,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1315 i32.const 1 call $~lib/builtins/abort @@ -25835,7 +27604,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1322 i32.const 1 call $~lib/builtins/abort @@ -25858,7 +27627,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1323 i32.const 1 call $~lib/builtins/abort @@ -25881,7 +27650,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1330 i32.const 1 call $~lib/builtins/abort @@ -25904,7 +27673,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1337 i32.const 1 call $~lib/builtins/abort @@ -25927,7 +27696,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1344 i32.const 1 call $~lib/builtins/abort @@ -25950,7 +27719,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1351 i32.const 1 call $~lib/builtins/abort @@ -25973,7 +27742,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1358 i32.const 1 call $~lib/builtins/abort @@ -25996,7 +27765,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1365 i32.const 1 call $~lib/builtins/abort @@ -26019,7 +27788,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1371 i32.const 1 call $~lib/builtins/abort @@ -26042,7 +27811,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1377 i32.const 1 call $~lib/builtins/abort @@ -26065,7 +27834,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1383 i32.const 1 call $~lib/builtins/abort @@ -26088,7 +27857,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1390 i32.const 1 call $~lib/builtins/abort @@ -26111,7 +27880,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1397 i32.const 1 call $~lib/builtins/abort @@ -26134,7 +27903,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1404 i32.const 1 call $~lib/builtins/abort @@ -26157,7 +27926,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1411 i32.const 1 call $~lib/builtins/abort @@ -26180,7 +27949,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1418 i32.const 1 call $~lib/builtins/abort @@ -26203,7 +27972,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1425 i32.const 1 call $~lib/builtins/abort @@ -26226,7 +27995,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1432 i32.const 1 call $~lib/builtins/abort @@ -26249,7 +28018,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1439 i32.const 1 call $~lib/builtins/abort @@ -26263,7 +28032,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1453 i32.const 1 call $~lib/builtins/abort @@ -26277,7 +28046,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1454 i32.const 1 call $~lib/builtins/abort @@ -26291,7 +28060,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1455 i32.const 1 call $~lib/builtins/abort @@ -26305,7 +28074,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1456 i32.const 1 call $~lib/builtins/abort @@ -26319,7 +28088,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1457 i32.const 1 call $~lib/builtins/abort @@ -26333,7 +28102,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1458 i32.const 1 call $~lib/builtins/abort @@ -26347,7 +28116,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1459 i32.const 1 call $~lib/builtins/abort @@ -26361,7 +28130,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1460 i32.const 1 call $~lib/builtins/abort @@ -26375,7 +28144,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1461 i32.const 1 call $~lib/builtins/abort @@ -26389,7 +28158,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1462 i32.const 1 call $~lib/builtins/abort @@ -26403,7 +28172,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1465 i32.const 1 call $~lib/builtins/abort @@ -26417,7 +28186,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1466 i32.const 1 call $~lib/builtins/abort @@ -26431,7 +28200,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1467 i32.const 1 call $~lib/builtins/abort @@ -26445,7 +28214,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1468 i32.const 1 call $~lib/builtins/abort @@ -26459,7 +28228,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1469 i32.const 1 call $~lib/builtins/abort @@ -26473,7 +28242,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1470 i32.const 1 call $~lib/builtins/abort @@ -26487,7 +28256,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1471 i32.const 1 call $~lib/builtins/abort @@ -26501,7 +28270,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1472 i32.const 1 call $~lib/builtins/abort @@ -26515,7 +28284,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1473 i32.const 1 call $~lib/builtins/abort @@ -26529,7 +28298,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1474 i32.const 1 call $~lib/builtins/abort @@ -26543,7 +28312,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1475 i32.const 1 call $~lib/builtins/abort @@ -26557,7 +28326,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1476 i32.const 1 call $~lib/builtins/abort @@ -26571,7 +28340,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1477 i32.const 1 call $~lib/builtins/abort @@ -26585,7 +28354,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1478 i32.const 1 call $~lib/builtins/abort @@ -26608,7 +28377,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1490 i32.const 1 call $~lib/builtins/abort @@ -26631,7 +28400,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1491 i32.const 1 call $~lib/builtins/abort @@ -26654,7 +28423,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1492 i32.const 1 call $~lib/builtins/abort @@ -26677,7 +28446,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1493 i32.const 1 call $~lib/builtins/abort @@ -26700,7 +28469,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1494 i32.const 1 call $~lib/builtins/abort @@ -26723,7 +28492,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1495 i32.const 1 call $~lib/builtins/abort @@ -26746,7 +28515,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1496 i32.const 1 call $~lib/builtins/abort @@ -26769,7 +28538,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1497 i32.const 1 call $~lib/builtins/abort @@ -26792,7 +28561,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1498 i32.const 1 call $~lib/builtins/abort @@ -26815,7 +28584,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1499 i32.const 1 call $~lib/builtins/abort @@ -26838,7 +28607,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1502 i32.const 1 call $~lib/builtins/abort @@ -26861,7 +28630,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1503 i32.const 1 call $~lib/builtins/abort @@ -26884,7 +28653,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1504 i32.const 1 call $~lib/builtins/abort @@ -26907,7 +28676,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1505 i32.const 1 call $~lib/builtins/abort @@ -26930,7 +28699,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1506 i32.const 1 call $~lib/builtins/abort @@ -26953,7 +28722,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1507 i32.const 1 call $~lib/builtins/abort @@ -26976,7 +28745,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1508 i32.const 1 call $~lib/builtins/abort @@ -26999,7 +28768,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1509 i32.const 1 call $~lib/builtins/abort @@ -27022,7 +28791,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1510 i32.const 1 call $~lib/builtins/abort @@ -27036,7 +28805,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1519 i32.const 1 call $~lib/builtins/abort @@ -27050,7 +28819,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1520 i32.const 1 call $~lib/builtins/abort @@ -27064,7 +28833,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1521 i32.const 1 call $~lib/builtins/abort @@ -27078,7 +28847,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1522 i32.const 1 call $~lib/builtins/abort @@ -27092,7 +28861,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1523 i32.const 1 call $~lib/builtins/abort @@ -27106,7 +28875,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1524 i32.const 1 call $~lib/builtins/abort @@ -27120,7 +28889,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1525 i32.const 1 call $~lib/builtins/abort @@ -27134,7 +28903,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1526 i32.const 1 call $~lib/builtins/abort @@ -27148,7 +28917,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1527 i32.const 1 call $~lib/builtins/abort @@ -27162,7 +28931,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1528 i32.const 1 call $~lib/builtins/abort @@ -27176,7 +28945,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1531 i32.const 1 call $~lib/builtins/abort @@ -27190,7 +28959,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1532 i32.const 1 call $~lib/builtins/abort @@ -27204,7 +28973,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1533 i32.const 1 call $~lib/builtins/abort @@ -27218,7 +28987,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1534 i32.const 1 call $~lib/builtins/abort @@ -27232,7 +29001,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1535 i32.const 1 call $~lib/builtins/abort @@ -27246,7 +29015,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1536 i32.const 1 call $~lib/builtins/abort @@ -27260,7 +29029,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1537 i32.const 1 call $~lib/builtins/abort @@ -27273,7 +29042,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1549 i32.const 1 call $~lib/builtins/abort @@ -27286,7 +29055,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1550 i32.const 1 call $~lib/builtins/abort @@ -27299,7 +29068,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1551 i32.const 1 call $~lib/builtins/abort @@ -27312,7 +29081,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1552 i32.const 1 call $~lib/builtins/abort @@ -27325,7 +29094,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1553 i32.const 1 call $~lib/builtins/abort @@ -27338,7 +29107,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1554 i32.const 1 call $~lib/builtins/abort @@ -27351,7 +29120,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1555 i32.const 1 call $~lib/builtins/abort @@ -27364,7 +29133,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1556 i32.const 1 call $~lib/builtins/abort @@ -27377,7 +29146,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1557 i32.const 1 call $~lib/builtins/abort @@ -27390,7 +29159,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1558 i32.const 1 call $~lib/builtins/abort @@ -27403,7 +29172,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1561 i32.const 1 call $~lib/builtins/abort @@ -27416,7 +29185,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1562 i32.const 1 call $~lib/builtins/abort @@ -27429,7 +29198,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1563 i32.const 1 call $~lib/builtins/abort @@ -27442,7 +29211,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1564 i32.const 1 call $~lib/builtins/abort @@ -27455,7 +29224,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1565 i32.const 1 call $~lib/builtins/abort @@ -27468,7 +29237,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1566 i32.const 1 call $~lib/builtins/abort @@ -27481,7 +29250,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1567 i32.const 1 call $~lib/builtins/abort @@ -27494,7 +29263,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1568 i32.const 1 call $~lib/builtins/abort @@ -27507,7 +29276,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1569 i32.const 1 call $~lib/builtins/abort @@ -27520,7 +29289,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1570 i32.const 1 call $~lib/builtins/abort @@ -27533,7 +29302,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1571 i32.const 1 call $~lib/builtins/abort @@ -27546,7 +29315,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1572 i32.const 1 call $~lib/builtins/abort @@ -27559,7 +29328,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1573 i32.const 1 call $~lib/builtins/abort @@ -27572,7 +29341,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1574 i32.const 1 call $~lib/builtins/abort @@ -27585,7 +29354,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1575 i32.const 1 call $~lib/builtins/abort @@ -27598,7 +29367,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1576 i32.const 1 call $~lib/builtins/abort @@ -27611,7 +29380,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1577 i32.const 1 call $~lib/builtins/abort @@ -27624,7 +29393,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1578 i32.const 1 call $~lib/builtins/abort @@ -27637,7 +29406,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1579 i32.const 1 call $~lib/builtins/abort @@ -27650,7 +29419,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1580 i32.const 1 call $~lib/builtins/abort @@ -27663,7 +29432,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1581 i32.const 1 call $~lib/builtins/abort @@ -27676,7 +29445,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1582 i32.const 1 call $~lib/builtins/abort @@ -27689,7 +29458,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1583 i32.const 1 call $~lib/builtins/abort @@ -27702,7 +29471,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1584 i32.const 1 call $~lib/builtins/abort @@ -27715,7 +29484,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1585 i32.const 1 call $~lib/builtins/abort @@ -27728,7 +29497,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1596 i32.const 1 call $~lib/builtins/abort @@ -27741,7 +29510,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1597 i32.const 1 call $~lib/builtins/abort @@ -27754,7 +29523,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1598 i32.const 1 call $~lib/builtins/abort @@ -27767,7 +29536,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1599 i32.const 1 call $~lib/builtins/abort @@ -27780,7 +29549,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1600 i32.const 1 call $~lib/builtins/abort @@ -27793,7 +29562,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1601 i32.const 1 call $~lib/builtins/abort @@ -27806,7 +29575,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1602 i32.const 1 call $~lib/builtins/abort @@ -27819,7 +29588,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1603 i32.const 1 call $~lib/builtins/abort @@ -27832,7 +29601,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1604 i32.const 1 call $~lib/builtins/abort @@ -27845,7 +29614,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1605 i32.const 1 call $~lib/builtins/abort @@ -27867,7 +29636,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1617 i32.const 1 call $~lib/builtins/abort @@ -27889,7 +29658,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1618 i32.const 1 call $~lib/builtins/abort @@ -27911,7 +29680,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1619 i32.const 1 call $~lib/builtins/abort @@ -27933,7 +29702,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1620 i32.const 1 call $~lib/builtins/abort @@ -27955,7 +29724,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1621 i32.const 1 call $~lib/builtins/abort @@ -27977,7 +29746,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1622 i32.const 1 call $~lib/builtins/abort @@ -27999,7 +29768,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1623 i32.const 1 call $~lib/builtins/abort @@ -28021,7 +29790,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1624 i32.const 1 call $~lib/builtins/abort @@ -28043,7 +29812,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1625 i32.const 1 call $~lib/builtins/abort @@ -28065,7 +29834,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1626 i32.const 1 call $~lib/builtins/abort @@ -28087,7 +29856,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1629 i32.const 1 call $~lib/builtins/abort @@ -28109,7 +29878,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1630 i32.const 1 call $~lib/builtins/abort @@ -28131,7 +29900,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1631 i32.const 1 call $~lib/builtins/abort @@ -28153,7 +29922,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1632 i32.const 1 call $~lib/builtins/abort @@ -28175,7 +29944,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1633 i32.const 1 call $~lib/builtins/abort @@ -28197,7 +29966,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1634 i32.const 1 call $~lib/builtins/abort @@ -28219,7 +29988,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1635 i32.const 1 call $~lib/builtins/abort @@ -28241,7 +30010,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1636 i32.const 1 call $~lib/builtins/abort @@ -28263,7 +30032,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1637 i32.const 1 call $~lib/builtins/abort @@ -28285,7 +30054,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1638 i32.const 1 call $~lib/builtins/abort @@ -28307,7 +30076,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1639 i32.const 1 call $~lib/builtins/abort @@ -28329,7 +30098,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1640 i32.const 1 call $~lib/builtins/abort @@ -28351,7 +30120,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1641 i32.const 1 call $~lib/builtins/abort @@ -28373,7 +30142,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1642 i32.const 1 call $~lib/builtins/abort @@ -28395,7 +30164,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1643 i32.const 1 call $~lib/builtins/abort @@ -28408,7 +30177,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1652 i32.const 1 call $~lib/builtins/abort @@ -28421,7 +30190,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1653 i32.const 1 call $~lib/builtins/abort @@ -28434,7 +30203,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1654 i32.const 1 call $~lib/builtins/abort @@ -28447,7 +30216,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1655 i32.const 1 call $~lib/builtins/abort @@ -28460,7 +30229,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1656 i32.const 1 call $~lib/builtins/abort @@ -28473,7 +30242,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1657 i32.const 1 call $~lib/builtins/abort @@ -28486,7 +30255,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1658 i32.const 1 call $~lib/builtins/abort @@ -28499,7 +30268,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1659 i32.const 1 call $~lib/builtins/abort @@ -28512,7 +30281,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1660 i32.const 1 call $~lib/builtins/abort @@ -28525,7 +30294,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1661 i32.const 1 call $~lib/builtins/abort @@ -28538,7 +30307,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1664 i32.const 1 call $~lib/builtins/abort @@ -28551,7 +30320,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1665 i32.const 1 call $~lib/builtins/abort @@ -28564,7 +30333,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1666 i32.const 1 call $~lib/builtins/abort @@ -28577,7 +30346,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1667 i32.const 1 call $~lib/builtins/abort @@ -28590,7 +30359,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1668 i32.const 1 call $~lib/builtins/abort @@ -28603,7 +30372,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1669 i32.const 1 call $~lib/builtins/abort @@ -28616,7 +30385,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1670 i32.const 1 call $~lib/builtins/abort @@ -28629,7 +30398,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1671 i32.const 1 call $~lib/builtins/abort @@ -28642,7 +30411,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1672 i32.const 1 call $~lib/builtins/abort @@ -28655,7 +30424,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1673 i32.const 1 call $~lib/builtins/abort @@ -28668,7 +30437,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1674 i32.const 1 call $~lib/builtins/abort @@ -28681,7 +30450,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1675 i32.const 1 call $~lib/builtins/abort @@ -28694,7 +30463,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1676 i32.const 1 call $~lib/builtins/abort @@ -28707,7 +30476,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1677 i32.const 1 call $~lib/builtins/abort @@ -28720,7 +30489,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1678 i32.const 1 call $~lib/builtins/abort @@ -28734,7 +30503,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1692 i32.const 1 call $~lib/builtins/abort @@ -28748,7 +30517,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1693 i32.const 1 call $~lib/builtins/abort @@ -28762,7 +30531,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1694 i32.const 1 call $~lib/builtins/abort @@ -28776,7 +30545,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1695 i32.const 1 call $~lib/builtins/abort @@ -28790,7 +30559,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1696 i32.const 1 call $~lib/builtins/abort @@ -28804,7 +30573,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1697 i32.const 1 call $~lib/builtins/abort @@ -28818,7 +30587,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1698 i32.const 1 call $~lib/builtins/abort @@ -28832,7 +30601,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1699 i32.const 1 call $~lib/builtins/abort @@ -28846,7 +30615,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1700 i32.const 1 call $~lib/builtins/abort @@ -28860,7 +30629,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1701 i32.const 1 call $~lib/builtins/abort @@ -28874,7 +30643,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1704 i32.const 1 call $~lib/builtins/abort @@ -28888,7 +30657,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1705 i32.const 1 call $~lib/builtins/abort @@ -28902,7 +30671,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1706 i32.const 1 call $~lib/builtins/abort @@ -28916,7 +30685,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1707 i32.const 1 call $~lib/builtins/abort @@ -28930,7 +30699,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1708 i32.const 1 call $~lib/builtins/abort @@ -28944,7 +30713,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1709 i32.const 1 call $~lib/builtins/abort @@ -28958,7 +30727,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1710 i32.const 1 call $~lib/builtins/abort @@ -28972,7 +30741,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1711 i32.const 1 call $~lib/builtins/abort @@ -28986,7 +30755,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1712 i32.const 1 call $~lib/builtins/abort @@ -29000,7 +30769,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1713 i32.const 1 call $~lib/builtins/abort @@ -29014,7 +30783,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1714 i32.const 1 call $~lib/builtins/abort @@ -29028,7 +30797,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1715 i32.const 1 call $~lib/builtins/abort @@ -29042,7 +30811,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1716 i32.const 1 call $~lib/builtins/abort @@ -29056,7 +30825,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1717 i32.const 1 call $~lib/builtins/abort @@ -29070,7 +30839,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1718 i32.const 1 call $~lib/builtins/abort @@ -29084,7 +30853,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1719 i32.const 1 call $~lib/builtins/abort @@ -29098,7 +30867,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1720 i32.const 1 call $~lib/builtins/abort @@ -29112,7 +30881,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1721 i32.const 1 call $~lib/builtins/abort @@ -29126,7 +30895,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1722 i32.const 1 call $~lib/builtins/abort @@ -29140,7 +30909,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1723 i32.const 1 call $~lib/builtins/abort @@ -29154,7 +30923,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1724 i32.const 1 call $~lib/builtins/abort @@ -29168,7 +30937,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1733 i32.const 1 call $~lib/builtins/abort @@ -29182,7 +30951,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1734 i32.const 1 call $~lib/builtins/abort @@ -29196,7 +30965,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1735 i32.const 1 call $~lib/builtins/abort @@ -29210,7 +30979,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1736 i32.const 1 call $~lib/builtins/abort @@ -29224,7 +30993,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1737 i32.const 1 call $~lib/builtins/abort @@ -29238,7 +31007,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1738 i32.const 1 call $~lib/builtins/abort @@ -29252,7 +31021,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1739 i32.const 1 call $~lib/builtins/abort @@ -29266,7 +31035,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1740 i32.const 1 call $~lib/builtins/abort @@ -29280,7 +31049,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1741 i32.const 1 call $~lib/builtins/abort @@ -29294,7 +31063,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1742 i32.const 1 call $~lib/builtins/abort @@ -29308,7 +31077,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1745 i32.const 1 call $~lib/builtins/abort @@ -29322,7 +31091,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1746 i32.const 1 call $~lib/builtins/abort @@ -29336,7 +31105,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1747 i32.const 1 call $~lib/builtins/abort @@ -29350,7 +31119,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1748 i32.const 1 call $~lib/builtins/abort @@ -29364,7 +31133,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1749 i32.const 1 call $~lib/builtins/abort @@ -29378,7 +31147,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1750 i32.const 1 call $~lib/builtins/abort @@ -29392,7 +31161,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1751 i32.const 1 call $~lib/builtins/abort @@ -29406,7 +31175,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1752 i32.const 1 call $~lib/builtins/abort @@ -29420,7 +31189,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1753 i32.const 1 call $~lib/builtins/abort @@ -29434,7 +31203,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1754 i32.const 1 call $~lib/builtins/abort @@ -29448,7 +31217,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1755 i32.const 1 call $~lib/builtins/abort @@ -29462,7 +31231,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1756 i32.const 1 call $~lib/builtins/abort @@ -29476,7 +31245,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1757 i32.const 1 call $~lib/builtins/abort @@ -29490,7 +31259,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1758 i32.const 1 call $~lib/builtins/abort @@ -29504,7 +31273,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1759 i32.const 1 call $~lib/builtins/abort @@ -29518,7 +31287,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1760 i32.const 1 call $~lib/builtins/abort @@ -29532,7 +31301,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1761 i32.const 1 call $~lib/builtins/abort @@ -29546,7 +31315,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1762 i32.const 1 call $~lib/builtins/abort @@ -29560,7 +31329,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1763 i32.const 1 call $~lib/builtins/abort @@ -29583,7 +31352,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1775 i32.const 1 call $~lib/builtins/abort @@ -29606,7 +31375,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1776 i32.const 1 call $~lib/builtins/abort @@ -29629,7 +31398,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1777 i32.const 1 call $~lib/builtins/abort @@ -29652,7 +31421,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1778 i32.const 1 call $~lib/builtins/abort @@ -29675,7 +31444,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1779 i32.const 1 call $~lib/builtins/abort @@ -29698,7 +31467,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1780 i32.const 1 call $~lib/builtins/abort @@ -29721,7 +31490,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1781 i32.const 1 call $~lib/builtins/abort @@ -29744,7 +31513,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1782 i32.const 1 call $~lib/builtins/abort @@ -29767,7 +31536,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1783 i32.const 1 call $~lib/builtins/abort @@ -29790,7 +31559,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1784 i32.const 1 call $~lib/builtins/abort @@ -29813,7 +31582,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1787 i32.const 1 call $~lib/builtins/abort @@ -29836,7 +31605,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1788 i32.const 1 call $~lib/builtins/abort @@ -29859,7 +31628,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1789 i32.const 1 call $~lib/builtins/abort @@ -29882,7 +31651,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1790 i32.const 1 call $~lib/builtins/abort @@ -29905,7 +31674,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1791 i32.const 1 call $~lib/builtins/abort @@ -29928,7 +31697,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1792 i32.const 1 call $~lib/builtins/abort @@ -29951,7 +31720,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1793 i32.const 1 call $~lib/builtins/abort @@ -29974,7 +31743,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1794 i32.const 1 call $~lib/builtins/abort @@ -29988,7 +31757,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1803 i32.const 1 call $~lib/builtins/abort @@ -30002,7 +31771,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1804 i32.const 1 call $~lib/builtins/abort @@ -30016,7 +31785,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1805 i32.const 1 call $~lib/builtins/abort @@ -30030,7 +31799,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1806 i32.const 1 call $~lib/builtins/abort @@ -30044,7 +31813,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1807 i32.const 1 call $~lib/builtins/abort @@ -30058,7 +31827,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1808 i32.const 1 call $~lib/builtins/abort @@ -30072,7 +31841,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1809 i32.const 1 call $~lib/builtins/abort @@ -30086,7 +31855,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1810 i32.const 1 call $~lib/builtins/abort @@ -30100,7 +31869,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1813 i32.const 1 call $~lib/builtins/abort @@ -30114,7 +31883,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1814 i32.const 1 call $~lib/builtins/abort @@ -30128,7 +31897,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1815 i32.const 1 call $~lib/builtins/abort @@ -30142,7 +31911,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1816 i32.const 1 call $~lib/builtins/abort @@ -30156,7 +31925,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1817 i32.const 1 call $~lib/builtins/abort @@ -30170,7 +31939,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1818 i32.const 1 call $~lib/builtins/abort @@ -30184,7 +31953,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1819 i32.const 1 call $~lib/builtins/abort @@ -30198,7 +31967,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1820 i32.const 1 call $~lib/builtins/abort @@ -30211,7 +31980,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1832 i32.const 1 call $~lib/builtins/abort @@ -30224,7 +31993,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1833 i32.const 1 call $~lib/builtins/abort @@ -30237,7 +32006,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1834 i32.const 1 call $~lib/builtins/abort @@ -30250,7 +32019,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1835 i32.const 1 call $~lib/builtins/abort @@ -30263,7 +32032,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1836 i32.const 1 call $~lib/builtins/abort @@ -30276,7 +32045,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1837 i32.const 1 call $~lib/builtins/abort @@ -30289,7 +32058,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1838 i32.const 1 call $~lib/builtins/abort @@ -30302,7 +32071,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1839 i32.const 1 call $~lib/builtins/abort @@ -30315,7 +32084,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1840 i32.const 1 call $~lib/builtins/abort @@ -30328,7 +32097,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1841 i32.const 1 call $~lib/builtins/abort @@ -30341,7 +32110,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1844 i32.const 1 call $~lib/builtins/abort @@ -30354,7 +32123,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1845 i32.const 1 call $~lib/builtins/abort @@ -30367,7 +32136,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1846 i32.const 1 call $~lib/builtins/abort @@ -30380,7 +32149,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1847 i32.const 1 call $~lib/builtins/abort @@ -30393,7 +32162,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1848 i32.const 1 call $~lib/builtins/abort @@ -30406,7 +32175,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1849 i32.const 1 call $~lib/builtins/abort @@ -30419,7 +32188,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1850 i32.const 1 call $~lib/builtins/abort @@ -30432,7 +32201,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1851 i32.const 1 call $~lib/builtins/abort @@ -30445,7 +32214,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1860 i32.const 1 call $~lib/builtins/abort @@ -30458,7 +32227,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1861 i32.const 1 call $~lib/builtins/abort @@ -30471,7 +32240,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1862 i32.const 1 call $~lib/builtins/abort @@ -30484,7 +32253,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1863 i32.const 1 call $~lib/builtins/abort @@ -30497,7 +32266,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1864 i32.const 1 call $~lib/builtins/abort @@ -30510,7 +32279,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1865 i32.const 1 call $~lib/builtins/abort @@ -30523,7 +32292,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1866 i32.const 1 call $~lib/builtins/abort @@ -30536,7 +32305,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1867 i32.const 1 call $~lib/builtins/abort @@ -30549,7 +32318,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1868 i32.const 1 call $~lib/builtins/abort @@ -30562,7 +32331,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1869 i32.const 1 call $~lib/builtins/abort @@ -30575,7 +32344,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1872 i32.const 1 call $~lib/builtins/abort @@ -30588,7 +32357,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1873 i32.const 1 call $~lib/builtins/abort @@ -30601,7 +32370,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1874 i32.const 1 call $~lib/builtins/abort @@ -30614,7 +32383,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1875 i32.const 1 call $~lib/builtins/abort @@ -30627,7 +32396,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1876 i32.const 1 call $~lib/builtins/abort @@ -30640,7 +32409,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1877 i32.const 1 call $~lib/builtins/abort @@ -30653,7 +32422,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1878 i32.const 1 call $~lib/builtins/abort @@ -30666,7 +32435,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1879 i32.const 1 call $~lib/builtins/abort @@ -30689,7 +32458,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1891 i32.const 1 call $~lib/builtins/abort @@ -30712,7 +32481,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1892 i32.const 1 call $~lib/builtins/abort @@ -30735,7 +32504,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1893 i32.const 1 call $~lib/builtins/abort @@ -30758,7 +32527,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1894 i32.const 1 call $~lib/builtins/abort @@ -30781,7 +32550,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1895 i32.const 1 call $~lib/builtins/abort @@ -30804,7 +32573,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1896 i32.const 1 call $~lib/builtins/abort @@ -30827,7 +32596,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1897 i32.const 1 call $~lib/builtins/abort @@ -30850,7 +32619,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1898 i32.const 1 call $~lib/builtins/abort @@ -30873,7 +32642,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1899 i32.const 1 call $~lib/builtins/abort @@ -30896,7 +32665,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1900 i32.const 1 call $~lib/builtins/abort @@ -30919,7 +32688,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1903 i32.const 1 call $~lib/builtins/abort @@ -30942,7 +32711,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1904 i32.const 1 call $~lib/builtins/abort @@ -30965,7 +32734,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1905 i32.const 1 call $~lib/builtins/abort @@ -30988,7 +32757,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1906 i32.const 1 call $~lib/builtins/abort @@ -31011,7 +32780,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1907 i32.const 1 call $~lib/builtins/abort @@ -31034,7 +32803,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1908 i32.const 1 call $~lib/builtins/abort @@ -31057,7 +32826,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1909 i32.const 1 call $~lib/builtins/abort @@ -31080,7 +32849,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1910 i32.const 1 call $~lib/builtins/abort @@ -31094,7 +32863,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1919 i32.const 1 call $~lib/builtins/abort @@ -31108,7 +32877,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1920 i32.const 1 call $~lib/builtins/abort @@ -31122,7 +32891,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1921 i32.const 1 call $~lib/builtins/abort @@ -31136,7 +32905,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1922 i32.const 1 call $~lib/builtins/abort @@ -31150,7 +32919,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1923 i32.const 1 call $~lib/builtins/abort @@ -31164,7 +32933,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1924 i32.const 1 call $~lib/builtins/abort @@ -31178,7 +32947,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1925 i32.const 1 call $~lib/builtins/abort @@ -31192,7 +32961,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1926 i32.const 1 call $~lib/builtins/abort @@ -31206,7 +32975,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1927 i32.const 1 call $~lib/builtins/abort @@ -31220,7 +32989,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1928 i32.const 1 call $~lib/builtins/abort @@ -31234,7 +33003,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1931 i32.const 1 call $~lib/builtins/abort @@ -31248,7 +33017,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1932 i32.const 1 call $~lib/builtins/abort @@ -31262,7 +33031,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1933 i32.const 1 call $~lib/builtins/abort @@ -31276,7 +33045,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1934 i32.const 1 call $~lib/builtins/abort @@ -31290,7 +33059,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1935 i32.const 1 call $~lib/builtins/abort @@ -31304,7 +33073,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1936 i32.const 1 call $~lib/builtins/abort @@ -31318,7 +33087,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1937 i32.const 1 call $~lib/builtins/abort @@ -31332,7 +33101,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1938 i32.const 1 call $~lib/builtins/abort @@ -31346,7 +33115,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1939 i32.const 1 call $~lib/builtins/abort @@ -31369,7 +33138,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1951 i32.const 1 call $~lib/builtins/abort @@ -31392,7 +33161,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1952 i32.const 1 call $~lib/builtins/abort @@ -31415,7 +33184,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1953 i32.const 1 call $~lib/builtins/abort @@ -31438,7 +33207,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1954 i32.const 1 call $~lib/builtins/abort @@ -31461,7 +33230,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1955 i32.const 1 call $~lib/builtins/abort @@ -31484,7 +33253,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1956 i32.const 1 call $~lib/builtins/abort @@ -31507,7 +33276,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1957 i32.const 1 call $~lib/builtins/abort @@ -31530,7 +33299,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1958 i32.const 1 call $~lib/builtins/abort @@ -31553,7 +33322,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1959 i32.const 1 call $~lib/builtins/abort @@ -31576,7 +33345,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1960 i32.const 1 call $~lib/builtins/abort @@ -31599,7 +33368,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1963 i32.const 1 call $~lib/builtins/abort @@ -31622,7 +33391,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1964 i32.const 1 call $~lib/builtins/abort @@ -31645,7 +33414,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1965 i32.const 1 call $~lib/builtins/abort @@ -31668,7 +33437,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1966 i32.const 1 call $~lib/builtins/abort @@ -31691,7 +33460,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1967 i32.const 1 call $~lib/builtins/abort @@ -31714,7 +33483,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1968 i32.const 1 call $~lib/builtins/abort @@ -31737,7 +33506,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1969 i32.const 1 call $~lib/builtins/abort @@ -31760,7 +33529,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1970 i32.const 1 call $~lib/builtins/abort @@ -31773,7 +33542,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1979 i32.const 1 call $~lib/builtins/abort @@ -31786,7 +33555,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1980 i32.const 1 call $~lib/builtins/abort @@ -31799,7 +33568,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1981 i32.const 1 call $~lib/builtins/abort @@ -31812,7 +33581,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1982 i32.const 1 call $~lib/builtins/abort @@ -31825,7 +33594,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1983 i32.const 1 call $~lib/builtins/abort @@ -31838,7 +33607,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1984 i32.const 1 call $~lib/builtins/abort @@ -31851,7 +33620,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1985 i32.const 1 call $~lib/builtins/abort @@ -31864,7 +33633,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1986 i32.const 1 call $~lib/builtins/abort @@ -31877,7 +33646,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1987 i32.const 1 call $~lib/builtins/abort @@ -31890,7 +33659,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1988 i32.const 1 call $~lib/builtins/abort @@ -31903,7 +33672,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1991 i32.const 1 call $~lib/builtins/abort @@ -31916,7 +33685,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1992 i32.const 1 call $~lib/builtins/abort @@ -31929,7 +33698,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1993 i32.const 1 call $~lib/builtins/abort @@ -31942,7 +33711,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1994 i32.const 1 call $~lib/builtins/abort @@ -31955,7 +33724,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1995 i32.const 1 call $~lib/builtins/abort @@ -31968,7 +33737,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1996 i32.const 1 call $~lib/builtins/abort @@ -31981,7 +33750,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1997 i32.const 1 call $~lib/builtins/abort @@ -31994,7 +33763,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 1998 i32.const 1 call $~lib/builtins/abort @@ -32007,7 +33776,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2010 i32.const 1 call $~lib/builtins/abort @@ -32020,7 +33789,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2011 i32.const 1 call $~lib/builtins/abort @@ -32033,7 +33802,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2012 i32.const 1 call $~lib/builtins/abort @@ -32046,7 +33815,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2013 i32.const 1 call $~lib/builtins/abort @@ -32059,7 +33828,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2014 i32.const 1 call $~lib/builtins/abort @@ -32072,7 +33841,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2015 i32.const 1 call $~lib/builtins/abort @@ -32085,7 +33854,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2016 i32.const 1 call $~lib/builtins/abort @@ -32098,7 +33867,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2017 i32.const 1 call $~lib/builtins/abort @@ -32111,7 +33880,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2018 i32.const 1 call $~lib/builtins/abort @@ -32124,7 +33893,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2019 i32.const 1 call $~lib/builtins/abort @@ -32137,7 +33906,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2022 i32.const 1 call $~lib/builtins/abort @@ -32150,7 +33919,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2023 i32.const 1 call $~lib/builtins/abort @@ -32163,7 +33932,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2024 i32.const 1 call $~lib/builtins/abort @@ -32176,7 +33945,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2025 i32.const 1 call $~lib/builtins/abort @@ -32189,7 +33958,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2026 i32.const 1 call $~lib/builtins/abort @@ -32202,7 +33971,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2027 i32.const 1 call $~lib/builtins/abort @@ -32215,7 +33984,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2028 i32.const 1 call $~lib/builtins/abort @@ -32228,7 +33997,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2029 i32.const 1 call $~lib/builtins/abort @@ -32241,7 +34010,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2030 i32.const 1 call $~lib/builtins/abort @@ -32254,7 +34023,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2031 i32.const 1 call $~lib/builtins/abort @@ -32267,7 +34036,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2032 i32.const 1 call $~lib/builtins/abort @@ -32280,7 +34049,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2033 i32.const 1 call $~lib/builtins/abort @@ -32293,7 +34062,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2034 i32.const 1 call $~lib/builtins/abort @@ -32306,7 +34075,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2035 i32.const 1 call $~lib/builtins/abort @@ -32319,7 +34088,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2036 i32.const 1 call $~lib/builtins/abort @@ -32332,7 +34101,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2037 i32.const 1 call $~lib/builtins/abort @@ -32345,7 +34114,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2038 i32.const 1 call $~lib/builtins/abort @@ -32358,7 +34127,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2039 i32.const 1 call $~lib/builtins/abort @@ -32371,7 +34140,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2040 i32.const 1 call $~lib/builtins/abort @@ -32384,7 +34153,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2041 i32.const 1 call $~lib/builtins/abort @@ -32397,7 +34166,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2042 i32.const 1 call $~lib/builtins/abort @@ -32410,7 +34179,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2043 i32.const 1 call $~lib/builtins/abort @@ -32423,7 +34192,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2044 i32.const 1 call $~lib/builtins/abort @@ -32436,7 +34205,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2045 i32.const 1 call $~lib/builtins/abort @@ -32449,7 +34218,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2046 i32.const 1 call $~lib/builtins/abort @@ -32462,7 +34231,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2047 i32.const 1 call $~lib/builtins/abort @@ -32475,7 +34244,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2048 i32.const 1 call $~lib/builtins/abort @@ -32488,7 +34257,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2049 i32.const 1 call $~lib/builtins/abort @@ -32501,7 +34270,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2050 i32.const 1 call $~lib/builtins/abort @@ -32514,7 +34283,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2051 i32.const 1 call $~lib/builtins/abort @@ -32527,7 +34296,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2052 i32.const 1 call $~lib/builtins/abort @@ -32540,7 +34309,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2053 i32.const 1 call $~lib/builtins/abort @@ -32553,7 +34322,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2054 i32.const 1 call $~lib/builtins/abort @@ -32566,7 +34335,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2055 i32.const 1 call $~lib/builtins/abort @@ -32579,7 +34348,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2056 i32.const 1 call $~lib/builtins/abort @@ -32592,7 +34361,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2057 i32.const 1 call $~lib/builtins/abort @@ -32605,7 +34374,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2058 i32.const 1 call $~lib/builtins/abort @@ -32618,7 +34387,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2059 i32.const 1 call $~lib/builtins/abort @@ -32631,7 +34400,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2060 i32.const 1 call $~lib/builtins/abort @@ -32644,7 +34413,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2061 i32.const 1 call $~lib/builtins/abort @@ -32657,7 +34426,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2062 i32.const 1 call $~lib/builtins/abort @@ -32670,7 +34439,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2063 i32.const 1 call $~lib/builtins/abort @@ -32683,7 +34452,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2064 i32.const 1 call $~lib/builtins/abort @@ -32696,7 +34465,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2065 i32.const 1 call $~lib/builtins/abort @@ -32709,7 +34478,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2066 i32.const 1 call $~lib/builtins/abort @@ -32722,7 +34491,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2067 i32.const 1 call $~lib/builtins/abort @@ -32735,7 +34504,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2068 i32.const 1 call $~lib/builtins/abort @@ -32748,7 +34517,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2069 i32.const 1 call $~lib/builtins/abort @@ -32761,7 +34530,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2070 i32.const 1 call $~lib/builtins/abort @@ -32774,7 +34543,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2071 i32.const 1 call $~lib/builtins/abort @@ -32787,7 +34556,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2072 i32.const 1 call $~lib/builtins/abort @@ -32800,7 +34569,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2073 i32.const 1 call $~lib/builtins/abort @@ -32813,7 +34582,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2074 i32.const 1 call $~lib/builtins/abort @@ -32826,7 +34595,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2075 i32.const 1 call $~lib/builtins/abort @@ -32839,7 +34608,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2076 i32.const 1 call $~lib/builtins/abort @@ -32852,7 +34621,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2077 i32.const 1 call $~lib/builtins/abort @@ -32865,7 +34634,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2078 i32.const 1 call $~lib/builtins/abort @@ -32878,7 +34647,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2079 i32.const 1 call $~lib/builtins/abort @@ -32891,7 +34660,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2088 i32.const 1 call $~lib/builtins/abort @@ -32904,7 +34673,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2089 i32.const 1 call $~lib/builtins/abort @@ -32917,7 +34686,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2090 i32.const 1 call $~lib/builtins/abort @@ -32930,7 +34699,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2091 i32.const 1 call $~lib/builtins/abort @@ -32943,7 +34712,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2092 i32.const 1 call $~lib/builtins/abort @@ -32956,7 +34725,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2093 i32.const 1 call $~lib/builtins/abort @@ -32969,7 +34738,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2094 i32.const 1 call $~lib/builtins/abort @@ -32982,7 +34751,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2095 i32.const 1 call $~lib/builtins/abort @@ -32995,7 +34764,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2096 i32.const 1 call $~lib/builtins/abort @@ -33008,7 +34777,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2097 i32.const 1 call $~lib/builtins/abort @@ -33021,7 +34790,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2100 i32.const 1 call $~lib/builtins/abort @@ -33034,7 +34803,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2101 i32.const 1 call $~lib/builtins/abort @@ -33047,7 +34816,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2102 i32.const 1 call $~lib/builtins/abort @@ -33060,7 +34829,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2103 i32.const 1 call $~lib/builtins/abort @@ -33073,7 +34842,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2104 i32.const 1 call $~lib/builtins/abort @@ -33086,7 +34855,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2105 i32.const 1 call $~lib/builtins/abort @@ -33099,7 +34868,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2106 i32.const 1 call $~lib/builtins/abort @@ -33112,7 +34881,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2107 i32.const 1 call $~lib/builtins/abort @@ -33125,7 +34894,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2108 i32.const 1 call $~lib/builtins/abort @@ -33138,7 +34907,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2109 i32.const 1 call $~lib/builtins/abort @@ -33151,7 +34920,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2110 i32.const 1 call $~lib/builtins/abort @@ -33164,7 +34933,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2111 i32.const 1 call $~lib/builtins/abort @@ -33177,7 +34946,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2112 i32.const 1 call $~lib/builtins/abort @@ -33190,7 +34959,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2113 i32.const 1 call $~lib/builtins/abort @@ -33203,7 +34972,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2114 i32.const 1 call $~lib/builtins/abort @@ -33216,7 +34985,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2115 i32.const 1 call $~lib/builtins/abort @@ -33229,7 +34998,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2116 i32.const 1 call $~lib/builtins/abort @@ -33242,7 +35011,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2117 i32.const 1 call $~lib/builtins/abort @@ -33255,7 +35024,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2118 i32.const 1 call $~lib/builtins/abort @@ -33268,7 +35037,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2119 i32.const 1 call $~lib/builtins/abort @@ -33281,7 +35050,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2120 i32.const 1 call $~lib/builtins/abort @@ -33294,7 +35063,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2121 i32.const 1 call $~lib/builtins/abort @@ -33307,7 +35076,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2122 i32.const 1 call $~lib/builtins/abort @@ -33320,7 +35089,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2123 i32.const 1 call $~lib/builtins/abort @@ -33333,7 +35102,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2124 i32.const 1 call $~lib/builtins/abort @@ -33346,7 +35115,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2125 i32.const 1 call $~lib/builtins/abort @@ -33359,7 +35128,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2126 i32.const 1 call $~lib/builtins/abort @@ -33372,7 +35141,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2127 i32.const 1 call $~lib/builtins/abort @@ -33385,7 +35154,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2128 i32.const 1 call $~lib/builtins/abort @@ -33398,7 +35167,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2129 i32.const 1 call $~lib/builtins/abort @@ -33411,7 +35180,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2130 i32.const 1 call $~lib/builtins/abort @@ -33424,7 +35193,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2131 i32.const 1 call $~lib/builtins/abort @@ -33437,7 +35206,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2132 i32.const 1 call $~lib/builtins/abort @@ -33450,7 +35219,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2133 i32.const 1 call $~lib/builtins/abort @@ -33463,7 +35232,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2134 i32.const 1 call $~lib/builtins/abort @@ -33476,7 +35245,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2135 i32.const 1 call $~lib/builtins/abort @@ -33489,7 +35258,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2136 i32.const 1 call $~lib/builtins/abort @@ -33502,7 +35271,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2137 i32.const 1 call $~lib/builtins/abort @@ -33515,7 +35284,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2138 i32.const 1 call $~lib/builtins/abort @@ -33528,7 +35297,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2139 i32.const 1 call $~lib/builtins/abort @@ -33541,7 +35310,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2140 i32.const 1 call $~lib/builtins/abort @@ -33554,7 +35323,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2141 i32.const 1 call $~lib/builtins/abort @@ -33567,7 +35336,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2142 i32.const 1 call $~lib/builtins/abort @@ -33580,7 +35349,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2143 i32.const 1 call $~lib/builtins/abort @@ -33593,7 +35362,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2144 i32.const 1 call $~lib/builtins/abort @@ -33606,7 +35375,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2145 i32.const 1 call $~lib/builtins/abort @@ -33619,7 +35388,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2146 i32.const 1 call $~lib/builtins/abort @@ -33632,7 +35401,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2147 i32.const 1 call $~lib/builtins/abort @@ -33645,7 +35414,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2148 i32.const 1 call $~lib/builtins/abort @@ -33658,7 +35427,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2149 i32.const 1 call $~lib/builtins/abort @@ -33671,7 +35440,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2150 i32.const 1 call $~lib/builtins/abort @@ -33684,7 +35453,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2151 i32.const 1 call $~lib/builtins/abort @@ -33697,7 +35466,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2152 i32.const 1 call $~lib/builtins/abort @@ -33710,7 +35479,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2153 i32.const 1 call $~lib/builtins/abort @@ -33723,7 +35492,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2154 i32.const 1 call $~lib/builtins/abort @@ -33736,7 +35505,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2155 i32.const 1 call $~lib/builtins/abort @@ -33749,7 +35518,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2156 i32.const 1 call $~lib/builtins/abort @@ -33762,7 +35531,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2157 i32.const 1 call $~lib/builtins/abort @@ -33775,7 +35544,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2169 i32.const 1 call $~lib/builtins/abort @@ -33788,7 +35557,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2170 i32.const 1 call $~lib/builtins/abort @@ -33801,7 +35570,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2171 i32.const 1 call $~lib/builtins/abort @@ -33814,7 +35583,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2172 i32.const 1 call $~lib/builtins/abort @@ -33827,7 +35596,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2173 i32.const 1 call $~lib/builtins/abort @@ -33840,7 +35609,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2174 i32.const 1 call $~lib/builtins/abort @@ -33853,7 +35622,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2175 i32.const 1 call $~lib/builtins/abort @@ -33866,7 +35635,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2176 i32.const 1 call $~lib/builtins/abort @@ -33879,7 +35648,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2177 i32.const 1 call $~lib/builtins/abort @@ -33892,7 +35661,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2178 i32.const 1 call $~lib/builtins/abort @@ -33905,7 +35674,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2181 i32.const 1 call $~lib/builtins/abort @@ -33918,7 +35687,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2182 i32.const 1 call $~lib/builtins/abort @@ -33931,7 +35700,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2183 i32.const 1 call $~lib/builtins/abort @@ -33944,7 +35713,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2184 i32.const 1 call $~lib/builtins/abort @@ -33957,7 +35726,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2185 i32.const 1 call $~lib/builtins/abort @@ -33970,7 +35739,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2186 i32.const 1 call $~lib/builtins/abort @@ -33983,7 +35752,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2187 i32.const 1 call $~lib/builtins/abort @@ -33996,7 +35765,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2188 i32.const 1 call $~lib/builtins/abort @@ -34009,7 +35778,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2189 i32.const 1 call $~lib/builtins/abort @@ -34022,7 +35791,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2190 i32.const 1 call $~lib/builtins/abort @@ -34035,7 +35804,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2191 i32.const 1 call $~lib/builtins/abort @@ -34048,7 +35817,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2192 i32.const 1 call $~lib/builtins/abort @@ -34061,7 +35830,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2193 i32.const 1 call $~lib/builtins/abort @@ -34074,7 +35843,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2194 i32.const 1 call $~lib/builtins/abort @@ -34087,7 +35856,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2195 i32.const 1 call $~lib/builtins/abort @@ -34100,7 +35869,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2196 i32.const 1 call $~lib/builtins/abort @@ -34113,7 +35882,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2197 i32.const 1 call $~lib/builtins/abort @@ -34126,7 +35895,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2198 i32.const 1 call $~lib/builtins/abort @@ -34139,7 +35908,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2199 i32.const 1 call $~lib/builtins/abort @@ -34152,7 +35921,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2200 i32.const 1 call $~lib/builtins/abort @@ -34165,7 +35934,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2201 i32.const 1 call $~lib/builtins/abort @@ -34178,7 +35947,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2202 i32.const 1 call $~lib/builtins/abort @@ -34191,7 +35960,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2203 i32.const 1 call $~lib/builtins/abort @@ -34204,7 +35973,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2204 i32.const 1 call $~lib/builtins/abort @@ -34217,7 +35986,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2205 i32.const 1 call $~lib/builtins/abort @@ -34230,7 +35999,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2206 i32.const 1 call $~lib/builtins/abort @@ -34243,7 +36012,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2207 i32.const 1 call $~lib/builtins/abort @@ -34256,7 +36025,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2208 i32.const 1 call $~lib/builtins/abort @@ -34269,7 +36038,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2209 i32.const 1 call $~lib/builtins/abort @@ -34282,7 +36051,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2210 i32.const 1 call $~lib/builtins/abort @@ -34295,7 +36064,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2211 i32.const 1 call $~lib/builtins/abort @@ -34308,7 +36077,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2212 i32.const 1 call $~lib/builtins/abort @@ -34321,7 +36090,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2213 i32.const 1 call $~lib/builtins/abort @@ -34334,7 +36103,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2214 i32.const 1 call $~lib/builtins/abort @@ -34347,7 +36116,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2215 i32.const 1 call $~lib/builtins/abort @@ -34360,7 +36129,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2216 i32.const 1 call $~lib/builtins/abort @@ -34373,7 +36142,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2217 i32.const 1 call $~lib/builtins/abort @@ -34386,7 +36155,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2218 i32.const 1 call $~lib/builtins/abort @@ -34399,7 +36168,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2219 i32.const 1 call $~lib/builtins/abort @@ -34412,7 +36181,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2220 i32.const 1 call $~lib/builtins/abort @@ -34425,7 +36194,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2221 i32.const 1 call $~lib/builtins/abort @@ -34438,7 +36207,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2222 i32.const 1 call $~lib/builtins/abort @@ -34451,7 +36220,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2223 i32.const 1 call $~lib/builtins/abort @@ -34464,7 +36233,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2224 i32.const 1 call $~lib/builtins/abort @@ -34477,7 +36246,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2225 i32.const 1 call $~lib/builtins/abort @@ -34490,7 +36259,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2226 i32.const 1 call $~lib/builtins/abort @@ -34503,7 +36272,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2227 i32.const 1 call $~lib/builtins/abort @@ -34516,7 +36285,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2228 i32.const 1 call $~lib/builtins/abort @@ -34529,7 +36298,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2229 i32.const 1 call $~lib/builtins/abort @@ -34542,7 +36311,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2230 i32.const 1 call $~lib/builtins/abort @@ -34555,7 +36324,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2231 i32.const 1 call $~lib/builtins/abort @@ -34568,7 +36337,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2232 i32.const 1 call $~lib/builtins/abort @@ -34581,7 +36350,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2233 i32.const 1 call $~lib/builtins/abort @@ -34594,7 +36363,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2234 i32.const 1 call $~lib/builtins/abort @@ -34607,7 +36376,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2235 i32.const 1 call $~lib/builtins/abort @@ -34620,7 +36389,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2236 i32.const 1 call $~lib/builtins/abort @@ -34633,7 +36402,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2237 i32.const 1 call $~lib/builtins/abort @@ -34646,7 +36415,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2238 i32.const 1 call $~lib/builtins/abort @@ -34659,7 +36428,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2247 i32.const 1 call $~lib/builtins/abort @@ -34672,7 +36441,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2248 i32.const 1 call $~lib/builtins/abort @@ -34685,7 +36454,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2249 i32.const 1 call $~lib/builtins/abort @@ -34698,7 +36467,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2250 i32.const 1 call $~lib/builtins/abort @@ -34711,7 +36480,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2251 i32.const 1 call $~lib/builtins/abort @@ -34724,7 +36493,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2252 i32.const 1 call $~lib/builtins/abort @@ -34737,7 +36506,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2253 i32.const 1 call $~lib/builtins/abort @@ -34750,7 +36519,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2254 i32.const 1 call $~lib/builtins/abort @@ -34763,7 +36532,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2255 i32.const 1 call $~lib/builtins/abort @@ -34776,7 +36545,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2256 i32.const 1 call $~lib/builtins/abort @@ -34789,7 +36558,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2259 i32.const 1 call $~lib/builtins/abort @@ -34802,7 +36571,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2260 i32.const 1 call $~lib/builtins/abort @@ -34815,7 +36584,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2261 i32.const 1 call $~lib/builtins/abort @@ -34828,7 +36597,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2262 i32.const 1 call $~lib/builtins/abort @@ -34841,7 +36610,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2263 i32.const 1 call $~lib/builtins/abort @@ -34854,7 +36623,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2264 i32.const 1 call $~lib/builtins/abort @@ -34867,7 +36636,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2265 i32.const 1 call $~lib/builtins/abort @@ -34880,7 +36649,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2266 i32.const 1 call $~lib/builtins/abort @@ -34893,7 +36662,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2267 i32.const 1 call $~lib/builtins/abort @@ -34906,7 +36675,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2268 i32.const 1 call $~lib/builtins/abort @@ -34919,7 +36688,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2269 i32.const 1 call $~lib/builtins/abort @@ -34932,7 +36701,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2270 i32.const 1 call $~lib/builtins/abort @@ -34945,7 +36714,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2271 i32.const 1 call $~lib/builtins/abort @@ -34958,7 +36727,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2272 i32.const 1 call $~lib/builtins/abort @@ -34971,7 +36740,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2273 i32.const 1 call $~lib/builtins/abort @@ -34984,7 +36753,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2274 i32.const 1 call $~lib/builtins/abort @@ -34997,7 +36766,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2275 i32.const 1 call $~lib/builtins/abort @@ -35010,7 +36779,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2276 i32.const 1 call $~lib/builtins/abort @@ -35023,7 +36792,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2277 i32.const 1 call $~lib/builtins/abort @@ -35036,7 +36805,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2278 i32.const 1 call $~lib/builtins/abort @@ -35049,7 +36818,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2279 i32.const 1 call $~lib/builtins/abort @@ -35062,7 +36831,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2280 i32.const 1 call $~lib/builtins/abort @@ -35075,7 +36844,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2281 i32.const 1 call $~lib/builtins/abort @@ -35088,7 +36857,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2282 i32.const 1 call $~lib/builtins/abort @@ -35101,7 +36870,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2283 i32.const 1 call $~lib/builtins/abort @@ -35114,7 +36883,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2284 i32.const 1 call $~lib/builtins/abort @@ -35127,7 +36896,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2285 i32.const 1 call $~lib/builtins/abort @@ -35140,7 +36909,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2286 i32.const 1 call $~lib/builtins/abort @@ -35153,7 +36922,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2287 i32.const 1 call $~lib/builtins/abort @@ -35166,7 +36935,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2288 i32.const 1 call $~lib/builtins/abort @@ -35179,7 +36948,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2289 i32.const 1 call $~lib/builtins/abort @@ -35192,7 +36961,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2290 i32.const 1 call $~lib/builtins/abort @@ -35205,7 +36974,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2291 i32.const 1 call $~lib/builtins/abort @@ -35218,7 +36987,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2292 i32.const 1 call $~lib/builtins/abort @@ -35231,7 +37000,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2293 i32.const 1 call $~lib/builtins/abort @@ -35244,7 +37013,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2294 i32.const 1 call $~lib/builtins/abort @@ -35257,7 +37026,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2295 i32.const 1 call $~lib/builtins/abort @@ -35270,7 +37039,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2296 i32.const 1 call $~lib/builtins/abort @@ -35283,7 +37052,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2297 i32.const 1 call $~lib/builtins/abort @@ -35296,7 +37065,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2298 i32.const 1 call $~lib/builtins/abort @@ -35309,7 +37078,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2299 i32.const 1 call $~lib/builtins/abort @@ -35322,7 +37091,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2300 i32.const 1 call $~lib/builtins/abort @@ -35335,7 +37104,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2301 i32.const 1 call $~lib/builtins/abort @@ -35348,7 +37117,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2302 i32.const 1 call $~lib/builtins/abort @@ -35361,7 +37130,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2303 i32.const 1 call $~lib/builtins/abort @@ -35374,7 +37143,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2304 i32.const 1 call $~lib/builtins/abort @@ -35387,7 +37156,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2305 i32.const 1 call $~lib/builtins/abort @@ -35400,7 +37169,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2306 i32.const 1 call $~lib/builtins/abort @@ -35413,7 +37182,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2307 i32.const 1 call $~lib/builtins/abort @@ -35426,7 +37195,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2308 i32.const 1 call $~lib/builtins/abort @@ -35439,7 +37208,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2309 i32.const 1 call $~lib/builtins/abort @@ -35452,7 +37221,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2310 i32.const 1 call $~lib/builtins/abort @@ -35465,7 +37234,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2311 i32.const 1 call $~lib/builtins/abort @@ -35478,7 +37247,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2312 i32.const 1 call $~lib/builtins/abort @@ -35491,7 +37260,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2313 i32.const 1 call $~lib/builtins/abort @@ -35504,7 +37273,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2314 i32.const 1 call $~lib/builtins/abort @@ -35517,7 +37286,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2315 i32.const 1 call $~lib/builtins/abort @@ -35530,7 +37299,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2316 i32.const 1 call $~lib/builtins/abort @@ -35543,7 +37312,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2330 i32.const 1 call $~lib/builtins/abort @@ -35556,7 +37325,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2331 i32.const 1 call $~lib/builtins/abort @@ -35569,7 +37338,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2332 i32.const 1 call $~lib/builtins/abort @@ -35582,7 +37351,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2333 i32.const 1 call $~lib/builtins/abort @@ -35595,7 +37364,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2334 i32.const 1 call $~lib/builtins/abort @@ -35608,7 +37377,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2335 i32.const 1 call $~lib/builtins/abort @@ -35621,7 +37390,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2336 i32.const 1 call $~lib/builtins/abort @@ -35634,7 +37403,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2337 i32.const 1 call $~lib/builtins/abort @@ -35647,7 +37416,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2338 i32.const 1 call $~lib/builtins/abort @@ -35660,7 +37429,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2339 i32.const 1 call $~lib/builtins/abort @@ -35673,7 +37442,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2342 i32.const 1 call $~lib/builtins/abort @@ -35686,7 +37455,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2343 i32.const 1 call $~lib/builtins/abort @@ -35699,7 +37468,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2344 i32.const 1 call $~lib/builtins/abort @@ -35712,7 +37481,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2345 i32.const 1 call $~lib/builtins/abort @@ -35725,7 +37494,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2346 i32.const 1 call $~lib/builtins/abort @@ -35738,7 +37507,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2347 i32.const 1 call $~lib/builtins/abort @@ -35751,7 +37520,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2348 i32.const 1 call $~lib/builtins/abort @@ -35764,7 +37533,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2349 i32.const 1 call $~lib/builtins/abort @@ -35777,7 +37546,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2350 i32.const 1 call $~lib/builtins/abort @@ -35790,7 +37559,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2351 i32.const 1 call $~lib/builtins/abort @@ -35803,7 +37572,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2352 i32.const 1 call $~lib/builtins/abort @@ -35816,7 +37585,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2353 i32.const 1 call $~lib/builtins/abort @@ -35829,7 +37598,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2354 i32.const 1 call $~lib/builtins/abort @@ -35842,7 +37611,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2355 i32.const 1 call $~lib/builtins/abort @@ -35855,7 +37624,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2356 i32.const 1 call $~lib/builtins/abort @@ -35868,7 +37637,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2357 i32.const 1 call $~lib/builtins/abort @@ -35881,7 +37650,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2358 i32.const 1 call $~lib/builtins/abort @@ -35894,7 +37663,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2359 i32.const 1 call $~lib/builtins/abort @@ -35907,7 +37676,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2360 i32.const 1 call $~lib/builtins/abort @@ -35920,7 +37689,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2361 i32.const 1 call $~lib/builtins/abort @@ -35933,7 +37702,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2362 i32.const 1 call $~lib/builtins/abort @@ -35946,7 +37715,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2363 i32.const 1 call $~lib/builtins/abort @@ -35959,7 +37728,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2364 i32.const 1 call $~lib/builtins/abort @@ -35972,7 +37741,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2365 i32.const 1 call $~lib/builtins/abort @@ -35985,7 +37754,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2366 i32.const 1 call $~lib/builtins/abort @@ -35998,7 +37767,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2367 i32.const 1 call $~lib/builtins/abort @@ -36011,7 +37780,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2368 i32.const 1 call $~lib/builtins/abort @@ -36024,7 +37793,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2369 i32.const 1 call $~lib/builtins/abort @@ -36037,7 +37806,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2370 i32.const 1 call $~lib/builtins/abort @@ -36050,7 +37819,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2371 i32.const 1 call $~lib/builtins/abort @@ -36063,7 +37832,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2372 i32.const 1 call $~lib/builtins/abort @@ -36076,7 +37845,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2373 i32.const 1 call $~lib/builtins/abort @@ -36089,7 +37858,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2374 i32.const 1 call $~lib/builtins/abort @@ -36102,7 +37871,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2375 i32.const 1 call $~lib/builtins/abort @@ -36115,7 +37884,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2376 i32.const 1 call $~lib/builtins/abort @@ -36128,7 +37897,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2377 i32.const 1 call $~lib/builtins/abort @@ -36141,7 +37910,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2378 i32.const 1 call $~lib/builtins/abort @@ -36154,7 +37923,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2379 i32.const 1 call $~lib/builtins/abort @@ -36167,7 +37936,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2380 i32.const 1 call $~lib/builtins/abort @@ -36180,7 +37949,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2381 i32.const 1 call $~lib/builtins/abort @@ -36193,7 +37962,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2382 i32.const 1 call $~lib/builtins/abort @@ -36206,7 +37975,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2383 i32.const 1 call $~lib/builtins/abort @@ -36219,7 +37988,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2384 i32.const 1 call $~lib/builtins/abort @@ -36232,7 +38001,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2385 i32.const 1 call $~lib/builtins/abort @@ -36245,7 +38014,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2386 i32.const 1 call $~lib/builtins/abort @@ -36258,7 +38027,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2387 i32.const 1 call $~lib/builtins/abort @@ -36271,7 +38040,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2388 i32.const 1 call $~lib/builtins/abort @@ -36284,7 +38053,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2389 i32.const 1 call $~lib/builtins/abort @@ -36297,7 +38066,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2390 i32.const 1 call $~lib/builtins/abort @@ -36310,7 +38079,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2391 i32.const 1 call $~lib/builtins/abort @@ -36323,7 +38092,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2392 i32.const 1 call $~lib/builtins/abort @@ -36336,7 +38105,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2393 i32.const 1 call $~lib/builtins/abort @@ -36349,7 +38118,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2394 i32.const 1 call $~lib/builtins/abort @@ -36362,7 +38131,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2395 i32.const 1 call $~lib/builtins/abort @@ -36375,7 +38144,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2396 i32.const 1 call $~lib/builtins/abort @@ -36388,7 +38157,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2397 i32.const 1 call $~lib/builtins/abort @@ -36401,7 +38170,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2398 i32.const 1 call $~lib/builtins/abort @@ -36414,7 +38183,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2399 i32.const 1 call $~lib/builtins/abort @@ -36427,7 +38196,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2400 i32.const 1 call $~lib/builtins/abort @@ -36440,7 +38209,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2401 i32.const 1 call $~lib/builtins/abort @@ -36453,7 +38222,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2402 i32.const 1 call $~lib/builtins/abort @@ -36466,7 +38235,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2403 i32.const 1 call $~lib/builtins/abort @@ -36479,7 +38248,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2404 i32.const 1 call $~lib/builtins/abort @@ -36492,7 +38261,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2405 i32.const 1 call $~lib/builtins/abort @@ -36505,7 +38274,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2406 i32.const 1 call $~lib/builtins/abort @@ -36518,7 +38287,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2407 i32.const 1 call $~lib/builtins/abort @@ -36531,7 +38300,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2410 i32.const 1 call $~lib/builtins/abort @@ -36544,7 +38313,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2411 i32.const 1 call $~lib/builtins/abort @@ -36557,7 +38326,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2412 i32.const 1 call $~lib/builtins/abort @@ -36570,7 +38339,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2413 i32.const 1 call $~lib/builtins/abort @@ -36583,7 +38352,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2414 i32.const 1 call $~lib/builtins/abort @@ -36596,7 +38365,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2415 i32.const 1 call $~lib/builtins/abort @@ -36609,7 +38378,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2416 i32.const 1 call $~lib/builtins/abort @@ -36622,7 +38391,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2417 i32.const 1 call $~lib/builtins/abort @@ -36635,7 +38404,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2420 i32.const 1 call $~lib/builtins/abort @@ -36648,7 +38417,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2421 i32.const 1 call $~lib/builtins/abort @@ -36661,7 +38430,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2422 i32.const 1 call $~lib/builtins/abort @@ -36674,7 +38443,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2423 i32.const 1 call $~lib/builtins/abort @@ -36687,7 +38456,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2424 i32.const 1 call $~lib/builtins/abort @@ -36700,7 +38469,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2425 i32.const 1 call $~lib/builtins/abort @@ -36713,7 +38482,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2426 i32.const 1 call $~lib/builtins/abort @@ -36726,7 +38495,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2427 i32.const 1 call $~lib/builtins/abort @@ -36739,7 +38508,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2430 i32.const 1 call $~lib/builtins/abort @@ -36752,7 +38521,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2431 i32.const 1 call $~lib/builtins/abort @@ -36765,7 +38534,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2433 i32.const 1 call $~lib/builtins/abort @@ -36778,7 +38547,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2434 i32.const 1 call $~lib/builtins/abort @@ -36791,7 +38560,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2436 i32.const 1 call $~lib/builtins/abort @@ -36804,7 +38573,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2437 i32.const 1 call $~lib/builtins/abort @@ -36817,7 +38586,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2439 i32.const 1 call $~lib/builtins/abort @@ -36830,7 +38599,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2440 i32.const 1 call $~lib/builtins/abort @@ -36843,7 +38612,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2442 i32.const 1 call $~lib/builtins/abort @@ -36856,7 +38625,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2443 i32.const 1 call $~lib/builtins/abort @@ -36869,7 +38638,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2445 i32.const 1 call $~lib/builtins/abort @@ -36882,7 +38651,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2446 i32.const 1 call $~lib/builtins/abort @@ -36895,7 +38664,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2448 i32.const 1 call $~lib/builtins/abort @@ -36908,7 +38677,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2449 i32.const 1 call $~lib/builtins/abort @@ -36921,7 +38690,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2451 i32.const 1 call $~lib/builtins/abort @@ -36934,7 +38703,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2452 i32.const 1 call $~lib/builtins/abort @@ -36947,7 +38716,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2454 i32.const 1 call $~lib/builtins/abort @@ -36960,7 +38729,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2455 i32.const 1 call $~lib/builtins/abort @@ -36973,7 +38742,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2457 i32.const 1 call $~lib/builtins/abort @@ -36986,7 +38755,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2458 i32.const 1 call $~lib/builtins/abort @@ -36999,7 +38768,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2459 i32.const 1 call $~lib/builtins/abort @@ -37012,7 +38781,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2460 i32.const 1 call $~lib/builtins/abort @@ -37025,7 +38794,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2461 i32.const 1 call $~lib/builtins/abort @@ -37038,7 +38807,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2462 i32.const 1 call $~lib/builtins/abort @@ -37051,7 +38820,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2463 i32.const 1 call $~lib/builtins/abort @@ -37064,7 +38833,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2464 i32.const 1 call $~lib/builtins/abort @@ -37077,7 +38846,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2466 i32.const 1 call $~lib/builtins/abort @@ -37090,7 +38859,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2467 i32.const 1 call $~lib/builtins/abort @@ -37103,7 +38872,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2468 i32.const 1 call $~lib/builtins/abort @@ -37116,7 +38885,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2469 i32.const 1 call $~lib/builtins/abort @@ -37129,7 +38898,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2470 i32.const 1 call $~lib/builtins/abort @@ -37142,7 +38911,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2471 i32.const 1 call $~lib/builtins/abort @@ -37155,7 +38924,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2472 i32.const 1 call $~lib/builtins/abort @@ -37168,7 +38937,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2473 i32.const 1 call $~lib/builtins/abort @@ -37181,7 +38950,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2474 i32.const 1 call $~lib/builtins/abort @@ -37194,7 +38963,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2475 i32.const 1 call $~lib/builtins/abort @@ -37207,7 +38976,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2476 i32.const 1 call $~lib/builtins/abort @@ -37220,7 +38989,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2477 i32.const 1 call $~lib/builtins/abort @@ -37233,7 +39002,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2478 i32.const 1 call $~lib/builtins/abort @@ -37246,7 +39015,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2479 i32.const 1 call $~lib/builtins/abort @@ -37259,7 +39028,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2480 i32.const 1 call $~lib/builtins/abort @@ -37272,7 +39041,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2481 i32.const 1 call $~lib/builtins/abort @@ -37285,7 +39054,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2482 i32.const 1 call $~lib/builtins/abort @@ -37298,7 +39067,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2483 i32.const 1 call $~lib/builtins/abort @@ -37311,7 +39080,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2484 i32.const 1 call $~lib/builtins/abort @@ -37324,7 +39093,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2485 i32.const 1 call $~lib/builtins/abort @@ -37339,7 +39108,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2494 i32.const 1 call $~lib/builtins/abort @@ -37354,7 +39123,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2495 i32.const 1 call $~lib/builtins/abort @@ -37369,7 +39138,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2496 i32.const 1 call $~lib/builtins/abort @@ -37384,7 +39153,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2497 i32.const 1 call $~lib/builtins/abort @@ -37399,7 +39168,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2498 i32.const 1 call $~lib/builtins/abort @@ -37414,7 +39183,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2499 i32.const 1 call $~lib/builtins/abort @@ -37429,7 +39198,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2500 i32.const 1 call $~lib/builtins/abort @@ -37444,7 +39213,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2501 i32.const 1 call $~lib/builtins/abort @@ -37459,7 +39228,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2502 i32.const 1 call $~lib/builtins/abort @@ -37474,7 +39243,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2503 i32.const 1 call $~lib/builtins/abort @@ -37489,7 +39258,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2506 i32.const 1 call $~lib/builtins/abort @@ -37504,7 +39273,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2507 i32.const 1 call $~lib/builtins/abort @@ -37519,7 +39288,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2508 i32.const 1 call $~lib/builtins/abort @@ -37534,7 +39303,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2509 i32.const 1 call $~lib/builtins/abort @@ -37549,7 +39318,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2510 i32.const 1 call $~lib/builtins/abort @@ -37564,7 +39333,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2511 i32.const 1 call $~lib/builtins/abort @@ -37579,7 +39348,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2512 i32.const 1 call $~lib/builtins/abort @@ -37594,7 +39363,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2513 i32.const 1 call $~lib/builtins/abort @@ -37609,7 +39378,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2514 i32.const 1 call $~lib/builtins/abort @@ -37624,7 +39393,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2515 i32.const 1 call $~lib/builtins/abort @@ -37639,7 +39408,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2516 i32.const 1 call $~lib/builtins/abort @@ -37654,7 +39423,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2517 i32.const 1 call $~lib/builtins/abort @@ -37669,7 +39438,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2518 i32.const 1 call $~lib/builtins/abort @@ -37684,7 +39453,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2519 i32.const 1 call $~lib/builtins/abort @@ -37699,7 +39468,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2520 i32.const 1 call $~lib/builtins/abort @@ -37714,7 +39483,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2521 i32.const 1 call $~lib/builtins/abort @@ -37729,7 +39498,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2522 i32.const 1 call $~lib/builtins/abort @@ -37744,7 +39513,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2523 i32.const 1 call $~lib/builtins/abort @@ -37759,7 +39528,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2524 i32.const 1 call $~lib/builtins/abort @@ -37774,7 +39543,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2525 i32.const 1 call $~lib/builtins/abort @@ -37789,7 +39558,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2526 i32.const 1 call $~lib/builtins/abort @@ -37804,7 +39573,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2527 i32.const 1 call $~lib/builtins/abort @@ -37819,7 +39588,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2528 i32.const 1 call $~lib/builtins/abort @@ -37834,7 +39603,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2529 i32.const 1 call $~lib/builtins/abort @@ -37849,7 +39618,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2530 i32.const 1 call $~lib/builtins/abort @@ -37864,7 +39633,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2531 i32.const 1 call $~lib/builtins/abort @@ -37879,7 +39648,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2532 i32.const 1 call $~lib/builtins/abort @@ -37894,7 +39663,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2533 i32.const 1 call $~lib/builtins/abort @@ -37909,7 +39678,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2534 i32.const 1 call $~lib/builtins/abort @@ -37924,7 +39693,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2535 i32.const 1 call $~lib/builtins/abort @@ -37939,7 +39708,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2536 i32.const 1 call $~lib/builtins/abort @@ -37954,7 +39723,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2537 i32.const 1 call $~lib/builtins/abort @@ -37969,7 +39738,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2538 i32.const 1 call $~lib/builtins/abort @@ -37984,7 +39753,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2539 i32.const 1 call $~lib/builtins/abort @@ -37999,7 +39768,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2540 i32.const 1 call $~lib/builtins/abort @@ -38014,7 +39783,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2541 i32.const 1 call $~lib/builtins/abort @@ -38029,7 +39798,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2542 i32.const 1 call $~lib/builtins/abort @@ -38044,7 +39813,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2543 i32.const 1 call $~lib/builtins/abort @@ -38059,7 +39828,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2544 i32.const 1 call $~lib/builtins/abort @@ -38074,7 +39843,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2545 i32.const 1 call $~lib/builtins/abort @@ -38089,7 +39858,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2546 i32.const 1 call $~lib/builtins/abort @@ -38104,7 +39873,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2547 i32.const 1 call $~lib/builtins/abort @@ -38119,7 +39888,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2548 i32.const 1 call $~lib/builtins/abort @@ -38134,7 +39903,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2549 i32.const 1 call $~lib/builtins/abort @@ -38149,7 +39918,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2550 i32.const 1 call $~lib/builtins/abort @@ -38164,7 +39933,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2551 i32.const 1 call $~lib/builtins/abort @@ -38179,7 +39948,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2552 i32.const 1 call $~lib/builtins/abort @@ -38194,7 +39963,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2553 i32.const 1 call $~lib/builtins/abort @@ -38209,7 +39978,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2554 i32.const 1 call $~lib/builtins/abort @@ -38224,7 +39993,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2555 i32.const 1 call $~lib/builtins/abort @@ -38239,7 +40008,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2556 i32.const 1 call $~lib/builtins/abort @@ -38254,7 +40023,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2557 i32.const 1 call $~lib/builtins/abort @@ -38269,7 +40038,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2558 i32.const 1 call $~lib/builtins/abort @@ -38284,7 +40053,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2559 i32.const 1 call $~lib/builtins/abort @@ -38299,7 +40068,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2560 i32.const 1 call $~lib/builtins/abort @@ -38314,7 +40083,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2561 i32.const 1 call $~lib/builtins/abort @@ -38329,7 +40098,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2562 i32.const 1 call $~lib/builtins/abort @@ -38344,7 +40113,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2563 i32.const 1 call $~lib/builtins/abort @@ -38359,7 +40128,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2564 i32.const 1 call $~lib/builtins/abort @@ -38374,7 +40143,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2565 i32.const 1 call $~lib/builtins/abort @@ -38389,7 +40158,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2566 i32.const 1 call $~lib/builtins/abort @@ -38404,7 +40173,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2567 i32.const 1 call $~lib/builtins/abort @@ -38419,7 +40188,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2568 i32.const 1 call $~lib/builtins/abort @@ -38434,7 +40203,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2569 i32.const 1 call $~lib/builtins/abort @@ -38449,7 +40218,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2570 i32.const 1 call $~lib/builtins/abort @@ -38464,7 +40233,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2571 i32.const 1 call $~lib/builtins/abort @@ -38478,7 +40247,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2583 i32.const 1 call $~lib/builtins/abort @@ -38492,7 +40261,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2584 i32.const 1 call $~lib/builtins/abort @@ -38506,7 +40275,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2585 i32.const 1 call $~lib/builtins/abort @@ -38520,7 +40289,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2586 i32.const 1 call $~lib/builtins/abort @@ -38534,7 +40303,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2587 i32.const 1 call $~lib/builtins/abort @@ -38548,7 +40317,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2588 i32.const 1 call $~lib/builtins/abort @@ -38562,7 +40331,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2589 i32.const 1 call $~lib/builtins/abort @@ -38576,7 +40345,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2590 i32.const 1 call $~lib/builtins/abort @@ -38590,7 +40359,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2591 i32.const 1 call $~lib/builtins/abort @@ -38604,7 +40373,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2592 i32.const 1 call $~lib/builtins/abort @@ -38618,7 +40387,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2595 i32.const 1 call $~lib/builtins/abort @@ -38632,7 +40401,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2596 i32.const 1 call $~lib/builtins/abort @@ -38646,7 +40415,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2597 i32.const 1 call $~lib/builtins/abort @@ -38660,7 +40429,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2598 i32.const 1 call $~lib/builtins/abort @@ -38674,7 +40443,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2599 i32.const 1 call $~lib/builtins/abort @@ -38688,7 +40457,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2600 i32.const 1 call $~lib/builtins/abort @@ -38702,7 +40471,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2601 i32.const 1 call $~lib/builtins/abort @@ -38716,7 +40485,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2602 i32.const 1 call $~lib/builtins/abort @@ -38730,7 +40499,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2603 i32.const 1 call $~lib/builtins/abort @@ -38744,7 +40513,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2604 i32.const 1 call $~lib/builtins/abort @@ -38758,7 +40527,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2605 i32.const 1 call $~lib/builtins/abort @@ -38772,7 +40541,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2606 i32.const 1 call $~lib/builtins/abort @@ -38786,7 +40555,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2607 i32.const 1 call $~lib/builtins/abort @@ -38800,7 +40569,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2608 i32.const 1 call $~lib/builtins/abort @@ -38814,7 +40583,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2609 i32.const 1 call $~lib/builtins/abort @@ -38828,7 +40597,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2610 i32.const 1 call $~lib/builtins/abort @@ -38842,7 +40611,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2611 i32.const 1 call $~lib/builtins/abort @@ -38856,7 +40625,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2612 i32.const 1 call $~lib/builtins/abort @@ -38870,7 +40639,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2613 i32.const 1 call $~lib/builtins/abort @@ -38884,7 +40653,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2614 i32.const 1 call $~lib/builtins/abort @@ -38898,7 +40667,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2615 i32.const 1 call $~lib/builtins/abort @@ -38912,7 +40681,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2616 i32.const 1 call $~lib/builtins/abort @@ -38926,7 +40695,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2617 i32.const 1 call $~lib/builtins/abort @@ -38940,7 +40709,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2618 i32.const 1 call $~lib/builtins/abort @@ -38954,7 +40723,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2619 i32.const 1 call $~lib/builtins/abort @@ -38968,7 +40737,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2620 i32.const 1 call $~lib/builtins/abort @@ -38982,7 +40751,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2621 i32.const 1 call $~lib/builtins/abort @@ -38996,7 +40765,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2622 i32.const 1 call $~lib/builtins/abort @@ -39010,7 +40779,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2623 i32.const 1 call $~lib/builtins/abort @@ -39024,7 +40793,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2624 i32.const 1 call $~lib/builtins/abort @@ -39038,7 +40807,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2625 i32.const 1 call $~lib/builtins/abort @@ -39052,7 +40821,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2626 i32.const 1 call $~lib/builtins/abort @@ -39066,7 +40835,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2627 i32.const 1 call $~lib/builtins/abort @@ -39080,7 +40849,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2628 i32.const 1 call $~lib/builtins/abort @@ -39094,7 +40863,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2629 i32.const 1 call $~lib/builtins/abort @@ -39108,7 +40877,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2630 i32.const 1 call $~lib/builtins/abort @@ -39122,7 +40891,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2631 i32.const 1 call $~lib/builtins/abort @@ -39136,7 +40905,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2632 i32.const 1 call $~lib/builtins/abort @@ -39150,7 +40919,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2633 i32.const 1 call $~lib/builtins/abort @@ -39164,7 +40933,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2634 i32.const 1 call $~lib/builtins/abort @@ -39178,7 +40947,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2635 i32.const 1 call $~lib/builtins/abort @@ -39192,7 +40961,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2636 i32.const 1 call $~lib/builtins/abort @@ -39206,7 +40975,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2637 i32.const 1 call $~lib/builtins/abort @@ -39220,7 +40989,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2638 i32.const 1 call $~lib/builtins/abort @@ -39234,7 +41003,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2639 i32.const 1 call $~lib/builtins/abort @@ -39248,7 +41017,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2640 i32.const 1 call $~lib/builtins/abort @@ -39262,7 +41031,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2641 i32.const 1 call $~lib/builtins/abort @@ -39276,7 +41045,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2642 i32.const 1 call $~lib/builtins/abort @@ -39290,7 +41059,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2643 i32.const 1 call $~lib/builtins/abort @@ -39304,7 +41073,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2644 i32.const 1 call $~lib/builtins/abort @@ -39318,7 +41087,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2645 i32.const 1 call $~lib/builtins/abort @@ -39332,7 +41101,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2646 i32.const 1 call $~lib/builtins/abort @@ -39346,7 +41115,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2647 i32.const 1 call $~lib/builtins/abort @@ -39360,7 +41129,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2648 i32.const 1 call $~lib/builtins/abort @@ -39374,7 +41143,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2649 i32.const 1 call $~lib/builtins/abort @@ -39388,7 +41157,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2650 i32.const 1 call $~lib/builtins/abort @@ -39402,7 +41171,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2651 i32.const 1 call $~lib/builtins/abort @@ -39416,7 +41185,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2652 i32.const 1 call $~lib/builtins/abort @@ -39430,7 +41199,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2653 i32.const 1 call $~lib/builtins/abort @@ -39444,7 +41213,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2654 i32.const 1 call $~lib/builtins/abort @@ -39458,7 +41227,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2655 i32.const 1 call $~lib/builtins/abort @@ -39472,7 +41241,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2656 i32.const 1 call $~lib/builtins/abort @@ -39486,7 +41255,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2657 i32.const 1 call $~lib/builtins/abort @@ -39500,7 +41269,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2658 i32.const 1 call $~lib/builtins/abort @@ -39514,7 +41283,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2659 i32.const 1 call $~lib/builtins/abort @@ -39528,7 +41297,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2660 i32.const 1 call $~lib/builtins/abort @@ -39542,7 +41311,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2661 i32.const 1 call $~lib/builtins/abort @@ -39556,7 +41325,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2662 i32.const 1 call $~lib/builtins/abort @@ -39570,7 +41339,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2663 i32.const 1 call $~lib/builtins/abort @@ -39584,7 +41353,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2664 i32.const 1 call $~lib/builtins/abort @@ -39598,7 +41367,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2665 i32.const 1 call $~lib/builtins/abort @@ -39612,7 +41381,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2666 i32.const 1 call $~lib/builtins/abort @@ -39626,7 +41395,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2667 i32.const 1 call $~lib/builtins/abort @@ -39640,7 +41409,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2668 i32.const 1 call $~lib/builtins/abort @@ -39654,7 +41423,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2669 i32.const 1 call $~lib/builtins/abort @@ -39668,7 +41437,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2670 i32.const 1 call $~lib/builtins/abort @@ -39682,7 +41451,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2671 i32.const 1 call $~lib/builtins/abort @@ -39696,7 +41465,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2672 i32.const 1 call $~lib/builtins/abort @@ -39710,7 +41479,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2673 i32.const 1 call $~lib/builtins/abort @@ -39724,7 +41493,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2674 i32.const 1 call $~lib/builtins/abort @@ -39738,7 +41507,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2675 i32.const 1 call $~lib/builtins/abort @@ -39752,7 +41521,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2676 i32.const 1 call $~lib/builtins/abort @@ -39766,7 +41535,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2677 i32.const 1 call $~lib/builtins/abort @@ -39780,7 +41549,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2678 i32.const 1 call $~lib/builtins/abort @@ -39794,7 +41563,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2679 i32.const 1 call $~lib/builtins/abort @@ -39808,7 +41577,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2680 i32.const 1 call $~lib/builtins/abort @@ -39822,7 +41591,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2681 i32.const 1 call $~lib/builtins/abort @@ -39836,7 +41605,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2682 i32.const 1 call $~lib/builtins/abort @@ -39850,7 +41619,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2683 i32.const 1 call $~lib/builtins/abort @@ -39864,7 +41633,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2684 i32.const 1 call $~lib/builtins/abort @@ -39878,7 +41647,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2685 i32.const 1 call $~lib/builtins/abort @@ -39892,7 +41661,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2686 i32.const 1 call $~lib/builtins/abort @@ -39905,7 +41674,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2689 i32.const 1 call $~lib/builtins/abort @@ -39918,7 +41687,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2690 i32.const 1 call $~lib/builtins/abort @@ -39931,7 +41700,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2691 i32.const 1 call $~lib/builtins/abort @@ -39944,7 +41713,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2692 i32.const 1 call $~lib/builtins/abort @@ -39957,7 +41726,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2693 i32.const 1 call $~lib/builtins/abort @@ -39970,7 +41739,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2694 i32.const 1 call $~lib/builtins/abort @@ -39983,7 +41752,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2695 i32.const 1 call $~lib/builtins/abort @@ -39996,7 +41765,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2696 i32.const 1 call $~lib/builtins/abort @@ -40010,7 +41779,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2698 i32.const 1 call $~lib/builtins/abort @@ -40024,7 +41793,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2699 i32.const 1 call $~lib/builtins/abort @@ -40037,7 +41806,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2700 i32.const 1 call $~lib/builtins/abort @@ -40050,7 +41819,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2701 i32.const 1 call $~lib/builtins/abort @@ -40063,7 +41832,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2702 i32.const 1 call $~lib/builtins/abort @@ -40077,7 +41846,7 @@ f64.eq if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2703 i32.const 1 call $~lib/builtins/abort @@ -40090,7 +41859,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2705 i32.const 1 call $~lib/builtins/abort @@ -40103,7 +41872,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2706 i32.const 1 call $~lib/builtins/abort @@ -40116,7 +41885,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2707 i32.const 1 call $~lib/builtins/abort @@ -40129,7 +41898,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2708 i32.const 1 call $~lib/builtins/abort @@ -40142,7 +41911,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2709 i32.const 1 call $~lib/builtins/abort @@ -40156,7 +41925,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2710 i32.const 1 call $~lib/builtins/abort @@ -40170,7 +41939,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2711 i32.const 1 call $~lib/builtins/abort @@ -40184,7 +41953,7 @@ f64.eq if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2712 i32.const 1 call $~lib/builtins/abort @@ -40197,7 +41966,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2714 i32.const 1 call $~lib/builtins/abort @@ -40210,7 +41979,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2715 i32.const 1 call $~lib/builtins/abort @@ -40223,7 +41992,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2716 i32.const 1 call $~lib/builtins/abort @@ -40236,7 +42005,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2717 i32.const 1 call $~lib/builtins/abort @@ -40249,7 +42018,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2718 i32.const 1 call $~lib/builtins/abort @@ -40262,7 +42031,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2719 i32.const 1 call $~lib/builtins/abort @@ -40275,7 +42044,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2720 i32.const 1 call $~lib/builtins/abort @@ -40289,7 +42058,7 @@ f64.eq if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2721 i32.const 1 call $~lib/builtins/abort @@ -40302,7 +42071,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2723 i32.const 1 call $~lib/builtins/abort @@ -40315,7 +42084,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2724 i32.const 1 call $~lib/builtins/abort @@ -40329,7 +42098,7 @@ f64.eq if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2725 i32.const 1 call $~lib/builtins/abort @@ -40342,7 +42111,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2726 i32.const 1 call $~lib/builtins/abort @@ -40355,7 +42124,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2727 i32.const 1 call $~lib/builtins/abort @@ -40368,7 +42137,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2728 i32.const 1 call $~lib/builtins/abort @@ -40381,7 +42150,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2729 i32.const 1 call $~lib/builtins/abort @@ -40395,7 +42164,7 @@ f64.eq if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2730 i32.const 1 call $~lib/builtins/abort @@ -40410,7 +42179,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2739 i32.const 1 call $~lib/builtins/abort @@ -40425,7 +42194,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2740 i32.const 1 call $~lib/builtins/abort @@ -40440,7 +42209,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2741 i32.const 1 call $~lib/builtins/abort @@ -40455,7 +42224,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2742 i32.const 1 call $~lib/builtins/abort @@ -40470,7 +42239,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2743 i32.const 1 call $~lib/builtins/abort @@ -40485,7 +42254,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2744 i32.const 1 call $~lib/builtins/abort @@ -40500,7 +42269,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2745 i32.const 1 call $~lib/builtins/abort @@ -40515,7 +42284,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2746 i32.const 1 call $~lib/builtins/abort @@ -40530,7 +42299,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2747 i32.const 1 call $~lib/builtins/abort @@ -40545,7 +42314,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2748 i32.const 1 call $~lib/builtins/abort @@ -40560,7 +42329,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2751 i32.const 1 call $~lib/builtins/abort @@ -40575,7 +42344,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2752 i32.const 1 call $~lib/builtins/abort @@ -40590,7 +42359,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2753 i32.const 1 call $~lib/builtins/abort @@ -40605,7 +42374,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2754 i32.const 1 call $~lib/builtins/abort @@ -40620,7 +42389,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2755 i32.const 1 call $~lib/builtins/abort @@ -40635,7 +42404,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2756 i32.const 1 call $~lib/builtins/abort @@ -40650,7 +42419,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2757 i32.const 1 call $~lib/builtins/abort @@ -40665,7 +42434,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2758 i32.const 1 call $~lib/builtins/abort @@ -40680,7 +42449,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2759 i32.const 1 call $~lib/builtins/abort @@ -40695,7 +42464,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2760 i32.const 1 call $~lib/builtins/abort @@ -40710,7 +42479,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2761 i32.const 1 call $~lib/builtins/abort @@ -40725,7 +42494,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2762 i32.const 1 call $~lib/builtins/abort @@ -40740,7 +42509,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2763 i32.const 1 call $~lib/builtins/abort @@ -40755,7 +42524,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2764 i32.const 1 call $~lib/builtins/abort @@ -40770,7 +42539,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2765 i32.const 1 call $~lib/builtins/abort @@ -40785,7 +42554,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2766 i32.const 1 call $~lib/builtins/abort @@ -40800,7 +42569,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2767 i32.const 1 call $~lib/builtins/abort @@ -40815,7 +42584,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2768 i32.const 1 call $~lib/builtins/abort @@ -40830,7 +42599,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2769 i32.const 1 call $~lib/builtins/abort @@ -40845,7 +42614,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2770 i32.const 1 call $~lib/builtins/abort @@ -40860,7 +42629,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2771 i32.const 1 call $~lib/builtins/abort @@ -40875,7 +42644,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2772 i32.const 1 call $~lib/builtins/abort @@ -40890,7 +42659,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2773 i32.const 1 call $~lib/builtins/abort @@ -40905,7 +42674,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2774 i32.const 1 call $~lib/builtins/abort @@ -40920,7 +42689,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2775 i32.const 1 call $~lib/builtins/abort @@ -40935,7 +42704,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2776 i32.const 1 call $~lib/builtins/abort @@ -40950,7 +42719,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2777 i32.const 1 call $~lib/builtins/abort @@ -40965,7 +42734,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2778 i32.const 1 call $~lib/builtins/abort @@ -40980,7 +42749,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2779 i32.const 1 call $~lib/builtins/abort @@ -40995,7 +42764,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2780 i32.const 1 call $~lib/builtins/abort @@ -41010,7 +42779,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2781 i32.const 1 call $~lib/builtins/abort @@ -41025,7 +42794,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2782 i32.const 1 call $~lib/builtins/abort @@ -41040,7 +42809,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2783 i32.const 1 call $~lib/builtins/abort @@ -41055,7 +42824,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2784 i32.const 1 call $~lib/builtins/abort @@ -41070,7 +42839,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2785 i32.const 1 call $~lib/builtins/abort @@ -41085,7 +42854,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2786 i32.const 1 call $~lib/builtins/abort @@ -41100,7 +42869,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2787 i32.const 1 call $~lib/builtins/abort @@ -41115,7 +42884,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2788 i32.const 1 call $~lib/builtins/abort @@ -41130,7 +42899,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2789 i32.const 1 call $~lib/builtins/abort @@ -41145,7 +42914,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2790 i32.const 1 call $~lib/builtins/abort @@ -41160,7 +42929,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2791 i32.const 1 call $~lib/builtins/abort @@ -41175,7 +42944,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2792 i32.const 1 call $~lib/builtins/abort @@ -41190,7 +42959,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2793 i32.const 1 call $~lib/builtins/abort @@ -41205,7 +42974,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2794 i32.const 1 call $~lib/builtins/abort @@ -41220,7 +42989,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2795 i32.const 1 call $~lib/builtins/abort @@ -41235,7 +43004,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2796 i32.const 1 call $~lib/builtins/abort @@ -41250,7 +43019,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2797 i32.const 1 call $~lib/builtins/abort @@ -41265,7 +43034,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2798 i32.const 1 call $~lib/builtins/abort @@ -41280,7 +43049,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2799 i32.const 1 call $~lib/builtins/abort @@ -41295,7 +43064,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2800 i32.const 1 call $~lib/builtins/abort @@ -41310,7 +43079,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2801 i32.const 1 call $~lib/builtins/abort @@ -41325,7 +43094,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2802 i32.const 1 call $~lib/builtins/abort @@ -41340,7 +43109,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2803 i32.const 1 call $~lib/builtins/abort @@ -41355,7 +43124,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2804 i32.const 1 call $~lib/builtins/abort @@ -41370,7 +43139,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2805 i32.const 1 call $~lib/builtins/abort @@ -41385,7 +43154,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2806 i32.const 1 call $~lib/builtins/abort @@ -41400,7 +43169,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2807 i32.const 1 call $~lib/builtins/abort @@ -41415,7 +43184,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2808 i32.const 1 call $~lib/builtins/abort @@ -41430,7 +43199,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2809 i32.const 1 call $~lib/builtins/abort @@ -41445,7 +43214,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2810 i32.const 1 call $~lib/builtins/abort @@ -41460,7 +43229,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2811 i32.const 1 call $~lib/builtins/abort @@ -41475,7 +43244,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2812 i32.const 1 call $~lib/builtins/abort @@ -41490,7 +43259,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2813 i32.const 1 call $~lib/builtins/abort @@ -41505,7 +43274,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2814 i32.const 1 call $~lib/builtins/abort @@ -41520,7 +43289,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2815 i32.const 1 call $~lib/builtins/abort @@ -41535,7 +43304,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2816 i32.const 1 call $~lib/builtins/abort @@ -41550,7 +43319,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2817 i32.const 1 call $~lib/builtins/abort @@ -41565,7 +43334,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2818 i32.const 1 call $~lib/builtins/abort @@ -41580,7 +43349,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2819 i32.const 1 call $~lib/builtins/abort @@ -41595,7 +43364,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2820 i32.const 1 call $~lib/builtins/abort @@ -41610,7 +43379,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2821 i32.const 1 call $~lib/builtins/abort @@ -41625,7 +43394,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2822 i32.const 1 call $~lib/builtins/abort @@ -41640,7 +43409,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2823 i32.const 1 call $~lib/builtins/abort @@ -41655,7 +43424,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2824 i32.const 1 call $~lib/builtins/abort @@ -41670,7 +43439,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2825 i32.const 1 call $~lib/builtins/abort @@ -41685,7 +43454,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2826 i32.const 1 call $~lib/builtins/abort @@ -41700,7 +43469,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2827 i32.const 1 call $~lib/builtins/abort @@ -41715,7 +43484,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2828 i32.const 1 call $~lib/builtins/abort @@ -41730,7 +43499,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2829 i32.const 1 call $~lib/builtins/abort @@ -41745,7 +43514,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2830 i32.const 1 call $~lib/builtins/abort @@ -41760,7 +43529,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2831 i32.const 1 call $~lib/builtins/abort @@ -41775,7 +43544,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2832 i32.const 1 call $~lib/builtins/abort @@ -41790,7 +43559,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2833 i32.const 1 call $~lib/builtins/abort @@ -41805,7 +43574,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2834 i32.const 1 call $~lib/builtins/abort @@ -41820,7 +43589,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2835 i32.const 1 call $~lib/builtins/abort @@ -41835,7 +43604,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2836 i32.const 1 call $~lib/builtins/abort @@ -41850,7 +43619,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2837 i32.const 1 call $~lib/builtins/abort @@ -41865,7 +43634,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2838 i32.const 1 call $~lib/builtins/abort @@ -41880,7 +43649,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2839 i32.const 1 call $~lib/builtins/abort @@ -41895,7 +43664,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2840 i32.const 1 call $~lib/builtins/abort @@ -41910,7 +43679,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2841 i32.const 1 call $~lib/builtins/abort @@ -41925,7 +43694,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2842 i32.const 1 call $~lib/builtins/abort @@ -41940,7 +43709,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2845 i32.const 1 call $~lib/builtins/abort @@ -41955,7 +43724,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2846 i32.const 1 call $~lib/builtins/abort @@ -41970,7 +43739,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2847 i32.const 1 call $~lib/builtins/abort @@ -41985,7 +43754,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2848 i32.const 1 call $~lib/builtins/abort @@ -42000,7 +43769,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2849 i32.const 1 call $~lib/builtins/abort @@ -42015,7 +43784,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2850 i32.const 1 call $~lib/builtins/abort @@ -42030,7 +43799,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2852 i32.const 1 call $~lib/builtins/abort @@ -42045,7 +43814,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2853 i32.const 1 call $~lib/builtins/abort @@ -42060,7 +43829,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2854 i32.const 1 call $~lib/builtins/abort @@ -42075,7 +43844,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2855 i32.const 1 call $~lib/builtins/abort @@ -42090,7 +43859,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2856 i32.const 1 call $~lib/builtins/abort @@ -42105,7 +43874,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2857 i32.const 1 call $~lib/builtins/abort @@ -42120,7 +43889,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2859 i32.const 1 call $~lib/builtins/abort @@ -42135,7 +43904,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2861 i32.const 1 call $~lib/builtins/abort @@ -42150,7 +43919,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2862 i32.const 1 call $~lib/builtins/abort @@ -42165,7 +43934,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2863 i32.const 1 call $~lib/builtins/abort @@ -42180,7 +43949,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2864 i32.const 1 call $~lib/builtins/abort @@ -42195,7 +43964,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2866 i32.const 1 call $~lib/builtins/abort @@ -42210,7 +43979,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2867 i32.const 1 call $~lib/builtins/abort @@ -42225,7 +43994,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2868 i32.const 1 call $~lib/builtins/abort @@ -42240,7 +44009,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2869 i32.const 1 call $~lib/builtins/abort @@ -42255,7 +44024,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2870 i32.const 1 call $~lib/builtins/abort @@ -42270,7 +44039,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2871 i32.const 1 call $~lib/builtins/abort @@ -42285,7 +44054,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2872 i32.const 1 call $~lib/builtins/abort @@ -42300,7 +44069,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2873 i32.const 1 call $~lib/builtins/abort @@ -42315,7 +44084,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2874 i32.const 1 call $~lib/builtins/abort @@ -42330,7 +44099,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2875 i32.const 1 call $~lib/builtins/abort @@ -42345,7 +44114,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2877 i32.const 1 call $~lib/builtins/abort @@ -42360,7 +44129,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2878 i32.const 1 call $~lib/builtins/abort @@ -42375,7 +44144,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2879 i32.const 1 call $~lib/builtins/abort @@ -42390,7 +44159,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2880 i32.const 1 call $~lib/builtins/abort @@ -42405,7 +44174,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2881 i32.const 1 call $~lib/builtins/abort @@ -42420,7 +44189,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2882 i32.const 1 call $~lib/builtins/abort @@ -42435,7 +44204,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2884 i32.const 1 call $~lib/builtins/abort @@ -42450,7 +44219,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2885 i32.const 1 call $~lib/builtins/abort @@ -42465,7 +44234,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2886 i32.const 1 call $~lib/builtins/abort @@ -42480,7 +44249,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2887 i32.const 1 call $~lib/builtins/abort @@ -42495,7 +44264,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2889 i32.const 1 call $~lib/builtins/abort @@ -42510,7 +44279,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2890 i32.const 1 call $~lib/builtins/abort @@ -42525,7 +44294,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2891 i32.const 1 call $~lib/builtins/abort @@ -42540,7 +44309,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2892 i32.const 1 call $~lib/builtins/abort @@ -42555,7 +44324,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2893 i32.const 1 call $~lib/builtins/abort @@ -42570,7 +44339,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2894 i32.const 1 call $~lib/builtins/abort @@ -42585,7 +44354,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2895 i32.const 1 call $~lib/builtins/abort @@ -42600,7 +44369,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2897 i32.const 1 call $~lib/builtins/abort @@ -42615,7 +44384,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2898 i32.const 1 call $~lib/builtins/abort @@ -42630,7 +44399,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2899 i32.const 1 call $~lib/builtins/abort @@ -42645,7 +44414,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2900 i32.const 1 call $~lib/builtins/abort @@ -42660,7 +44429,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2902 i32.const 1 call $~lib/builtins/abort @@ -42675,7 +44444,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2903 i32.const 1 call $~lib/builtins/abort @@ -42690,7 +44459,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2904 i32.const 1 call $~lib/builtins/abort @@ -42705,7 +44474,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2905 i32.const 1 call $~lib/builtins/abort @@ -42720,7 +44489,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2907 i32.const 1 call $~lib/builtins/abort @@ -42735,7 +44504,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2908 i32.const 1 call $~lib/builtins/abort @@ -42750,7 +44519,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2909 i32.const 1 call $~lib/builtins/abort @@ -42765,7 +44534,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2910 i32.const 1 call $~lib/builtins/abort @@ -42780,7 +44549,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2911 i32.const 1 call $~lib/builtins/abort @@ -42795,7 +44564,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2912 i32.const 1 call $~lib/builtins/abort @@ -42810,7 +44579,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2914 i32.const 1 call $~lib/builtins/abort @@ -42825,7 +44594,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2915 i32.const 1 call $~lib/builtins/abort @@ -42840,7 +44609,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2917 i32.const 1 call $~lib/builtins/abort @@ -42855,7 +44624,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2918 i32.const 1 call $~lib/builtins/abort @@ -42870,7 +44639,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2919 i32.const 1 call $~lib/builtins/abort @@ -42885,7 +44654,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2920 i32.const 1 call $~lib/builtins/abort @@ -42900,7 +44669,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2921 i32.const 1 call $~lib/builtins/abort @@ -42915,7 +44684,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2922 i32.const 1 call $~lib/builtins/abort @@ -42930,7 +44699,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2923 i32.const 1 call $~lib/builtins/abort @@ -42945,7 +44714,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2925 i32.const 1 call $~lib/builtins/abort @@ -42960,7 +44729,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2926 i32.const 1 call $~lib/builtins/abort @@ -42975,7 +44744,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2928 i32.const 1 call $~lib/builtins/abort @@ -42990,7 +44759,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2929 i32.const 1 call $~lib/builtins/abort @@ -43005,7 +44774,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2930 i32.const 1 call $~lib/builtins/abort @@ -43020,7 +44789,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2931 i32.const 1 call $~lib/builtins/abort @@ -43035,7 +44804,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2932 i32.const 1 call $~lib/builtins/abort @@ -43050,7 +44819,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2933 i32.const 1 call $~lib/builtins/abort @@ -43065,7 +44834,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2934 i32.const 1 call $~lib/builtins/abort @@ -43080,7 +44849,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2935 i32.const 1 call $~lib/builtins/abort @@ -43095,7 +44864,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2937 i32.const 1 call $~lib/builtins/abort @@ -43110,7 +44879,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2938 i32.const 1 call $~lib/builtins/abort @@ -43125,7 +44894,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2939 i32.const 1 call $~lib/builtins/abort @@ -43140,7 +44909,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2941 i32.const 1 call $~lib/builtins/abort @@ -43155,7 +44924,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2942 i32.const 1 call $~lib/builtins/abort @@ -43170,7 +44939,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2944 i32.const 1 call $~lib/builtins/abort @@ -43185,7 +44954,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2945 i32.const 1 call $~lib/builtins/abort @@ -43200,7 +44969,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2946 i32.const 1 call $~lib/builtins/abort @@ -43215,7 +44984,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2947 i32.const 1 call $~lib/builtins/abort @@ -43230,7 +44999,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2948 i32.const 1 call $~lib/builtins/abort @@ -43245,7 +45014,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2949 i32.const 1 call $~lib/builtins/abort @@ -43260,7 +45029,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2950 i32.const 1 call $~lib/builtins/abort @@ -43275,7 +45044,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2951 i32.const 1 call $~lib/builtins/abort @@ -43290,7 +45059,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2952 i32.const 1 call $~lib/builtins/abort @@ -43305,7 +45074,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2953 i32.const 1 call $~lib/builtins/abort @@ -43320,7 +45089,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2954 i32.const 1 call $~lib/builtins/abort @@ -43335,7 +45104,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2955 i32.const 1 call $~lib/builtins/abort @@ -43350,7 +45119,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2956 i32.const 1 call $~lib/builtins/abort @@ -43365,7 +45134,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2957 i32.const 1 call $~lib/builtins/abort @@ -43380,7 +45149,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2958 i32.const 1 call $~lib/builtins/abort @@ -43395,7 +45164,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2959 i32.const 1 call $~lib/builtins/abort @@ -43410,7 +45179,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2960 i32.const 1 call $~lib/builtins/abort @@ -43425,7 +45194,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2961 i32.const 1 call $~lib/builtins/abort @@ -43440,7 +45209,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2962 i32.const 1 call $~lib/builtins/abort @@ -43455,7 +45224,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2963 i32.const 1 call $~lib/builtins/abort @@ -43470,7 +45239,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2965 i32.const 1 call $~lib/builtins/abort @@ -43485,7 +45254,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2966 i32.const 1 call $~lib/builtins/abort @@ -43500,7 +45269,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2967 i32.const 1 call $~lib/builtins/abort @@ -43515,7 +45284,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2968 i32.const 1 call $~lib/builtins/abort @@ -43530,7 +45299,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2969 i32.const 1 call $~lib/builtins/abort @@ -43545,7 +45314,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2970 i32.const 1 call $~lib/builtins/abort @@ -43560,7 +45329,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2971 i32.const 1 call $~lib/builtins/abort @@ -43575,7 +45344,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2973 i32.const 1 call $~lib/builtins/abort @@ -43590,7 +45359,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2974 i32.const 1 call $~lib/builtins/abort @@ -43605,7 +45374,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2976 i32.const 1 call $~lib/builtins/abort @@ -43620,7 +45389,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2977 i32.const 1 call $~lib/builtins/abort @@ -43635,7 +45404,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2978 i32.const 1 call $~lib/builtins/abort @@ -43650,7 +45419,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2979 i32.const 1 call $~lib/builtins/abort @@ -43665,7 +45434,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2980 i32.const 1 call $~lib/builtins/abort @@ -43680,7 +45449,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2981 i32.const 1 call $~lib/builtins/abort @@ -43695,7 +45464,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2982 i32.const 1 call $~lib/builtins/abort @@ -43710,7 +45479,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2983 i32.const 1 call $~lib/builtins/abort @@ -43725,7 +45494,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2984 i32.const 1 call $~lib/builtins/abort @@ -43740,7 +45509,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2985 i32.const 1 call $~lib/builtins/abort @@ -43755,7 +45524,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2986 i32.const 1 call $~lib/builtins/abort @@ -43770,7 +45539,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2988 i32.const 1 call $~lib/builtins/abort @@ -43785,7 +45554,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2989 i32.const 1 call $~lib/builtins/abort @@ -43800,7 +45569,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2990 i32.const 1 call $~lib/builtins/abort @@ -43815,7 +45584,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 2991 i32.const 1 call $~lib/builtins/abort @@ -43877,7 +45646,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3000 i32.const 3 call $~lib/builtins/abort @@ -43948,7 +45717,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3008 i32.const 3 call $~lib/builtins/abort @@ -43967,7 +45736,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3022 i32.const 1 call $~lib/builtins/abort @@ -43979,7 +45748,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3023 i32.const 1 call $~lib/builtins/abort @@ -43991,7 +45760,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3024 i32.const 1 call $~lib/builtins/abort @@ -44003,7 +45772,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3025 i32.const 1 call $~lib/builtins/abort @@ -44015,7 +45784,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3026 i32.const 1 call $~lib/builtins/abort @@ -44027,7 +45796,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3027 i32.const 1 call $~lib/builtins/abort @@ -44039,7 +45808,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3028 i32.const 1 call $~lib/builtins/abort @@ -44051,7 +45820,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3029 i32.const 1 call $~lib/builtins/abort @@ -44063,7 +45832,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3030 i32.const 1 call $~lib/builtins/abort @@ -44075,7 +45844,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3031 i32.const 1 call $~lib/builtins/abort @@ -44087,7 +45856,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3034 i32.const 1 call $~lib/builtins/abort @@ -44099,7 +45868,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3035 i32.const 1 call $~lib/builtins/abort @@ -44111,7 +45880,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3036 i32.const 1 call $~lib/builtins/abort @@ -44123,7 +45892,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3037 i32.const 1 call $~lib/builtins/abort @@ -44135,7 +45904,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3038 i32.const 1 call $~lib/builtins/abort @@ -44147,7 +45916,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3039 i32.const 1 call $~lib/builtins/abort @@ -44159,7 +45928,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3040 i32.const 1 call $~lib/builtins/abort @@ -44171,7 +45940,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3041 i32.const 1 call $~lib/builtins/abort @@ -44183,7 +45952,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3042 i32.const 1 call $~lib/builtins/abort @@ -44195,7 +45964,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3043 i32.const 1 call $~lib/builtins/abort @@ -44207,7 +45976,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3044 i32.const 1 call $~lib/builtins/abort @@ -44219,7 +45988,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3045 i32.const 1 call $~lib/builtins/abort @@ -44231,7 +46000,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3046 i32.const 1 call $~lib/builtins/abort @@ -44243,7 +46012,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3047 i32.const 1 call $~lib/builtins/abort @@ -44255,7 +46024,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3048 i32.const 1 call $~lib/builtins/abort @@ -44267,7 +46036,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3049 i32.const 1 call $~lib/builtins/abort @@ -44279,7 +46048,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3050 i32.const 1 call $~lib/builtins/abort @@ -44291,7 +46060,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3065 i32.const 1 call $~lib/builtins/abort @@ -44303,7 +46072,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3066 i32.const 1 call $~lib/builtins/abort @@ -44315,7 +46084,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3067 i32.const 1 call $~lib/builtins/abort @@ -44327,7 +46096,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3068 i32.const 1 call $~lib/builtins/abort @@ -44339,7 +46108,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3069 i32.const 1 call $~lib/builtins/abort @@ -44351,7 +46120,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3070 i32.const 1 call $~lib/builtins/abort @@ -44363,7 +46132,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3071 i32.const 1 call $~lib/builtins/abort @@ -44375,7 +46144,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3072 i32.const 1 call $~lib/builtins/abort @@ -44387,7 +46156,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3073 i32.const 1 call $~lib/builtins/abort @@ -44399,7 +46168,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3074 i32.const 1 call $~lib/builtins/abort @@ -44411,7 +46180,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3077 i32.const 1 call $~lib/builtins/abort @@ -44423,7 +46192,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3078 i32.const 1 call $~lib/builtins/abort @@ -44435,7 +46204,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3079 i32.const 1 call $~lib/builtins/abort @@ -44447,7 +46216,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3080 i32.const 1 call $~lib/builtins/abort @@ -44459,7 +46228,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3081 i32.const 1 call $~lib/builtins/abort @@ -44471,7 +46240,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3082 i32.const 1 call $~lib/builtins/abort @@ -44483,7 +46252,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3083 i32.const 1 call $~lib/builtins/abort @@ -44495,7 +46264,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3084 i32.const 1 call $~lib/builtins/abort @@ -44507,7 +46276,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3085 i32.const 1 call $~lib/builtins/abort @@ -44519,7 +46288,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3086 i32.const 1 call $~lib/builtins/abort @@ -44531,7 +46300,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3087 i32.const 1 call $~lib/builtins/abort @@ -44543,7 +46312,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3088 i32.const 1 call $~lib/builtins/abort @@ -44555,7 +46324,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3089 i32.const 1 call $~lib/builtins/abort @@ -44567,7 +46336,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3090 i32.const 1 call $~lib/builtins/abort @@ -44579,7 +46348,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3091 i32.const 1 call $~lib/builtins/abort @@ -44591,7 +46360,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3092 i32.const 1 call $~lib/builtins/abort @@ -44603,7 +46372,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3093 i32.const 1 call $~lib/builtins/abort @@ -44615,7 +46384,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3104 i32.const 1 call $~lib/builtins/abort @@ -44627,7 +46396,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3105 i32.const 1 call $~lib/builtins/abort @@ -44639,7 +46408,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3106 i32.const 1 call $~lib/builtins/abort @@ -44651,7 +46420,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3107 i32.const 1 call $~lib/builtins/abort @@ -44663,7 +46432,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3108 i32.const 1 call $~lib/builtins/abort @@ -44675,7 +46444,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3109 i32.const 1 call $~lib/builtins/abort @@ -44687,7 +46456,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3110 i32.const 1 call $~lib/builtins/abort @@ -44699,7 +46468,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3111 i32.const 1 call $~lib/builtins/abort @@ -44711,7 +46480,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3112 i32.const 1 call $~lib/builtins/abort @@ -44723,7 +46492,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3120 i32.const 1 call $~lib/builtins/abort @@ -44735,7 +46504,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3121 i32.const 1 call $~lib/builtins/abort @@ -44747,7 +46516,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3122 i32.const 1 call $~lib/builtins/abort @@ -44759,7 +46528,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3123 i32.const 1 call $~lib/builtins/abort @@ -44771,7 +46540,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3124 i32.const 1 call $~lib/builtins/abort @@ -44783,7 +46552,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3125 i32.const 1 call $~lib/builtins/abort @@ -44795,7 +46564,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3126 i32.const 1 call $~lib/builtins/abort @@ -44807,7 +46576,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3127 i32.const 1 call $~lib/builtins/abort @@ -44819,7 +46588,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3128 i32.const 1 call $~lib/builtins/abort @@ -44834,7 +46603,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3165 i32.const 1 call $~lib/builtins/abort @@ -44849,7 +46618,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3166 i32.const 1 call $~lib/builtins/abort @@ -44864,7 +46633,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3167 i32.const 1 call $~lib/builtins/abort @@ -44879,7 +46648,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3168 i32.const 1 call $~lib/builtins/abort @@ -44894,7 +46663,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3169 i32.const 1 call $~lib/builtins/abort @@ -44909,7 +46678,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3170 i32.const 1 call $~lib/builtins/abort @@ -44924,7 +46693,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3171 i32.const 1 call $~lib/builtins/abort @@ -44939,7 +46708,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3172 i32.const 1 call $~lib/builtins/abort @@ -44954,7 +46723,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3173 i32.const 1 call $~lib/builtins/abort @@ -44969,7 +46738,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3174 i32.const 1 call $~lib/builtins/abort @@ -44984,7 +46753,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3177 i32.const 1 call $~lib/builtins/abort @@ -44999,7 +46768,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3178 i32.const 1 call $~lib/builtins/abort @@ -45014,7 +46783,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3179 i32.const 1 call $~lib/builtins/abort @@ -45029,7 +46798,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3180 i32.const 1 call $~lib/builtins/abort @@ -45044,7 +46813,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3181 i32.const 1 call $~lib/builtins/abort @@ -45059,7 +46828,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3182 i32.const 1 call $~lib/builtins/abort @@ -45074,7 +46843,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3183 i32.const 1 call $~lib/builtins/abort @@ -45089,7 +46858,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3184 i32.const 1 call $~lib/builtins/abort @@ -45104,7 +46873,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3185 i32.const 1 call $~lib/builtins/abort @@ -45119,7 +46888,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3186 i32.const 1 call $~lib/builtins/abort @@ -45134,7 +46903,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3187 i32.const 1 call $~lib/builtins/abort @@ -45149,7 +46918,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3188 i32.const 1 call $~lib/builtins/abort @@ -45164,7 +46933,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3189 i32.const 1 call $~lib/builtins/abort @@ -45179,7 +46948,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3190 i32.const 1 call $~lib/builtins/abort @@ -45194,7 +46963,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3191 i32.const 1 call $~lib/builtins/abort @@ -45209,7 +46978,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3192 i32.const 1 call $~lib/builtins/abort @@ -45224,7 +46993,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3193 i32.const 1 call $~lib/builtins/abort @@ -45239,7 +47008,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3194 i32.const 1 call $~lib/builtins/abort @@ -45254,7 +47023,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3195 i32.const 1 call $~lib/builtins/abort @@ -45269,7 +47038,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3196 i32.const 1 call $~lib/builtins/abort @@ -45284,7 +47053,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3197 i32.const 1 call $~lib/builtins/abort @@ -45299,7 +47068,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3198 i32.const 1 call $~lib/builtins/abort @@ -45314,7 +47083,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3199 i32.const 1 call $~lib/builtins/abort @@ -45329,7 +47098,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3200 i32.const 1 call $~lib/builtins/abort @@ -45344,7 +47113,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3201 i32.const 1 call $~lib/builtins/abort @@ -45359,7 +47128,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3202 i32.const 1 call $~lib/builtins/abort @@ -45374,7 +47143,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3203 i32.const 1 call $~lib/builtins/abort @@ -45389,7 +47158,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3204 i32.const 1 call $~lib/builtins/abort @@ -45404,7 +47173,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3205 i32.const 1 call $~lib/builtins/abort @@ -45419,7 +47188,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3206 i32.const 1 call $~lib/builtins/abort @@ -45434,7 +47203,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3207 i32.const 1 call $~lib/builtins/abort @@ -45449,7 +47218,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3208 i32.const 1 call $~lib/builtins/abort @@ -45464,7 +47233,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3209 i32.const 1 call $~lib/builtins/abort @@ -45479,7 +47248,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3210 i32.const 1 call $~lib/builtins/abort @@ -45494,7 +47263,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3211 i32.const 1 call $~lib/builtins/abort @@ -45509,7 +47278,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3212 i32.const 1 call $~lib/builtins/abort @@ -45524,7 +47293,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3213 i32.const 1 call $~lib/builtins/abort @@ -45539,7 +47308,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3214 i32.const 1 call $~lib/builtins/abort @@ -45554,7 +47323,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3215 i32.const 1 call $~lib/builtins/abort @@ -45569,7 +47338,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3216 i32.const 1 call $~lib/builtins/abort @@ -45584,7 +47353,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3217 i32.const 1 call $~lib/builtins/abort @@ -45599,7 +47368,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3218 i32.const 1 call $~lib/builtins/abort @@ -45614,7 +47383,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3219 i32.const 1 call $~lib/builtins/abort @@ -45629,7 +47398,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3220 i32.const 1 call $~lib/builtins/abort @@ -45644,7 +47413,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3221 i32.const 1 call $~lib/builtins/abort @@ -45659,7 +47428,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3222 i32.const 1 call $~lib/builtins/abort @@ -45674,7 +47443,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3223 i32.const 1 call $~lib/builtins/abort @@ -45689,7 +47458,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3224 i32.const 1 call $~lib/builtins/abort @@ -45704,7 +47473,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3225 i32.const 1 call $~lib/builtins/abort @@ -45719,7 +47488,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3226 i32.const 1 call $~lib/builtins/abort @@ -45734,7 +47503,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3227 i32.const 1 call $~lib/builtins/abort @@ -45749,7 +47518,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3228 i32.const 1 call $~lib/builtins/abort @@ -45764,7 +47533,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3229 i32.const 1 call $~lib/builtins/abort @@ -45779,7 +47548,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3230 i32.const 1 call $~lib/builtins/abort @@ -45794,7 +47563,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3231 i32.const 1 call $~lib/builtins/abort @@ -45809,7 +47578,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3232 i32.const 1 call $~lib/builtins/abort @@ -45824,7 +47593,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3233 i32.const 1 call $~lib/builtins/abort @@ -45839,7 +47608,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3234 i32.const 1 call $~lib/builtins/abort @@ -45854,7 +47623,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3235 i32.const 1 call $~lib/builtins/abort @@ -45869,7 +47638,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3236 i32.const 1 call $~lib/builtins/abort @@ -45884,7 +47653,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3237 i32.const 1 call $~lib/builtins/abort @@ -45899,7 +47668,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3238 i32.const 1 call $~lib/builtins/abort @@ -45914,7 +47683,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3239 i32.const 1 call $~lib/builtins/abort @@ -45929,7 +47698,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3240 i32.const 1 call $~lib/builtins/abort @@ -45944,7 +47713,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3241 i32.const 1 call $~lib/builtins/abort @@ -45959,7 +47728,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3242 i32.const 1 call $~lib/builtins/abort @@ -45974,7 +47743,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3243 i32.const 1 call $~lib/builtins/abort @@ -45989,7 +47758,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3252 i32.const 1 call $~lib/builtins/abort @@ -46004,7 +47773,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3253 i32.const 1 call $~lib/builtins/abort @@ -46019,7 +47788,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3254 i32.const 1 call $~lib/builtins/abort @@ -46034,7 +47803,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3255 i32.const 1 call $~lib/builtins/abort @@ -46049,7 +47818,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3256 i32.const 1 call $~lib/builtins/abort @@ -46064,7 +47833,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3257 i32.const 1 call $~lib/builtins/abort @@ -46079,7 +47848,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3258 i32.const 1 call $~lib/builtins/abort @@ -46094,7 +47863,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3259 i32.const 1 call $~lib/builtins/abort @@ -46109,7 +47878,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3260 i32.const 1 call $~lib/builtins/abort @@ -46124,7 +47893,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3261 i32.const 1 call $~lib/builtins/abort @@ -46139,7 +47908,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3264 i32.const 1 call $~lib/builtins/abort @@ -46154,7 +47923,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3265 i32.const 1 call $~lib/builtins/abort @@ -46169,7 +47938,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3266 i32.const 1 call $~lib/builtins/abort @@ -46184,7 +47953,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3267 i32.const 1 call $~lib/builtins/abort @@ -46199,7 +47968,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3268 i32.const 1 call $~lib/builtins/abort @@ -46214,7 +47983,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3269 i32.const 1 call $~lib/builtins/abort @@ -46229,7 +47998,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3270 i32.const 1 call $~lib/builtins/abort @@ -46244,7 +48013,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3271 i32.const 1 call $~lib/builtins/abort @@ -46259,7 +48028,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3272 i32.const 1 call $~lib/builtins/abort @@ -46274,7 +48043,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3273 i32.const 1 call $~lib/builtins/abort @@ -46289,7 +48058,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3274 i32.const 1 call $~lib/builtins/abort @@ -46304,7 +48073,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3275 i32.const 1 call $~lib/builtins/abort @@ -46319,7 +48088,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3276 i32.const 1 call $~lib/builtins/abort @@ -46334,7 +48103,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3277 i32.const 1 call $~lib/builtins/abort @@ -46349,7 +48118,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3278 i32.const 1 call $~lib/builtins/abort @@ -46364,7 +48133,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3279 i32.const 1 call $~lib/builtins/abort @@ -46379,7 +48148,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3280 i32.const 1 call $~lib/builtins/abort @@ -46394,7 +48163,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3281 i32.const 1 call $~lib/builtins/abort @@ -46409,7 +48178,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3282 i32.const 1 call $~lib/builtins/abort @@ -46424,7 +48193,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3283 i32.const 1 call $~lib/builtins/abort @@ -46439,7 +48208,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3284 i32.const 1 call $~lib/builtins/abort @@ -46454,7 +48223,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3285 i32.const 1 call $~lib/builtins/abort @@ -46469,7 +48238,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3286 i32.const 1 call $~lib/builtins/abort @@ -46484,7 +48253,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3287 i32.const 1 call $~lib/builtins/abort @@ -46499,7 +48268,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3288 i32.const 1 call $~lib/builtins/abort @@ -46514,7 +48283,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3289 i32.const 1 call $~lib/builtins/abort @@ -46529,7 +48298,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3290 i32.const 1 call $~lib/builtins/abort @@ -46544,7 +48313,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3291 i32.const 1 call $~lib/builtins/abort @@ -46559,7 +48328,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3292 i32.const 1 call $~lib/builtins/abort @@ -46574,7 +48343,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3293 i32.const 1 call $~lib/builtins/abort @@ -46589,7 +48358,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3294 i32.const 1 call $~lib/builtins/abort @@ -46604,7 +48373,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3295 i32.const 1 call $~lib/builtins/abort @@ -46619,7 +48388,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3296 i32.const 1 call $~lib/builtins/abort @@ -46634,7 +48403,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3297 i32.const 1 call $~lib/builtins/abort @@ -46649,7 +48418,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3298 i32.const 1 call $~lib/builtins/abort @@ -46664,7 +48433,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3299 i32.const 1 call $~lib/builtins/abort @@ -46679,7 +48448,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3300 i32.const 1 call $~lib/builtins/abort @@ -46694,7 +48463,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3301 i32.const 1 call $~lib/builtins/abort @@ -46709,7 +48478,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3302 i32.const 1 call $~lib/builtins/abort @@ -46724,7 +48493,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3303 i32.const 1 call $~lib/builtins/abort @@ -46739,7 +48508,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3304 i32.const 1 call $~lib/builtins/abort @@ -46754,7 +48523,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3305 i32.const 1 call $~lib/builtins/abort @@ -46769,7 +48538,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3306 i32.const 1 call $~lib/builtins/abort @@ -46784,7 +48553,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3307 i32.const 1 call $~lib/builtins/abort @@ -46799,7 +48568,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3308 i32.const 1 call $~lib/builtins/abort @@ -46814,7 +48583,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3309 i32.const 1 call $~lib/builtins/abort @@ -46829,7 +48598,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3310 i32.const 1 call $~lib/builtins/abort @@ -46844,7 +48613,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3311 i32.const 1 call $~lib/builtins/abort @@ -46859,7 +48628,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3312 i32.const 1 call $~lib/builtins/abort @@ -46874,7 +48643,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3313 i32.const 1 call $~lib/builtins/abort @@ -46889,7 +48658,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3314 i32.const 1 call $~lib/builtins/abort @@ -46904,7 +48673,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3315 i32.const 1 call $~lib/builtins/abort @@ -46919,7 +48688,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3316 i32.const 1 call $~lib/builtins/abort @@ -46934,7 +48703,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3317 i32.const 1 call $~lib/builtins/abort @@ -46949,7 +48718,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3318 i32.const 1 call $~lib/builtins/abort @@ -46964,7 +48733,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3319 i32.const 1 call $~lib/builtins/abort @@ -46979,7 +48748,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3320 i32.const 1 call $~lib/builtins/abort @@ -46994,7 +48763,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3321 i32.const 1 call $~lib/builtins/abort @@ -47009,7 +48778,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3322 i32.const 1 call $~lib/builtins/abort @@ -47024,7 +48793,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3323 i32.const 1 call $~lib/builtins/abort @@ -47039,7 +48808,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3324 i32.const 1 call $~lib/builtins/abort @@ -47054,7 +48823,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3325 i32.const 1 call $~lib/builtins/abort @@ -47069,7 +48838,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3326 i32.const 1 call $~lib/builtins/abort @@ -47084,7 +48853,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3327 i32.const 1 call $~lib/builtins/abort @@ -47099,7 +48868,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3328 i32.const 1 call $~lib/builtins/abort @@ -47114,7 +48883,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3329 i32.const 1 call $~lib/builtins/abort @@ -47129,7 +48898,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3330 i32.const 1 call $~lib/builtins/abort @@ -47152,7 +48921,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3342 i32.const 1 call $~lib/builtins/abort @@ -47175,7 +48944,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3343 i32.const 1 call $~lib/builtins/abort @@ -47198,7 +48967,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3344 i32.const 1 call $~lib/builtins/abort @@ -47221,7 +48990,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3345 i32.const 1 call $~lib/builtins/abort @@ -47244,7 +49013,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3346 i32.const 1 call $~lib/builtins/abort @@ -47267,7 +49036,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3347 i32.const 1 call $~lib/builtins/abort @@ -47290,7 +49059,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3348 i32.const 1 call $~lib/builtins/abort @@ -47313,7 +49082,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3349 i32.const 1 call $~lib/builtins/abort @@ -47336,7 +49105,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3350 i32.const 1 call $~lib/builtins/abort @@ -47359,7 +49128,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3351 i32.const 1 call $~lib/builtins/abort @@ -47382,7 +49151,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3354 i32.const 1 call $~lib/builtins/abort @@ -47405,7 +49174,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3355 i32.const 1 call $~lib/builtins/abort @@ -47428,7 +49197,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3356 i32.const 1 call $~lib/builtins/abort @@ -47451,7 +49220,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3357 i32.const 1 call $~lib/builtins/abort @@ -47474,7 +49243,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3358 i32.const 1 call $~lib/builtins/abort @@ -47497,7 +49266,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3359 i32.const 1 call $~lib/builtins/abort @@ -47520,7 +49289,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3360 i32.const 1 call $~lib/builtins/abort @@ -47543,7 +49312,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3361 i32.const 1 call $~lib/builtins/abort @@ -47566,7 +49335,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3362 i32.const 1 call $~lib/builtins/abort @@ -47589,7 +49358,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3363 i32.const 1 call $~lib/builtins/abort @@ -47612,7 +49381,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3364 i32.const 1 call $~lib/builtins/abort @@ -47635,7 +49404,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3365 i32.const 1 call $~lib/builtins/abort @@ -47658,7 +49427,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3366 i32.const 1 call $~lib/builtins/abort @@ -47681,7 +49450,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3367 i32.const 1 call $~lib/builtins/abort @@ -47704,7 +49473,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3368 i32.const 1 call $~lib/builtins/abort @@ -47727,7 +49496,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3369 i32.const 1 call $~lib/builtins/abort @@ -47750,7 +49519,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3370 i32.const 1 call $~lib/builtins/abort @@ -47773,7 +49542,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3371 i32.const 1 call $~lib/builtins/abort @@ -47796,7 +49565,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3372 i32.const 1 call $~lib/builtins/abort @@ -47819,7 +49588,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3373 i32.const 1 call $~lib/builtins/abort @@ -47842,7 +49611,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3374 i32.const 1 call $~lib/builtins/abort @@ -47865,7 +49634,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3375 i32.const 1 call $~lib/builtins/abort @@ -47888,7 +49657,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3376 i32.const 1 call $~lib/builtins/abort @@ -47911,7 +49680,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3377 i32.const 1 call $~lib/builtins/abort @@ -47934,7 +49703,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3378 i32.const 1 call $~lib/builtins/abort @@ -47957,7 +49726,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3379 i32.const 1 call $~lib/builtins/abort @@ -47980,7 +49749,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3380 i32.const 1 call $~lib/builtins/abort @@ -48003,7 +49772,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3381 i32.const 1 call $~lib/builtins/abort @@ -48026,7 +49795,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3382 i32.const 1 call $~lib/builtins/abort @@ -48049,7 +49818,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3383 i32.const 1 call $~lib/builtins/abort @@ -48072,7 +49841,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3384 i32.const 1 call $~lib/builtins/abort @@ -48095,7 +49864,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3385 i32.const 1 call $~lib/builtins/abort @@ -48118,7 +49887,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3386 i32.const 1 call $~lib/builtins/abort @@ -48141,7 +49910,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3387 i32.const 1 call $~lib/builtins/abort @@ -48164,7 +49933,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3388 i32.const 1 call $~lib/builtins/abort @@ -48187,7 +49956,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3389 i32.const 1 call $~lib/builtins/abort @@ -48210,7 +49979,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3390 i32.const 1 call $~lib/builtins/abort @@ -48233,7 +50002,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3393 i32.const 1 call $~lib/builtins/abort @@ -48256,7 +50025,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3394 i32.const 1 call $~lib/builtins/abort @@ -48279,7 +50048,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3395 i32.const 1 call $~lib/builtins/abort @@ -48302,7 +50071,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3396 i32.const 1 call $~lib/builtins/abort @@ -48325,7 +50094,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3397 i32.const 1 call $~lib/builtins/abort @@ -48338,7 +50107,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3400 i32.const 1 call $~lib/builtins/abort @@ -48351,7 +50120,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3401 i32.const 1 call $~lib/builtins/abort @@ -48363,7 +50132,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3404 i32.const 1 call $~lib/builtins/abort @@ -48375,7 +50144,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3405 i32.const 1 call $~lib/builtins/abort @@ -48387,7 +50156,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3407 i32.const 1 call $~lib/builtins/abort @@ -48399,7 +50168,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3408 i32.const 1 call $~lib/builtins/abort @@ -48411,7 +50180,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3411 i32.const 1 call $~lib/builtins/abort @@ -48423,7 +50192,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3412 i32.const 1 call $~lib/builtins/abort @@ -48435,7 +50204,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3413 i32.const 1 call $~lib/builtins/abort @@ -48447,7 +50216,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3414 i32.const 1 call $~lib/builtins/abort @@ -48459,7 +50228,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3416 i32.const 1 call $~lib/builtins/abort @@ -48471,7 +50240,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3417 i32.const 1 call $~lib/builtins/abort @@ -48483,7 +50252,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3419 i32.const 1 call $~lib/builtins/abort @@ -48495,7 +50264,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3420 i32.const 1 call $~lib/builtins/abort @@ -48507,7 +50276,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3421 i32.const 1 call $~lib/builtins/abort @@ -48519,7 +50288,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3422 i32.const 1 call $~lib/builtins/abort @@ -48531,7 +50300,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3423 i32.const 1 call $~lib/builtins/abort @@ -48543,7 +50312,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3426 i32.const 1 call $~lib/builtins/abort @@ -48555,7 +50324,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3427 i32.const 1 call $~lib/builtins/abort @@ -48569,7 +50338,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3436 i32.const 1 call $~lib/builtins/abort @@ -48583,7 +50352,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3437 i32.const 1 call $~lib/builtins/abort @@ -48597,7 +50366,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3438 i32.const 1 call $~lib/builtins/abort @@ -48611,7 +50380,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3439 i32.const 1 call $~lib/builtins/abort @@ -48625,7 +50394,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3440 i32.const 1 call $~lib/builtins/abort @@ -48639,7 +50408,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3441 i32.const 1 call $~lib/builtins/abort @@ -48653,7 +50422,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3442 i32.const 1 call $~lib/builtins/abort @@ -48667,7 +50436,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3443 i32.const 1 call $~lib/builtins/abort @@ -48681,7 +50450,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3444 i32.const 1 call $~lib/builtins/abort @@ -48695,7 +50464,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3445 i32.const 1 call $~lib/builtins/abort @@ -48709,7 +50478,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3448 i32.const 1 call $~lib/builtins/abort @@ -48723,7 +50492,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3449 i32.const 1 call $~lib/builtins/abort @@ -48737,7 +50506,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3450 i32.const 1 call $~lib/builtins/abort @@ -48751,7 +50520,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3451 i32.const 1 call $~lib/builtins/abort @@ -48765,7 +50534,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3452 i32.const 1 call $~lib/builtins/abort @@ -48779,7 +50548,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3455 i32.const 1 call $~lib/builtins/abort @@ -48793,7 +50562,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3456 i32.const 1 call $~lib/builtins/abort @@ -48807,7 +50576,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3457 i32.const 1 call $~lib/builtins/abort @@ -48821,7 +50590,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3458 i32.const 1 call $~lib/builtins/abort @@ -48835,7 +50604,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3459 i32.const 1 call $~lib/builtins/abort @@ -48849,7 +50618,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3460 i32.const 1 call $~lib/builtins/abort @@ -48863,7 +50632,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3461 i32.const 1 call $~lib/builtins/abort @@ -48877,7 +50646,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3462 i32.const 1 call $~lib/builtins/abort @@ -48891,7 +50660,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3463 i32.const 1 call $~lib/builtins/abort @@ -48905,7 +50674,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3464 i32.const 1 call $~lib/builtins/abort @@ -48919,7 +50688,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3465 i32.const 1 call $~lib/builtins/abort @@ -48933,7 +50702,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3466 i32.const 1 call $~lib/builtins/abort @@ -48947,7 +50716,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3467 i32.const 1 call $~lib/builtins/abort @@ -48961,7 +50730,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3468 i32.const 1 call $~lib/builtins/abort @@ -48975,7 +50744,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3469 i32.const 1 call $~lib/builtins/abort @@ -48989,7 +50758,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3470 i32.const 1 call $~lib/builtins/abort @@ -49003,7 +50772,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3471 i32.const 1 call $~lib/builtins/abort @@ -49017,7 +50786,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3472 i32.const 1 call $~lib/builtins/abort @@ -49031,7 +50800,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3473 i32.const 1 call $~lib/builtins/abort @@ -49045,7 +50814,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3474 i32.const 1 call $~lib/builtins/abort @@ -49059,7 +50828,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3475 i32.const 1 call $~lib/builtins/abort @@ -49073,7 +50842,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3476 i32.const 1 call $~lib/builtins/abort @@ -49087,7 +50856,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3477 i32.const 1 call $~lib/builtins/abort @@ -49101,7 +50870,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3478 i32.const 1 call $~lib/builtins/abort @@ -49115,7 +50884,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3479 i32.const 1 call $~lib/builtins/abort @@ -49129,7 +50898,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3480 i32.const 1 call $~lib/builtins/abort @@ -49143,7 +50912,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3481 i32.const 1 call $~lib/builtins/abort @@ -49157,7 +50926,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3482 i32.const 1 call $~lib/builtins/abort @@ -49171,7 +50940,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3483 i32.const 1 call $~lib/builtins/abort @@ -49185,7 +50954,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3484 i32.const 1 call $~lib/builtins/abort @@ -49199,7 +50968,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3485 i32.const 1 call $~lib/builtins/abort @@ -49213,7 +50982,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3486 i32.const 1 call $~lib/builtins/abort @@ -49227,7 +50996,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3487 i32.const 1 call $~lib/builtins/abort @@ -49241,7 +51010,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3488 i32.const 1 call $~lib/builtins/abort @@ -49255,7 +51024,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3489 i32.const 1 call $~lib/builtins/abort @@ -49269,7 +51038,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3490 i32.const 1 call $~lib/builtins/abort @@ -49283,7 +51052,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3491 i32.const 1 call $~lib/builtins/abort @@ -49297,7 +51066,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3492 i32.const 1 call $~lib/builtins/abort @@ -49311,7 +51080,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3495 i32.const 1 call $~lib/builtins/abort @@ -49325,7 +51094,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3496 i32.const 1 call $~lib/builtins/abort @@ -49339,7 +51108,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3497 i32.const 1 call $~lib/builtins/abort @@ -49353,7 +51122,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3498 i32.const 1 call $~lib/builtins/abort @@ -49367,7 +51136,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3499 i32.const 1 call $~lib/builtins/abort @@ -49381,7 +51150,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3500 i32.const 1 call $~lib/builtins/abort @@ -49395,7 +51164,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3501 i32.const 1 call $~lib/builtins/abort @@ -49409,7 +51178,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3502 i32.const 1 call $~lib/builtins/abort @@ -49423,7 +51192,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3503 i32.const 1 call $~lib/builtins/abort @@ -49437,7 +51206,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3504 i32.const 1 call $~lib/builtins/abort @@ -49451,7 +51220,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3505 i32.const 1 call $~lib/builtins/abort @@ -49465,7 +51234,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3506 i32.const 1 call $~lib/builtins/abort @@ -49479,7 +51248,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3507 i32.const 1 call $~lib/builtins/abort @@ -49493,7 +51262,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3508 i32.const 1 call $~lib/builtins/abort @@ -49506,7 +51275,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3520 i32.const 1 call $~lib/builtins/abort @@ -49519,7 +51288,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3521 i32.const 1 call $~lib/builtins/abort @@ -49532,7 +51301,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3522 i32.const 1 call $~lib/builtins/abort @@ -49545,7 +51314,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3523 i32.const 1 call $~lib/builtins/abort @@ -49558,7 +51327,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3524 i32.const 1 call $~lib/builtins/abort @@ -49571,7 +51340,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3525 i32.const 1 call $~lib/builtins/abort @@ -49584,7 +51353,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3526 i32.const 1 call $~lib/builtins/abort @@ -49597,7 +51366,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3527 i32.const 1 call $~lib/builtins/abort @@ -49610,7 +51379,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3528 i32.const 1 call $~lib/builtins/abort @@ -49623,7 +51392,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3529 i32.const 1 call $~lib/builtins/abort @@ -49636,7 +51405,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3532 i32.const 1 call $~lib/builtins/abort @@ -49649,7 +51418,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3533 i32.const 1 call $~lib/builtins/abort @@ -49662,7 +51431,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3534 i32.const 1 call $~lib/builtins/abort @@ -49675,7 +51444,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3535 i32.const 1 call $~lib/builtins/abort @@ -49688,7 +51457,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3536 i32.const 1 call $~lib/builtins/abort @@ -49701,7 +51470,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3545 i32.const 1 call $~lib/builtins/abort @@ -49714,7 +51483,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3546 i32.const 1 call $~lib/builtins/abort @@ -49727,7 +51496,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3547 i32.const 1 call $~lib/builtins/abort @@ -49740,7 +51509,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3548 i32.const 1 call $~lib/builtins/abort @@ -49753,7 +51522,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3549 i32.const 1 call $~lib/builtins/abort @@ -49766,7 +51535,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3550 i32.const 1 call $~lib/builtins/abort @@ -49779,7 +51548,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3551 i32.const 1 call $~lib/builtins/abort @@ -49792,7 +51561,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3552 i32.const 1 call $~lib/builtins/abort @@ -49805,7 +51574,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3553 i32.const 1 call $~lib/builtins/abort @@ -49818,7 +51587,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3554 i32.const 1 call $~lib/builtins/abort @@ -49831,7 +51600,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3557 i32.const 1 call $~lib/builtins/abort @@ -49844,7 +51613,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3558 i32.const 1 call $~lib/builtins/abort @@ -49857,7 +51626,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3559 i32.const 1 call $~lib/builtins/abort @@ -49870,7 +51639,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3560 i32.const 1 call $~lib/builtins/abort @@ -49883,7 +51652,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3561 i32.const 1 call $~lib/builtins/abort @@ -49905,7 +51674,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3573 i32.const 1 call $~lib/builtins/abort @@ -49927,7 +51696,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3574 i32.const 1 call $~lib/builtins/abort @@ -49949,7 +51718,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3575 i32.const 1 call $~lib/builtins/abort @@ -49971,7 +51740,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3576 i32.const 1 call $~lib/builtins/abort @@ -49993,7 +51762,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3577 i32.const 1 call $~lib/builtins/abort @@ -50015,7 +51784,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3578 i32.const 1 call $~lib/builtins/abort @@ -50037,7 +51806,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3579 i32.const 1 call $~lib/builtins/abort @@ -50059,7 +51828,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3580 i32.const 1 call $~lib/builtins/abort @@ -50081,7 +51850,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3581 i32.const 1 call $~lib/builtins/abort @@ -50103,7 +51872,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3582 i32.const 1 call $~lib/builtins/abort @@ -50125,7 +51894,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3585 i32.const 1 call $~lib/builtins/abort @@ -50147,7 +51916,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3586 i32.const 1 call $~lib/builtins/abort @@ -50169,7 +51938,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3587 i32.const 1 call $~lib/builtins/abort @@ -50191,7 +51960,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3588 i32.const 1 call $~lib/builtins/abort @@ -50213,7 +51982,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3589 i32.const 1 call $~lib/builtins/abort @@ -50235,7 +52004,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3590 i32.const 1 call $~lib/builtins/abort @@ -50257,7 +52026,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3591 i32.const 1 call $~lib/builtins/abort @@ -50279,7 +52048,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3592 i32.const 1 call $~lib/builtins/abort @@ -50301,7 +52070,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3593 i32.const 1 call $~lib/builtins/abort @@ -50323,7 +52092,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3594 i32.const 1 call $~lib/builtins/abort @@ -50345,7 +52114,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3595 i32.const 1 call $~lib/builtins/abort @@ -50367,7 +52136,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3596 i32.const 1 call $~lib/builtins/abort @@ -50389,7 +52158,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3597 i32.const 1 call $~lib/builtins/abort @@ -50411,7 +52180,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3598 i32.const 1 call $~lib/builtins/abort @@ -50433,7 +52202,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3599 i32.const 1 call $~lib/builtins/abort @@ -50455,7 +52224,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3600 i32.const 1 call $~lib/builtins/abort @@ -50477,7 +52246,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3601 i32.const 1 call $~lib/builtins/abort @@ -50499,7 +52268,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3602 i32.const 1 call $~lib/builtins/abort @@ -50521,7 +52290,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3603 i32.const 1 call $~lib/builtins/abort @@ -50543,7 +52312,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3604 i32.const 1 call $~lib/builtins/abort @@ -50565,7 +52334,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3605 i32.const 1 call $~lib/builtins/abort @@ -50587,7 +52356,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3606 i32.const 1 call $~lib/builtins/abort @@ -50609,7 +52378,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3607 i32.const 1 call $~lib/builtins/abort @@ -50631,7 +52400,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3608 i32.const 1 call $~lib/builtins/abort @@ -50653,7 +52422,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3609 i32.const 1 call $~lib/builtins/abort @@ -50675,7 +52444,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3610 i32.const 1 call $~lib/builtins/abort @@ -50697,7 +52466,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3611 i32.const 1 call $~lib/builtins/abort @@ -50719,7 +52488,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3612 i32.const 1 call $~lib/builtins/abort @@ -50741,7 +52510,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3613 i32.const 1 call $~lib/builtins/abort @@ -50763,7 +52532,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3614 i32.const 1 call $~lib/builtins/abort @@ -50785,7 +52554,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3615 i32.const 1 call $~lib/builtins/abort @@ -50807,7 +52576,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3616 i32.const 1 call $~lib/builtins/abort @@ -50829,7 +52598,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3617 i32.const 1 call $~lib/builtins/abort @@ -50851,7 +52620,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3618 i32.const 1 call $~lib/builtins/abort @@ -50873,7 +52642,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3619 i32.const 1 call $~lib/builtins/abort @@ -50895,7 +52664,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3620 i32.const 1 call $~lib/builtins/abort @@ -50917,7 +52686,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3621 i32.const 1 call $~lib/builtins/abort @@ -50939,7 +52708,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3622 i32.const 1 call $~lib/builtins/abort @@ -50961,7 +52730,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3623 i32.const 1 call $~lib/builtins/abort @@ -50983,7 +52752,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3624 i32.const 1 call $~lib/builtins/abort @@ -51005,7 +52774,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3625 i32.const 1 call $~lib/builtins/abort @@ -51027,7 +52796,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3626 i32.const 1 call $~lib/builtins/abort @@ -51049,7 +52818,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3627 i32.const 1 call $~lib/builtins/abort @@ -51071,7 +52840,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3628 i32.const 1 call $~lib/builtins/abort @@ -51093,7 +52862,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3629 i32.const 1 call $~lib/builtins/abort @@ -51115,7 +52884,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3630 i32.const 1 call $~lib/builtins/abort @@ -51137,7 +52906,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3631 i32.const 1 call $~lib/builtins/abort @@ -51159,7 +52928,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3632 i32.const 1 call $~lib/builtins/abort @@ -51181,7 +52950,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3633 i32.const 1 call $~lib/builtins/abort @@ -51203,7 +52972,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3634 i32.const 1 call $~lib/builtins/abort @@ -51225,7 +52994,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3635 i32.const 1 call $~lib/builtins/abort @@ -51247,7 +53016,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3636 i32.const 1 call $~lib/builtins/abort @@ -51269,7 +53038,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3637 i32.const 1 call $~lib/builtins/abort @@ -51291,7 +53060,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3638 i32.const 1 call $~lib/builtins/abort @@ -51313,7 +53082,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3639 i32.const 1 call $~lib/builtins/abort @@ -51335,7 +53104,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3640 i32.const 1 call $~lib/builtins/abort @@ -51357,7 +53126,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3641 i32.const 1 call $~lib/builtins/abort @@ -51379,7 +53148,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3642 i32.const 1 call $~lib/builtins/abort @@ -51401,7 +53170,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3643 i32.const 1 call $~lib/builtins/abort @@ -51423,7 +53192,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3644 i32.const 1 call $~lib/builtins/abort @@ -51445,7 +53214,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3645 i32.const 1 call $~lib/builtins/abort @@ -51467,7 +53236,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3646 i32.const 1 call $~lib/builtins/abort @@ -51489,7 +53258,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3647 i32.const 1 call $~lib/builtins/abort @@ -51511,7 +53280,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3648 i32.const 1 call $~lib/builtins/abort @@ -51533,7 +53302,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3649 i32.const 1 call $~lib/builtins/abort @@ -51555,7 +53324,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3650 i32.const 1 call $~lib/builtins/abort @@ -51577,7 +53346,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3651 i32.const 1 call $~lib/builtins/abort @@ -51599,7 +53368,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3652 i32.const 1 call $~lib/builtins/abort @@ -51621,7 +53390,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3653 i32.const 1 call $~lib/builtins/abort @@ -51643,7 +53412,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3654 i32.const 1 call $~lib/builtins/abort @@ -51665,7 +53434,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3655 i32.const 1 call $~lib/builtins/abort @@ -51687,7 +53456,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3656 i32.const 1 call $~lib/builtins/abort @@ -51709,7 +53478,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3657 i32.const 1 call $~lib/builtins/abort @@ -51731,7 +53500,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3658 i32.const 1 call $~lib/builtins/abort @@ -51744,7 +53513,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3667 i32.const 1 call $~lib/builtins/abort @@ -51757,7 +53526,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3668 i32.const 1 call $~lib/builtins/abort @@ -51770,7 +53539,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3669 i32.const 1 call $~lib/builtins/abort @@ -51783,7 +53552,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3670 i32.const 1 call $~lib/builtins/abort @@ -51796,7 +53565,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3671 i32.const 1 call $~lib/builtins/abort @@ -51809,7 +53578,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3672 i32.const 1 call $~lib/builtins/abort @@ -51822,7 +53591,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3673 i32.const 1 call $~lib/builtins/abort @@ -51835,7 +53604,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3674 i32.const 1 call $~lib/builtins/abort @@ -51848,7 +53617,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3675 i32.const 1 call $~lib/builtins/abort @@ -51861,7 +53630,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3676 i32.const 1 call $~lib/builtins/abort @@ -51874,7 +53643,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3679 i32.const 1 call $~lib/builtins/abort @@ -51887,7 +53656,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3680 i32.const 1 call $~lib/builtins/abort @@ -51900,7 +53669,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3681 i32.const 1 call $~lib/builtins/abort @@ -51913,7 +53682,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3682 i32.const 1 call $~lib/builtins/abort @@ -51926,7 +53695,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3683 i32.const 1 call $~lib/builtins/abort @@ -51939,7 +53708,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3684 i32.const 1 call $~lib/builtins/abort @@ -51952,7 +53721,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3685 i32.const 1 call $~lib/builtins/abort @@ -51965,7 +53734,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3686 i32.const 1 call $~lib/builtins/abort @@ -51978,7 +53747,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3687 i32.const 1 call $~lib/builtins/abort @@ -51991,7 +53760,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3688 i32.const 1 call $~lib/builtins/abort @@ -52004,7 +53773,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3689 i32.const 1 call $~lib/builtins/abort @@ -52017,7 +53786,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3690 i32.const 1 call $~lib/builtins/abort @@ -52030,7 +53799,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3691 i32.const 1 call $~lib/builtins/abort @@ -52043,7 +53812,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3692 i32.const 1 call $~lib/builtins/abort @@ -52056,7 +53825,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3693 i32.const 1 call $~lib/builtins/abort @@ -52069,7 +53838,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3694 i32.const 1 call $~lib/builtins/abort @@ -52082,7 +53851,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3695 i32.const 1 call $~lib/builtins/abort @@ -52095,7 +53864,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3696 i32.const 1 call $~lib/builtins/abort @@ -52108,7 +53877,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3697 i32.const 1 call $~lib/builtins/abort @@ -52121,7 +53890,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3698 i32.const 1 call $~lib/builtins/abort @@ -52134,7 +53903,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3699 i32.const 1 call $~lib/builtins/abort @@ -52147,7 +53916,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3700 i32.const 1 call $~lib/builtins/abort @@ -52170,7 +53939,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3712 i32.const 1 call $~lib/builtins/abort @@ -52193,7 +53962,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3713 i32.const 1 call $~lib/builtins/abort @@ -52216,7 +53985,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3714 i32.const 1 call $~lib/builtins/abort @@ -52239,7 +54008,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3715 i32.const 1 call $~lib/builtins/abort @@ -52262,7 +54031,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3716 i32.const 1 call $~lib/builtins/abort @@ -52285,7 +54054,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3717 i32.const 1 call $~lib/builtins/abort @@ -52308,7 +54077,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3718 i32.const 1 call $~lib/builtins/abort @@ -52331,7 +54100,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3719 i32.const 1 call $~lib/builtins/abort @@ -52354,7 +54123,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3720 i32.const 1 call $~lib/builtins/abort @@ -52377,7 +54146,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3721 i32.const 1 call $~lib/builtins/abort @@ -52400,7 +54169,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3724 i32.const 1 call $~lib/builtins/abort @@ -52423,7 +54192,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3725 i32.const 1 call $~lib/builtins/abort @@ -52446,7 +54215,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3726 i32.const 1 call $~lib/builtins/abort @@ -52469,7 +54238,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3727 i32.const 1 call $~lib/builtins/abort @@ -52492,7 +54261,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3728 i32.const 1 call $~lib/builtins/abort @@ -52515,7 +54284,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3729 i32.const 1 call $~lib/builtins/abort @@ -52538,7 +54307,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3730 i32.const 1 call $~lib/builtins/abort @@ -52561,7 +54330,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3731 i32.const 1 call $~lib/builtins/abort @@ -52584,7 +54353,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3732 i32.const 1 call $~lib/builtins/abort @@ -52607,7 +54376,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3733 i32.const 1 call $~lib/builtins/abort @@ -52630,7 +54399,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3734 i32.const 1 call $~lib/builtins/abort @@ -52653,7 +54422,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3735 i32.const 1 call $~lib/builtins/abort @@ -52676,7 +54445,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3736 i32.const 1 call $~lib/builtins/abort @@ -52699,7 +54468,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3737 i32.const 1 call $~lib/builtins/abort @@ -52722,7 +54491,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3738 i32.const 1 call $~lib/builtins/abort @@ -52745,7 +54514,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3739 i32.const 1 call $~lib/builtins/abort @@ -52768,7 +54537,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3740 i32.const 1 call $~lib/builtins/abort @@ -52791,7 +54560,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3741 i32.const 1 call $~lib/builtins/abort @@ -52814,7 +54583,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3742 i32.const 1 call $~lib/builtins/abort @@ -52837,7 +54606,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3743 i32.const 1 call $~lib/builtins/abort @@ -52860,7 +54629,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3744 i32.const 1 call $~lib/builtins/abort @@ -52883,7 +54652,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3745 i32.const 1 call $~lib/builtins/abort @@ -52906,7 +54675,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3746 i32.const 1 call $~lib/builtins/abort @@ -52929,7 +54698,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3747 i32.const 1 call $~lib/builtins/abort @@ -52952,7 +54721,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3748 i32.const 1 call $~lib/builtins/abort @@ -52975,7 +54744,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3749 i32.const 1 call $~lib/builtins/abort @@ -52998,7 +54767,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3750 i32.const 1 call $~lib/builtins/abort @@ -53021,7 +54790,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3751 i32.const 1 call $~lib/builtins/abort @@ -53044,7 +54813,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3752 i32.const 1 call $~lib/builtins/abort @@ -53067,7 +54836,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3753 i32.const 1 call $~lib/builtins/abort @@ -53090,7 +54859,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3754 i32.const 1 call $~lib/builtins/abort @@ -53113,7 +54882,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3755 i32.const 1 call $~lib/builtins/abort @@ -53136,7 +54905,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3756 i32.const 1 call $~lib/builtins/abort @@ -53159,7 +54928,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3757 i32.const 1 call $~lib/builtins/abort @@ -53182,7 +54951,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3758 i32.const 1 call $~lib/builtins/abort @@ -53205,7 +54974,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3759 i32.const 1 call $~lib/builtins/abort @@ -53228,7 +54997,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3760 i32.const 1 call $~lib/builtins/abort @@ -53251,7 +55020,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3761 i32.const 1 call $~lib/builtins/abort @@ -53264,7 +55033,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3764 i32.const 1 call $~lib/builtins/abort @@ -53277,7 +55046,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3765 i32.const 1 call $~lib/builtins/abort @@ -53290,7 +55059,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3766 i32.const 1 call $~lib/builtins/abort @@ -53303,7 +55072,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3767 i32.const 1 call $~lib/builtins/abort @@ -53316,7 +55085,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3768 i32.const 1 call $~lib/builtins/abort @@ -53329,7 +55098,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3769 i32.const 1 call $~lib/builtins/abort @@ -53342,7 +55111,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3770 i32.const 1 call $~lib/builtins/abort @@ -53355,7 +55124,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3771 i32.const 1 call $~lib/builtins/abort @@ -53368,7 +55137,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3773 i32.const 1 call $~lib/builtins/abort @@ -53381,7 +55150,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3774 i32.const 1 call $~lib/builtins/abort @@ -53394,7 +55163,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3775 i32.const 1 call $~lib/builtins/abort @@ -53407,7 +55176,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3776 i32.const 1 call $~lib/builtins/abort @@ -53420,7 +55189,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3777 i32.const 1 call $~lib/builtins/abort @@ -53433,7 +55202,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3778 i32.const 1 call $~lib/builtins/abort @@ -53446,7 +55215,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3779 i32.const 1 call $~lib/builtins/abort @@ -53459,7 +55228,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3780 i32.const 1 call $~lib/builtins/abort @@ -53482,7 +55251,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3783 i32.const 1 call $~lib/builtins/abort @@ -53505,7 +55274,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3784 i32.const 1 call $~lib/builtins/abort @@ -53528,7 +55297,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3785 i32.const 1 call $~lib/builtins/abort @@ -53551,7 +55320,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3786 i32.const 1 call $~lib/builtins/abort @@ -53574,7 +55343,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3787 i32.const 1 call $~lib/builtins/abort @@ -53588,7 +55357,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3796 i32.const 1 call $~lib/builtins/abort @@ -53602,7 +55371,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3797 i32.const 1 call $~lib/builtins/abort @@ -53616,7 +55385,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3798 i32.const 1 call $~lib/builtins/abort @@ -53630,7 +55399,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3799 i32.const 1 call $~lib/builtins/abort @@ -53644,7 +55413,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3800 i32.const 1 call $~lib/builtins/abort @@ -53658,7 +55427,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3801 i32.const 1 call $~lib/builtins/abort @@ -53672,7 +55441,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3802 i32.const 1 call $~lib/builtins/abort @@ -53686,7 +55455,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3803 i32.const 1 call $~lib/builtins/abort @@ -53700,7 +55469,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3804 i32.const 1 call $~lib/builtins/abort @@ -53714,7 +55483,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3805 i32.const 1 call $~lib/builtins/abort @@ -53728,7 +55497,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3808 i32.const 1 call $~lib/builtins/abort @@ -53742,7 +55511,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3809 i32.const 1 call $~lib/builtins/abort @@ -53756,7 +55525,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3810 i32.const 1 call $~lib/builtins/abort @@ -53770,7 +55539,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3811 i32.const 1 call $~lib/builtins/abort @@ -53784,7 +55553,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3812 i32.const 1 call $~lib/builtins/abort @@ -53798,7 +55567,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3815 i32.const 1 call $~lib/builtins/abort @@ -53812,7 +55581,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3816 i32.const 1 call $~lib/builtins/abort @@ -53826,7 +55595,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3817 i32.const 1 call $~lib/builtins/abort @@ -53840,7 +55609,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3818 i32.const 1 call $~lib/builtins/abort @@ -53854,7 +55623,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3819 i32.const 1 call $~lib/builtins/abort @@ -53868,7 +55637,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3820 i32.const 1 call $~lib/builtins/abort @@ -53882,7 +55651,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3821 i32.const 1 call $~lib/builtins/abort @@ -53896,7 +55665,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3822 i32.const 1 call $~lib/builtins/abort @@ -53910,7 +55679,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3823 i32.const 1 call $~lib/builtins/abort @@ -53924,7 +55693,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3824 i32.const 1 call $~lib/builtins/abort @@ -53938,7 +55707,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3825 i32.const 1 call $~lib/builtins/abort @@ -53952,7 +55721,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3826 i32.const 1 call $~lib/builtins/abort @@ -53966,7 +55735,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3827 i32.const 1 call $~lib/builtins/abort @@ -53980,7 +55749,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3828 i32.const 1 call $~lib/builtins/abort @@ -53994,7 +55763,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3829 i32.const 1 call $~lib/builtins/abort @@ -54008,7 +55777,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3830 i32.const 1 call $~lib/builtins/abort @@ -54022,7 +55791,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3831 i32.const 1 call $~lib/builtins/abort @@ -54036,7 +55805,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3832 i32.const 1 call $~lib/builtins/abort @@ -54050,7 +55819,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3833 i32.const 1 call $~lib/builtins/abort @@ -54064,7 +55833,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3834 i32.const 1 call $~lib/builtins/abort @@ -54078,7 +55847,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3835 i32.const 1 call $~lib/builtins/abort @@ -54092,7 +55861,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3836 i32.const 1 call $~lib/builtins/abort @@ -54106,7 +55875,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3837 i32.const 1 call $~lib/builtins/abort @@ -54120,7 +55889,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3838 i32.const 1 call $~lib/builtins/abort @@ -54134,7 +55903,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3839 i32.const 1 call $~lib/builtins/abort @@ -54148,7 +55917,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3840 i32.const 1 call $~lib/builtins/abort @@ -54162,7 +55931,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3841 i32.const 1 call $~lib/builtins/abort @@ -54176,7 +55945,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3842 i32.const 1 call $~lib/builtins/abort @@ -54190,7 +55959,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3843 i32.const 1 call $~lib/builtins/abort @@ -54204,7 +55973,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3844 i32.const 1 call $~lib/builtins/abort @@ -54218,7 +55987,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3845 i32.const 1 call $~lib/builtins/abort @@ -54232,7 +56001,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3846 i32.const 1 call $~lib/builtins/abort @@ -54246,7 +56015,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3847 i32.const 1 call $~lib/builtins/abort @@ -54260,7 +56029,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3848 i32.const 1 call $~lib/builtins/abort @@ -54274,7 +56043,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3849 i32.const 1 call $~lib/builtins/abort @@ -54288,7 +56057,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3850 i32.const 1 call $~lib/builtins/abort @@ -54301,7 +56070,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3862 i32.const 1 call $~lib/builtins/abort @@ -54314,7 +56083,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3863 i32.const 1 call $~lib/builtins/abort @@ -54327,7 +56096,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3864 i32.const 1 call $~lib/builtins/abort @@ -54340,7 +56109,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3865 i32.const 1 call $~lib/builtins/abort @@ -54353,7 +56122,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3866 i32.const 1 call $~lib/builtins/abort @@ -54366,7 +56135,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3867 i32.const 1 call $~lib/builtins/abort @@ -54379,7 +56148,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3868 i32.const 1 call $~lib/builtins/abort @@ -54392,7 +56161,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3869 i32.const 1 call $~lib/builtins/abort @@ -54405,7 +56174,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3870 i32.const 1 call $~lib/builtins/abort @@ -54418,7 +56187,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3871 i32.const 1 call $~lib/builtins/abort @@ -54431,7 +56200,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3874 i32.const 1 call $~lib/builtins/abort @@ -54444,7 +56213,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3875 i32.const 1 call $~lib/builtins/abort @@ -54457,7 +56226,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3876 i32.const 1 call $~lib/builtins/abort @@ -54470,7 +56239,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3877 i32.const 1 call $~lib/builtins/abort @@ -54483,7 +56252,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3878 i32.const 1 call $~lib/builtins/abort @@ -54496,7 +56265,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3887 i32.const 1 call $~lib/builtins/abort @@ -54509,7 +56278,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3888 i32.const 1 call $~lib/builtins/abort @@ -54522,7 +56291,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3889 i32.const 1 call $~lib/builtins/abort @@ -54535,7 +56304,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3890 i32.const 1 call $~lib/builtins/abort @@ -54548,7 +56317,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3891 i32.const 1 call $~lib/builtins/abort @@ -54561,7 +56330,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3892 i32.const 1 call $~lib/builtins/abort @@ -54574,7 +56343,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3893 i32.const 1 call $~lib/builtins/abort @@ -54587,7 +56356,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3894 i32.const 1 call $~lib/builtins/abort @@ -54600,7 +56369,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3895 i32.const 1 call $~lib/builtins/abort @@ -54613,7 +56382,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3896 i32.const 1 call $~lib/builtins/abort @@ -54626,7 +56395,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3899 i32.const 1 call $~lib/builtins/abort @@ -54639,7 +56408,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3900 i32.const 1 call $~lib/builtins/abort @@ -54652,7 +56421,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3901 i32.const 1 call $~lib/builtins/abort @@ -54665,7 +56434,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3902 i32.const 1 call $~lib/builtins/abort @@ -54678,7 +56447,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3903 i32.const 1 call $~lib/builtins/abort @@ -54700,7 +56469,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3915 i32.const 1 call $~lib/builtins/abort @@ -54722,7 +56491,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3916 i32.const 1 call $~lib/builtins/abort @@ -54744,7 +56513,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3917 i32.const 1 call $~lib/builtins/abort @@ -54766,7 +56535,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3918 i32.const 1 call $~lib/builtins/abort @@ -54788,7 +56557,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3919 i32.const 1 call $~lib/builtins/abort @@ -54810,7 +56579,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3920 i32.const 1 call $~lib/builtins/abort @@ -54832,7 +56601,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3921 i32.const 1 call $~lib/builtins/abort @@ -54854,7 +56623,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3922 i32.const 1 call $~lib/builtins/abort @@ -54876,7 +56645,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3923 i32.const 1 call $~lib/builtins/abort @@ -54898,7 +56667,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3924 i32.const 1 call $~lib/builtins/abort @@ -54920,7 +56689,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3927 i32.const 1 call $~lib/builtins/abort @@ -54942,7 +56711,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3928 i32.const 1 call $~lib/builtins/abort @@ -54964,7 +56733,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3929 i32.const 1 call $~lib/builtins/abort @@ -54986,7 +56755,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3930 i32.const 1 call $~lib/builtins/abort @@ -55008,7 +56777,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3931 i32.const 1 call $~lib/builtins/abort @@ -55030,7 +56799,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3932 i32.const 1 call $~lib/builtins/abort @@ -55052,7 +56821,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3933 i32.const 1 call $~lib/builtins/abort @@ -55074,7 +56843,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3934 i32.const 1 call $~lib/builtins/abort @@ -55096,7 +56865,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3935 i32.const 1 call $~lib/builtins/abort @@ -55118,7 +56887,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3936 i32.const 1 call $~lib/builtins/abort @@ -55140,7 +56909,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3937 i32.const 1 call $~lib/builtins/abort @@ -55162,7 +56931,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3938 i32.const 1 call $~lib/builtins/abort @@ -55184,7 +56953,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3939 i32.const 1 call $~lib/builtins/abort @@ -55206,7 +56975,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3940 i32.const 1 call $~lib/builtins/abort @@ -55228,7 +56997,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3941 i32.const 1 call $~lib/builtins/abort @@ -55241,7 +57010,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3950 i32.const 1 call $~lib/builtins/abort @@ -55254,7 +57023,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3951 i32.const 1 call $~lib/builtins/abort @@ -55267,7 +57036,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3952 i32.const 1 call $~lib/builtins/abort @@ -55280,7 +57049,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3953 i32.const 1 call $~lib/builtins/abort @@ -55293,7 +57062,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3954 i32.const 1 call $~lib/builtins/abort @@ -55306,7 +57075,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3955 i32.const 1 call $~lib/builtins/abort @@ -55319,7 +57088,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3956 i32.const 1 call $~lib/builtins/abort @@ -55332,7 +57101,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3957 i32.const 1 call $~lib/builtins/abort @@ -55345,7 +57114,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3958 i32.const 1 call $~lib/builtins/abort @@ -55358,7 +57127,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3959 i32.const 1 call $~lib/builtins/abort @@ -55371,7 +57140,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3962 i32.const 1 call $~lib/builtins/abort @@ -55384,7 +57153,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3963 i32.const 1 call $~lib/builtins/abort @@ -55397,7 +57166,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3964 i32.const 1 call $~lib/builtins/abort @@ -55410,7 +57179,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3965 i32.const 1 call $~lib/builtins/abort @@ -55423,7 +57192,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3966 i32.const 1 call $~lib/builtins/abort @@ -55436,7 +57205,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3967 i32.const 1 call $~lib/builtins/abort @@ -55449,7 +57218,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3968 i32.const 1 call $~lib/builtins/abort @@ -55462,7 +57231,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3969 i32.const 1 call $~lib/builtins/abort @@ -55475,7 +57244,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3970 i32.const 1 call $~lib/builtins/abort @@ -55488,7 +57257,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3971 i32.const 1 call $~lib/builtins/abort @@ -55501,7 +57270,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3972 i32.const 1 call $~lib/builtins/abort @@ -55514,7 +57283,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3973 i32.const 1 call $~lib/builtins/abort @@ -55527,7 +57296,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3974 i32.const 1 call $~lib/builtins/abort @@ -55540,7 +57309,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3975 i32.const 1 call $~lib/builtins/abort @@ -55553,7 +57322,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 3976 i32.const 1 call $~lib/builtins/abort @@ -55626,7 +57395,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4017 i32.const 1 call $~lib/builtins/abort @@ -55639,7 +57408,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4018 i32.const 1 call $~lib/builtins/abort @@ -55652,7 +57421,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4019 i32.const 1 call $~lib/builtins/abort @@ -55665,7 +57434,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4020 i32.const 1 call $~lib/builtins/abort @@ -55678,7 +57447,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4021 i32.const 1 call $~lib/builtins/abort @@ -55691,7 +57460,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4022 i32.const 1 call $~lib/builtins/abort @@ -55704,7 +57473,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4023 i32.const 1 call $~lib/builtins/abort @@ -55717,7 +57486,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4024 i32.const 1 call $~lib/builtins/abort @@ -55730,7 +57499,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4025 i32.const 1 call $~lib/builtins/abort @@ -55743,7 +57512,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4026 i32.const 1 call $~lib/builtins/abort @@ -55756,7 +57525,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4027 i32.const 1 call $~lib/builtins/abort @@ -55769,7 +57538,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4028 i32.const 1 call $~lib/builtins/abort @@ -55782,7 +57551,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4051 i32.const 1 call $~lib/builtins/abort @@ -55795,7 +57564,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4052 i32.const 1 call $~lib/builtins/abort @@ -55808,7 +57577,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4053 i32.const 1 call $~lib/builtins/abort @@ -55821,7 +57590,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4054 i32.const 1 call $~lib/builtins/abort @@ -55834,7 +57603,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4056 i32.const 1 call $~lib/builtins/abort @@ -55847,7 +57616,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4057 i32.const 1 call $~lib/builtins/abort @@ -55860,7 +57629,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4058 i32.const 1 call $~lib/builtins/abort @@ -55873,7 +57642,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4059 i32.const 1 call $~lib/builtins/abort @@ -55886,7 +57655,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4061 i32.const 1 call $~lib/builtins/abort @@ -55899,7 +57668,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4062 i32.const 1 call $~lib/builtins/abort @@ -55912,7 +57681,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4063 i32.const 1 call $~lib/builtins/abort @@ -55925,7 +57694,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4064 i32.const 1 call $~lib/builtins/abort @@ -55938,7 +57707,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4066 i32.const 1 call $~lib/builtins/abort @@ -55951,7 +57720,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4067 i32.const 1 call $~lib/builtins/abort @@ -55964,7 +57733,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4068 i32.const 1 call $~lib/builtins/abort @@ -55977,7 +57746,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4069 i32.const 1 call $~lib/builtins/abort @@ -55990,7 +57759,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4071 i32.const 1 call $~lib/builtins/abort @@ -56003,7 +57772,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4072 i32.const 1 call $~lib/builtins/abort @@ -56016,7 +57785,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4073 i32.const 1 call $~lib/builtins/abort @@ -56029,7 +57798,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4074 i32.const 1 call $~lib/builtins/abort @@ -56042,7 +57811,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4076 i32.const 1 call $~lib/builtins/abort @@ -56055,7 +57824,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4077 i32.const 1 call $~lib/builtins/abort @@ -56068,7 +57837,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4078 i32.const 1 call $~lib/builtins/abort @@ -56081,7 +57850,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4079 i32.const 1 call $~lib/builtins/abort @@ -56094,7 +57863,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4080 i32.const 1 call $~lib/builtins/abort @@ -56107,7 +57876,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4082 i32.const 1 call $~lib/builtins/abort @@ -56120,7 +57889,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4083 i32.const 1 call $~lib/builtins/abort @@ -56133,7 +57902,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4084 i32.const 1 call $~lib/builtins/abort @@ -56146,7 +57915,7 @@ i64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4085 i32.const 1 call $~lib/builtins/abort @@ -56159,7 +57928,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4129 i32.const 1 call $~lib/builtins/abort @@ -56172,7 +57941,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4130 i32.const 1 call $~lib/builtins/abort @@ -56185,7 +57954,7 @@ f64.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 4131 i32.const 1 call $~lib/builtins/abort @@ -56195,4 +57964,228 @@ (func $~start call $start:std/math ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16756 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16756 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$1203 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$1203 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 49552 + i32.const 49600 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16756 + i32.lt_s + if + i32.const 49552 + i32.const 49600 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/std/mod.debug.wat b/tests/compiler/std/mod.debug.wat index e83e1bff7e..35c1d789e8 100644 --- a/tests/compiler/std/mod.debug.wat +++ b/tests/compiler/std/mod.debug.wat @@ -1,20 +1,65 @@ (module - (type $0 (func (param f64 f64) (result f64))) - (type $1 (func)) - (type $2 (func (param f64 f64) (result i32))) - (type $3 (func (param f64 f64 f64) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param f32 f32) (result f32))) - (type $6 (func (param f32 f32) (result i32))) - (type $7 (func (param f32 f32 f32) (result i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param f64 f64) (result f64))) + (type $7 (func (param f64 f64) (result i32))) + (type $8 (func (param f64 f64 f64) (result i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (param i32 i64 i32))) + (type $12 (func (param i64 i32) (result i32))) + (type $13 (func (param i32 i64 i32 i32))) + (type $14 (func (param f32 f32) (result f32))) + (type $15 (func (param f32 f32) (result i32))) + (type $16 (func (param f32 f32 f32) (result i32))) + (type $17 (func (param i32 i32 i32 i32))) (import "mod" "mod" (func $std/mod/mod (param f64 f64) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/mod/js i32 (i32.const 1)) - (global $~lib/memory/__data_end i32 (i32.const 60)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) - (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2452)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35220)) + (global $~lib/memory/__heap_base i32 (i32.const 35220)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00s\00t\00d\00/\00m\00o\00d\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00s\00t\00d\00/\00m\00o\00d\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2432) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "mod" (func $std/mod/mod)) @@ -321,6 +366,2635 @@ end return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/math/NativeMathf.mod (param $x f32) (param $y f32) (result f32) (local $ux i32) (local $uy i32) @@ -608,6 +3282,23 @@ return ) (func $start:std/mod + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace f64.const 3 f64.const 2 f64.const 1 @@ -615,7 +3306,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -628,7 +3319,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -641,7 +3332,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -654,7 +3345,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -667,7 +3358,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -680,7 +3371,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -693,7 +3384,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -706,7 +3397,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -719,7 +3410,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -732,7 +3423,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -745,7 +3436,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -758,7 +3449,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -771,7 +3462,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -784,7 +3475,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 32 i32.const 1 call $~lib/builtins/abort @@ -797,7 +3488,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -810,7 +3501,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -823,7 +3514,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -836,7 +3527,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 36 i32.const 1 call $~lib/builtins/abort @@ -849,7 +3540,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 37 i32.const 1 call $~lib/builtins/abort @@ -862,7 +3553,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -875,7 +3566,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 39 i32.const 1 call $~lib/builtins/abort @@ -888,7 +3579,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -901,7 +3592,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -914,7 +3605,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -927,7 +3618,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 43 i32.const 1 call $~lib/builtins/abort @@ -940,7 +3631,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -953,7 +3644,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 45 i32.const 1 call $~lib/builtins/abort @@ -966,7 +3657,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 46 i32.const 1 call $~lib/builtins/abort @@ -979,7 +3670,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 47 i32.const 1 call $~lib/builtins/abort @@ -992,7 +3683,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 50 i32.const 1 call $~lib/builtins/abort @@ -1005,7 +3696,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 51 i32.const 1 call $~lib/builtins/abort @@ -1018,7 +3709,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 52 i32.const 1 call $~lib/builtins/abort @@ -1031,7 +3722,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 53 i32.const 1 call $~lib/builtins/abort @@ -1044,7 +3735,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 54 i32.const 1 call $~lib/builtins/abort @@ -1057,7 +3748,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 55 i32.const 1 call $~lib/builtins/abort @@ -1070,7 +3761,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 56 i32.const 1 call $~lib/builtins/abort @@ -1083,7 +3774,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 57 i32.const 1 call $~lib/builtins/abort @@ -1096,7 +3787,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 58 i32.const 1 call $~lib/builtins/abort @@ -1109,7 +3800,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 59 i32.const 1 call $~lib/builtins/abort @@ -1122,7 +3813,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 60 i32.const 1 call $~lib/builtins/abort @@ -1135,7 +3826,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 61 i32.const 1 call $~lib/builtins/abort @@ -1148,7 +3839,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 62 i32.const 1 call $~lib/builtins/abort @@ -1161,7 +3852,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 63 i32.const 1 call $~lib/builtins/abort @@ -1174,7 +3865,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 64 i32.const 1 call $~lib/builtins/abort @@ -1187,7 +3878,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 65 i32.const 1 call $~lib/builtins/abort @@ -1200,7 +3891,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 66 i32.const 1 call $~lib/builtins/abort @@ -1213,7 +3904,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 67 i32.const 1 call $~lib/builtins/abort @@ -1226,7 +3917,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 68 i32.const 1 call $~lib/builtins/abort @@ -1239,7 +3930,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 69 i32.const 1 call $~lib/builtins/abort @@ -1252,7 +3943,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 70 i32.const 1 call $~lib/builtins/abort @@ -1265,7 +3956,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 71 i32.const 1 call $~lib/builtins/abort @@ -1278,7 +3969,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 72 i32.const 1 call $~lib/builtins/abort @@ -1292,7 +3983,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 73 i32.const 1 call $~lib/builtins/abort @@ -1306,7 +3997,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 74 i32.const 1 call $~lib/builtins/abort @@ -1319,7 +4010,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 75 i32.const 1 call $~lib/builtins/abort @@ -1332,7 +4023,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 76 i32.const 1 call $~lib/builtins/abort @@ -1346,7 +4037,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 77 i32.const 1 call $~lib/builtins/abort @@ -1360,7 +4051,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 78 i32.const 1 call $~lib/builtins/abort @@ -1373,7 +4064,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 79 i32.const 1 call $~lib/builtins/abort @@ -1386,7 +4077,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 80 i32.const 1 call $~lib/builtins/abort @@ -1400,7 +4091,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 81 i32.const 1 call $~lib/builtins/abort @@ -1414,7 +4105,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 82 i32.const 1 call $~lib/builtins/abort @@ -1427,7 +4118,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 83 i32.const 1 call $~lib/builtins/abort @@ -1440,7 +4131,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 84 i32.const 1 call $~lib/builtins/abort @@ -1454,7 +4145,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 85 i32.const 1 call $~lib/builtins/abort @@ -1468,7 +4159,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 86 i32.const 1 call $~lib/builtins/abort @@ -1481,7 +4172,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 87 i32.const 1 call $~lib/builtins/abort @@ -1495,7 +4186,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 88 i32.const 1 call $~lib/builtins/abort @@ -1509,7 +4200,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 89 i32.const 1 call $~lib/builtins/abort @@ -1524,7 +4215,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 90 i32.const 1 call $~lib/builtins/abort @@ -1537,7 +4228,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 91 i32.const 1 call $~lib/builtins/abort @@ -1551,7 +4242,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 92 i32.const 1 call $~lib/builtins/abort @@ -1564,7 +4255,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 93 i32.const 1 call $~lib/builtins/abort @@ -1578,7 +4269,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 94 i32.const 1 call $~lib/builtins/abort @@ -1591,7 +4282,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 103 i32.const 1 call $~lib/builtins/abort @@ -1604,7 +4295,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 104 i32.const 1 call $~lib/builtins/abort @@ -1617,7 +4308,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 105 i32.const 1 call $~lib/builtins/abort @@ -1630,7 +4321,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 106 i32.const 1 call $~lib/builtins/abort @@ -1643,7 +4334,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 107 i32.const 1 call $~lib/builtins/abort @@ -1656,7 +4347,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 108 i32.const 1 call $~lib/builtins/abort @@ -1669,7 +4360,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 109 i32.const 1 call $~lib/builtins/abort @@ -1682,7 +4373,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 110 i32.const 1 call $~lib/builtins/abort @@ -1695,7 +4386,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 111 i32.const 1 call $~lib/builtins/abort @@ -1708,7 +4399,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 112 i32.const 1 call $~lib/builtins/abort @@ -1721,7 +4412,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 113 i32.const 1 call $~lib/builtins/abort @@ -1734,7 +4425,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 114 i32.const 1 call $~lib/builtins/abort @@ -1747,7 +4438,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 115 i32.const 1 call $~lib/builtins/abort @@ -1760,7 +4451,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 116 i32.const 1 call $~lib/builtins/abort @@ -1773,7 +4464,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 117 i32.const 1 call $~lib/builtins/abort @@ -1786,7 +4477,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 118 i32.const 1 call $~lib/builtins/abort @@ -1799,7 +4490,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 119 i32.const 1 call $~lib/builtins/abort @@ -1812,7 +4503,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 120 i32.const 1 call $~lib/builtins/abort @@ -1825,7 +4516,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 121 i32.const 1 call $~lib/builtins/abort @@ -1838,7 +4529,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 122 i32.const 1 call $~lib/builtins/abort @@ -1851,7 +4542,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 125 i32.const 1 call $~lib/builtins/abort @@ -1864,7 +4555,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 126 i32.const 1 call $~lib/builtins/abort @@ -1877,7 +4568,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 127 i32.const 1 call $~lib/builtins/abort @@ -1890,7 +4581,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 128 i32.const 1 call $~lib/builtins/abort @@ -1903,7 +4594,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 129 i32.const 1 call $~lib/builtins/abort @@ -1916,7 +4607,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 130 i32.const 1 call $~lib/builtins/abort @@ -1929,7 +4620,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 131 i32.const 1 call $~lib/builtins/abort @@ -1942,7 +4633,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 132 i32.const 1 call $~lib/builtins/abort @@ -1955,7 +4646,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 133 i32.const 1 call $~lib/builtins/abort @@ -1968,7 +4659,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 134 i32.const 1 call $~lib/builtins/abort @@ -1981,7 +4672,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 135 i32.const 1 call $~lib/builtins/abort @@ -1994,7 +4685,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 136 i32.const 1 call $~lib/builtins/abort @@ -2007,7 +4698,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 137 i32.const 1 call $~lib/builtins/abort @@ -2020,7 +4711,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 138 i32.const 1 call $~lib/builtins/abort @@ -2033,7 +4724,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 139 i32.const 1 call $~lib/builtins/abort @@ -2046,7 +4737,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 140 i32.const 1 call $~lib/builtins/abort @@ -2059,7 +4750,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 141 i32.const 1 call $~lib/builtins/abort @@ -2072,7 +4763,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 142 i32.const 1 call $~lib/builtins/abort @@ -2085,7 +4776,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 143 i32.const 1 call $~lib/builtins/abort @@ -2099,7 +4790,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 144 i32.const 1 call $~lib/builtins/abort @@ -2113,7 +4804,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 145 i32.const 1 call $~lib/builtins/abort @@ -2126,7 +4817,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 146 i32.const 1 call $~lib/builtins/abort @@ -2139,7 +4830,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 147 i32.const 1 call $~lib/builtins/abort @@ -2153,7 +4844,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 148 i32.const 1 call $~lib/builtins/abort @@ -2167,7 +4858,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 149 i32.const 1 call $~lib/builtins/abort @@ -2180,7 +4871,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 150 i32.const 1 call $~lib/builtins/abort @@ -2193,7 +4884,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 151 i32.const 1 call $~lib/builtins/abort @@ -2207,7 +4898,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 152 i32.const 1 call $~lib/builtins/abort @@ -2221,7 +4912,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 153 i32.const 1 call $~lib/builtins/abort @@ -2234,7 +4925,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 154 i32.const 1 call $~lib/builtins/abort @@ -2247,7 +4938,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 155 i32.const 1 call $~lib/builtins/abort @@ -2261,7 +4952,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 156 i32.const 1 call $~lib/builtins/abort @@ -2275,7 +4966,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 157 i32.const 1 call $~lib/builtins/abort @@ -2288,7 +4979,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 158 i32.const 1 call $~lib/builtins/abort @@ -2302,7 +4993,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 159 i32.const 1 call $~lib/builtins/abort @@ -2316,7 +5007,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 160 i32.const 1 call $~lib/builtins/abort @@ -2331,7 +5022,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 161 i32.const 1 call $~lib/builtins/abort @@ -2344,7 +5035,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 162 i32.const 1 call $~lib/builtins/abort @@ -2358,7 +5049,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 163 i32.const 1 call $~lib/builtins/abort @@ -2371,7 +5062,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 164 i32.const 1 call $~lib/builtins/abort @@ -2385,7 +5076,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 165 i32.const 1 call $~lib/builtins/abort @@ -2395,4 +5086,421 @@ (func $~start call $start:std/mod ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35248 + i32.const 35296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/std/mod.release.wat b/tests/compiler/std/mod.release.wat index 1fbd3592bf..565e8c1322 100644 --- a/tests/compiler/std/mod.release.wat +++ b/tests/compiler/std/mod.release.wat @@ -1,14 +1,62 @@ (module (type $0 (func)) - (type $1 (func (param f64 f64) (result f64))) - (type $2 (func (param f64 f64 f64) (result i32))) - (type $3 (func (param i32 i32 i32 i32))) - (type $4 (func (param f32 f32 f32) (result i32))) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param f64 f64) (result f64))) + (type $6 (func (param f64 f64 f64) (result i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (result i32))) + (type $9 (func (param f32 f32 f32) (result i32))) + (type $10 (func (param i32 i32 i32 i32))) (import "mod" "mod" (func $std/mod/mod (param f64 f64) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36244)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\14\00\00\00s\00t\00d\00/\00m\00o\00d\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\14\00\00\00s\00t\00d\00/\00m\00o\00d\00.\00t\00s") + (data $20 (i32.const 3456) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "mod" (func $std/mod/mod)) (export "memory" (memory $0)) (start $~start) @@ -278,6 +326,1695 @@ i32.const 0 end ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$122 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36244 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$122 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3456 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3460 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36256 + i32.const 0 + i32.store + i32.const 37824 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36256 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36256 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36256 + i32.const 37828 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36256 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36244 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36244 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36244 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$72 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$72 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3476 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + 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$76 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$76 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $std/mod/test_fmodf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 i32) (local $4 i32) @@ -286,8 +2023,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - block $__inlined_func$std/mod/check$2 (result i32) - block $__inlined_func$~lib/math/NativeMathf.mod$1 (result f32) + block $__inlined_func$std/mod/check$77 (result i32) + block $__inlined_func$~lib/math/NativeMathf.mod$2 (result f32) local.get $0 local.get $0 f32.trunc @@ -298,7 +2035,7 @@ f32.abs f32.const 1 f32.eq - br_if $__inlined_func$~lib/math/NativeMathf.mod$1 + br_if $__inlined_func$~lib/math/NativeMathf.mod$2 drop local.get $1 i32.reinterpret_f32 @@ -335,7 +2072,7 @@ local.tee $0 local.get $0 f32.div - br $__inlined_func$~lib/math/NativeMathf.mod$1 + br $__inlined_func$~lib/math/NativeMathf.mod$2 end local.get $4 i32.const 1 @@ -350,7 +2087,7 @@ i32.ne f32.convert_i32_u f32.mul - br $__inlined_func$~lib/math/NativeMathf.mod$1 + br $__inlined_func$~lib/math/NativeMathf.mod$2 end local.get $4 i32.const -2147483648 @@ -413,7 +2150,7 @@ local.get $3 local.get $4 i32.eq - br_if $__inlined_func$~lib/math/NativeMathf.mod$1 + br_if $__inlined_func$~lib/math/NativeMathf.mod$2 drop local.get $3 local.get $4 @@ -441,7 +2178,7 @@ local.get $3 local.get $4 i32.eq - br_if $__inlined_func$~lib/math/NativeMathf.mod$1 + br_if $__inlined_func$~lib/math/NativeMathf.mod$2 drop local.get $3 local.get $4 @@ -488,7 +2225,7 @@ local.get $2 local.get $2 f32.ne - br_if $__inlined_func$std/mod/check$2 + br_if $__inlined_func$std/mod/check$77 drop f32.const 1 local.get $2 @@ -500,7 +2237,7 @@ local.get $2 f32.const 0 f32.eq - br_if $__inlined_func$std/mod/check$2 + br_if $__inlined_func$std/mod/check$77 drop local.get $0 local.get $2 @@ -508,6 +2245,38 @@ end ) (func $start:std/mod + memory.size + i32.const 16 + i32.shl + i32.const 36244 + 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 f64.const 3 f64.const 2 f64.const 1 @@ -515,7 +2284,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -528,7 +2297,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -541,7 +2310,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -554,7 +2323,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -567,7 +2336,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -580,7 +2349,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -593,7 +2362,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -606,7 +2375,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -619,7 +2388,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -632,7 +2401,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -645,7 +2414,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -658,7 +2427,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -671,7 +2440,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -684,7 +2453,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 32 i32.const 1 call $~lib/builtins/abort @@ -697,7 +2466,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -710,7 +2479,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -723,7 +2492,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -736,7 +2505,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 36 i32.const 1 call $~lib/builtins/abort @@ -749,7 +2518,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 37 i32.const 1 call $~lib/builtins/abort @@ -762,7 +2531,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -775,7 +2544,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 39 i32.const 1 call $~lib/builtins/abort @@ -788,7 +2557,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -801,7 +2570,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -814,7 +2583,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -827,7 +2596,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 43 i32.const 1 call $~lib/builtins/abort @@ -840,7 +2609,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -853,7 +2622,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 45 i32.const 1 call $~lib/builtins/abort @@ -866,7 +2635,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 46 i32.const 1 call $~lib/builtins/abort @@ -879,7 +2648,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 47 i32.const 1 call $~lib/builtins/abort @@ -892,7 +2661,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 50 i32.const 1 call $~lib/builtins/abort @@ -905,7 +2674,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 51 i32.const 1 call $~lib/builtins/abort @@ -918,7 +2687,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 52 i32.const 1 call $~lib/builtins/abort @@ -931,7 +2700,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 53 i32.const 1 call $~lib/builtins/abort @@ -944,7 +2713,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 54 i32.const 1 call $~lib/builtins/abort @@ -957,7 +2726,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 55 i32.const 1 call $~lib/builtins/abort @@ -970,7 +2739,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 56 i32.const 1 call $~lib/builtins/abort @@ -983,7 +2752,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 57 i32.const 1 call $~lib/builtins/abort @@ -996,7 +2765,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 58 i32.const 1 call $~lib/builtins/abort @@ -1009,7 +2778,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 59 i32.const 1 call $~lib/builtins/abort @@ -1022,7 +2791,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 60 i32.const 1 call $~lib/builtins/abort @@ -1035,7 +2804,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 61 i32.const 1 call $~lib/builtins/abort @@ -1048,7 +2817,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 62 i32.const 1 call $~lib/builtins/abort @@ -1061,7 +2830,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 63 i32.const 1 call $~lib/builtins/abort @@ -1074,7 +2843,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 64 i32.const 1 call $~lib/builtins/abort @@ -1087,7 +2856,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 65 i32.const 1 call $~lib/builtins/abort @@ -1100,7 +2869,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 66 i32.const 1 call $~lib/builtins/abort @@ -1113,7 +2882,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 67 i32.const 1 call $~lib/builtins/abort @@ -1126,7 +2895,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 68 i32.const 1 call $~lib/builtins/abort @@ -1139,7 +2908,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 69 i32.const 1 call $~lib/builtins/abort @@ -1152,7 +2921,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 70 i32.const 1 call $~lib/builtins/abort @@ -1165,7 +2934,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 71 i32.const 1 call $~lib/builtins/abort @@ -1178,7 +2947,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 72 i32.const 1 call $~lib/builtins/abort @@ -1191,7 +2960,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 73 i32.const 1 call $~lib/builtins/abort @@ -1204,7 +2973,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 74 i32.const 1 call $~lib/builtins/abort @@ -1217,7 +2986,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 75 i32.const 1 call $~lib/builtins/abort @@ -1230,7 +2999,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 76 i32.const 1 call $~lib/builtins/abort @@ -1243,7 +3012,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 77 i32.const 1 call $~lib/builtins/abort @@ -1256,7 +3025,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 78 i32.const 1 call $~lib/builtins/abort @@ -1269,7 +3038,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 79 i32.const 1 call $~lib/builtins/abort @@ -1282,7 +3051,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 80 i32.const 1 call $~lib/builtins/abort @@ -1295,7 +3064,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 81 i32.const 1 call $~lib/builtins/abort @@ -1308,7 +3077,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 82 i32.const 1 call $~lib/builtins/abort @@ -1321,7 +3090,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 83 i32.const 1 call $~lib/builtins/abort @@ -1334,7 +3103,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 84 i32.const 1 call $~lib/builtins/abort @@ -1347,7 +3116,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 85 i32.const 1 call $~lib/builtins/abort @@ -1360,7 +3129,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 86 i32.const 1 call $~lib/builtins/abort @@ -1373,7 +3142,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 87 i32.const 1 call $~lib/builtins/abort @@ -1386,7 +3155,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 88 i32.const 1 call $~lib/builtins/abort @@ -1399,7 +3168,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 89 i32.const 1 call $~lib/builtins/abort @@ -1412,7 +3181,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 90 i32.const 1 call $~lib/builtins/abort @@ -1425,7 +3194,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 91 i32.const 1 call $~lib/builtins/abort @@ -1438,7 +3207,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 92 i32.const 1 call $~lib/builtins/abort @@ -1451,7 +3220,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 93 i32.const 1 call $~lib/builtins/abort @@ -1464,7 +3233,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 94 i32.const 1 call $~lib/builtins/abort @@ -1477,7 +3246,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 103 i32.const 1 call $~lib/builtins/abort @@ -1490,7 +3259,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 104 i32.const 1 call $~lib/builtins/abort @@ -1503,7 +3272,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 105 i32.const 1 call $~lib/builtins/abort @@ -1516,7 +3285,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 106 i32.const 1 call $~lib/builtins/abort @@ -1529,7 +3298,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 107 i32.const 1 call $~lib/builtins/abort @@ -1542,7 +3311,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 108 i32.const 1 call $~lib/builtins/abort @@ -1555,7 +3324,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 109 i32.const 1 call $~lib/builtins/abort @@ -1568,7 +3337,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 110 i32.const 1 call $~lib/builtins/abort @@ -1581,7 +3350,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 111 i32.const 1 call $~lib/builtins/abort @@ -1594,7 +3363,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 112 i32.const 1 call $~lib/builtins/abort @@ -1607,7 +3376,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 113 i32.const 1 call $~lib/builtins/abort @@ -1620,7 +3389,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 114 i32.const 1 call $~lib/builtins/abort @@ -1633,7 +3402,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 115 i32.const 1 call $~lib/builtins/abort @@ -1646,7 +3415,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 116 i32.const 1 call $~lib/builtins/abort @@ -1659,7 +3428,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 117 i32.const 1 call $~lib/builtins/abort @@ -1672,7 +3441,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 118 i32.const 1 call $~lib/builtins/abort @@ -1685,7 +3454,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 119 i32.const 1 call $~lib/builtins/abort @@ -1698,7 +3467,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 120 i32.const 1 call $~lib/builtins/abort @@ -1711,7 +3480,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 121 i32.const 1 call $~lib/builtins/abort @@ -1724,7 +3493,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 122 i32.const 1 call $~lib/builtins/abort @@ -1737,7 +3506,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 125 i32.const 1 call $~lib/builtins/abort @@ -1750,7 +3519,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 126 i32.const 1 call $~lib/builtins/abort @@ -1763,7 +3532,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 127 i32.const 1 call $~lib/builtins/abort @@ -1776,7 +3545,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 128 i32.const 1 call $~lib/builtins/abort @@ -1789,7 +3558,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 129 i32.const 1 call $~lib/builtins/abort @@ -1802,7 +3571,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 130 i32.const 1 call $~lib/builtins/abort @@ -1815,7 +3584,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 131 i32.const 1 call $~lib/builtins/abort @@ -1828,7 +3597,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 132 i32.const 1 call $~lib/builtins/abort @@ -1841,7 +3610,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 133 i32.const 1 call $~lib/builtins/abort @@ -1854,7 +3623,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 134 i32.const 1 call $~lib/builtins/abort @@ -1867,7 +3636,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 135 i32.const 1 call $~lib/builtins/abort @@ -1880,7 +3649,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 136 i32.const 1 call $~lib/builtins/abort @@ -1893,7 +3662,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 137 i32.const 1 call $~lib/builtins/abort @@ -1906,7 +3675,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 138 i32.const 1 call $~lib/builtins/abort @@ -1919,7 +3688,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 139 i32.const 1 call $~lib/builtins/abort @@ -1932,7 +3701,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 140 i32.const 1 call $~lib/builtins/abort @@ -1945,7 +3714,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 141 i32.const 1 call $~lib/builtins/abort @@ -1958,7 +3727,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 142 i32.const 1 call $~lib/builtins/abort @@ -1971,7 +3740,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 143 i32.const 1 call $~lib/builtins/abort @@ -1984,7 +3753,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 144 i32.const 1 call $~lib/builtins/abort @@ -1997,7 +3766,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 145 i32.const 1 call $~lib/builtins/abort @@ -2010,7 +3779,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 146 i32.const 1 call $~lib/builtins/abort @@ -2023,7 +3792,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 147 i32.const 1 call $~lib/builtins/abort @@ -2036,7 +3805,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 148 i32.const 1 call $~lib/builtins/abort @@ -2049,7 +3818,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 149 i32.const 1 call $~lib/builtins/abort @@ -2062,7 +3831,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 150 i32.const 1 call $~lib/builtins/abort @@ -2075,7 +3844,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 151 i32.const 1 call $~lib/builtins/abort @@ -2088,7 +3857,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 152 i32.const 1 call $~lib/builtins/abort @@ -2101,7 +3870,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 153 i32.const 1 call $~lib/builtins/abort @@ -2114,7 +3883,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 154 i32.const 1 call $~lib/builtins/abort @@ -2127,7 +3896,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 155 i32.const 1 call $~lib/builtins/abort @@ -2140,7 +3909,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 156 i32.const 1 call $~lib/builtins/abort @@ -2153,7 +3922,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 157 i32.const 1 call $~lib/builtins/abort @@ -2166,7 +3935,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 158 i32.const 1 call $~lib/builtins/abort @@ -2179,7 +3948,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 159 i32.const 1 call $~lib/builtins/abort @@ -2192,7 +3961,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 160 i32.const 1 call $~lib/builtins/abort @@ -2205,7 +3974,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 161 i32.const 1 call $~lib/builtins/abort @@ -2218,7 +3987,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 162 i32.const 1 call $~lib/builtins/abort @@ -2231,7 +4000,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 163 i32.const 1 call $~lib/builtins/abort @@ -2244,7 +4013,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 164 i32.const 1 call $~lib/builtins/abort @@ -2257,7 +4026,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 165 i32.const 1 call $~lib/builtins/abort @@ -2267,4 +4036,228 @@ (func $~start call $start:std/mod ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$127 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$127 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/std/new.debug.wat b/tests/compiler/std/new.debug.wat index 04a2b09a95..78b789e546 100644 --- a/tests/compiler/std/new.debug.wat +++ b/tests/compiler/std/new.debug.wat @@ -1,17 +1,23 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) (type $6 (func (param i32 f32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (type $9 (func (result i32))) - (type $10 (func (param i32 f32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i64 i32))) + (type $8 (func (param i64 i32) (result i32))) + (type $9 (func (param i32 i64 i32 i32))) + (type $10 (func (param i32 i32 i64) (result i32))) + (type $11 (func (result i32))) + (type $12 (func (param i32 i32 i32 i32))) + (type $13 (func (param i32 f32) (result i32))) (global $std/new/AClass.aStaticField (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -20,27 +26,35 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $std/new/aClass (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 416)) - (global $~lib/memory/__data_end i32 (i32.const 440)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33208)) - (global $~lib/memory/__heap_base i32 (i32.const 33208)) + (global $~lib/rt/__rtti_base i32 (i32.const 2384)) + (global $~lib/memory/__data_end i32 (i32.const 2408)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35176)) + (global $~lib/memory/__heap_base i32 (i32.const 35176)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 416) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2384) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -59,6 +73,435 @@ local.get $anotherField f32.store offset=4 ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -123,7 +566,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -193,7 +636,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -210,7 +653,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -240,8 +683,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -309,7 +752,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -461,7 +904,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -481,7 +924,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -544,7 +987,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -697,7 +1140,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -714,7 +1157,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -803,7 +1246,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -846,7 +1289,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -864,7 +1307,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -932,7 +1375,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1049,7 +1492,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1095,7 +1538,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1127,7 +1570,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1371,7 +1814,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1591,7 +2034,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1699,8 +2142,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1802,7 +2245,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1873,7 +2316,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2030,7 +2473,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2145,7 +2588,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2165,7 +2608,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2213,8 +2656,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2268,13 +2711,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -2282,62 +2725,6 @@ call $std/new/AClass#constructor global.set $std/new/aClass ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $std/new/aClass - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $std/new/AClass - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/new/AClass $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - unreachable - ) (func $~start call $start:std/new ) @@ -2346,14 +2733,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33232 - i32.const 33280 + i32.const 35200 + i32.const 35248 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $std/new/AClass#constructor (param $this i32) (param $value f32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer @@ -2425,4 +3017,213 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/new/aClass + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $std/new/AClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/new/AClass $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/std/new.release.wat b/tests/compiler/std/new.release.wat index 941f28ce40..58d56289cf 100644 --- a/tests/compiler/std/new.release.wat +++ b/tests/compiler/std/new.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i64))) - (type $6 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (result i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -18,21 +18,240 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $std/new/aClass (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34232)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36200)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1440) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3408) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3432 + i32.lt_s + if + i32.const 36224 + i32.const 36272 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -42,9 +261,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -65,7 +288,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -113,7 +336,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -122,7 +345,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$113 + block $__inlined_func$~lib/rt/itcms/Object#unlink$126 local.get $1 i32.load offset=4 i32.const -4 @@ -134,19 +357,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34232 + i32.const 36200 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$113 + br $__inlined_func$~lib/rt/itcms/Object#unlink$126 end local.get $1 i32.load offset=8 @@ -154,7 +377,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -183,12 +406,12 @@ i32.const 1 else local.get $0 - i32.const 1440 + i32.const 3408 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -197,7 +420,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1444 + i32.const 3412 i32.add i32.load i32.const 32 @@ -249,7 +472,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -263,7 +486,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -309,7 +532,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -392,7 +615,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -406,7 +629,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -467,7 +690,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -500,7 +723,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -515,7 +738,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -566,7 +789,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -638,7 +861,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -663,7 +886,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -690,7 +913,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -762,10 +985,10 @@ if unreachable end - i32.const 34240 + i32.const 36208 i32.const 0 i32.store - i32.const 35808 + i32.const 37776 i32.const 0 i32.store loop $for-loop|0 @@ -776,7 +999,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34240 + i32.const 36208 i32.add i32.const 0 i32.store offset=4 @@ -794,7 +1017,7 @@ i32.add i32.const 2 i32.shl - i32.const 34240 + i32.const 36208 i32.add i32.const 0 i32.store offset=96 @@ -812,14 +1035,14 @@ br $for-loop|0 end end - i32.const 34240 - i32.const 35812 + i32.const 36208 + i32.const 37780 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34240 + i32.const 36208 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -904,7 +1127,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34232 + i32.const 36200 i32.lt_u if local.get $0 @@ -993,14 +1216,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34232 + i32.const 36200 i32.lt_u if local.get $0 @@ -1023,7 +1246,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34232 + i32.const 36200 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1052,7 +1275,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1082,18 +1305,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1101,32 +1391,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1139,23 +1433,35 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 - local.set $0 + local.set $2 loop $do-loop|0 - local.get $0 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $0 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1169,9 +1475,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end - local.get $0 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1194,39 +1500,94 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $1 + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 call $~lib/rt/tlsf/searchBlock - local.tee $0 + local.tee $2 i32.eqz if memory.size - local.tee $0 - i32.const 4 - local.get $1 + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 i32.load offset=1568 - local.get $0 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.tee $2 - local.get $0 + local.tee $3 local.get $2 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1234,8 +1595,8 @@ unreachable end end - local.get $1 - local.get $0 + local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1243,119 +1604,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $1 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $0 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $0 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $0 + local.get $4 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $0 + local.get $2 i32.load - local.tee $2 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub local.tee $3 i32.const 16 i32.ge_u if - local.get $0 local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $0 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $2 + local.get $5 + i32.add + local.tee $5 local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $1 - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $0 local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $0 + local.get $2 i32.const 4 i32.add - local.get $0 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $0 - i32.const 4 + local.get $2 + local.get $1 i32.store offset=12 + local.get $2 local.get $0 - i32.const 8 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $0 + local.set $3 + local.get $2 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $0 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $0 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 local.get $1 - local.get $0 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $0 + local.get $2 i32.load i32.const -4 i32.and @@ -1363,86 +1741,59 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $0 + local.get $2 i32.const 20 i32.add - local.tee $0 - i64.const 0 - i64.store align=1 + local.tee $1 + i32.const 0 local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $std/new/AClass - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/new/AClass $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable + memory.fill + local.get $1 ) (func $~start (local $0 i32) memory.size i32.const 16 i32.shl - i32.const 34232 + i32.const 36200 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1464 + i32.const 3432 i32.lt_s if - i32.const 34256 - i32.const 34304 + i32.const 36224 + i32.const 36272 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1455,6 +1806,8 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1495,4 +1848,232 @@ local.get $0 global.set $std/new/aClass ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3432 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3432 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$131 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$131 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36224 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3432 + i32.lt_s + if + i32.const 36224 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $std/new/AClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/new/AClass $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/std/object.debug.wat b/tests/compiler/std/object.debug.wat index b2cfc90f1a..b9b52d20d0 100644 --- a/tests/compiler/std/object.debug.wat +++ b/tests/compiler/std/object.debug.wat @@ -1,29 +1,42 @@ (module - (type $0 (func (param i32) (result i32))) - (type $1 (func (param i32 i32) (result i32))) + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32) (result i32))) (type $2 (func (param i32 i32))) (type $3 (func)) (type $4 (func (param f64 f64) (result i32))) - (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param f32 f32) (result i32))) - (type $7 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $8 (func (param i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $5 (func (param i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i64 i32))) + (type $8 (func (param i64 i32) (result i32))) + (type $9 (func (param i32 i64 i32 i32))) + (type $10 (func (param i32 i32 i32 i32))) + (type $11 (func (param f32 f32) (result i32))) + (type $12 (func (param i32 i32 i32 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 $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 316)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/memory/__heap_base i32 (i32.const 2252)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00.\00t\00s\00\00\00") - (data $1 (i32.const 60) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 124) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 156) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 188) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $6 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 236) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 268) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $8 (i32.const 460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 492) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $10 (i32.const 892) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1948) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2108) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00.\00t\00s\00\00\00") + (data $14 (i32.const 2156) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2220) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -50,6 +63,818 @@ i32.or return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/stub/maybeGrowMemory (param $newOffset i32) + (local $pagesBefore i32) + (local $maxOffset i32) + (local $pagesNeeded i32) + (local $4 i32) + (local $5 i32) + (local $pagesWanted i32) + memory.size + local.set $pagesBefore + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $maxOffset + local.get $newOffset + local.get $maxOffset + i32.gt_u + if + local.get $newOffset + local.get $maxOffset + i32.sub + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $4 + local.get $pagesNeeded + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $newOffset + global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/stub/__alloc (param $size i32) (result i32) + (local $block i32) + (local $ptr i32) + (local $size|3 i32) + (local $payloadSize i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 192 + i32.const 33 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/stub/offset + local.set $block + global.get $~lib/rt/stub/offset + i32.const 4 + i32.add + local.set $ptr + block $~lib/rt/stub/computeSize|inlined.0 (result i32) + local.get $size + local.set $size|3 + local.get $size|3 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + br $~lib/rt/stub/computeSize|inlined.0 + end + local.set $payloadSize + local.get $ptr + local.get $payloadSize + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $block + local.get $payloadSize + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $ptr + return + ) + (func $~lib/rt/common/OBJECT#set:gcInfo (param $this i32) (param $gcInfo i32) + local.get $this + local.get $gcInfo + i32.store offset=4 + ) + (func $~lib/rt/common/OBJECT#set:gcInfo2 (param $this i32) (param $gcInfo2 i32) + local.get $this + local.get $gcInfo2 + i32.store offset=8 + ) + (func $~lib/rt/common/OBJECT#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/common/OBJECT#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/stub/__new (param $size i32) (param $id i32) (result i32) + (local $ptr i32) + (local $object i32) + local.get $size + i32.const 1073741804 + i32.gt_u + if + i32.const 128 + i32.const 192 + i32.const 86 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/stub/__alloc + local.set $ptr + local.get $ptr + i32.const 4 + i32.sub + local.set $object + local.get $object + i32.const 0 + call $~lib/rt/common/OBJECT#set:gcInfo + local.get $object + i32.const 0 + call $~lib/rt/common/OBJECT#set:gcInfo2 + local.get $object + local.get $id + call $~lib/rt/common/OBJECT#set:rtId + local.get $object + local.get $size + call $~lib/rt/common/OBJECT#set:rtSize + local.get $ptr + i32.const 16 + i32.add + return + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + local.get $this + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + return + end + local.get $outSize + i32.const 2 + call $~lib/rt/stub/__new + local.set $out + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + local.get $left + local.get $right + call $~lib/string/String#concat + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 492 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 492 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 492 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 492 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 912 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 912 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1968 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1968 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 288 + i32.const 416 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 480 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/stub/__new + local.set $out + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/stub/__new + local.set $out + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/stub/__new + local.set $out + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + return + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + i32.const 1 + drop + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.set $fullMessage + local.get $fileName + if + local.get $fullMessage + i32.const 64 + local.get $fileName + call $~lib/string/String.__concat + i32.const 256 + call $~lib/string/String.__concat + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + call $~lib/string/String.__concat + i32.const 256 + call $~lib/string/String.__concat + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + call $~lib/string/String.__concat + call $~lib/string/String.__concat + local.set $fullMessage + end + local.get $fullMessage + i32.const 2064 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/object/Object.is (param $x f32) (param $y f32) (result i32) i32.const 1 drop @@ -92,19 +917,6 @@ i32.eq return ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u - return - ) (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) (local $ptr1 i32) (local $ptr2 i32) @@ -268,181 +1080,6 @@ call $~lib/string/String.__eq return ) - (func $~lib/rt/stub/maybeGrowMemory (param $newOffset i32) - (local $pagesBefore i32) - (local $maxOffset i32) - (local $pagesNeeded i32) - (local $4 i32) - (local $5 i32) - (local $pagesWanted i32) - memory.size - local.set $pagesBefore - local.get $pagesBefore - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $maxOffset - local.get $newOffset - local.get $maxOffset - i32.gt_u - if - local.get $newOffset - local.get $maxOffset - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $pagesNeeded - local.get $pagesBefore - local.tee $4 - local.get $pagesNeeded - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $pagesWanted - local.get $pagesWanted - memory.grow - i32.const 0 - i32.lt_s - if - local.get $pagesNeeded - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $newOffset - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) - local.get $this - local.get $mmInfo - i32.store - ) - (func $~lib/rt/stub/__alloc (param $size i32) (result i32) - (local $block i32) - (local $ptr i32) - (local $size|3 i32) - (local $payloadSize i32) - local.get $size - i32.const 1073741820 - i32.gt_u - if - i32.const 208 - i32.const 272 - i32.const 33 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/stub/offset - local.set $block - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.set $ptr - block $~lib/rt/stub/computeSize|inlined.0 (result i32) - local.get $size - local.set $size|3 - local.get $size|3 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.sub - br $~lib/rt/stub/computeSize|inlined.0 - end - local.set $payloadSize - local.get $ptr - local.get $payloadSize - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $block - local.get $payloadSize - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $ptr - return - ) - (func $~lib/rt/common/OBJECT#set:gcInfo (param $this i32) (param $gcInfo i32) - local.get $this - local.get $gcInfo - i32.store offset=4 - ) - (func $~lib/rt/common/OBJECT#set:gcInfo2 (param $this i32) (param $gcInfo2 i32) - local.get $this - local.get $gcInfo2 - i32.store offset=8 - ) - (func $~lib/rt/common/OBJECT#set:rtId (param $this i32) (param $rtId i32) - local.get $this - local.get $rtId - i32.store offset=12 - ) - (func $~lib/rt/common/OBJECT#set:rtSize (param $this i32) (param $rtSize i32) - local.get $this - local.get $rtSize - i32.store offset=16 - ) - (func $~lib/rt/stub/__new (param $size i32) (param $id i32) (result i32) - (local $ptr i32) - (local $object i32) - local.get $size - i32.const 1073741804 - i32.gt_u - if - i32.const 208 - i32.const 272 - i32.const 86 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 - local.get $size - i32.add - call $~lib/rt/stub/__alloc - local.set $ptr - local.get $ptr - i32.const 4 - i32.sub - local.set $object - local.get $object - i32.const 0 - call $~lib/rt/common/OBJECT#set:gcInfo - local.get $object - i32.const 0 - call $~lib/rt/common/OBJECT#set:gcInfo2 - local.get $object - local.get $id - call $~lib/rt/common/OBJECT#set:rtId - local.get $object - local.get $size - call $~lib/rt/common/OBJECT#set:rtSize - local.get $ptr - i32.const 16 - i32.add - return - ) (func $std/object/Implicit#constructor (param $this i32) (result i32) local.get $this i32.eqz @@ -486,6 +1123,20 @@ (local $3 i32) (local $4 i32) (local $5 i32) + global.get $~lib/memory/__heap_base + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset f64.const 0 f64.const 0 call $~lib/object/Object.is @@ -496,7 +1147,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 4 i32.const 1 call $~lib/builtins/abort @@ -512,7 +1163,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -528,7 +1179,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -544,7 +1195,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -560,7 +1211,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -576,7 +1227,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -592,7 +1243,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -610,7 +1261,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -627,7 +1278,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -644,7 +1295,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -660,7 +1311,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -676,7 +1327,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -692,7 +1343,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 17 i32.const 1 call $~lib/builtins/abort @@ -708,7 +1359,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -724,7 +1375,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -740,7 +1391,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -756,7 +1407,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -772,7 +1423,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -788,7 +1439,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -804,7 +1455,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -822,7 +1473,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -839,7 +1490,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -856,7 +1507,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -872,7 +1523,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -888,7 +1539,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -904,7 +1555,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 32 i32.const 1 call $~lib/builtins/abort @@ -922,7 +1573,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -938,7 +1589,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -952,7 +1603,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 37 i32.const 1 call $~lib/builtins/abort @@ -966,7 +1617,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -980,7 +1631,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -994,7 +1645,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -1008,49 +1659,49 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 42 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 80 - i32.const 80 + i32.const 2176 + i32.const 2176 call $~lib/object/Object.is<~lib/string/String> i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 44 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 80 - i32.const 112 + i32.const 2176 + i32.const 2208 call $~lib/object/Object.is<~lib/string/String> i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 45 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 80 - i32.const 144 + i32.const 2176 + i32.const 2240 call $~lib/object/Object.is<~lib/string/String> i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 46 i32.const 1 call $~lib/builtins/abort @@ -1064,13 +1715,13 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 48 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 176 + i32.const 96 i32.const 0 call $~lib/object/Object.is<~lib/string/String|null> i32.const 0 @@ -1078,40 +1729,26 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 49 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 176 + i32.const 96 call $~lib/object/Object.is<~lib/string/String|null> i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 50 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__heap_base - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset i32.const 0 call $std/object/Implicit#constructor local.set $implicit @@ -1141,7 +1778,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 74 i32.const 3 call $~lib/builtins/abort @@ -1159,7 +1796,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 76 i32.const 3 call $~lib/builtins/abort @@ -1177,7 +1814,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2128 i32.const 77 i32.const 3 call $~lib/builtins/abort diff --git a/tests/compiler/std/object.release.wat b/tests/compiler/std/object.release.wat index 203637c32f..2ffdbe242a 100644 --- a/tests/compiler/std/object.release.wat +++ b/tests/compiler/std/object.release.wat @@ -1,25 +1,392 @@ (module - (type $0 (func (param i32 i32 i32 i32))) - (type $1 (func (param i32 i32) (result i32))) - (type $2 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32 i32 i32 i32))) + (type $3 (func)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\1a\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00.\00t\00s") - (data $1 (i32.const 1084) "\1c") - (data $1.1 (i32.const 1096) "\02\00\00\00\02\00\00\00a") - (data $2 (i32.const 1116) "\1c") - (data $2.1 (i32.const 1128) "\02\00\00\00\02\00\00\00b") - (data $3 (i32.const 1148) "\1c") - (data $3.1 (i32.const 1160) "\02\00\00\00\04\00\00\00a\00b") - (data $4 (i32.const 1180) "\1c") - (data $4.1 (i32.const 1192) "\02") - (data $5 (i32.const 1212) "<") - (data $5.1 (i32.const 1224) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $6 (i32.const 1276) "<") - (data $6.1 (i32.const 1288) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") + (data $5 (i32.const 1260) "\1c") + (data $5.1 (i32.const 1272) "\02\00\00\00\02\00\00\00:") + (data $6 (i32.const 1292) "|") + (data $6.1 (i32.const 1304) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $7 (i32.const 1420) "<") + (data $7.1 (i32.const 1432) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $8 (i32.const 1484) "\1c") + (data $8.1 (i32.const 1496) "\02\00\00\00\02\00\00\000") + (data $9 (i32.const 1516) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $10 (i32.const 1916) "\1c\04") + (data $10.1 (i32.const 1928) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $11 (i32.const 2972) "\\") + (data $11.1 (i32.const 2984) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $13 (i32.const 3132) ",") + (data $13.1 (i32.const 3144) "\02\00\00\00\1a\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00.\00t\00s") + (data $14 (i32.const 3180) "\1c") + (data $14.1 (i32.const 3192) "\02\00\00\00\02\00\00\00a") + (data $15 (i32.const 3212) "\1c") + (data $15.1 (i32.const 3224) "\02\00\00\00\02\00\00\00b") + (data $16 (i32.const 3244) "\1c") + (data $16.1 (i32.const 3256) "\02\00\00\00\04\00\00\00a\00b") (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1152 + i32.const 1216 + i32.const 86 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.tee $4 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1216 + i32.const 33 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/stub/offset + global.get $~lib/rt/stub/offset + i32.const 4 + i32.add + local.tee $2 + local.get $4 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $4 + i32.add + local.tee $5 + memory.size + local.tee $6 + i32.const 16 + i32.shl + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $7 + i32.gt_u + if + local.get $6 + local.get $5 + local.get $7 + i32.sub + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $7 + local.get $6 + local.get $7 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $7 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $5 + global.set $~lib/rt/stub/offset + local.get $4 + i32.store + local.get $2 + i32.const 4 + i32.sub + local.tee $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $3 + local.get $0 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1120 + local.set $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + i32.add + local.tee $5 + if + local.get $5 + i32.const 2 + call $~lib/rt/stub/__new + local.tee $2 + local.get $0 + local.get $3 + memory.copy + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + end + local.get $2 + ) + (func $~lib/util/number/utoa32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 1504 + return + end + local.get $0 + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $0 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/stub/__new + local.set $2 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $2 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1516 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1516 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $2 + local.get $0 + i32.const 2 + i32.sub + local.tee $0 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1516 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $2 + local.get $0 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1516 + i32.add + i32.load + i32.store + else + local.get $2 + local.get $0 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + local.get $2 + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + local.get $0 + i32.const 1056 + local.get $0 + select + local.set $0 + local.get $1 + if (result i32) + local.get $0 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + i32.const 1280 + call $~lib/string/String.__concat + local.get $2 + call $~lib/util/number/utoa32 + call $~lib/string/String.__concat + i32.const 1280 + call $~lib/string/String.__concat + local.get $3 + call $~lib/util/number/utoa32 + call $~lib/string/String.__concat + call $~lib/string/String.__concat + else + local.get $0 + end + i32.const 3088 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -103,7 +470,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$1 + block $__inlined_func$~lib/util/string/compareImpl$15 loop $while-continue|1 local.get $0 local.tee $3 @@ -123,7 +490,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$1 + br_if $__inlined_func$~lib/util/string/compareImpl$15 local.get $2 i32.const 2 i32.add @@ -144,36 +511,38 @@ (func $~start (local $0 i32) (local $1 i32) - i32.const 1104 - i32.const 1104 + i32.const 3276 + global.set $~lib/rt/stub/offset + i32.const 3200 + i32.const 3200 call $~lib/string/String.__eq i32.const 1 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3152 i32.const 44 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1104 - i32.const 1136 + i32.const 3200 + i32.const 3232 call $~lib/string/String.__eq if i32.const 0 - i32.const 1056 + i32.const 3152 i32.const 45 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1104 - i32.const 1168 + i32.const 3200 + i32.const 3264 call $~lib/string/String.__eq if i32.const 0 - i32.const 1056 + i32.const 3152 i32.const 46 i32.const 1 call $~lib/builtins/abort @@ -186,171 +555,104 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3152 i32.const 48 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1200 + i32.const 1120 i32.const 0 call $~lib/string/String.__eq if i32.const 0 - i32.const 1056 + i32.const 3152 i32.const 49 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1200 + i32.const 1120 call $~lib/string/String.__eq if i32.const 0 - i32.const 1056 + i32.const 3152 i32.const 50 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 1372 - i32.lt_u - if - local.get $1 - i32.const 66907 - local.get $0 - i32.sub - 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 - end - i32.const 1340 - i32.const 28 - i32.store - i32.const 1344 - i32.const 0 - i32.store - i32.const 1348 i32.const 0 - i32.store - i32.const 1352 i32.const 4 - i32.store - i32.const 1356 + call $~lib/rt/stub/__new + local.set $1 i32.const 0 - i32.store - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const -16 - i32.and + i32.const 5 + call $~lib/rt/stub/__new local.tee $0 - i32.const 1404 - i32.lt_u + i32.eqz if - local.get $1 - i32.const 66939 + i32.const 0 + i32.const 0 + call $~lib/rt/stub/__new + local.set $0 + end + local.get $0 + if (result i32) local.get $0 + i32.const 8 i32.sub - 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.load + i32.const 5 + i32.eq + else i32.const 0 - i32.lt_s - if - local.get $0 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end end - i32.const 1372 - i32.const 28 - i32.store - i32.const 1376 - i32.const 0 - i32.store - i32.const 1380 - i32.const 0 - i32.store - i32.const 1384 - i32.const 5 - i32.store - i32.const 1388 - i32.const 0 - i32.store - i32.const 1384 - i32.load - i32.const 5 - i32.ne + i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3152 i32.const 74 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1352 - i32.load - i32.const 4 - i32.ne + local.get $1 + if (result i32) + local.get $1 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.eq + else + i32.const 0 + end + i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3152 i32.const 76 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1384 - i32.load - i32.const 5 - i32.ne + local.get $0 + if (result i32) + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.eq + else + i32.const 0 + end + i32.eqz if i32.const 0 - i32.const 1056 + i32.const 3152 i32.const 77 i32.const 3 call $~lib/builtins/abort diff --git a/tests/compiler/std/operator-overloading.debug.wat b/tests/compiler/std/operator-overloading.debug.wat index 87fbfced19..b87b092db9 100644 --- a/tests/compiler/std/operator-overloading.debug.wat +++ b/tests/compiler/std/operator-overloading.debug.wat @@ -1,16 +1,22 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func (param i32 i32))) - (type $2 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32))) (type $3 (func (param i32))) (type $4 (func)) - (type $5 (func (param i32 i32 i32) (result i32))) - (type $6 (func (param i32 i32 i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (type $9 (func (result i32))) - (type $10 (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i64 i32))) + (type $8 (func (param i64 i32) (result i32))) + (type $9 (func (param i32 i64 i32 i32))) + (type $10 (func (param i32 i32 i64) (result i32))) + (type $11 (func (result i32))) + (type $12 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $13 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -19,9 +25,6 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) @@ -42,7 +45,6 @@ (global $std/operator-overloading/f (mut i32) (i32.const 0)) (global $std/operator-overloading/p1 (mut i32) (i32.const 0)) (global $std/operator-overloading/p2 (mut i32) (i32.const 0)) - (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $std/operator-overloading/p (mut i32) (i32.const 0)) (global $std/operator-overloading/n1 (mut i32) (i32.const 0)) (global $std/operator-overloading/n2 (mut i32) (i32.const 0)) @@ -94,27 +96,467 @@ (global $std/operator-overloading/aii2 (mut i32) (i32.const 0)) (global $std/operator-overloading/aii (mut i32) (i32.const 0)) (global $std/operator-overloading/tea (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 560)) - (global $~lib/memory/__data_end i32 (i32.const 596)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33364)) - (global $~lib/memory/__heap_base i32 (i32.const 33364)) + (global $~lib/rt/__rtti_base i32 (i32.const 2528)) + (global $~lib/memory/__data_end i32 (i32.const 2564)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35332)) + (global $~lib/memory/__heap_base i32 (i32.const 35332)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00\00\00\00\00\00\00") - (data $9 (i32.const 492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00x\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00y\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 560) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00\00\00\00\00\00\00") + (data $20 (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00x\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2528) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -179,7 +621,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -249,7 +691,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -266,7 +708,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -296,8 +738,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -365,7 +807,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -517,7 +959,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -537,7 +979,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -600,7 +1042,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -753,7 +1195,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -770,7 +1212,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -859,7 +1301,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -902,7 +1344,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -920,7 +1362,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -988,7 +1430,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1105,7 +1547,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1151,7 +1593,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1183,7 +1625,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1427,7 +1869,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1647,7 +2089,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1755,8 +2197,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1858,7 +2300,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1929,7 +2371,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2086,7 +2528,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2201,7 +2643,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2221,7 +2663,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2269,8 +2711,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2597,19 +3039,6 @@ local.get $y i32.store offset=4 ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u - return - ) (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) (local $ptr1 i32) (local $ptr2 i32) @@ -2722,545 +3151,622 @@ local.get $this i32.load offset=4 ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $std/operator-overloading/a1 - local.tee $1 + (func $~start + call $start:std/operator-overloading + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 35360 + i32.const 35408 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $std/operator-overloading/a2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/a - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/s1 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/s2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/s - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/m1 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/m2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/m - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/d1 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/d2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/d - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/f1 - local.tee $1 + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - global.get $std/operator-overloading/f2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 end - global.get $std/operator-overloading/f - local.tee $1 + local.tee $fullMessage + i32.store + local.get $fileName if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end - global.get $std/operator-overloading/p1 - local.tee $1 + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $std/operator-overloading/Tester#constructor (param $this i32) (param $x i32) (param $y i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store end - global.get $std/operator-overloading/p2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/p - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/n1 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/n2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/n - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/o1 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/o2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/o - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/x1 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/x2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/x - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/eq1 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/eq2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/eq3 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/eq4 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/gt1 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/gt2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/gte1 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/gte2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/le1 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/le2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/leq1 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/leq2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/shr - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/sres - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/shu - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/ures - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/shl - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/pos - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/pres - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/neg - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/nres - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/not - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/res - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/excl - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/incdec - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/tmp - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/ais1 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/ais2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/ais - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/aii1 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/aii2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/aii - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/tea - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $x + call $std/operator-overloading/Tester#set:x + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $y + call $std/operator-overloading/Tester#set:y + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $std/operator-overloading/Tester.add (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.add + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.add + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (func $std/operator-overloading/Tester.sub (param $a i32) (param $b i32) (result i32) (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.sub + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.sub + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + (func $std/operator-overloading/Tester.mul (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.mul + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.mul + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $std/operator-overloading/TesterElementAccess - block $std/operator-overloading/TesterInlineInstance - block $std/operator-overloading/TesterInlineStatic - block $std/operator-overloading/Tester - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/operator-overloading/Tester $std/operator-overloading/TesterInlineStatic $std/operator-overloading/TesterInlineInstance $std/operator-overloading/TesterElementAccess $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - return - end - return - end - unreachable + (func $std/operator-overloading/Tester.div (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.div_s + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.div_s + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~start - call $start:std/operator-overloading + (func $std/operator-overloading/Tester.mod (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.rem_s + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.rem_s + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $std/operator-overloading/Tester.pow (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $a + local.set $2 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 33392 - i32.const 33440 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + call $~lib/math/ipow32 + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + call $~lib/math/ipow32 + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $std/operator-overloading/Tester#constructor (param $this i32) (param $x i32) (param $y i32) (result i32) - (local $3 i32) + (func $std/operator-overloading/Tester.and (param $a i32) (param $b i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $3 + i32.const 0 + i32.store + i32.const 0 + local.get $a + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $x - call $std/operator-overloading/Tester#set:x - local.get $this - local.set $3 + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $y - call $std/operator-overloading/Tester#set:y - local.get $this - local.set $3 + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.and + local.get $a + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.and + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $2 + return ) - (func $std/operator-overloading/Tester.add (param $a i32) (param $b i32) (result i32) + (func $std/operator-overloading/Tester.or (param $a i32) (param $b i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3285,7 +3791,7 @@ i32.store local.get $2 call $std/operator-overloading/Tester#get:x - i32.add + i32.or local.get $a local.set $2 global.get $~lib/memory/__stack_pointer @@ -3300,7 +3806,57 @@ i32.store local.get $2 call $std/operator-overloading/Tester#get:y + i32.or + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.xor (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.xor + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.xor call $std/operator-overloading/Tester#constructor local.set $2 global.get $~lib/memory/__stack_pointer @@ -3310,7 +3866,111 @@ local.get $2 return ) - (func $std/operator-overloading/Tester.sub (param $a i32) (param $b i32) (result i32) + (func $std/operator-overloading/Tester.equals (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.eq + if (result i32) + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.eq + else + i32.const 0 + end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.notEquals (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.ne + if (result i32) + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.ne + else + i32.const 0 + end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.greater (param $a i32) (param $b i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3320,7 +3980,6 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 local.get $a local.set $2 global.get $~lib/memory/__stack_pointer @@ -3335,23 +3994,26 @@ i32.store local.get $2 call $std/operator-overloading/Tester#get:x - i32.sub - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - local.get $b - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - i32.sub - call $std/operator-overloading/Tester#constructor + i32.gt_s + if (result i32) + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.gt_s + else + i32.const 0 + end local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3360,7 +4022,7 @@ local.get $2 return ) - (func $std/operator-overloading/Tester.mul (param $a i32) (param $b i32) (result i32) + (func $std/operator-overloading/Tester.greaterEquals (param $a i32) (param $b i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3370,7 +4032,6 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 local.get $a local.set $2 global.get $~lib/memory/__stack_pointer @@ -3385,23 +4046,26 @@ i32.store local.get $2 call $std/operator-overloading/Tester#get:x - i32.mul - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - local.get $b - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - i32.mul - call $std/operator-overloading/Tester#constructor + i32.ge_s + if (result i32) + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.ge_s + else + i32.const 0 + end local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3410,7 +4074,7 @@ local.get $2 return ) - (func $std/operator-overloading/Tester.div (param $a i32) (param $b i32) (result i32) + (func $std/operator-overloading/Tester.less (param $a i32) (param $b i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3420,7 +4084,6 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 local.get $a local.set $2 global.get $~lib/memory/__stack_pointer @@ -3435,23 +4098,26 @@ i32.store local.get $2 call $std/operator-overloading/Tester#get:x - i32.div_s - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - local.get $b - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - i32.div_s - call $std/operator-overloading/Tester#constructor + i32.lt_s + if (result i32) + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.lt_s + else + i32.const 0 + end local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3460,7 +4126,7 @@ local.get $2 return ) - (func $std/operator-overloading/Tester.mod (param $a i32) (param $b i32) (result i32) + (func $std/operator-overloading/Tester.lessEquals (param $a i32) (param $b i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3470,7 +4136,6 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 local.get $a local.set $2 global.get $~lib/memory/__stack_pointer @@ -3485,23 +4150,26 @@ i32.store local.get $2 call $std/operator-overloading/Tester#get:x - i32.rem_s - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - local.get $b - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - i32.rem_s - call $std/operator-overloading/Tester#constructor + i32.le_s + if (result i32) + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.le_s + else + i32.const 0 + end local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3510,7 +4178,7 @@ local.get $2 return ) - (func $std/operator-overloading/Tester.pow (param $a i32) (param $b i32) (result i32) + (func $std/operator-overloading/Tester.shr (param $value i32) (param $shift i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3521,36 +4189,24 @@ i32.const 0 i32.store i32.const 0 - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:x - local.get $b + local.get $value local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 call $std/operator-overloading/Tester#get:x - call $~lib/math/ipow32 - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - local.get $b + local.get $shift + i32.shr_s + local.get $value local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 call $std/operator-overloading/Tester#get:y - call $~lib/math/ipow32 + local.get $shift + i32.shr_s call $std/operator-overloading/Tester#constructor local.set $2 global.get $~lib/memory/__stack_pointer @@ -3560,7 +4216,7 @@ local.get $2 return ) - (func $std/operator-overloading/Tester.and (param $a i32) (param $b i32) (result i32) + (func $std/operator-overloading/Tester.shu (param $value i32) (param $shift i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3571,36 +4227,24 @@ i32.const 0 i32.store i32.const 0 - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:x - local.get $b + local.get $value local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 call $std/operator-overloading/Tester#get:x - i32.and - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - local.get $b + local.get $shift + i32.shr_u + local.get $value local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 call $std/operator-overloading/Tester#get:y - i32.and + local.get $shift + i32.shr_u call $std/operator-overloading/Tester#constructor local.set $2 global.get $~lib/memory/__stack_pointer @@ -3610,7 +4254,7 @@ local.get $2 return ) - (func $std/operator-overloading/Tester.or (param $a i32) (param $b i32) (result i32) + (func $std/operator-overloading/Tester.shl (param $value i32) (param $shift i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3621,36 +4265,24 @@ i32.const 0 i32.store i32.const 0 - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:x - local.get $b + local.get $value local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 call $std/operator-overloading/Tester#get:x - i32.or - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - local.get $b + local.get $shift + i32.shl + local.get $value local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 call $std/operator-overloading/Tester#get:y - i32.or + local.get $shift + i32.shl call $std/operator-overloading/Tester#constructor local.set $2 global.get $~lib/memory/__stack_pointer @@ -3660,8 +4292,8 @@ local.get $2 return ) - (func $std/operator-overloading/Tester.xor (param $a i32) (param $b i32) (result i32) - (local $2 i32) + (func $std/operator-overloading/Tester.pos (param $value i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3671,47 +4303,31 @@ i32.const 0 i32.store i32.const 0 - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:x - local.get $b - local.set $2 + local.get $value + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $std/operator-overloading/Tester#get:x - i32.xor - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - local.get $b - local.set $2 + local.get $value + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $std/operator-overloading/Tester#get:y - i32.xor call $std/operator-overloading/Tester#constructor - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 return ) - (func $std/operator-overloading/Tester.equals (param $a i32) (param $b i32) (result i32) - (local $2 i32) + (func $std/operator-overloading/Tester.neg (param $value i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3720,50 +4336,36 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $a - local.set $2 + i32.const 0 + i32.const 0 + local.get $value + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $std/operator-overloading/Tester#get:x - local.get $b - local.set $2 + i32.sub + i32.const 0 + local.get $value + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 - call $std/operator-overloading/Tester#get:x - i32.eq - if (result i32) - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - local.get $b - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - i32.eq - else - i32.const 0 - end - local.set $2 + local.get $1 + call $std/operator-overloading/Tester#get:y + i32.sub + call $std/operator-overloading/Tester#constructor + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 return ) - (func $std/operator-overloading/Tester.notEquals (param $a i32) (param $b i32) (result i32) - (local $2 i32) + (func $std/operator-overloading/Tester.not (param $value i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3772,50 +4374,36 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $a - local.set $2 + i32.const 0 + local.get $value + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $std/operator-overloading/Tester#get:x - local.get $b - local.set $2 + i32.const -1 + i32.xor + local.get $value + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 - call $std/operator-overloading/Tester#get:x - i32.ne - if (result i32) - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - local.get $b - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - i32.ne - else - i32.const 0 - end - local.set $2 + local.get $1 + call $std/operator-overloading/Tester#get:y + i32.const -1 + i32.xor + call $std/operator-overloading/Tester#constructor + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 return ) - (func $std/operator-overloading/Tester.greater (param $a i32) (param $b i32) (result i32) - (local $2 i32) + (func $std/operator-overloading/Tester.excl (param $value i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3824,154 +4412,138 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:x - local.get $b - local.set $2 + local.get $value + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $std/operator-overloading/Tester#get:x - i32.gt_s + i32.eqz if (result i32) - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - local.get $b - local.set $2 + local.get $value + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $std/operator-overloading/Tester#get:y - i32.gt_s + i32.eqz else i32.const 0 end - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 return ) - (func $std/operator-overloading/Tester.greaterEquals (param $a i32) (param $b i32) (result i32) - (local $2 i32) + (func $std/operator-overloading/Tester#inc (param $this i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $a - local.set $2 + i64.const 0 + i64.store + local.get $this + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $std/operator-overloading/Tester#get:x - local.get $b - local.set $2 + i32.const 1 + i32.add + call $std/operator-overloading/Tester#set:x + local.get $this + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 - call $std/operator-overloading/Tester#get:x - i32.ge_s - if (result i32) - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - local.get $b - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - i32.ge_s - else - i32.const 0 - end - local.set $2 + local.get $1 + local.get $this + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.store offset=4 + local.get $1 + call $std/operator-overloading/Tester#get:y + i32.const 1 + i32.add + call $std/operator-overloading/Tester#set:y + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 return ) - (func $std/operator-overloading/Tester.less (param $a i32) (param $b i32) (result i32) - (local $2 i32) + (func $std/operator-overloading/Tester#dec (param $this i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $a - local.set $2 + i64.const 0 + i64.store + local.get $this + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $std/operator-overloading/Tester#get:x - local.get $b - local.set $2 + i32.const 1 + i32.sub + call $std/operator-overloading/Tester#set:x + local.get $this + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 - call $std/operator-overloading/Tester#get:x - i32.lt_s - if (result i32) - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - local.get $b - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - i32.lt_s - else - i32.const 0 - end - local.set $2 + local.get $1 + local.get $this + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.store offset=4 + local.get $1 + call $std/operator-overloading/Tester#get:y + i32.const 1 + i32.sub + call $std/operator-overloading/Tester#set:y + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 return ) - (func $std/operator-overloading/Tester.lessEquals (param $a i32) (param $b i32) (result i32) - (local $2 i32) + (func $std/operator-overloading/Tester#postInc (param $this i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3980,50 +4552,36 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $a - local.set $2 + i32.const 0 + local.get $this + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $std/operator-overloading/Tester#get:x - local.get $b - local.set $2 + i32.const 1 + i32.add + local.get $this + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 - call $std/operator-overloading/Tester#get:x - i32.le_s - if (result i32) - local.get $a - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - local.get $b - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - i32.le_s - else - i32.const 0 - end - local.set $2 + local.get $1 + call $std/operator-overloading/Tester#get:y + i32.const 1 + i32.add + call $std/operator-overloading/Tester#constructor + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 return ) - (func $std/operator-overloading/Tester.shr (param $value i32) (param $shift i32) (result i32) - (local $2 i32) + (func $std/operator-overloading/Tester#postDec (param $this i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4033,183 +4591,263 @@ i32.const 0 i32.store i32.const 0 - local.get $value - local.set $2 + local.get $this + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $std/operator-overloading/Tester#get:x - local.get $shift - i32.shr_s - local.get $value - local.set $2 + i32.const 1 + i32.sub + local.get $this + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $std/operator-overloading/Tester#get:y - local.get $shift - i32.shr_s + i32.const 1 + i32.sub call $std/operator-overloading/Tester#constructor - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 return ) - (func $std/operator-overloading/Tester.shu (param $value i32) (param $shift i32) (result i32) - (local $2 i32) + (func $std/operator-overloading/TesterInlineStatic#constructor (param $this i32) (param $x i32) (param $y i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - local.get $value - local.set $2 + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:x - local.get $shift - i32.shr_u - local.get $value - local.set $2 + local.get $3 + i32.store offset=4 + local.get $3 + local.get $x + call $std/operator-overloading/TesterInlineStatic#set:x + local.get $this + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - local.get $shift - i32.shr_u - call $std/operator-overloading/Tester#constructor - local.set $2 + local.get $3 + i32.store offset=4 + local.get $3 + local.get $y + call $std/operator-overloading/TesterInlineStatic#set:y + local.get $this + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - return + local.get $3 ) - (func $std/operator-overloading/Tester.shl (param $value i32) (param $shift i32) (result i32) - (local $2 i32) + (func $std/operator-overloading/TesterInlineInstance#constructor (param $this i32) (param $x i32) (param $y i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - local.get $value - local.set $2 + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:x - local.get $shift - i32.shl - local.get $value - local.set $2 + local.get $3 + i32.store offset=4 + local.get $3 + local.get $x + call $std/operator-overloading/TesterInlineInstance#set:x + local.get $this + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/Tester#get:y - local.get $shift - i32.shl - call $std/operator-overloading/Tester#constructor - local.set $2 + local.get $3 + i32.store offset=4 + local.get $3 + local.get $y + call $std/operator-overloading/TesterInlineInstance#set:y + local.get $this + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - return + local.get $3 ) - (func $std/operator-overloading/Tester.pos (param $value i32) (result i32) - (local $1 i32) + (func $std/operator-overloading/TesterElementAccess#constructor (param $this i32) (param $x i32) (param $y i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - local.get $value - local.set $1 + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $std/operator-overloading/Tester#get:x - local.get $value - local.set $1 + local.get $3 + i32.store offset=4 + local.get $3 + local.get $x + call $std/operator-overloading/TesterElementAccess#set:x + local.get $this + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $std/operator-overloading/Tester#get:y - call $std/operator-overloading/Tester#constructor - local.set $1 + local.get $3 + i32.store offset=4 + local.get $3 + local.get $y + call $std/operator-overloading/TesterElementAccess#set:y + local.get $this + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - return + local.get $3 ) - (func $std/operator-overloading/Tester.neg (param $value i32) (result i32) - (local $1 i32) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.store - i32.const 0 - i32.const 0 - local.get $value - local.set $1 + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store - local.get $1 - call $std/operator-overloading/Tester#get:x - i32.sub - i32.const 0 - local.get $value - local.set $1 + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store - local.get $1 - call $std/operator-overloading/Tester#get:y - i32.sub - call $std/operator-overloading/Tester#constructor - local.set $1 + local.get $3 + i32.const 0 + local.get $right + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $3 return ) - (func $std/operator-overloading/Tester.not (param $value i32) (result i32) - (local $1 i32) + (func $std/operator-overloading/TesterElementAccess#__set (param $this i32) (param $key i32) (param $value i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4218,36 +4856,40 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 - local.get $value - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $std/operator-overloading/Tester#get:x - i32.const -1 - i32.xor - local.get $value - local.set $1 + local.get $key + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store - local.get $1 - call $std/operator-overloading/Tester#get:y - i32.const -1 - i32.xor - call $std/operator-overloading/Tester#constructor - local.set $1 + local.get $3 + i32.const 2480 + call $~lib/string/String.__eq + if + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $value + call $std/operator-overloading/TesterElementAccess#set:x + else + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $value + call $std/operator-overloading/TesterElementAccess#set:y + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - return ) - (func $std/operator-overloading/Tester.excl (param $value i32) (result i32) - (local $1 i32) + (func $std/operator-overloading/TesterElementAccess#__get (param $this i32) (param $key i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4256,604 +4898,871 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $value - local.set $1 + local.get $key + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store - local.get $1 - call $std/operator-overloading/Tester#get:x - i32.eqz + local.get $2 + i32.const 2480 + call $~lib/string/String.__eq if (result i32) - local.get $value - local.set $1 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/TesterElementAccess#get:x + else + local.get $this + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store - local.get $1 - call $std/operator-overloading/Tester#get:y - i32.eqz - else - i32.const 0 + local.get $2 + call $std/operator-overloading/TesterElementAccess#get:y end - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 return ) - (func $std/operator-overloading/Tester#inc (param $this i32) (result i32) + (func $start:std/operator-overloading + (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 40 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - local.set $1 + i32.const 0 + i32.const 40 + memory.fill + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 2112 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 2144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 2288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 1 + i32.const 2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/a1 + i32.const 0 + i32.const 2 + i32.const 3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/a2 + global.get $std/operator-overloading/a1 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $9 i32.store - local.get $1 - local.get $this - local.set $1 + local.get $9 + global.get $std/operator-overloading/a2 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $9 i32.store offset=4 - local.get $1 + local.get $9 + call $std/operator-overloading/Tester.add + global.set $std/operator-overloading/a + global.get $std/operator-overloading/a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 call $std/operator-overloading/Tester#get:x - i32.const 1 - i32.add - call $std/operator-overloading/Tester#set:x - local.get $this - local.set $1 + i32.const 3 + i32.eq + if (result i32) + global.get $std/operator-overloading/a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 5 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 145 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + i32.const 3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/s1 + i32.const 0 + i32.const 2 + i32.const -3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/s2 + global.get $std/operator-overloading/s1 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $9 i32.store - local.get $1 - local.get $this - local.set $1 + local.get $9 + global.get $std/operator-overloading/s2 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $9 i32.store offset=4 - local.get $1 - call $std/operator-overloading/Tester#get:y - i32.const 1 - i32.add - call $std/operator-overloading/Tester#set:y - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $std/operator-overloading/Tester#dec (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $9 + call $std/operator-overloading/Tester.sub + global.set $std/operator-overloading/s + global.get $std/operator-overloading/s + local.set $9 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - local.set $1 + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 0 + i32.eq + if (result i32) + global.get $std/operator-overloading/s + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 6 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + i32.const 5 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/m1 + i32.const 0 + i32.const 3 + i32.const 2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/m2 + global.get $std/operator-overloading/m1 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $9 i32.store - local.get $1 - local.get $this - local.set $1 + local.get $9 + global.get $std/operator-overloading/m2 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $9 i32.store offset=4 - local.get $1 + local.get $9 + call $std/operator-overloading/Tester.mul + global.set $std/operator-overloading/m + global.get $std/operator-overloading/m + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 call $std/operator-overloading/Tester#get:x - i32.const 1 - i32.sub - call $std/operator-overloading/Tester#set:x - local.get $this - local.set $1 + i32.const 6 + i32.eq + if (result i32) + global.get $std/operator-overloading/m + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 10 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 157 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 6 + i32.const 50 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/d1 + i32.const 0 + i32.const 3 + i32.const 10 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/d2 + global.get $std/operator-overloading/d1 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $9 i32.store - local.get $1 - local.get $this - local.set $1 + local.get $9 + global.get $std/operator-overloading/d2 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $9 i32.store offset=4 - local.get $1 - call $std/operator-overloading/Tester#get:y - i32.const 1 - i32.sub - call $std/operator-overloading/Tester#set:y - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $std/operator-overloading/Tester#postInc (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - local.get $this - local.set $1 + local.get $9 + call $std/operator-overloading/Tester.div + global.set $std/operator-overloading/d + global.get $std/operator-overloading/d + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $9 i32.store - local.get $1 + local.get $9 call $std/operator-overloading/Tester#get:x - i32.const 1 - i32.add - local.get $this - local.set $1 + i32.const 2 + i32.eq + if (result i32) + global.get $std/operator-overloading/d + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 5 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 163 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 10 + i32.const 10 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/f1 + i32.const 0 + i32.const 6 + i32.const 10 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/f2 + global.get $std/operator-overloading/f1 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $9 i32.store - local.get $1 - call $std/operator-overloading/Tester#get:y - i32.const 1 - i32.add - call $std/operator-overloading/Tester#constructor - local.set $1 + local.get $9 + global.get $std/operator-overloading/f2 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $std/operator-overloading/Tester#postDec (param $this i32) (result i32) - (local $1 i32) + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.mod + global.set $std/operator-overloading/f + global.get $std/operator-overloading/f + local.set $9 global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + i32.eq + if (result i32) + global.get $std/operator-overloading/f + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 0 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 169 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.store + i32.const 2 + i32.const 3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/p1 i32.const 0 - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $std/operator-overloading/Tester#get:x - i32.const 1 - i32.sub - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $std/operator-overloading/Tester#get:y - i32.const 1 - i32.sub + i32.const 4 + i32.const 5 call $std/operator-overloading/Tester#constructor - local.set $1 + global.set $std/operator-overloading/p2 + global.get $std/operator-overloading/p1 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $std/operator-overloading/TesterInlineStatic#constructor (param $this i32) (param $x i32) (param $y i32) (result i32) - (local $3 i32) + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/p2 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.pow + global.set $std/operator-overloading/p + global.get $std/operator-overloading/p + local.set $9 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 16 + i32.eq + if (result i32) + global.get $std/operator-overloading/p + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $this + local.get $9 i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 243 + i32.eq + else + i32.const 0 end - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $x - call $std/operator-overloading/TesterInlineStatic#set:x - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $y - call $std/operator-overloading/TesterInlineStatic#set:y - local.get $this - local.set $3 + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 175 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 255 + i32.const 15 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/n1 + i32.const 0 + i32.const 15 + i32.const 255 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/n2 + global.get $std/operator-overloading/n1 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $std/operator-overloading/TesterInlineInstance#constructor (param $this i32) (param $x i32) (param $y i32) (result i32) - (local $3 i32) + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/n2 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.and + global.set $std/operator-overloading/n + global.get $std/operator-overloading/n + local.set $9 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 15 + i32.eq + if (result i32) + global.get $std/operator-overloading/n + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $this + local.get $9 i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 15 + i32.eq + else + i32.const 0 end - local.get $this - local.set $3 + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 181 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 3855 + i32.const 255 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/o1 + i32.const 0 + i32.const 61680 + i32.const 0 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/o2 + global.get $std/operator-overloading/o1 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $x - call $std/operator-overloading/TesterInlineInstance#set:x - local.get $this - local.set $3 + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/o2 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $9 i32.store offset=4 - local.get $3 - local.get $y - call $std/operator-overloading/TesterInlineInstance#set:y - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $std/operator-overloading/TesterElementAccess#constructor (param $this i32) (param $x i32) (param $y i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $9 + call $std/operator-overloading/Tester.or + global.set $std/operator-overloading/o + global.get $std/operator-overloading/o + local.set $9 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 65535 + i32.eq + if (result i32) + global.get $std/operator-overloading/o + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $this + local.get $9 i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 255 + i32.eq + else + i32.const 0 end - local.get $this - local.set $3 + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 187 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 255 + i32.const 255 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/x1 + i32.const 0 + i32.const 65280 + i32.const 0 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/x2 + global.get $std/operator-overloading/x1 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $x - call $std/operator-overloading/TesterElementAccess#set:x - local.get $this - local.set $3 + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/x2 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $9 i32.store offset=4 - local.get $3 - local.get $y - call $std/operator-overloading/TesterElementAccess#set:y - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) - (local $leftLength i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $9 + call $std/operator-overloading/Tester.xor + global.set $std/operator-overloading/x + global.get $std/operator-overloading/x + local.set $9 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $left - local.get $right + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 65535 i32.eq + if (result i32) + global.get $std/operator-overloading/x + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 255 + i32.eq + else + i32.const 0 + end + i32.eqz if + i32.const 0 + i32.const 2400 + i32.const 193 i32.const 1 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return + call $~lib/builtins/abort + unreachable end - local.get $left i32.const 0 + i32.const 1 + i32.const -2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/eq1 + i32.const 0 + i32.const 1 + i32.const -2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/eq2 + global.get $std/operator-overloading/eq1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/eq2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.equals + global.set $std/operator-overloading/eq + global.get $std/operator-overloading/eq + i32.const 1 i32.eq - if (result i32) - i32.const 1 - else - local.get $right - i32.const 0 - i32.eq - end + i32.eqz if i32.const 0 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return + i32.const 2400 + i32.const 199 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $left - local.set $3 + i32.const 0 + i32.const 1 + i32.const 0 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/eq3 + i32.const 0 + i32.const 0 + i32.const 1 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/eq4 + global.get $std/operator-overloading/eq3 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $9 i32.store - local.get $3 - call $~lib/string/String#get:length - local.set $leftLength - local.get $leftLength - local.get $right - local.set $3 + local.get $9 + global.get $std/operator-overloading/eq4 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/string/String#get:length - i32.ne + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.equals + global.set $std/operator-overloading/eqf + global.get $std/operator-overloading/eqf + i32.const 0 + i32.eq + i32.eqz if i32.const 0 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return + i32.const 2400 + i32.const 205 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $left - local.set $3 + global.get $std/operator-overloading/eq1 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $9 i32.store - local.get $3 - i32.const 0 - local.get $right - local.set $3 + local.get $9 + global.get $std/operator-overloading/eq2 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $9 i32.store offset=4 - local.get $3 + local.get $9 + call $std/operator-overloading/Tester.notEquals + global.set $std/operator-overloading/eq + global.get $std/operator-overloading/eq i32.const 0 - local.get $leftLength - call $~lib/util/string/compareImpl + i32.eq i32.eqz - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $std/operator-overloading/TesterElementAccess#__set (param $this i32) (param $key i32) (param $value i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + if + i32.const 0 + i32.const 2400 + i32.const 209 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/operator-overloading/eq3 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $9 i32.store - local.get $key - local.set $3 + local.get $9 + global.get $std/operator-overloading/eq4 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.const 512 - call $~lib/string/String.__eq + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.notEquals + global.set $std/operator-overloading/eqf + global.get $std/operator-overloading/eqf + i32.const 1 + i32.eq + i32.eqz if - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - local.get $value - call $std/operator-overloading/TesterElementAccess#set:x - else - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - local.get $value - call $std/operator-overloading/TesterElementAccess#set:y + i32.const 0 + i32.const 2400 + i32.const 213 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/operator-overloading/TesterElementAccess#__get (param $this i32) (param $key i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - local.get $key - local.set $2 + i32.const 2 + global.get $~lib/builtins/i32.MAX_VALUE + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/gt1 + i32.const 0 + i32.const 1 + i32.const 0 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/gt2 + global.get $std/operator-overloading/gt1 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $9 i32.store - local.get $2 - i32.const 512 - call $~lib/string/String.__eq - if (result i32) - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/TesterElementAccess#get:x - else - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $std/operator-overloading/TesterElementAccess#get:y - end - local.set $2 + local.get $9 + global.get $std/operator-overloading/gt2 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - ) - (func $start:std/operator-overloading - (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.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.greater + global.set $std/operator-overloading/gt + global.get $std/operator-overloading/gt + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 219 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + i32.const 2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/gte1 + i32.const 0 + i32.const 2 + i32.const 2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/gte2 + global.get $std/operator-overloading/gte1 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 40 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/gte2 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 40 - memory.fill - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.greaterEquals + global.set $std/operator-overloading/gte + global.get $std/operator-overloading/gte i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 144 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 176 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 320 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 225 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 0 + i32.const 5 + i32.const -1 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/le1 + i32.const 0 + i32.const 6 + i32.const 6 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/le2 + global.get $std/operator-overloading/le1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/le2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.less + global.set $std/operator-overloading/le + global.get $std/operator-overloading/le i32.const 1 - i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 231 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 4 + i32.const 3 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/a1 + global.set $std/operator-overloading/leq1 i32.const 0 - i32.const 2 + i32.const 4 i32.const 3 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/a2 - global.get $std/operator-overloading/a1 + global.set $std/operator-overloading/leq2 + global.get $std/operator-overloading/leq1 local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - global.get $std/operator-overloading/a2 + global.get $std/operator-overloading/leq2 local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store offset=4 local.get $9 - call $std/operator-overloading/Tester.add - global.set $std/operator-overloading/a - global.get $std/operator-overloading/a + call $std/operator-overloading/Tester.lessEquals + global.set $std/operator-overloading/leq + global.get $std/operator-overloading/leq + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 237 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 8 + i32.const 16 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/shr + global.get $std/operator-overloading/shr local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - call $std/operator-overloading/Tester#get:x i32.const 3 + call $std/operator-overloading/Tester.shr + global.set $std/operator-overloading/sres + global.get $std/operator-overloading/sres + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 1 i32.eq if (result i32) - global.get $std/operator-overloading/a + global.get $std/operator-overloading/sres local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 call $std/operator-overloading/Tester#get:y - i32.const 5 + i32.const 2 i32.eq else i32.const 0 @@ -4861,54 +5770,89 @@ i32.eqz if i32.const 0 - i32.const 432 - i32.const 145 + i32.const 2400 + i32.const 242 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 2 - i32.const 3 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/s1 - i32.const 0 - i32.const 2 - i32.const -3 + i32.const -8 + i32.const -16 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/s2 - global.get $std/operator-overloading/s1 + global.set $std/operator-overloading/shu + global.get $std/operator-overloading/shu local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - global.get $std/operator-overloading/s2 + i32.const 3 + call $std/operator-overloading/Tester.shu + global.set $std/operator-overloading/ures + global.get $std/operator-overloading/ures local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 - i32.store offset=4 + i32.store local.get $9 - call $std/operator-overloading/Tester.sub - global.set $std/operator-overloading/s - global.get $std/operator-overloading/s + call $std/operator-overloading/Tester#get:x + i32.const 536870911 + i32.eq + if (result i32) + global.get $std/operator-overloading/ures + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 536870910 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 247 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.const 2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/shl + global.get $std/operator-overloading/shl + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 3 + call $std/operator-overloading/Tester.shl + global.set $std/operator-overloading/sres + global.get $std/operator-overloading/sres local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 call $std/operator-overloading/Tester#get:x - i32.const 0 + i32.const 8 i32.eq if (result i32) - global.get $std/operator-overloading/s + global.get $std/operator-overloading/sres local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 call $std/operator-overloading/Tester#get:y - i32.const 6 + i32.const 16 i32.eq else i32.const 0 @@ -4916,54 +5860,55 @@ i32.eqz if i32.const 0 - i32.const 432 - i32.const 151 + i32.const 2400 + i32.const 252 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 2 - i32.const 5 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/m1 - i32.const 0 - i32.const 3 - i32.const 2 + i32.const 1 + i32.const -2 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/m2 - global.get $std/operator-overloading/m1 + global.set $std/operator-overloading/pos + global.get $std/operator-overloading/pos local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - global.get $std/operator-overloading/m2 + call $std/operator-overloading/Tester.pos + global.set $std/operator-overloading/pres + global.get $std/operator-overloading/pres local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 - i32.store offset=4 + i32.store local.get $9 - call $std/operator-overloading/Tester.mul - global.set $std/operator-overloading/m - global.get $std/operator-overloading/m + call $std/operator-overloading/Tester#get:x + global.get $std/operator-overloading/pos local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 call $std/operator-overloading/Tester#get:x - i32.const 6 i32.eq if (result i32) - global.get $std/operator-overloading/m + global.get $std/operator-overloading/pres + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + global.get $std/operator-overloading/pos local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 call $std/operator-overloading/Tester#get:y - i32.const 10 i32.eq else i32.const 0 @@ -4971,54 +5916,59 @@ i32.eqz if i32.const 0 - i32.const 432 - i32.const 157 + i32.const 2400 + i32.const 257 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 6 - i32.const 50 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/d1 - i32.const 0 - i32.const 3 - i32.const 10 + i32.const -1 + i32.const -2 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/d2 - global.get $std/operator-overloading/d1 + global.set $std/operator-overloading/neg + global.get $std/operator-overloading/neg local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - global.get $std/operator-overloading/d2 + call $std/operator-overloading/Tester.neg + global.set $std/operator-overloading/nres + global.get $std/operator-overloading/nres local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 - i32.store offset=4 + i32.store local.get $9 - call $std/operator-overloading/Tester.div - global.set $std/operator-overloading/d - global.get $std/operator-overloading/d + call $std/operator-overloading/Tester#get:x + i32.const 0 + global.get $std/operator-overloading/neg local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 call $std/operator-overloading/Tester#get:x - i32.const 2 + i32.sub i32.eq if (result i32) - global.get $std/operator-overloading/d + global.get $std/operator-overloading/nres local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 call $std/operator-overloading/Tester#get:y - i32.const 5 + i32.const 0 + global.get $std/operator-overloading/neg + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.sub i32.eq else i32.const 0 @@ -5026,54 +5976,59 @@ i32.eqz if i32.const 0 - i32.const 432 - i32.const 163 + i32.const 2400 + i32.const 262 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 10 - i32.const 10 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/f1 - i32.const 0 - i32.const 6 - i32.const 10 + i32.const 255 + i32.const 16 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/f2 - global.get $std/operator-overloading/f1 + global.set $std/operator-overloading/not + global.get $std/operator-overloading/not local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - global.get $std/operator-overloading/f2 + call $std/operator-overloading/Tester.not + global.set $std/operator-overloading/res + global.get $std/operator-overloading/res local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 - i32.store offset=4 + i32.store local.get $9 - call $std/operator-overloading/Tester.mod - global.set $std/operator-overloading/f - global.get $std/operator-overloading/f + call $std/operator-overloading/Tester#get:x + global.get $std/operator-overloading/not local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 call $std/operator-overloading/Tester#get:x - i32.const 4 + i32.const -1 + i32.xor i32.eq if (result i32) - global.get $std/operator-overloading/f + global.get $std/operator-overloading/res local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 call $std/operator-overloading/Tester#get:y - i32.const 0 + global.get $std/operator-overloading/not + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const -1 + i32.xor i32.eq else i32.const 0 @@ -5081,109 +6036,99 @@ i32.eqz if i32.const 0 - i32.const 432 - i32.const 169 + i32.const 2400 + i32.const 267 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 2 - i32.const 3 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/p1 i32.const 0 - i32.const 4 - i32.const 5 + i32.const 0 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/p2 - global.get $std/operator-overloading/p1 + global.set $std/operator-overloading/excl + global.get $std/operator-overloading/excl local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - global.get $std/operator-overloading/p2 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=4 - local.get $9 - call $std/operator-overloading/Tester.pow - global.set $std/operator-overloading/p - global.get $std/operator-overloading/p + call $std/operator-overloading/Tester.excl + global.set $std/operator-overloading/bres + global.get $std/operator-overloading/bres + global.get $std/operator-overloading/excl local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 call $std/operator-overloading/Tester#get:x - i32.const 16 - i32.eq + i32.eqz if (result i32) - global.get $std/operator-overloading/p + global.get $std/operator-overloading/excl local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 call $std/operator-overloading/Tester#get:y - i32.const 243 - i32.eq + i32.eqz else i32.const 0 end + i32.eq i32.eqz if i32.const 0 - i32.const 432 - i32.const 175 + i32.const 2400 + i32.const 272 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/operator-overloading/bres + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 273 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 255 - i32.const 15 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/n1 i32.const 0 - i32.const 15 - i32.const 255 + i32.const 1 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/n2 - global.get $std/operator-overloading/n1 + global.set $std/operator-overloading/incdec + global.get $std/operator-overloading/incdec local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - global.get $std/operator-overloading/n2 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=4 - local.get $9 - call $std/operator-overloading/Tester.and - global.set $std/operator-overloading/n - global.get $std/operator-overloading/n + call $std/operator-overloading/Tester#inc + global.set $std/operator-overloading/incdec + global.get $std/operator-overloading/incdec local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 call $std/operator-overloading/Tester#get:x - i32.const 15 + i32.const 1 i32.eq if (result i32) - global.get $std/operator-overloading/n + global.get $std/operator-overloading/incdec local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 call $std/operator-overloading/Tester#get:y - i32.const 15 + i32.const 2 i32.eq else i32.const 0 @@ -5191,54 +6136,38 @@ i32.eqz if i32.const 0 - i32.const 432 - i32.const 181 + i32.const 2400 + i32.const 279 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 3855 - i32.const 255 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/o1 - i32.const 0 - i32.const 61680 - i32.const 0 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/o2 - global.get $std/operator-overloading/o1 + global.get $std/operator-overloading/incdec local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - global.get $std/operator-overloading/o2 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=4 - local.get $9 - call $std/operator-overloading/Tester.or - global.set $std/operator-overloading/o - global.get $std/operator-overloading/o + call $std/operator-overloading/Tester#dec + global.set $std/operator-overloading/incdec + global.get $std/operator-overloading/incdec local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 call $std/operator-overloading/Tester#get:x - i32.const 65535 + i32.const 0 i32.eq if (result i32) - global.get $std/operator-overloading/o + global.get $std/operator-overloading/incdec local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 call $std/operator-overloading/Tester#get:y - i32.const 255 + i32.const 1 i32.eq else i32.const 0 @@ -5246,54 +6175,49 @@ i32.eqz if i32.const 0 - i32.const 432 - i32.const 187 + i32.const 2400 + i32.const 282 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 255 - i32.const 255 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/x1 - i32.const 0 - i32.const 65280 i32.const 0 + i32.const 1 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/x2 - global.get $std/operator-overloading/x1 - local.set $9 + global.set $std/operator-overloading/incdec global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - global.get $std/operator-overloading/x2 + global.get $std/operator-overloading/incdec + local.tee $0 + i32.store offset=8 + local.get $0 local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 - i32.store offset=4 + i32.store local.get $9 - call $std/operator-overloading/Tester.xor - global.set $std/operator-overloading/x - global.get $std/operator-overloading/x + call $std/operator-overloading/Tester#postInc + global.set $std/operator-overloading/incdec + local.get $0 + global.set $std/operator-overloading/tmp + global.get $std/operator-overloading/tmp local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 call $std/operator-overloading/Tester#get:x - i32.const 65535 + i32.const 0 i32.eq if (result i32) - global.get $std/operator-overloading/x + global.get $std/operator-overloading/tmp local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 call $std/operator-overloading/Tester#get:y - i32.const 255 + i32.const 1 i32.eq else i32.const 0 @@ -5301,1287 +6225,1150 @@ i32.eqz if i32.const 0 - i32.const 432 - i32.const 193 + i32.const 2400 + i32.const 287 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 1 - i32.const -2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/eq1 - i32.const 0 - i32.const 1 - i32.const -2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/eq2 - global.get $std/operator-overloading/eq1 + global.get $std/operator-overloading/incdec local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - global.get $std/operator-overloading/eq2 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=4 - local.get $9 - call $std/operator-overloading/Tester.equals - global.set $std/operator-overloading/eq - global.get $std/operator-overloading/eq + call $std/operator-overloading/Tester#get:x i32.const 1 i32.eq + if (result i32) + global.get $std/operator-overloading/incdec + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 2 + i32.eq + else + i32.const 0 + end i32.eqz if i32.const 0 - i32.const 432 - i32.const 199 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - i32.const 0 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/eq3 - i32.const 0 - i32.const 0 - i32.const 1 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/eq4 - global.get $std/operator-overloading/eq3 + i32.const 2400 + i32.const 288 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/incdec + local.tee $1 + i32.store offset=12 + local.get $1 local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - global.get $std/operator-overloading/eq4 + call $std/operator-overloading/Tester#postDec + global.set $std/operator-overloading/incdec + local.get $1 + global.set $std/operator-overloading/tmp + global.get $std/operator-overloading/tmp local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 - i32.store offset=4 + i32.store local.get $9 - call $std/operator-overloading/Tester.equals - global.set $std/operator-overloading/eqf - global.get $std/operator-overloading/eqf - i32.const 0 + call $std/operator-overloading/Tester#get:x + i32.const 1 i32.eq + if (result i32) + global.get $std/operator-overloading/tmp + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 2 + i32.eq + else + i32.const 0 + end i32.eqz if i32.const 0 - i32.const 432 - i32.const 205 + i32.const 2400 + i32.const 291 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/operator-overloading/eq1 + global.get $std/operator-overloading/incdec local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - global.get $std/operator-overloading/eq2 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=4 - local.get $9 - call $std/operator-overloading/Tester.notEquals - global.set $std/operator-overloading/eq - global.get $std/operator-overloading/eq + call $std/operator-overloading/Tester#get:x i32.const 0 i32.eq + if (result i32) + global.get $std/operator-overloading/incdec + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 1 + i32.eq + else + i32.const 0 + end i32.eqz if i32.const 0 - i32.const 432 - i32.const 209 + i32.const 2400 + i32.const 292 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/operator-overloading/eq3 + i32.const 0 + i32.const 1 + i32.const 2 + call $std/operator-overloading/TesterInlineStatic#constructor + global.set $std/operator-overloading/ais1 + block $std/operator-overloading/TesterInlineStatic.postInc|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/ais1 + local.tee $3 + i32.store offset=16 + i32.const 0 + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineStatic#get:x + i32.const 1 + i32.add + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineStatic#get:y + i32.const 1 + i32.add + call $std/operator-overloading/TesterInlineStatic#constructor + br $std/operator-overloading/TesterInlineStatic.postInc|inlined.0 + end + global.set $std/operator-overloading/ais1 + i32.const 0 + i32.const 2 + i32.const 3 + call $std/operator-overloading/TesterInlineStatic#constructor + global.set $std/operator-overloading/ais2 + block $std/operator-overloading/TesterInlineStatic.add|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/ais1 + local.tee $4 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/ais2 + local.tee $5 + i32.store offset=24 + i32.const 0 + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineStatic#get:x + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineStatic#get:x + i32.add + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineStatic#get:y + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineStatic#get:y + i32.add + call $std/operator-overloading/TesterInlineStatic#constructor + br $std/operator-overloading/TesterInlineStatic.add|inlined.0 + end + global.set $std/operator-overloading/ais + global.get $std/operator-overloading/ais local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - global.get $std/operator-overloading/eq4 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=4 - local.get $9 - call $std/operator-overloading/Tester.notEquals - global.set $std/operator-overloading/eqf - global.get $std/operator-overloading/eqf - i32.const 1 + call $std/operator-overloading/TesterInlineStatic#get:x + i32.const 4 i32.eq + if (result i32) + global.get $std/operator-overloading/ais + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineStatic#get:y + i32.const 6 + i32.eq + else + i32.const 0 + end i32.eqz if i32.const 0 - i32.const 432 - i32.const 213 + i32.const 2400 + i32.const 312 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/gt1 - i32.const 0 - i32.const 1 - i32.const 0 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/gt2 - global.get $std/operator-overloading/gt1 + i32.const 0 + i32.const 1 + i32.const 2 + call $std/operator-overloading/TesterInlineInstance#constructor + global.set $std/operator-overloading/aii1 + block $std/operator-overloading/TesterInlineInstance#postInc|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/aii1 + local.tee $6 + i32.store offset=28 + i32.const 0 + local.get $6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineInstance#get:x + i32.const 1 + i32.add + local.get $6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineInstance#get:y + i32.const 1 + i32.add + call $std/operator-overloading/TesterInlineInstance#constructor + br $std/operator-overloading/TesterInlineInstance#postInc|inlined.0 + end + global.set $std/operator-overloading/aii1 + i32.const 0 + i32.const 2 + i32.const 3 + call $std/operator-overloading/TesterInlineInstance#constructor + global.set $std/operator-overloading/aii2 + block $std/operator-overloading/TesterInlineInstance#add|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/aii1 + local.tee $7 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/aii2 + local.tee $8 + i32.store offset=36 + i32.const 0 + local.get $7 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineInstance#get:x + local.get $8 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineInstance#get:x + i32.add + local.get $7 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineInstance#get:y + local.get $8 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineInstance#get:y + i32.add + call $std/operator-overloading/TesterInlineInstance#constructor + br $std/operator-overloading/TesterInlineInstance#add|inlined.0 + end + global.set $std/operator-overloading/aii + global.get $std/operator-overloading/aii local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - global.get $std/operator-overloading/gt2 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=4 - local.get $9 - call $std/operator-overloading/Tester.greater - global.set $std/operator-overloading/gt - global.get $std/operator-overloading/gt - i32.const 1 + call $std/operator-overloading/TesterInlineInstance#get:x + i32.const 4 i32.eq + if (result i32) + global.get $std/operator-overloading/aii + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineInstance#get:y + i32.const 6 + i32.eq + else + i32.const 0 + end i32.eqz if i32.const 0 - i32.const 432 - i32.const 219 + i32.const 2400 + i32.const 332 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 + i32.const 1 i32.const 2 - i32.const 2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/gte1 - i32.const 0 - i32.const 2 - i32.const 2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/gte2 - global.get $std/operator-overloading/gte1 + call $std/operator-overloading/TesterElementAccess#constructor + global.set $std/operator-overloading/tea + global.get $std/operator-overloading/tea local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - global.get $std/operator-overloading/gte2 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=4 - local.get $9 - call $std/operator-overloading/Tester.greaterEquals - global.set $std/operator-overloading/gte - global.get $std/operator-overloading/gte - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 432 - i32.const 225 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 5 + i32.const 2480 i32.const -1 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/le1 - i32.const 0 - i32.const 6 - i32.const 6 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/le2 - global.get $std/operator-overloading/le1 + call $std/operator-overloading/TesterElementAccess#__set + global.get $std/operator-overloading/tea local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - global.get $std/operator-overloading/le2 + i32.const 2512 + i32.const -2 + call $std/operator-overloading/TesterElementAccess#__set + global.get $std/operator-overloading/tea local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 - i32.store offset=4 + i32.store local.get $9 - call $std/operator-overloading/Tester.less - global.set $std/operator-overloading/le - global.get $std/operator-overloading/le - i32.const 1 + call $std/operator-overloading/TesterElementAccess#get:x + i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 432 - i32.const 231 + i32.const 2400 + i32.const 360 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 4 - i32.const 3 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/leq1 - i32.const 0 - i32.const 4 - i32.const 3 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/leq2 - global.get $std/operator-overloading/leq1 + global.get $std/operator-overloading/tea local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - global.get $std/operator-overloading/leq2 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=4 - local.get $9 - call $std/operator-overloading/Tester.lessEquals - global.set $std/operator-overloading/leq - global.get $std/operator-overloading/leq - i32.const 1 + i32.const 2480 + call $std/operator-overloading/TesterElementAccess#__get + i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 432 - i32.const 237 + i32.const 2400 + i32.const 361 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 8 - i32.const 16 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/shr - global.get $std/operator-overloading/shr - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - i32.const 3 - call $std/operator-overloading/Tester.shr - global.set $std/operator-overloading/sres - global.get $std/operator-overloading/sres + global.get $std/operator-overloading/tea local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - call $std/operator-overloading/Tester#get:x - i32.const 1 + call $std/operator-overloading/TesterElementAccess#get:y + i32.const -2 i32.eq - if (result i32) - global.get $std/operator-overloading/sres - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:y - i32.const 2 - i32.eq - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 432 - i32.const 242 + i32.const 2400 + i32.const 363 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const -8 - i32.const -16 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/shu - global.get $std/operator-overloading/shu - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - i32.const 3 - call $std/operator-overloading/Tester.shu - global.set $std/operator-overloading/ures - global.get $std/operator-overloading/ures + global.get $std/operator-overloading/tea local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - call $std/operator-overloading/Tester#get:x - i32.const 536870911 + i32.const 2512 + call $std/operator-overloading/TesterElementAccess#__get + i32.const -2 i32.eq - if (result i32) - global.get $std/operator-overloading/ures - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:y - i32.const 536870910 - i32.eq - else - i32.const 0 - end i32.eqz if i32.const 0 - i32.const 432 - i32.const 247 + i32.const 2400 + i32.const 364 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 1 - i32.const 2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/shl - global.get $std/operator-overloading/shl + global.get $std/operator-overloading/tea local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - i32.const 3 - call $std/operator-overloading/Tester.shl - global.set $std/operator-overloading/sres - global.get $std/operator-overloading/sres + i32.const 2480 + global.get $std/operator-overloading/tea local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 - i32.store + i32.store offset=4 local.get $9 - call $std/operator-overloading/Tester#get:x - i32.const 8 - i32.eq - if (result i32) - global.get $std/operator-overloading/sres - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:y - i32.const 16 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 432 - i32.const 252 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 + i32.const 2480 + call $std/operator-overloading/TesterElementAccess#__get i32.const 1 - i32.const -2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/pos - global.get $std/operator-overloading/pos + i32.add + call $std/operator-overloading/TesterElementAccess#__set + global.get $std/operator-overloading/tea local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - call $std/operator-overloading/Tester.pos - global.set $std/operator-overloading/pres - global.get $std/operator-overloading/pres + i32.const 2512 + global.get $std/operator-overloading/tea + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2512 + call $std/operator-overloading/TesterElementAccess#__get + i32.const 1 + i32.sub + call $std/operator-overloading/TesterElementAccess#__set + global.get $std/operator-overloading/tea local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - call $std/operator-overloading/Tester#get:x - global.get $std/operator-overloading/pos + i32.const 2480 + call $std/operator-overloading/TesterElementAccess#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 369 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/operator-overloading/tea local.set $9 global.get $~lib/memory/__stack_pointer local.get $9 i32.store local.get $9 - call $std/operator-overloading/Tester#get:x + i32.const 2512 + call $std/operator-overloading/TesterElementAccess#__get + i32.const -3 i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 370 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s if (result i32) - global.get $std/operator-overloading/pres - local.set $9 + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:y - global.get $std/operator-overloading/pos - local.set $9 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out i32.store - local.get $9 - call $std/operator-overloading/Tester#get:y - i32.eq - else + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/operator-overloading/a1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/a2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/s1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/s2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/s + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/m1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/m2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/m + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/d1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/d2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/d + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/f1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/f2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/f + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/p1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/p2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/p + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/n1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/n2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.eqz + global.get $std/operator-overloading/n + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 257 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 0 - i32.const -1 - i32.const -2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/neg - global.get $std/operator-overloading/neg - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester.neg - global.set $std/operator-overloading/nres - global.get $std/operator-overloading/nres - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:x - i32.const 0 - global.get $std/operator-overloading/neg - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:x - i32.sub - i32.eq - if (result i32) - global.get $std/operator-overloading/nres - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:y - i32.const 0 - global.get $std/operator-overloading/neg - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:y - i32.sub - i32.eq - else - i32.const 0 + global.get $std/operator-overloading/o1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.eqz + global.get $std/operator-overloading/o2 + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 262 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 0 - i32.const 255 - i32.const 16 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/not - global.get $std/operator-overloading/not - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester.not - global.set $std/operator-overloading/res - global.get $std/operator-overloading/res - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:x - global.get $std/operator-overloading/not - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:x - i32.const -1 - i32.xor - i32.eq - if (result i32) - global.get $std/operator-overloading/res - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:y - global.get $std/operator-overloading/not - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:y - i32.const -1 - i32.xor - i32.eq - else - i32.const 0 + global.get $std/operator-overloading/o + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.eqz + global.get $std/operator-overloading/x1 + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 267 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 0 - i32.const 0 - i32.const 0 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/excl - global.get $std/operator-overloading/excl - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester.excl - global.set $std/operator-overloading/bres - global.get $std/operator-overloading/bres - global.get $std/operator-overloading/excl - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:x - i32.eqz - if (result i32) - global.get $std/operator-overloading/excl - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:y - i32.eqz - else - i32.const 0 + global.get $std/operator-overloading/x2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.eq - i32.eqz + global.get $std/operator-overloading/x + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 272 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/bres - i32.const 1 - i32.eq - i32.eqz + global.get $std/operator-overloading/eq1 + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 273 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 0 - i32.const 0 - i32.const 1 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/incdec - global.get $std/operator-overloading/incdec - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#inc - global.set $std/operator-overloading/incdec - global.get $std/operator-overloading/incdec - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:x - i32.const 1 - i32.eq - if (result i32) - global.get $std/operator-overloading/incdec - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:y - i32.const 2 - i32.eq - else - i32.const 0 + global.get $std/operator-overloading/eq2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq3 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.eqz + global.get $std/operator-overloading/eq4 + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 279 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/incdec - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#dec - global.set $std/operator-overloading/incdec - global.get $std/operator-overloading/incdec - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:x - i32.const 0 - i32.eq - if (result i32) - global.get $std/operator-overloading/incdec - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:y - i32.const 1 - i32.eq - else - i32.const 0 + global.get $std/operator-overloading/gt1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.eqz + global.get $std/operator-overloading/gt2 + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 282 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 0 - i32.const 0 - i32.const 1 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/incdec - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/incdec - local.tee $0 - i32.store offset=8 - local.get $0 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#postInc - global.set $std/operator-overloading/incdec - local.get $0 - global.set $std/operator-overloading/tmp - global.get $std/operator-overloading/tmp - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:x - i32.const 0 - i32.eq - if (result i32) - global.get $std/operator-overloading/tmp - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:y - i32.const 1 - i32.eq - else - i32.const 0 + global.get $std/operator-overloading/gte1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.eqz + global.get $std/operator-overloading/gte2 + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 287 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/incdec - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:x - i32.const 1 - i32.eq - if (result i32) - global.get $std/operator-overloading/incdec - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:y - i32.const 2 - i32.eq - else - i32.const 0 + global.get $std/operator-overloading/le1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.eqz + global.get $std/operator-overloading/le2 + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 288 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/incdec + global.get $std/operator-overloading/leq1 local.tee $1 - i32.store offset=12 - local.get $1 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#postDec - global.set $std/operator-overloading/incdec - local.get $1 - global.set $std/operator-overloading/tmp - global.get $std/operator-overloading/tmp - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:x - i32.const 1 - i32.eq - if (result i32) - global.get $std/operator-overloading/tmp - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:y - i32.const 2 - i32.eq - else - i32.const 0 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.eqz + global.get $std/operator-overloading/leq2 + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 291 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/incdec - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:x - i32.const 0 - i32.eq - if (result i32) - global.get $std/operator-overloading/incdec - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/Tester#get:y - i32.const 1 - i32.eq - else - i32.const 0 + global.get $std/operator-overloading/shr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/sres + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shu + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ures + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shl + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.eqz + global.get $std/operator-overloading/pos + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 292 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 0 - i32.const 1 - i32.const 2 - call $std/operator-overloading/TesterInlineStatic#constructor - global.set $std/operator-overloading/ais1 - block $std/operator-overloading/TesterInlineStatic.postInc|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/ais1 - local.tee $3 - i32.store offset=16 - i32.const 0 - local.get $3 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/TesterInlineStatic#get:x - i32.const 1 - i32.add - local.get $3 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/TesterInlineStatic#get:y - i32.const 1 - i32.add - call $std/operator-overloading/TesterInlineStatic#constructor - br $std/operator-overloading/TesterInlineStatic.postInc|inlined.0 + global.get $std/operator-overloading/pres + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.set $std/operator-overloading/ais1 - i32.const 0 - i32.const 2 - i32.const 3 - call $std/operator-overloading/TesterInlineStatic#constructor - global.set $std/operator-overloading/ais2 - block $std/operator-overloading/TesterInlineStatic.add|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/ais1 - local.tee $4 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/ais2 - local.tee $5 - i32.store offset=24 - i32.const 0 - local.get $4 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/TesterInlineStatic#get:x - local.get $5 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/TesterInlineStatic#get:x - i32.add - local.get $4 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/TesterInlineStatic#get:y - local.get $5 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/TesterInlineStatic#get:y - i32.add - call $std/operator-overloading/TesterInlineStatic#constructor - br $std/operator-overloading/TesterInlineStatic.add|inlined.0 + global.get $std/operator-overloading/neg + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.set $std/operator-overloading/ais - global.get $std/operator-overloading/ais - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/TesterInlineStatic#get:x - i32.const 4 - i32.eq - if (result i32) - global.get $std/operator-overloading/ais - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/TesterInlineStatic#get:y - i32.const 6 - i32.eq - else - i32.const 0 + global.get $std/operator-overloading/nres + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.eqz + global.get $std/operator-overloading/not + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 312 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 0 - i32.const 1 - i32.const 2 - call $std/operator-overloading/TesterInlineInstance#constructor - global.set $std/operator-overloading/aii1 - block $std/operator-overloading/TesterInlineInstance#postInc|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/aii1 - local.tee $6 - i32.store offset=28 - i32.const 0 - local.get $6 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/TesterInlineInstance#get:x - i32.const 1 - i32.add - local.get $6 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/TesterInlineInstance#get:y - i32.const 1 - i32.add - call $std/operator-overloading/TesterInlineInstance#constructor - br $std/operator-overloading/TesterInlineInstance#postInc|inlined.0 + global.get $std/operator-overloading/res + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.set $std/operator-overloading/aii1 - i32.const 0 - i32.const 2 - i32.const 3 - call $std/operator-overloading/TesterInlineInstance#constructor - global.set $std/operator-overloading/aii2 - block $std/operator-overloading/TesterInlineInstance#add|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/aii1 - local.tee $7 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/aii2 - local.tee $8 - i32.store offset=36 - i32.const 0 - local.get $7 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/TesterInlineInstance#get:x - local.get $8 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/TesterInlineInstance#get:x - i32.add - local.get $7 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/TesterInlineInstance#get:y - local.get $8 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/TesterInlineInstance#get:y - i32.add - call $std/operator-overloading/TesterInlineInstance#constructor - br $std/operator-overloading/TesterInlineInstance#add|inlined.0 + global.get $std/operator-overloading/excl + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.set $std/operator-overloading/aii - global.get $std/operator-overloading/aii - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/TesterInlineInstance#get:x - i32.const 4 - i32.eq - if (result i32) - global.get $std/operator-overloading/aii - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/TesterInlineInstance#get:y - i32.const 6 - i32.eq - else - i32.const 0 + global.get $std/operator-overloading/incdec + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.eqz + global.get $std/operator-overloading/tmp + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 332 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 0 - i32.const 1 - i32.const 2 - call $std/operator-overloading/TesterElementAccess#constructor - global.set $std/operator-overloading/tea - global.get $std/operator-overloading/tea - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - i32.const 512 - i32.const -1 - call $std/operator-overloading/TesterElementAccess#__set - global.get $std/operator-overloading/tea - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - i32.const 544 - i32.const -2 - call $std/operator-overloading/TesterElementAccess#__set - global.get $std/operator-overloading/tea - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/TesterElementAccess#get:x - i32.const -1 - i32.eq - i32.eqz + global.get $std/operator-overloading/ais1 + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 360 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/tea - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - i32.const 512 - call $std/operator-overloading/TesterElementAccess#__get - i32.const -1 - i32.eq - i32.eqz + global.get $std/operator-overloading/ais2 + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 361 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/tea - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - call $std/operator-overloading/TesterElementAccess#get:y - i32.const -2 - i32.eq - i32.eqz + global.get $std/operator-overloading/ais + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 363 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/tea - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - i32.const 544 - call $std/operator-overloading/TesterElementAccess#__get - i32.const -2 - i32.eq - i32.eqz + global.get $std/operator-overloading/aii1 + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 364 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/tea - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - i32.const 512 - global.get $std/operator-overloading/tea - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=4 - local.get $9 - i32.const 512 - call $std/operator-overloading/TesterElementAccess#__get - i32.const 1 - i32.add - call $std/operator-overloading/TesterElementAccess#__set - global.get $std/operator-overloading/tea - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - i32.const 544 - global.get $std/operator-overloading/tea - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=4 - local.get $9 - i32.const 544 - call $std/operator-overloading/TesterElementAccess#__get - i32.const 1 - i32.sub - call $std/operator-overloading/TesterElementAccess#__set - global.get $std/operator-overloading/tea - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - i32.const 512 - call $std/operator-overloading/TesterElementAccess#__get - i32.const 0 - i32.eq - i32.eqz + global.get $std/operator-overloading/aii2 + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 369 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end global.get $std/operator-overloading/tea - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store - local.get $9 - i32.const 544 - call $std/operator-overloading/TesterElementAccess#__get - i32.const -3 - i32.eq - i32.eqz + local.tee $1 if - i32.const 0 - i32.const 432 - i32.const 370 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 40 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $std/operator-overloading/TesterElementAccess + block $std/operator-overloading/TesterInlineInstance + block $std/operator-overloading/TesterInlineStatic + block $std/operator-overloading/Tester + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/operator-overloading/Tester $std/operator-overloading/TesterInlineStatic $std/operator-overloading/TesterInlineInstance $std/operator-overloading/TesterElementAccess $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + unreachable ) ) diff --git a/tests/compiler/std/operator-overloading.release.wat b/tests/compiler/std/operator-overloading.release.wat index 32bafe546c..b8f2f4f5ab 100644 --- a/tests/compiler/std/operator-overloading.release.wat +++ b/tests/compiler/std/operator-overloading.release.wat @@ -4,11 +4,10 @@ (type $2 (func (param i32) (result i32))) (type $3 (func (param i32))) (type $4 (func (param i32 i32))) - (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) (type $8 (func (param i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -86,27 +85,246 @@ (global $std/operator-overloading/aii2 (mut i32) (i32.const 0)) (global $std/operator-overloading/aii (mut i32) (i32.const 0)) (global $std/operator-overloading/tea (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34388)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36356)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) "L") - (data $8.1 (i32.const 1448) "\02\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s") - (data $9 (i32.const 1516) "\1c") - (data $9.1 (i32.const 1528) "\02\00\00\00\02\00\00\00x") - (data $10 (i32.const 1548) "\1c") - (data $10.1 (i32.const 1560) "\02\00\00\00\02\00\00\00y") - (data $11 (i32.const 1584) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "L") + (data $19.1 (i32.const 3416) "\02\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s") + (data $20 (i32.const 3484) "\1c") + (data $20.1 (i32.const 3496) "\02\00\00\00\02\00\00\00x") + (data $21 (i32.const 3516) "\1c") + (data $21.1 (i32.const 3528) "\02\00\00\00\02\00\00\00y") + (data $22 (i32.const 3552) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3588 + i32.lt_s + if + i32.const 36384 + i32.const 36432 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -130,7 +348,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -178,7 +396,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -187,7 +405,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$334 + block $__inlined_func$~lib/rt/itcms/Object#unlink$346 local.get $1 i32.load offset=4 i32.const -4 @@ -199,19 +417,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34388 + i32.const 36356 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$334 + br $__inlined_func$~lib/rt/itcms/Object#unlink$346 end local.get $1 i32.load offset=8 @@ -219,7 +437,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -248,12 +466,12 @@ i32.const 1 else local.get $0 - i32.const 1584 + i32.const 3552 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -262,7 +480,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1588 + i32.const 3556 i32.add i32.load i32.const 32 @@ -314,7 +532,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -328,7 +546,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -374,7 +592,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -457,7 +675,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -471,7 +689,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -532,7 +750,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -565,7 +783,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -580,7 +798,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -631,7 +849,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -703,7 +921,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -728,7 +946,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -755,7 +973,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -827,10 +1045,10 @@ if unreachable end - i32.const 34400 + i32.const 36368 i32.const 0 i32.store - i32.const 35968 + i32.const 37936 i32.const 0 i32.store loop $for-loop|0 @@ -841,7 +1059,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34400 + i32.const 36368 i32.add i32.const 0 i32.store offset=4 @@ -859,7 +1077,7 @@ i32.add i32.const 2 i32.shl - i32.const 34400 + i32.const 36368 i32.add i32.const 0 i32.store offset=96 @@ -877,14 +1095,14 @@ br $for-loop|0 end end - i32.const 34400 - i32.const 35972 + i32.const 36368 + i32.const 37940 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34400 + i32.const 36368 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -969,7 +1187,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34388 + i32.const 36356 i32.lt_u if local.get $0 @@ -1058,14 +1276,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34388 + i32.const 36356 i32.lt_u if local.get $0 @@ -1088,7 +1306,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34388 + i32.const 36356 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1117,7 +1335,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1147,18 +1365,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1166,32 +1451,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1204,23 +1493,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$68 + block $__inlined_func$~lib/rt/itcms/interrupt$70 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 @@ -1234,9 +1535,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$68 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1259,31 +1560,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.const 1073741820 + i32.gt_u if - memory.size - local.tee $1 - i32.const 4 - local.get $2 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1299,8 +1655,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1308,119 +1664,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 8 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1428,13 +1801,14 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i64.const 0 - i64.store align=1 + local.tee $1 + i32.const 0 local.get $0 + memory.fill + local.get $1 ) (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1621,579 +1995,377 @@ end local.get $2 ) - (func $~lib/rt/__visit_globals - (local $0 i32) - global.get $std/operator-overloading/a1 - local.tee $0 - if + (func $~start + call $start:std/operator-overloading + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/a2 - local.tee $0 - if + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/a - local.tee $0 - if + local.tee $2 + i32.store local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/s1 - local.tee $0 - if + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$351 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$351 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/itcms/__visit + return end - global.get $std/operator-overloading/s2 - local.tee $0 + i32.const 36384 + i32.const 36432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3588 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/s - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/m1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/m2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 36384 + i32.const 36432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $std/operator-overloading/m + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select local.tee $0 + i32.store + local.get $1 if + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/d1 - local.tee $0 - if + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 local.get $0 - call $~lib/rt/itcms/__visit + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store end - global.get $std/operator-overloading/d2 - local.tee $0 + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $std/operator-overloading/Tester#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3588 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 36384 + i32.const 36432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $std/operator-overloading/d - local.tee $0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/operator-overloading/Tester.equals (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3588 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 36384 + i32.const 36432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $std/operator-overloading/f1 - local.tee $0 - if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/f2 - local.tee $0 - if + i32.store local.get $0 - call $~lib/rt/itcms/__visit + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.eq + else + i32.const 0 end - global.get $std/operator-overloading/f - local.tee $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/operator-overloading/Tester.notEquals (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3588 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 36384 + i32.const 36432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $std/operator-overloading/p1 - local.tee $0 - if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.ne + if (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/p2 - local.tee $0 - if + i32.store local.get $0 - call $~lib/rt/itcms/__visit + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.ne + else + i32.const 0 end - global.get $std/operator-overloading/p - local.tee $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/operator-overloading/TesterInlineStatic#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3588 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/n1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/n2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/n - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/o1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/o2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/o - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/x1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/x2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/x - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/eq1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/eq2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/eq3 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/eq4 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/gt1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/gt2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/gte1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/gte2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/le1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/le2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/leq1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/leq2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/shr - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/sres - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/shu - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/ures - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/shl - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/pos - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/pres - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/neg - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/nres - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/not - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/res - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/excl - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/incdec - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/tmp - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/ais1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/ais2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/ais - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/aii1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/aii2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/aii - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/tea - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $std/operator-overloading/TesterElementAccess - block $std/operator-overloading/TesterInlineInstance - block $std/operator-overloading/TesterInlineStatic - block $std/operator-overloading/Tester - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/operator-overloading/Tester $std/operator-overloading/TesterInlineStatic $std/operator-overloading/TesterInlineInstance $std/operator-overloading/TesterElementAccess $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - unreachable - ) - (func $~start - call $start:std/operator-overloading - ) - (func $std/operator-overloading/Tester#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 36384 + i32.const 36432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $std/operator-overloading/Tester.equals (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - i32.eq - else - i32.const 0 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/operator-overloading/Tester.notEquals (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load - i32.ne - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - i32.ne - else - i32.const 0 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/operator-overloading/TesterInlineStatic#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 5 call $~lib/rt/itcms/__new local.tee $2 @@ -2223,11 +2395,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s if - i32.const 34416 - i32.const 34464 + i32.const 36384 + i32.const 36432 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2237,6 +2409,7 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 8 i32.const 6 call $~lib/rt/itcms/__new local.tee $2 @@ -2270,11 +2443,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s if - i32.const 34416 - i32.const 34464 + i32.const 36384 + i32.const 36432 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2284,7 +2457,7 @@ i64.const 0 i64.store local.get $0 - i32.const 1536 + i32.const 3504 i32.eq if global.get $~lib/memory/__stack_pointer @@ -2309,10 +2482,10 @@ i32.shr_u local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 1536 + i32.const 3504 i32.store local.get $2 - i32.const 1532 + i32.const 3500 i32.load i32.const 1 i32.shr_u @@ -2321,10 +2494,10 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - i32.const 1536 + i32.const 3504 local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 1536 + i32.const 3504 i32.store offset=4 i32.const 1 local.get $0 @@ -2363,7 +2536,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$199 + block $__inlined_func$~lib/util/string/compareImpl$202 loop $while-continue|1 local.get $0 local.tee $2 @@ -2383,7 +2556,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$199 + br_if $__inlined_func$~lib/util/string/compareImpl$202 local.get $1 i32.const 2 i32.add @@ -2399,30 +2572,74 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $std/operator-overloading/TesterElementAccess#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3588 + i32.lt_s + if + i32.const 36384 + i32.const 36432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/string/String.__eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $2 - i32.eqz - return + i32.store + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 ) - (func $std/operator-overloading/TesterElementAccess#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/operator-overloading/TesterElementAccess#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s if - i32.const 34416 - i32.const 34464 + i32.const 36384 + i32.const 36432 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2436,131 +2653,502 @@ i32.store local.get $1 call $~lib/string/String.__eq - if + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/operator-overloading + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 36356 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 3140 + i32.const 3136 + i32.store + i32.const 3144 + i32.const 3136 + i32.store + i32.const 3136 + global.set $~lib/rt/itcms/pinSpace + i32.const 3172 + i32.const 3168 + i32.store + i32.const 3176 + i32.const 3168 + i32.store + i32.const 3168 + global.set $~lib/rt/itcms/toSpace + i32.const 3316 + i32.const 3312 + i32.store + i32.const 3320 + i32.const 3312 + i32.store + i32.const 3312 + global.set $~lib/rt/itcms/fromSpace + i32.const 1 + i32.const 2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/a1 + i32.const 2 + i32.const 3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/a2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/a1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/a2 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.add + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/a + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/a + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/a + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 5 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 3424 + i32.const 145 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/s1 + i32.const 2 + i32.const -3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/s2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/s1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/s2 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.sub + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.sub + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/s + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/s + local.tee $0 + i32.store + local.get $0 + i32.load + if (result i32) + i32.const 0 + else + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/s + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 6 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 3424 + i32.const 151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 5 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/m1 + i32.const 3 + i32.const 2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/m2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/m1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/m2 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - local.get $2 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store - else + local.get $1 + i32.load + i32.mul global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - local.get $2 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.mul + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/m + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/m + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 6 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/m + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 10 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 3424 + i32.const 157 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6 + i32.const 50 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/d1 + i32.const 3 + i32.const 10 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/d2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/d1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/d2 + local.tee $1 i32.store offset=4 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/operator-overloading/TesterElementAccess#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/string/String.__eq - if (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.load - else + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.div_s global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.load offset=4 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $start:std/operator-overloading - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 40 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1620 + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.div_s + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/d + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/d + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/d + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 5 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 3424 + i32.const 163 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + i32.const 10 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/f1 + i32.const 6 + i32.const 10 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/f2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/f1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/f2 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 40 - memory.fill - memory.size - i32.const 16 - i32.shl - i32.const 34388 - 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 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - i32.const 1208 - i32.const 1200 + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + local.get $1 + i32.load + i32.rem_s + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - i32.const 1352 - i32.const 1344 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - i32.const 1 - i32.const 2 + local.get $1 + i32.load offset=4 + i32.rem_s call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/a1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/f + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/f + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 4 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/f + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + else + i32.const 1 + end + if + i32.const 0 + i32.const 3424 + i32.const 169 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 2 i32.const 3 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/a2 + global.set $std/operator-overloading/p1 + i32.const 4 + i32.const 5 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/p2 global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/a1 + global.get $std/operator-overloading/p1 local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/a2 + global.get $std/operator-overloading/p2 local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -2568,7 +3156,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2584,7 +3172,7 @@ i32.store local.get $1 i32.load - i32.add + call $~lib/math/ipow32 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -2595,29 +3183,29 @@ i32.store local.get $1 i32.load offset=4 - i32.add + call $~lib/math/ipow32 call $std/operator-overloading/Tester#constructor global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/a + global.set $std/operator-overloading/p global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/a + global.get $std/operator-overloading/p local.tee $0 i32.store local.get $0 i32.load - i32.const 3 + i32.const 16 i32.eq if (result i32) global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/a + global.get $std/operator-overloading/p local.tee $0 i32.store local.get $0 i32.load offset=4 - i32.const 5 + i32.const 243 i32.eq else i32.const 0 @@ -2625,26 +3213,26 @@ i32.eqz if i32.const 0 - i32.const 1456 - i32.const 145 + i32.const 3424 + i32.const 175 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2 - i32.const 3 + i32.const 255 + i32.const 15 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/s1 - i32.const 2 - i32.const -3 + global.set $std/operator-overloading/n1 + i32.const 15 + i32.const 255 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/s2 + global.set $std/operator-overloading/n2 global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/s1 + global.get $std/operator-overloading/n1 local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/s2 + global.get $std/operator-overloading/n2 local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -2652,7 +3240,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2668,7 +3256,7 @@ i32.store local.get $1 i32.load - i32.sub + i32.and global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -2679,54 +3267,56 @@ i32.store local.get $1 i32.load offset=4 - i32.sub + i32.and call $std/operator-overloading/Tester#constructor global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/s + global.set $std/operator-overloading/n global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/s + global.get $std/operator-overloading/n local.tee $0 i32.store local.get $0 i32.load + i32.const 15 + i32.eq if (result i32) - i32.const 0 - else global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/s + global.get $std/operator-overloading/n local.tee $0 i32.store local.get $0 i32.load offset=4 - i32.const 6 + i32.const 15 i32.eq + else + i32.const 0 end i32.eqz if i32.const 0 - i32.const 1456 - i32.const 151 + i32.const 3424 + i32.const 181 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2 - i32.const 5 + i32.const 3855 + i32.const 255 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/m1 - i32.const 3 - i32.const 2 + global.set $std/operator-overloading/o1 + i32.const 61680 + i32.const 0 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/m2 + global.set $std/operator-overloading/o2 global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/m1 + global.get $std/operator-overloading/o1 local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/m2 + global.get $std/operator-overloading/o2 local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -2734,7 +3324,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2750,7 +3340,7 @@ i32.store local.get $1 i32.load - i32.mul + i32.or global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -2761,29 +3351,29 @@ i32.store local.get $1 i32.load offset=4 - i32.mul + i32.or call $std/operator-overloading/Tester#constructor global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/m + global.set $std/operator-overloading/o global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/m + global.get $std/operator-overloading/o local.tee $0 i32.store local.get $0 i32.load - i32.const 6 + i32.const 65535 i32.eq if (result i32) global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/m + global.get $std/operator-overloading/o local.tee $0 i32.store local.get $0 i32.load offset=4 - i32.const 10 + i32.const 255 i32.eq else i32.const 0 @@ -2791,26 +3381,26 @@ i32.eqz if i32.const 0 - i32.const 1456 - i32.const 157 + i32.const 3424 + i32.const 187 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6 - i32.const 50 + i32.const 255 + i32.const 255 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/d1 - i32.const 3 - i32.const 10 + global.set $std/operator-overloading/x1 + i32.const 65280 + i32.const 0 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/d2 + global.set $std/operator-overloading/x2 global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/d1 + global.get $std/operator-overloading/x1 local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/d2 + global.get $std/operator-overloading/x2 local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -2818,7 +3408,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2834,7 +3424,7 @@ i32.store local.get $1 i32.load - i32.div_s + i32.xor global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -2845,29 +3435,29 @@ i32.store local.get $1 i32.load offset=4 - i32.div_s + i32.xor call $std/operator-overloading/Tester#constructor global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/d + global.set $std/operator-overloading/x global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/d + global.get $std/operator-overloading/x local.tee $0 i32.store local.get $0 i32.load - i32.const 2 + i32.const 65535 i32.eq if (result i32) global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/d + global.get $std/operator-overloading/x local.tee $0 i32.store local.get $0 i32.load offset=4 - i32.const 5 + i32.const 255 i32.eq else i32.const 0 @@ -2875,107 +3465,199 @@ i32.eqz if i32.const 0 - i32.const 1456 - i32.const 163 + i32.const 3424 + i32.const 193 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10 - i32.const 10 + i32.const 1 + i32.const -2 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/f1 - i32.const 6 - i32.const 10 + global.set $std/operator-overloading/eq1 + i32.const 1 + i32.const -2 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/f2 + global.set $std/operator-overloading/eq2 global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/f1 + global.get $std/operator-overloading/eq1 local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/f2 + global.get $std/operator-overloading/eq2 local.tee $1 i32.store offset=4 + local.get $0 + local.get $1 + call $std/operator-overloading/Tester.equals + global.set $std/operator-overloading/eq + global.get $std/operator-overloading/eq + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 3424 + i32.const 199 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/eq3 + i32.const 0 + i32.const 1 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/eq4 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + global.get $std/operator-overloading/eq3 + local.tee $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - br_if $folding-inner0 + global.get $std/operator-overloading/eq4 + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $std/operator-overloading/Tester.equals + global.set $std/operator-overloading/eqf + global.get $std/operator-overloading/eqf + if + i32.const 0 + i32.const 3424 + i32.const 205 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 0 + global.get $std/operator-overloading/eq1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/eq2 + local.tee $1 + i32.store offset=4 local.get $0 + local.get $1 + call $std/operator-overloading/Tester.notEquals + global.set $std/operator-overloading/eq + global.get $std/operator-overloading/eq + if + i32.const 0 + i32.const 3424 + i32.const 209 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/eq3 + local.tee $0 i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/eq4 + local.tee $1 + i32.store offset=4 local.get $0 - i32.load + local.get $1 + call $std/operator-overloading/Tester.notEquals + global.set $std/operator-overloading/eqf + global.get $std/operator-overloading/eqf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 3424 + i32.const 213 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2147483647 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/gt1 + i32.const 1 + i32.const 0 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/gt2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/gt1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/gt2 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3588 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 0 i32.store - local.get $1 - i32.load - i32.rem_s global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.load offset=4 + i32.load global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 - i32.load offset=4 - i32.rem_s - call $std/operator-overloading/Tester#constructor - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/f - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/f - local.tee $0 - i32.store - local.get $0 i32.load - i32.const 4 - i32.eq + i32.gt_s if (result i32) global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/f - local.tee $0 + local.get $0 i32.store local.get $0 i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.gt_s else - i32.const 1 + i32.const 0 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/gt + global.get $std/operator-overloading/gt + i32.const 1 + i32.ne if i32.const 0 - i32.const 1456 - i32.const 169 + i32.const 3424 + i32.const 219 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 2 - i32.const 3 + i32.const 2 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/p1 - i32.const 4 - i32.const 5 + global.set $std/operator-overloading/gte1 + i32.const 2 + i32.const 2 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/p2 + global.set $std/operator-overloading/gte2 global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/p1 + global.get $std/operator-overloading/gte1 local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/p2 + global.get $std/operator-overloading/gte2 local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -2983,7 +3665,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2999,67 +3681,52 @@ i32.store local.get $1 i32.load - call $~lib/math/ipow32 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - call $~lib/math/ipow32 - call $std/operator-overloading/Tester#constructor - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/p - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/p - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 16 - i32.eq + i32.ge_s if (result i32) global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/p - local.tee $0 + local.get $0 i32.store local.get $0 i32.load offset=4 - i32.const 243 - i32.eq + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.ge_s else i32.const 0 end - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/gte + global.get $std/operator-overloading/gte + i32.const 1 + i32.ne if i32.const 0 - i32.const 1456 - i32.const 175 + i32.const 3424 + i32.const 225 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 255 - i32.const 15 + i32.const 5 + i32.const -1 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/n1 - i32.const 15 - i32.const 255 + global.set $std/operator-overloading/le1 + i32.const 6 + i32.const 6 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/n2 + global.set $std/operator-overloading/le2 global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/n1 + global.get $std/operator-overloading/le1 local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/n2 + global.get $std/operator-overloading/le2 local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -3067,7 +3734,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3083,67 +3750,52 @@ i32.store local.get $1 i32.load - i32.and - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - i32.and - call $std/operator-overloading/Tester#constructor - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/n - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/n - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 15 - i32.eq + i32.lt_s if (result i32) global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/n - local.tee $0 + local.get $0 i32.store local.get $0 i32.load offset=4 - i32.const 15 - i32.eq + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.lt_s else i32.const 0 end - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/le + global.get $std/operator-overloading/le + i32.const 1 + i32.ne if i32.const 0 - i32.const 1456 - i32.const 181 + i32.const 3424 + i32.const 231 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3855 - i32.const 255 + i32.const 4 + i32.const 3 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/o1 - i32.const 61680 - i32.const 0 + global.set $std/operator-overloading/leq1 + i32.const 4 + i32.const 3 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/o2 + global.set $std/operator-overloading/leq2 global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/o1 + global.get $std/operator-overloading/leq1 local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/o2 + global.get $std/operator-overloading/leq2 local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -3151,7 +3803,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3167,75 +3819,52 @@ i32.store local.get $1 i32.load - i32.or - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - i32.or - call $std/operator-overloading/Tester#constructor - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/o - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/o - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 65535 - i32.eq + i32.le_s if (result i32) global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/o - local.tee $0 + local.get $0 i32.store local.get $0 i32.load offset=4 - i32.const 255 - i32.eq + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.le_s else i32.const 0 end - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/leq + global.get $std/operator-overloading/leq + i32.const 1 + i32.ne if i32.const 0 - i32.const 1456 - i32.const 187 + i32.const 3424 + i32.const 237 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 255 - i32.const 255 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/x1 - i32.const 65280 - i32.const 0 + i32.const 8 + i32.const 16 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/x2 + global.set $std/operator-overloading/shr global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/x1 + global.get $std/operator-overloading/shr local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/x2 - local.tee $1 - i32.store offset=4 + i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3246,45 +3875,37 @@ i32.store local.get $0 i32.load - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load - i32.xor + i32.const 3 + i32.shr_s global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - i32.xor + i32.const 3 + i32.shr_s call $std/operator-overloading/Tester#constructor global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/x + global.set $std/operator-overloading/sres global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/x + global.get $std/operator-overloading/sres local.tee $0 i32.store local.get $0 i32.load - i32.const 65535 + i32.const 1 i32.eq if (result i32) global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/x + global.get $std/operator-overloading/sres local.tee $0 i32.store local.get $0 i32.load offset=4 - i32.const 255 + i32.const 2 i32.eq else i32.const 0 @@ -3292,138 +3913,26 @@ i32.eqz if i32.const 0 - i32.const 1456 - i32.const 193 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const -2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/eq1 - i32.const 1 - i32.const -2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/eq2 - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/eq1 - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/eq2 - local.tee $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $std/operator-overloading/Tester.equals - global.set $std/operator-overloading/eq - global.get $std/operator-overloading/eq - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1456 - i32.const 199 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/eq3 - i32.const 0 - i32.const 1 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/eq4 - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/eq3 - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/eq4 - local.tee $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $std/operator-overloading/Tester.equals - global.set $std/operator-overloading/eqf - global.get $std/operator-overloading/eqf - if - i32.const 0 - i32.const 1456 - i32.const 205 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/eq1 - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/eq2 - local.tee $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $std/operator-overloading/Tester.notEquals - global.set $std/operator-overloading/eq - global.get $std/operator-overloading/eq - if - i32.const 0 - i32.const 1456 - i32.const 209 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/eq3 - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/eq4 - local.tee $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $std/operator-overloading/Tester.notEquals - global.set $std/operator-overloading/eqf - global.get $std/operator-overloading/eqf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1456 - i32.const 213 + i32.const 3424 + i32.const 242 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2 - i32.const 2147483647 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/gt1 - i32.const 1 - i32.const 0 + i32.const -8 + i32.const -16 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/gt2 + global.set $std/operator-overloading/shu global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/gt1 + global.get $std/operator-overloading/shu local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/gt2 - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3434,65 +3943,64 @@ i32.store local.get $0 i32.load + i32.const 3 + i32.shr_u global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.shr_u + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/ures + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/ures + local.tee $0 + i32.store + local.get $0 i32.load - i32.gt_s + i32.const 536870911 + i32.eq if (result i32) global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $std/operator-overloading/ures + local.tee $0 i32.store local.get $0 i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - i32.gt_s + i32.const 536870910 + i32.eq else i32.const 0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/gt - global.get $std/operator-overloading/gt - i32.const 1 - i32.ne + i32.eqz if i32.const 0 - i32.const 1456 - i32.const 219 + i32.const 3424 + i32.const 247 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2 - i32.const 2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/gte1 - i32.const 2 + i32.const 1 i32.const 2 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/gte2 + global.set $std/operator-overloading/shl global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/gte1 + global.get $std/operator-overloading/shl local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/gte2 - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3503,65 +4011,64 @@ i32.store local.get $0 i32.load + i32.const 3 + i32.shl global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.shl + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/sres + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/sres + local.tee $0 + i32.store + local.get $0 i32.load - i32.ge_s + i32.const 8 + i32.eq if (result i32) global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $std/operator-overloading/sres + local.tee $0 i32.store local.get $0 i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - i32.ge_s + i32.const 16 + i32.eq else i32.const 0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/gte - global.get $std/operator-overloading/gte - i32.const 1 - i32.ne + i32.eqz if i32.const 0 - i32.const 1456 - i32.const 225 + i32.const 3424 + i32.const 252 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const -1 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/le1 - i32.const 6 - i32.const 6 + i32.const 1 + i32.const -2 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/le2 + global.set $std/operator-overloading/pos global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/le1 + global.get $std/operator-overloading/pos local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/le2 - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3573,64 +4080,69 @@ local.get $0 i32.load global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/pres + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/pres + local.tee $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/pos + local.tee $1 i32.store local.get $1 i32.load - i32.lt_s + i32.eq if (result i32) global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $std/operator-overloading/pres + local.tee $0 i32.store local.get $0 i32.load offset=4 global.get $~lib/memory/__stack_pointer - local.get $1 + global.get $std/operator-overloading/pos + local.tee $1 i32.store local.get $1 i32.load offset=4 - i32.lt_s + i32.eq else i32.const 0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/le - global.get $std/operator-overloading/le - i32.const 1 - i32.ne + i32.eqz if i32.const 0 - i32.const 1456 - i32.const 231 + i32.const 3424 + i32.const 257 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4 - i32.const 3 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/leq1 - i32.const 4 - i32.const 3 + i32.const -1 + i32.const -2 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/leq2 + global.set $std/operator-overloading/neg global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/leq1 + global.get $std/operator-overloading/neg local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/leq2 - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3639,51 +4151,72 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + i32.const 0 local.get $0 i32.load + i32.sub global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + i32.store + i32.const 0 + local.get $0 + i32.load offset=4 + i32.sub + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/nres + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/nres + local.tee $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/neg + local.tee $1 i32.store + i32.const 0 local.get $1 i32.load - i32.le_s + i32.sub + i32.eq if (result i32) global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $std/operator-overloading/nres + local.tee $0 i32.store local.get $0 i32.load offset=4 global.get $~lib/memory/__stack_pointer - local.get $1 + global.get $std/operator-overloading/neg + local.tee $1 i32.store + i32.const 0 local.get $1 i32.load offset=4 - i32.le_s + i32.sub + i32.eq else i32.const 0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/leq - global.get $std/operator-overloading/leq - i32.const 1 - i32.ne + i32.eqz if i32.const 0 - i32.const 1456 - i32.const 237 + i32.const 3424 + i32.const 262 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8 + i32.const 255 i32.const 16 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/shr + global.set $std/operator-overloading/not global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/shr + global.get $std/operator-overloading/not local.tee $0 i32.store global.get $~lib/memory/__stack_pointer @@ -3691,7 +4224,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3702,37 +4235,51 @@ i32.store local.get $0 i32.load - i32.const 3 - i32.shr_s + i32.const -1 + i32.xor global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.load offset=4 - i32.const 3 - i32.shr_s + i32.const -1 + i32.xor call $std/operator-overloading/Tester#constructor global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/sres + global.set $std/operator-overloading/res global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/sres + global.get $std/operator-overloading/res local.tee $0 i32.store local.get $0 i32.load - i32.const 1 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/not + local.tee $1 + i32.store + local.get $1 + i32.load + i32.const -1 + i32.xor i32.eq if (result i32) global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/sres + global.get $std/operator-overloading/res local.tee $0 i32.store local.get $0 i32.load offset=4 - i32.const 2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/not + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + i32.const -1 + i32.xor i32.eq else i32.const 0 @@ -3740,18 +4287,18 @@ i32.eqz if i32.const 0 - i32.const 1456 - i32.const 242 + i32.const 3424 + i32.const 267 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -8 - i32.const -16 + i32.const 0 + i32.const 0 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/shu + global.set $std/operator-overloading/excl global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/shu + global.get $std/operator-overloading/excl local.tee $0 i32.store global.get $~lib/memory/__stack_pointer @@ -3759,7 +4306,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3770,105 +4317,124 @@ i32.store local.get $0 i32.load - i32.const 3 - i32.shr_u - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 3 - i32.shr_u - call $std/operator-overloading/Tester#constructor + if (result i32) + i32.const 1 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/ures + i32.eqz + global.set $std/operator-overloading/bres global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/ures + global.get $std/operator-overloading/excl local.tee $0 i32.store + global.get $std/operator-overloading/bres local.get $0 i32.load - i32.const 536870911 - i32.eq if (result i32) + i32.const 1 + else global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/ures + global.get $std/operator-overloading/excl local.tee $0 i32.store local.get $0 i32.load offset=4 - i32.const 536870910 - i32.eq - else - i32.const 0 end i32.eqz + i32.ne if i32.const 0 - i32.const 1456 - i32.const 247 + i32.const 3424 + i32.const 272 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $std/operator-overloading/bres + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 3424 + i32.const 273 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 i32.const 1 - i32.const 2 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/shl + global.set $std/operator-overloading/incdec global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/shl + global.get $std/operator-overloading/incdec local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 local.get $0 i32.load - i32.const 3 - i32.shl + i32.const 1 + i32.add + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 local.get $0 i32.load offset=4 - i32.const 3 - i32.shl - call $std/operator-overloading/Tester#constructor + i32.const 1 + i32.add + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/sres + local.get $0 + global.set $std/operator-overloading/incdec global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/sres + global.get $std/operator-overloading/incdec local.tee $0 i32.store local.get $0 i32.load - i32.const 8 + i32.const 1 i32.eq if (result i32) global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/sres + global.get $std/operator-overloading/incdec local.tee $0 i32.store local.get $0 i32.load offset=4 - i32.const 16 + i32.const 2 i32.eq else i32.const 0 @@ -3876,100 +4442,101 @@ i32.eqz if i32.const 0 - i32.const 1456 - i32.const 252 + i32.const 3424 + i32.const 279 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const -2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/pos global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/pos + global.get $std/operator-overloading/incdec local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 local.get $0 i32.load + i32.const 1 + i32.sub + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 local.get $0 i32.load offset=4 - call $std/operator-overloading/Tester#constructor + i32.const 1 + i32.sub + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/pres + local.get $0 + global.set $std/operator-overloading/incdec global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/pres + global.get $std/operator-overloading/incdec local.tee $0 i32.store local.get $0 i32.load - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/pos - local.tee $1 - i32.store - local.get $1 - i32.load - i32.eq if (result i32) + i32.const 0 + else global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/pres + global.get $std/operator-overloading/incdec local.tee $0 i32.store local.get $0 i32.load offset=4 - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/pos - local.tee $1 - i32.store - local.get $1 - i32.load offset=4 + i32.const 1 i32.eq - else - i32.const 0 end i32.eqz if i32.const 0 - i32.const 1456 - i32.const 257 + i32.const 3424 + i32.const 282 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const -2 + i32.const 0 + i32.const 1 call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/neg + global.set $std/operator-overloading/incdec global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/neg + global.get $std/operator-overloading/incdec local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3978,53 +4545,68 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - i32.const 0 local.get $0 i32.load - i32.sub + i32.const 1 + i32.add global.get $~lib/memory/__stack_pointer local.get $0 i32.store - i32.const 0 local.get $0 i32.load offset=4 - i32.sub + i32.const 1 + i32.add call $std/operator-overloading/Tester#constructor global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/nres + global.set $std/operator-overloading/incdec + local.get $0 + global.set $std/operator-overloading/tmp global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/nres + global.get $std/operator-overloading/tmp local.tee $0 i32.store local.get $0 i32.load + if (result i32) + i32.const 0 + else + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tmp + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 3424 + i32.const 287 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/neg - local.tee $1 + global.get $std/operator-overloading/incdec + local.tee $0 i32.store - i32.const 0 - local.get $1 + local.get $0 i32.load - i32.sub + i32.const 1 i32.eq if (result i32) global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/nres + global.get $std/operator-overloading/incdec local.tee $0 i32.store local.get $0 i32.load offset=4 - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/neg - local.tee $1 - i32.store - i32.const 0 - local.get $1 - i32.load offset=4 - i32.sub + i32.const 2 i32.eq else i32.const 0 @@ -4032,26 +4614,25 @@ i32.eqz if i32.const 0 - i32.const 1456 - i32.const 262 + i32.const 3424 + i32.const 288 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 255 - i32.const 16 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/not global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/not + global.get $std/operator-overloading/incdec local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -4062,51 +4643,39 @@ i32.store local.get $0 i32.load - i32.const -1 - i32.xor + i32.const 1 + i32.sub global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.load offset=4 - i32.const -1 - i32.xor + i32.const 1 + i32.sub call $std/operator-overloading/Tester#constructor global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/res + global.set $std/operator-overloading/incdec + local.get $0 + global.set $std/operator-overloading/tmp global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/res + global.get $std/operator-overloading/tmp local.tee $0 i32.store local.get $0 i32.load - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/not - local.tee $1 - i32.store - local.get $1 - i32.load - i32.const -1 - i32.xor + i32.const 1 i32.eq if (result i32) global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/res + global.get $std/operator-overloading/tmp local.tee $0 i32.store local.get $0 i32.load offset=4 - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/not - local.tee $1 - i32.store - local.get $1 - i32.load offset=4 - i32.const -1 - i32.xor + i32.const 2 i32.eq else i32.const 0 @@ -4114,154 +4683,115 @@ i32.eqz if i32.const 0 - i32.const 1456 - i32.const 267 + i32.const 3424 + i32.const 291 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 0 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/excl - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/excl - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - if (result i32) - i32.const 1 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.eqz - global.set $std/operator-overloading/bres global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/excl + global.get $std/operator-overloading/incdec local.tee $0 i32.store - global.get $std/operator-overloading/bres local.get $0 i32.load if (result i32) - i32.const 1 + i32.const 0 else global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/excl + global.get $std/operator-overloading/incdec local.tee $0 i32.store local.get $0 i32.load offset=4 + i32.const 1 + i32.eq end i32.eqz - i32.ne if i32.const 0 - i32.const 1456 - i32.const 272 + i32.const 3424 + i32.const 292 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/operator-overloading/bres i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1456 - i32.const 273 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 + i32.const 2 + call $std/operator-overloading/TesterInlineStatic#constructor + global.set $std/operator-overloading/ais1 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/ais1 + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load i32.const 1 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/incdec + i32.add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.add + call $std/operator-overloading/TesterInlineStatic#constructor + global.set $std/operator-overloading/ais1 + i32.const 2 + i32.const 3 + call $std/operator-overloading/TesterInlineStatic#constructor + global.set $std/operator-overloading/ais2 global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/incdec + global.get $std/operator-overloading/ais1 local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - br_if $folding-inner0 + i32.store offset=20 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + global.get $std/operator-overloading/ais2 + local.tee $1 + i32.store offset=24 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 local.get $0 i32.load - i32.const 1 - i32.add - i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store + local.get $1 + i32.load + i32.add global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $0 + i32.store local.get $0 i32.load offset=4 - i32.const 1 - i32.add - i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + i32.store + local.get $1 + i32.load offset=4 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $std/operator-overloading/incdec + call $std/operator-overloading/TesterInlineStatic#constructor + global.set $std/operator-overloading/ais global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/incdec + global.get $std/operator-overloading/ais local.tee $0 i32.store local.get $0 i32.load - i32.const 1 + i32.const 4 i32.eq if (result i32) global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/incdec + global.get $std/operator-overloading/ais local.tee $0 i32.store local.get $0 i32.load offset=4 - i32.const 2 + i32.const 6 i32.eq else i32.const 0 @@ -4269,649 +4799,701 @@ i32.eqz if i32.const 0 - i32.const 1456 - i32.const 279 + i32.const 3424 + i32.const 312 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 1 + i32.const 2 + call $std/operator-overloading/TesterInlineInstance#constructor + global.set $std/operator-overloading/aii1 global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/incdec + global.get $std/operator-overloading/aii1 local.tee $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store + local.get $0 + i32.load + i32.const 1 + i32.add global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.add + call $std/operator-overloading/TesterInlineInstance#constructor + global.set $std/operator-overloading/aii1 + i32.const 2 + i32.const 3 + call $std/operator-overloading/TesterInlineInstance#constructor + global.set $std/operator-overloading/aii2 global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - br_if $folding-inner0 + global.get $std/operator-overloading/aii1 + local.tee $0 + i32.store offset=32 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + global.get $std/operator-overloading/aii2 + local.tee $1 + i32.store offset=36 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 local.get $0 i32.load - i32.const 1 - i32.sub - i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store + local.get $1 + i32.load + i32.add global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $0 + i32.store local.get $0 i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + i32.store + local.get $1 + i32.load offset=4 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $std/operator-overloading/incdec + call $std/operator-overloading/TesterInlineInstance#constructor + global.set $std/operator-overloading/aii global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/incdec + global.get $std/operator-overloading/aii local.tee $0 i32.store local.get $0 i32.load + i32.const 4 + i32.eq if (result i32) - i32.const 0 - else global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/incdec + global.get $std/operator-overloading/aii local.tee $0 i32.store local.get $0 i32.load offset=4 - i32.const 1 + i32.const 6 i32.eq + else + i32.const 0 end i32.eqz if i32.const 0 - i32.const 1456 - i32.const 282 + i32.const 3424 + i32.const 332 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 1 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/incdec - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/incdec - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1620 + i32.const 3588 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load i32.const 1 - i32.add + i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=4 - i32.const 1 - i32.add - call $std/operator-overloading/Tester#constructor + i32.const 2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/incdec local.get $0 - global.set $std/operator-overloading/tmp + global.set $std/operator-overloading/tea global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/tmp + global.get $std/operator-overloading/tea + local.tee $0 + i32.store + local.get $0 + i32.const 3504 + i32.const -1 + call $std/operator-overloading/TesterElementAccess#__set + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tea + local.tee $0 + i32.store + local.get $0 + i32.const 3536 + i32.const -2 + call $std/operator-overloading/TesterElementAccess#__set + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tea local.tee $0 i32.store local.get $0 i32.load - if (result i32) + i32.const -1 + i32.ne + if i32.const 0 - else - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/tmp - local.tee $0 - i32.store - local.get $0 - i32.load offset=4 + i32.const 3424 + i32.const 360 i32.const 1 - i32.eq + call $~lib/builtins/abort + unreachable end - i32.eqz + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tea + local.tee $0 + i32.store + local.get $0 + i32.const 3504 + call $std/operator-overloading/TesterElementAccess#__get + i32.const -1 + i32.ne if i32.const 0 - i32.const 1456 - i32.const 287 + i32.const 3424 + i32.const 361 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/incdec + global.get $std/operator-overloading/tea local.tee $0 i32.store local.get $0 - i32.load - i32.const 1 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/incdec - local.tee $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 2 - i32.eq - else - i32.const 0 - end - i32.eqz + i32.load offset=4 + i32.const -2 + i32.ne if i32.const 0 - i32.const 1456 - i32.const 288 + i32.const 3424 + i32.const 363 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/incdec + global.get $std/operator-overloading/tea local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store + local.get $0 + i32.const 3536 + call $std/operator-overloading/TesterElementAccess#__get + i32.const -2 + i32.ne + if + i32.const 0 + i32.const 3424 + i32.const 364 + 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 1620 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 + global.get $std/operator-overloading/tea + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tea + local.tee $1 + i32.store offset=4 local.get $0 - i32.store - local.get $0 - i32.load + i32.const 3504 + local.get $1 + i32.const 3504 + call $std/operator-overloading/TesterElementAccess#__get i32.const 1 - i32.sub + i32.add + call $std/operator-overloading/TesterElementAccess#__set global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $std/operator-overloading/tea + local.tee $0 i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tea + local.tee $1 + i32.store offset=4 local.get $0 - i32.load offset=4 + i32.const 3536 + local.get $1 + i32.const 3536 + call $std/operator-overloading/TesterElementAccess#__get i32.const 1 i32.sub - call $std/operator-overloading/Tester#constructor - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.set $std/operator-overloading/incdec - local.get $0 - global.set $std/operator-overloading/tmp + call $std/operator-overloading/TesterElementAccess#__set global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/tmp + global.get $std/operator-overloading/tea local.tee $0 i32.store local.get $0 - i32.load - i32.const 1 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/tmp - local.tee $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 2 - i32.eq - else - i32.const 0 - end - i32.eqz + i32.const 3504 + call $std/operator-overloading/TesterElementAccess#__get if i32.const 0 - i32.const 1456 - i32.const 291 + i32.const 3424 + i32.const 369 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/incdec + global.get $std/operator-overloading/tea local.tee $0 i32.store local.get $0 - i32.load - if (result i32) - i32.const 0 - else - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/incdec - local.tee $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.eq - end - i32.eqz + i32.const 3536 + call $std/operator-overloading/TesterElementAccess#__get + i32.const -3 + i32.ne if i32.const 0 - i32.const 1456 - i32.const 292 + i32.const 3424 + i32.const 370 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 2 - call $std/operator-overloading/TesterInlineStatic#constructor - global.set $std/operator-overloading/ais1 - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/ais1 - local.tee $0 - i32.store offset=16 global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36384 + i32.const 36432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_globals + (local $0 i32) + global.get $std/operator-overloading/a1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/a2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/a + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/s1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/s2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/s + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/m1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/m2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/m + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/d1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/d2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/d + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/f1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/f2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/f + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/p1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/p2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/p + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/n1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/n2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/n + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/o1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/o2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/o + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/x1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/x2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/x + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq1 + local.tee $0 + if local.get $0 - i32.load - i32.const 1 - i32.add - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq2 + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq3 + local.tee $0 + if local.get $0 - i32.load offset=4 - i32.const 1 - i32.add - call $std/operator-overloading/TesterInlineStatic#constructor - global.set $std/operator-overloading/ais1 - i32.const 2 - i32.const 3 - call $std/operator-overloading/TesterInlineStatic#constructor - global.set $std/operator-overloading/ais2 - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/ais1 - local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/ais2 - local.tee $1 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq4 + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gt1 + local.tee $0 + if local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load - i32.add - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gt2 + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gte1 + local.tee $0 + if local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - i32.add - call $std/operator-overloading/TesterInlineStatic#constructor - global.set $std/operator-overloading/ais - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/ais - local.tee $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gte2 + local.tee $0 + if local.get $0 - i32.load - i32.const 4 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/ais - local.tee $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 6 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1456 - i32.const 312 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - call $std/operator-overloading/TesterInlineInstance#constructor - global.set $std/operator-overloading/aii1 - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/aii1 - local.tee $0 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/le1 + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/le2 + local.tee $0 + if local.get $0 - i32.load - i32.const 1 - i32.add - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/leq1 + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/leq2 + local.tee $0 + if local.get $0 - i32.load offset=4 - i32.const 1 - i32.add - call $std/operator-overloading/TesterInlineInstance#constructor - global.set $std/operator-overloading/aii1 - i32.const 2 - i32.const 3 - call $std/operator-overloading/TesterInlineInstance#constructor - global.set $std/operator-overloading/aii2 - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/aii1 - local.tee $0 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/aii2 - local.tee $1 - i32.store offset=36 - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shr + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/sres + local.tee $0 + if local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load - i32.add - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shu + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ures + local.tee $0 + if local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - i32.add - call $std/operator-overloading/TesterInlineInstance#constructor - global.set $std/operator-overloading/aii - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/aii - local.tee $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shl + local.tee $0 + if local.get $0 - i32.load - i32.const 4 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/aii - local.tee $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 6 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1456 - i32.const 332 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/pos + local.tee $0 + if local.get $0 - i32.store offset=4 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/pres + local.tee $0 + if local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/neg + local.tee $0 + if local.get $0 - i32.store offset=4 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/nres + local.tee $0 + if local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/not + local.tee $0 + if local.get $0 - global.set $std/operator-overloading/tea - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/tea - local.tee $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/res + local.tee $0 + if local.get $0 - i32.const 1536 - i32.const -1 - call $std/operator-overloading/TesterElementAccess#__set - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/tea - local.tee $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/excl + local.tee $0 + if local.get $0 - i32.const 1568 - i32.const -2 - call $std/operator-overloading/TesterElementAccess#__set - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/tea - local.tee $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/incdec + local.tee $0 + if local.get $0 - i32.load - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1456 - i32.const 360 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/tea - local.tee $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/tmp + local.tee $0 + if local.get $0 - i32.const 1536 - call $std/operator-overloading/TesterElementAccess#__get - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1456 - i32.const 361 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/tea - local.tee $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ais1 + local.tee $0 + if local.get $0 - i32.load offset=4 - i32.const -2 - i32.ne - if - i32.const 0 - i32.const 1456 - i32.const 363 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/tea - local.tee $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ais2 + local.tee $0 + if local.get $0 - i32.const 1568 - call $std/operator-overloading/TesterElementAccess#__get - i32.const -2 - i32.ne - if - i32.const 0 - i32.const 1456 - i32.const 364 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/tea - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/tea - local.tee $1 - i32.store offset=4 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ais + local.tee $0 + if local.get $0 - i32.const 1536 - local.get $1 - i32.const 1536 - call $std/operator-overloading/TesterElementAccess#__get - i32.const 1 - i32.add - call $std/operator-overloading/TesterElementAccess#__set - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/tea - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/tea - local.tee $1 - i32.store offset=4 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii1 + local.tee $0 + if local.get $0 - i32.const 1568 - local.get $1 - i32.const 1568 - call $std/operator-overloading/TesterElementAccess#__get - i32.const 1 - i32.sub - call $std/operator-overloading/TesterElementAccess#__set - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/tea - local.tee $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii2 + local.tee $0 + if local.get $0 - i32.const 1536 - call $std/operator-overloading/TesterElementAccess#__get - if - i32.const 0 - i32.const 1456 - i32.const 369 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/tea - local.tee $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii + local.tee $0 + if local.get $0 - i32.const 1568 - call $std/operator-overloading/TesterElementAccess#__get - i32.const -3 - i32.ne - if - i32.const 0 - i32.const 1456 - i32.const 370 - i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/tea + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 3216 + call $~lib/rt/itcms/__visit + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $std/operator-overloading/TesterElementAccess + block $std/operator-overloading/TesterInlineInstance + block $std/operator-overloading/TesterInlineStatic + block $std/operator-overloading/Tester + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/operator-overloading/Tester $std/operator-overloading/TesterInlineStatic $std/operator-overloading/TesterInlineInstance $std/operator-overloading/TesterElementAccess $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return end - global.get $~lib/memory/__stack_pointer - i32.const 40 - i32.add - global.set $~lib/memory/__stack_pointer return end - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort unreachable ) ) diff --git a/tests/compiler/std/pointer.debug.wat b/tests/compiler/std/pointer.debug.wat index 9381398907..7731d8d711 100644 --- a/tests/compiler/std/pointer.debug.wat +++ b/tests/compiler/std/pointer.debug.wat @@ -1,24 +1,2696 @@ (module - (type $0 (func (param i32 i32))) - (type $1 (func (param i32) (result i32))) - (type $2 (func)) - (type $3 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $std/pointer/one (mut i32) (i32.const 0)) (global $std/pointer/two (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/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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $std/pointer/add (mut i32) (i32.const 0)) (global $std/pointer/sub (mut i32) (i32.const 0)) (global $std/pointer/nextOne (mut i32) (i32.const 0)) (global $std/pointer/buf (mut i32) (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 60)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) - (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2452)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35220)) + (global $~lib/memory/__heap_base i32 (i32.const 35220)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s\00") + (data $20 (i32.const 2432) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $std/pointer/Entry#set:key (param $this i32) (param $key i32) local.get $this local.get $key @@ -114,6 +2786,23 @@ br $std/pointer/Pointer#constructor|inlined.1 end global.set $std/pointer/two + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace block $std/pointer/Pointer#get:offset|inlined.0 (result i32) global.get $std/pointer/one local.set $this|4 @@ -125,7 +2814,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 78 i32.const 1 call $~lib/builtins/abort @@ -142,7 +2831,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 79 i32.const 1 call $~lib/builtins/abort @@ -182,7 +2871,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 83 i32.const 1 call $~lib/builtins/abort @@ -202,7 +2891,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 84 i32.const 1 call $~lib/builtins/abort @@ -230,7 +2919,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 87 i32.const 1 call $~lib/builtins/abort @@ -258,7 +2947,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 90 i32.const 1 call $~lib/builtins/abort @@ -275,7 +2964,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 92 i32.const 1 call $~lib/builtins/abort @@ -298,7 +2987,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 94 i32.const 1 call $~lib/builtins/abort @@ -315,7 +3004,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 95 i32.const 1 call $~lib/builtins/abort @@ -332,7 +3021,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 97 i32.const 1 call $~lib/builtins/abort @@ -367,7 +3056,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 100 i32.const 1 call $~lib/builtins/abort @@ -387,7 +3076,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 101 i32.const 1 call $~lib/builtins/abort @@ -407,7 +3096,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 102 i32.const 1 call $~lib/builtins/abort @@ -458,7 +3147,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 105 i32.const 1 call $~lib/builtins/abort @@ -478,7 +3167,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 106 i32.const 1 call $~lib/builtins/abort @@ -498,7 +3187,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 107 i32.const 1 call $~lib/builtins/abort @@ -557,7 +3246,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 113 i32.const 1 call $~lib/builtins/abort @@ -581,7 +3270,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 114 i32.const 1 call $~lib/builtins/abort @@ -605,7 +3294,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 116 i32.const 1 call $~lib/builtins/abort @@ -629,7 +3318,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 117 i32.const 1 call $~lib/builtins/abort @@ -642,7 +3331,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 119 i32.const 1 call $~lib/builtins/abort @@ -655,7 +3344,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 120 i32.const 1 call $~lib/builtins/abort @@ -692,7 +3381,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 123 i32.const 1 call $~lib/builtins/abort @@ -716,7 +3405,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 124 i32.const 1 call $~lib/builtins/abort @@ -729,7 +3418,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 125 i32.const 1 call $~lib/builtins/abort @@ -758,7 +3447,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 128 i32.const 1 call $~lib/builtins/abort @@ -771,7 +3460,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 129 i32.const 1 call $~lib/builtins/abort @@ -781,4 +3470,421 @@ (func $~start call $start:std/pointer ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35248 + i32.const 35296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/std/pointer.release.wat b/tests/compiler/std/pointer.release.wat index d014421032..4def5e41c3 100644 --- a/tests/compiler/std/pointer.release.wat +++ b/tests/compiler/std/pointer.release.wat @@ -1,17 +1,1754 @@ (module (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) (global $std/pointer/one (mut i32) (i32.const 0)) (global $std/pointer/two (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $std/pointer/add (mut i32) (i32.const 0)) (global $std/pointer/sub (mut i32) (i32.const 0)) (global $std/pointer/nextOne (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36244)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s") + (data $20 (i32.const 3456) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$127 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36244 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$127 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3456 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3460 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36256 + i32.const 0 + i32.store + i32.const 37824 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36256 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36256 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36256 + i32.const 37828 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36256 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36244 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36244 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36244 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3476 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $start:std/pointer (local $0 i32) (local $1 i32) @@ -19,6 +1756,38 @@ global.set $std/pointer/one i32.const 24 global.set $std/pointer/two + memory.size + i32.const 16 + i32.shl + i32.const 36244 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace i32.const 8 i32.const 1 i32.store @@ -31,7 +1800,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 83 i32.const 1 call $~lib/builtins/abort @@ -43,7 +1812,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 84 i32.const 1 call $~lib/builtins/abort @@ -58,7 +1827,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 87 i32.const 1 call $~lib/builtins/abort @@ -73,7 +1842,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 90 i32.const 1 call $~lib/builtins/abort @@ -84,7 +1853,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 92 i32.const 1 call $~lib/builtins/abort @@ -101,7 +1870,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 94 i32.const 1 call $~lib/builtins/abort @@ -112,7 +1881,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 95 i32.const 1 call $~lib/builtins/abort @@ -123,7 +1892,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 97 i32.const 1 call $~lib/builtins/abort @@ -142,7 +1911,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 100 i32.const 1 call $~lib/builtins/abort @@ -154,7 +1923,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 101 i32.const 1 call $~lib/builtins/abort @@ -166,7 +1935,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 102 i32.const 1 call $~lib/builtins/abort @@ -191,7 +1960,7 @@ i32.eq if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 105 i32.const 1 call $~lib/builtins/abort @@ -203,7 +1972,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 106 i32.const 1 call $~lib/builtins/abort @@ -215,7 +1984,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 107 i32.const 1 call $~lib/builtins/abort @@ -233,7 +2002,7 @@ f32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 113 i32.const 1 call $~lib/builtins/abort @@ -245,7 +2014,7 @@ f32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 114 i32.const 1 call $~lib/builtins/abort @@ -257,7 +2026,7 @@ f32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 116 i32.const 1 call $~lib/builtins/abort @@ -269,7 +2038,7 @@ f32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 117 i32.const 1 call $~lib/builtins/abort @@ -281,7 +2050,7 @@ f32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 119 i32.const 1 call $~lib/builtins/abort @@ -293,7 +2062,7 @@ f32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 120 i32.const 1 call $~lib/builtins/abort @@ -308,7 +2077,7 @@ f32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 123 i32.const 1 call $~lib/builtins/abort @@ -320,7 +2089,7 @@ f32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 124 i32.const 1 call $~lib/builtins/abort @@ -332,7 +2101,7 @@ f32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 125 i32.const 1 call $~lib/builtins/abort @@ -347,7 +2116,7 @@ f32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 128 i32.const 1 call $~lib/builtins/abort @@ -359,7 +2128,7 @@ f32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 129 i32.const 1 call $~lib/builtins/abort @@ -369,4 +2138,228 @@ (func $~start call $start:std/pointer ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$132 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$132 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3476 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/std/set.debug.wat b/tests/compiler/std/set.debug.wat index b643b683f8..77a03c67fd 100644 --- a/tests/compiler/std/set.debug.wat +++ b/tests/compiler/std/set.debug.wat @@ -9,28 +9,34 @@ (type $7 (func (param i32 i64) (result i32))) (type $8 (func (param i32 f32) (result i32))) (type $9 (func (param i32 f64) (result i32))) - (type $10 (func (param i32 i32 i32 i32))) - (type $11 (func (param i64) (result i32))) - (type $12 (func (param i32) (result i64))) - (type $13 (func (param i32 i64))) + (type $10 (func (param i64) (result i32))) + (type $11 (func (param i32) (result i64))) + (type $12 (func (param i32 i64))) + (type $13 (func (param i32 i32 i32 i32))) (type $14 (func (param i32 i64 i32) (result i32))) (type $15 (func (param i32 i32 i64))) (type $16 (func (param i32 i32) (result i64))) - (type $17 (func (param i32 i32 i64) (result i32))) - (type $18 (func (result i32))) - (type $19 (func (param f32) (result i32))) - (type $20 (func (param i32) (result f32))) - (type $21 (func (param i32 f32))) - (type $22 (func (param f64) (result i32))) - (type $23 (func (param i32) (result f64))) - (type $24 (func (param i32 f64))) - (type $25 (func (param i32 f32 i32) (result i32))) - (type $26 (func (param i32 i32 f32))) - (type $27 (func (param i32 i32) (result f32))) - (type $28 (func (param i32 f64 i32) (result i32))) - (type $29 (func (param i32 i32 f64))) - (type $30 (func (param i32 i32) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $17 (func (param i32 i64 i32))) + (type $18 (func (param i64 i32) (result i32))) + (type $19 (func (param i32 i64 i32 i32))) + (type $20 (func (param i32 i32 i64) (result i32))) + (type $21 (func (result i32))) + (type $22 (func (param f32) (result i32))) + (type $23 (func (param i32) (result f32))) + (type $24 (func (param i32 f32))) + (type $25 (func (param f64) (result i32))) + (type $26 (func (param i32) (result f64))) + (type $27 (func (param i32 f64))) + (type $28 (func (param i32 f32 i32) (result i32))) + (type $29 (func (param i32 i32 f32))) + (type $30 (func (param i32 i32) (result f32))) + (type $31 (func (param i32 f64 i32) (result i32))) + (type $32 (func (param i32 i32 f64))) + (type $33 (func (param i32 i32) (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -39,35 +45,472 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/rt/__rtti_base i32 (i32.const 624)) - (global $~lib/memory/__data_end i32 (i32.const 724)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33492)) - (global $~lib/memory/__heap_base i32 (i32.const 33492)) + (global $~lib/rt/__rtti_base i32 (i32.const 2592)) + (global $~lib/memory/__data_end i32 (i32.const 2692)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35460)) + (global $~lib/memory/__heap_base i32 (i32.const 35460)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $9 (i32.const 460) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $10 (i32.const 524) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $12 (i32.const 624) "\18\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00H\08\00\00B\08\00\00H\00\00\00B\00\00\00\88\08\00\00\82\08\00\00\88\00\00\00\82\00\00\00\08\t\00\00\02\t\00\00\08\01\00\00\02\01\00\00\08\n\00\00\02\n\00\00\08\02\00\00\02\02\00\00\08\19\00\00\02\19\00\00\08\1a\00\00\02\1a\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $20 (i32.const 2428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $21 (i32.const 2492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2540) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $23 (i32.const 2592) "\18\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00H\08\00\00B\08\00\00H\00\00\00B\00\00\00\88\08\00\00\82\08\00\00\88\00\00\00\82\00\00\00\08\t\00\00\02\t\00\00\08\01\00\00\02\01\00\00\08\n\00\00\02\n\00\00\08\02\00\00\02\02\00\00\08\19\00\00\02\19\00\00\08\1a\00\00\02\1a\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -132,7 +575,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -202,7 +645,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -219,7 +662,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -249,8 +692,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -318,7 +761,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -470,7 +913,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -490,7 +933,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -553,7 +996,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -706,7 +1149,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -723,7 +1166,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -812,7 +1255,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -855,7 +1298,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -873,7 +1316,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -941,7 +1384,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1058,7 +1501,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1104,7 +1547,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1136,7 +1579,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1380,7 +1823,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1600,7 +2043,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1708,8 +2151,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1811,7 +2254,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1882,7 +2325,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2039,7 +2482,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2154,7 +2597,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2174,7 +2617,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2222,8 +2665,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2283,7 +2726,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -4308,13 +4751,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace call $std/set/testNumeric @@ -4329,395 +4772,456 @@ call $std/set/testNumeric call $~lib/rt/itcms/__collect ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 432 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/set/Set#__visit + (func $~start + call $start:std/set ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35488 + i32.const 35536 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/set/Set#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/set/Set#__visit + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + (func $~lib/set/Set#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store offset=4 local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store offset=8 local.get $1 - call $~lib/set/Set#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + call $~lib/set/Set#set:buckets local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store offset=4 local.get $1 - call $~lib/set/Set#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store offset=4 local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.0 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.0 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store offset=8 local.get $1 - call $~lib/set/Set#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + call $~lib/set/Set#set:entries local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store offset=4 local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/set/Set#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + i32.const 4 + call $~lib/set/Set#set:entriesCapacity local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store offset=4 local.get $1 - call $~lib/set/Set#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + i32.const 0 + call $~lib/set/Set#set:entriesOffset local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store offset=4 local.get $1 - call $~lib/set/Set#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + i32.const 0 + call $~lib/set/Set#set:entriesCount local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/set/Set#__visit ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + (func $~lib/set/Set#find (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:buckets + local.get $hashCode local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $~lib/set/SetEntry#get:key + i32.extend8_s + local.get $key + i32.extend8_s + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit + (func $~lib/set/Set#has (param $this i32) (param $key i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/array/Array - block $~lib/set/Set - block $~lib/array/Array - block $~lib/set/Set - block $~lib/array/Array - block $~lib/set/Set - block $~lib/array/Array - block $~lib/set/Set - block $~lib/array/Array - block $~lib/set/Set - block $~lib/array/Array - block $~lib/set/Set - block $~lib/array/Array - block $~lib/set/Set - block $~lib/array/Array - block $~lib/set/Set - block $~lib/array/Array - block $~lib/set/Set - block $~lib/array/Array - block $~lib/set/Set - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - unreachable - ) - (func $~start - call $start:std/set - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 33520 - i32.const 33568 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/set/Set#constructor (param $this i32) (result i32) - (local $1 i32) + (func $~lib/set/Set#rehash (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -4725,282 +5229,57 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $1 + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 i32.const 0 - i32.const 4 + local.get $newBucketsCapacity i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/set/Set#set:buckets - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 4 - i32.const 1 - i32.sub - call $~lib/set/Set#set:bucketsMask - local.get $this - local.set $1 + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 i32.const 0 - i32.const 4 - block $~lib/set/ENTRY_SIZE|inlined.0 (result i32) + local.get $newEntriesCapacity + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) i32.const 8 - br $~lib/set/ENTRY_SIZE|inlined.0 + br $~lib/set/ENTRY_SIZE|inlined.1 end i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/set/Set#set:entries - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 4 - call $~lib/set/Set#set:entriesCapacity - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/set/Set#set:entriesOffset - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 + local.tee $newEntries i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/set/Set#set:entriesCount - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/set/Set#find (param $this i32) (param $key i32) (param $hashCode i32) (result i32) - (local $entry i32) - (local $taggedNext i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $this - local.set $5 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/set/Set#get:buckets - local.get $hashCode + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entries + local.set $oldPtr + local.get $oldPtr local.get $this - local.set $5 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/set/Set#get:bucketsMask - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $entry - loop $while-continue|0 - local.get $entry - if - local.get $entry - call $~lib/set/SetEntry#get:taggedNext - local.set $taggedNext - local.get $taggedNext - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $entry - call $~lib/set/SetEntry#get:key - i32.extend8_s - local.get $key - i32.extend8_s - i32.eq - else - i32.const 0 - end - if - local.get $entry - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - return - end - local.get $taggedNext - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $entry - br $while-continue|0 - end - end - i32.const 0 - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - return - ) - (func $~lib/set/Set#has (param $this i32) (param $key i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $key - local.get $key - call $~lib/util/hash/HASH - call $~lib/set/Set#find - i32.const 0 - i32.ne - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - ) - (func $~lib/set/Set#rehash (param $this i32) (param $newBucketsMask i32) - (local $newBucketsCapacity i32) - (local $newBuckets i32) - (local $newEntriesCapacity i32) - (local $newEntries i32) - (local $oldPtr i32) - (local $oldEnd i32) - (local $newPtr i32) - (local $oldEntry i32) - (local $newEntry i32) - (local $oldEntryKey i32) - (local $newBucketIndex i32) - (local $newBucketPtrBase i32) - (local $14 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $newBucketsMask - i32.const 1 - i32.add - local.set $newBucketsCapacity - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $newBucketsCapacity - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $newBuckets - i32.store - local.get $newBucketsCapacity - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $newEntriesCapacity - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $newEntriesCapacity - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 8 - br $~lib/set/ENTRY_SIZE|inlined.1 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $newEntries - i32.store offset=4 - local.get $this - local.set $14 - global.get $~lib/memory/__stack_pointer - local.get $14 - i32.store offset=8 - local.get $14 - call $~lib/set/Set#get:entries - local.set $oldPtr - local.get $oldPtr - local.get $this - local.set $14 - global.get $~lib/memory/__stack_pointer - local.get $14 - i32.store offset=8 - local.get $14 - call $~lib/set/Set#get:entriesOffset - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 8 - br $~lib/set/ENTRY_SIZE|inlined.2 - end + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entriesOffset + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.2 + end i32.mul i32.add local.set $oldEnd @@ -5398,8 +5677,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 592 + i32.const 2400 + i32.const 2560 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -5511,8 +5790,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 592 + i32.const 2400 + i32.const 2560 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -5614,8 +5893,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -5836,8 +6115,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -6125,7 +6404,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -6151,7 +6430,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -6176,7 +6455,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -6200,7 +6479,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -6226,7 +6505,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -6251,7 +6530,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -6303,7 +6582,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -6350,7 +6629,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -6374,7 +6653,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -6401,7 +6680,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -6426,7 +6705,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -6451,7 +6730,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -6477,7 +6756,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -6504,7 +6783,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -6529,7 +6808,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -6554,7 +6833,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -7251,8 +7530,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 592 + i32.const 2400 + i32.const 2560 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -7348,8 +7627,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -7570,8 +7849,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -7859,7 +8138,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -7885,7 +8164,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -7910,7 +8189,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -7934,7 +8213,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -7960,7 +8239,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -7985,7 +8264,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -8037,7 +8316,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -8084,7 +8363,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -8108,7 +8387,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -8135,7 +8414,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -8160,7 +8439,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -8185,7 +8464,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -8211,7 +8490,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -8238,7 +8517,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -8263,7 +8542,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -8288,7 +8567,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -8983,8 +9262,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 592 + i32.const 2400 + i32.const 2560 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -9080,8 +9359,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -9302,8 +9581,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -9591,7 +9870,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -9617,7 +9896,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -9642,7 +9921,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -9666,7 +9945,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -9692,7 +9971,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -9717,7 +9996,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -9769,7 +10048,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -9816,7 +10095,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -9840,7 +10119,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -9867,7 +10146,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -9892,7 +10171,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -9917,7 +10196,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -9943,7 +10222,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -9970,7 +10249,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -9995,7 +10274,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -10020,7 +10299,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -10717,8 +10996,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 592 + i32.const 2400 + i32.const 2560 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -10814,8 +11093,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -11036,8 +11315,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -11325,7 +11604,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -11351,7 +11630,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -11376,7 +11655,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -11400,7 +11679,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -11426,7 +11705,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -11451,7 +11730,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -11503,7 +11782,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -11550,7 +11829,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -11574,7 +11853,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -11601,7 +11880,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -11626,7 +11905,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -11651,7 +11930,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -11677,7 +11956,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -11704,7 +11983,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -11729,7 +12008,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -11754,7 +12033,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -12447,8 +12726,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 592 + i32.const 2400 + i32.const 2560 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -12544,8 +12823,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -12766,8 +13045,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -13055,7 +13334,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -13081,7 +13360,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -13106,7 +13385,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -13130,7 +13409,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -13156,7 +13435,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -13181,7 +13460,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -13233,7 +13512,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -13280,7 +13559,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -13304,7 +13583,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -13331,7 +13610,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -13356,7 +13635,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -13381,7 +13660,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -13407,7 +13686,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -13434,7 +13713,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -13459,7 +13738,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -13484,7 +13763,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -14177,8 +14456,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 592 + i32.const 2400 + i32.const 2560 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -14274,8 +14553,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -14496,8 +14775,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -14785,7 +15064,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -14811,7 +15090,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -14836,7 +15115,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -14860,7 +15139,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -14886,7 +15165,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -14911,7 +15190,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -14963,7 +15242,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -15010,7 +15289,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -15034,7 +15313,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -15061,7 +15340,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -15086,7 +15365,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -15111,7 +15390,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -15137,7 +15416,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -15164,7 +15443,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -15189,7 +15468,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -15214,7 +15493,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -15907,8 +16186,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 592 + i32.const 2400 + i32.const 2560 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -16004,8 +16283,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -16227,8 +16506,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -16516,7 +16795,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -16542,7 +16821,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -16567,7 +16846,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -16591,7 +16870,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -16617,7 +16896,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -16642,7 +16921,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -16694,7 +16973,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -16741,7 +17020,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -16765,7 +17044,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -16792,7 +17071,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -16817,7 +17096,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -16842,7 +17121,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -16868,7 +17147,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -16895,7 +17174,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -16920,7 +17199,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -16945,7 +17224,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -17638,8 +17917,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 592 + i32.const 2400 + i32.const 2560 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -17735,8 +18014,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -17958,8 +18237,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -18247,7 +18526,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -18273,7 +18552,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -18298,7 +18577,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -18322,7 +18601,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -18348,7 +18627,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -18373,7 +18652,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -18425,7 +18704,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -18472,7 +18751,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -18496,7 +18775,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -18523,7 +18802,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -18548,7 +18827,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -18573,7 +18852,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -18599,7 +18878,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -18626,7 +18905,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -18651,7 +18930,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -18676,7 +18955,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -19369,8 +19648,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 592 + i32.const 2400 + i32.const 2560 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -19466,8 +19745,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -19689,8 +19968,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -19978,7 +20257,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -20004,7 +20283,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -20029,7 +20308,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -20053,7 +20332,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -20079,7 +20358,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -20104,7 +20383,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -20156,7 +20435,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -20203,7 +20482,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -20227,7 +20506,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -20254,7 +20533,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -20279,7 +20558,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -20304,7 +20583,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -20330,7 +20609,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -20357,7 +20636,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -20382,7 +20661,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -20407,7 +20686,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -21100,8 +21379,8 @@ i32.shr_u i32.gt_u if - i32.const 432 - i32.const 592 + i32.const 2400 + i32.const 2560 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -21197,8 +21476,8 @@ i32.const 0 i32.lt_s if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -21420,8 +21699,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 224 - i32.const 592 + i32.const 2192 + i32.const 2560 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -21709,7 +21988,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -21735,7 +22014,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -21760,7 +22039,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -21784,7 +22063,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -21810,7 +22089,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -21835,7 +22114,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -21887,7 +22166,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -21934,7 +22213,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -21958,7 +22237,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -21985,7 +22264,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -22010,7 +22289,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -22035,7 +22314,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -22061,7 +22340,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -22088,66 +22367,629 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 43 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $k|7 - f64.const 1 - f64.add - local.set $k|7 - br $for-loop|4 + local.get $k|7 + f64.const 1 + f64.add + local.set $k|7 + br $for-loop|4 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#clear + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) + (local $buffer i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.gt_u + if + i32.const 2400 + i32.const 2448 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2400 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return end - local.get $set - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $set - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - call $~lib/set/Set#clear - local.get $set - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer + unreachable ) (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) (local $entries i32) @@ -22789,45 +23631,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) - (local $buffer i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $length - i32.const 1073741820 - i32.gt_u - if - i32.const 432 - i32.const 480 - i32.const 52 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $length - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $buffer - i32.store - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $buffer - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) ) diff --git a/tests/compiler/std/set.release.wat b/tests/compiler/std/set.release.wat index 2a2f9d8ff2..656fb8052c 100644 --- a/tests/compiler/std/set.release.wat +++ b/tests/compiler/std/set.release.wat @@ -3,13 +3,13 @@ (type $1 (func (param i32 i32) (result i32))) (type $2 (func)) (type $3 (func (result i32))) - (type $4 (func (param i32))) - (type $5 (func (param i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32))) (type $6 (func (param i32 i32 i32) (result i32))) (type $7 (func (param i32 i64))) (type $8 (func (param i32 i32 i32))) - (type $9 (func (param i32 i32 i32 i32))) - (type $10 (func (param i32 i32 i64))) + (type $9 (func (param i32 i32 i64))) + (type $10 (func (param i32 i32 i32 i32))) (type $11 (func (param i32 i64 i32) (result i32))) (type $12 (func (param i32 i64) (result i32))) (type $13 (func (param i32 i32) (result i64))) @@ -21,7 +21,6 @@ (type $19 (func (param i32 f64 i32) (result i32))) (type $20 (func (param i32 f64) (result i32))) (type $21 (func (param i32 i32) (result f64))) - (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -32,37 +31,260 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34516)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36484)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1436) ",") - (data $8.1 (i32.const 1448) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $9 (i32.const 1484) "<") - (data $9.1 (i32.const 1496) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data $10 (i32.const 1548) ",") - (data $10.1 (i32.const 1560) "\02\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s") - (data $11 (i32.const 1596) ",") - (data $11.1 (i32.const 1608) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $12 (i32.const 1648) "\18\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00H\08\00\00B\08\00\00H\00\00\00B\00\00\00\88\08\00\00\82\08\00\00\88\00\00\00\82\00\00\00\08\t\00\00\02\t\00\00\08\01\00\00\02\01\00\00\08\n\00\00\02\n\00\00\08\02\00\00\02\02\00\00\08\19\00\00\02\19\00\00\08\1a\00\00\02\1a") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $20 (i32.const 3452) "<") + (data $20.1 (i32.const 3464) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $21 (i32.const 3516) ",") + (data $21.1 (i32.const 3528) "\02\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s") + (data $22 (i32.const 3564) ",") + (data $22.1 (i32.const 3576) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $23 (i32.const 3616) "\18\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00H\08\00\00B\08\00\00H\00\00\00B\00\00\00\88\08\00\00\82\08\00\00\88\00\00\00\82\00\00\00\08\t\00\00\02\t\00\00\08\01\00\00\02\01\00\00\08\n\00\00\02\n\00\00\08\02\00\00\02\02\00\00\08\19\00\00\02\19\00\00\08\1a\00\00\02\1a") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3716 + i32.lt_s + if + i32.const 36512 + i32.const 36560 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1456 + i32.const 3424 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -83,7 +305,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -116,7 +338,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -125,7 +347,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$904 + block $__inlined_func$~lib/rt/itcms/Object#unlink$917 local.get $0 i32.load offset=4 i32.const -4 @@ -137,19 +359,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34516 + i32.const 36484 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$904 + br $__inlined_func$~lib/rt/itcms/Object#unlink$917 end local.get $0 i32.load offset=8 @@ -157,7 +379,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -186,12 +408,12 @@ i32.const 1 else local.get $1 - i32.const 1648 + i32.const 3616 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -200,7 +422,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1652 + i32.const 3620 i32.add i32.load i32.const 32 @@ -271,7 +493,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -285,7 +507,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -331,7 +553,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -414,7 +636,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -428,7 +650,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -489,7 +711,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -522,7 +744,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -537,7 +759,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -588,7 +810,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -660,7 +882,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -685,7 +907,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -712,7 +934,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -784,10 +1006,10 @@ if unreachable end - i32.const 34528 + i32.const 36496 i32.const 0 i32.store - i32.const 36096 + i32.const 38064 i32.const 0 i32.store loop $for-loop|0 @@ -798,7 +1020,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34528 + i32.const 36496 i32.add i32.const 0 i32.store offset=4 @@ -816,7 +1038,7 @@ i32.add i32.const 2 i32.shl - i32.const 34528 + i32.const 36496 i32.add i32.const 0 i32.store offset=96 @@ -834,14 +1056,14 @@ br $for-loop|0 end end - i32.const 34528 - i32.const 36100 + i32.const 36496 + i32.const 38068 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34528 + i32.const 36496 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -926,7 +1148,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34516 + i32.const 36484 i32.lt_u if local.get $0 @@ -1015,14 +1237,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34516 + i32.const 36484 i32.lt_u if local.get $0 @@ -1045,7 +1267,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34516 + i32.const 36484 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1074,7 +1296,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1158,7 +1380,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1210,7 +1432,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1242,8 +1464,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1056 - i32.const 1120 + i32.const 3024 + i32.const 3088 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1253,7 +1475,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1274,7 +1496,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1307,8 +1529,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1056 - i32.const 1392 + i32.const 3024 + i32.const 3360 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1410,7 +1632,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1425,7 +1647,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1444,7 +1666,7 @@ i32.and if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1559,7 +1781,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1603,125 +1825,38 @@ end end ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) (func $~start memory.size i32.const 16 i32.shl - i32.const 34516 + i32.const 36484 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace call $std/set/testNumeric call $std/set/testNumeric @@ -1767,6 +1902,206 @@ i32.add global.set $~lib/rt/itcms/threshold ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3716 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3716 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$923 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$923 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36512 + i32.const 36560 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3716 + i32.lt_s + if + i32.const 36512 + i32.const 36560 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/set/Set#constructor (result i32) (local $0 i32) (local $1 i32) @@ -1775,11 +2110,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1864,11 +2199,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1939,11 +2274,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2007,11 +2342,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2192,11 +2527,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2368,11 +2703,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2399,11 +2734,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2429,8 +2764,8 @@ i32.shr_u i32.gt_u if - i32.const 1456 - i32.const 1616 + i32.const 3424 + i32.const 3584 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -2470,7 +2805,7 @@ select local.set $1 end - block $__inlined_func$~lib/rt/itcms/__renew$893 + block $__inlined_func$~lib/rt/itcms/__renew$900 local.get $4 i32.const 20 i32.sub @@ -2488,7 +2823,7 @@ i32.store offset=16 local.get $4 local.set $2 - br $__inlined_func$~lib/rt/itcms/__renew$893 + br $__inlined_func$~lib/rt/itcms/__renew$900 end local.get $1 local.get $3 @@ -2536,11 +2871,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2561,8 +2896,8 @@ i32.const 0 i32.lt_s if - i32.const 1248 - i32.const 1616 + i32.const 3216 + i32.const 3584 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -2603,11 +2938,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2638,11 +2973,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2667,11 +3002,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2688,8 +3023,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1616 + i32.const 3216 + i32.const 3584 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2715,11 +3050,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2852,11 +3187,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2939,7 +3274,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2963,7 +3298,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -2984,7 +3319,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -3006,7 +3341,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -3028,7 +3363,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -3049,7 +3384,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -3071,7 +3406,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -3086,7 +3421,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3110,7 +3445,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3156,8 +3491,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1456 - i32.const 1616 + i32.const 3424 + i32.const 3584 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -3290,7 +3625,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -3329,7 +3664,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -3351,7 +3686,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -3371,7 +3706,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -3393,7 +3728,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -3414,7 +3749,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -3435,7 +3770,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -3455,7 +3790,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -3477,7 +3812,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -3495,7 +3830,7 @@ call $~lib/set/Set#get:size if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -3507,8 +3842,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3522,11 +3857,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3610,11 +3945,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3679,11 +4014,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3864,11 +4199,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4041,11 +4376,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4062,8 +4397,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1616 + i32.const 3216 + i32.const 3584 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -4089,11 +4424,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4235,7 +4570,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4259,7 +4594,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -4280,7 +4615,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -4302,7 +4637,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -4324,7 +4659,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -4345,7 +4680,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -4367,7 +4702,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -4382,7 +4717,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4406,7 +4741,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4452,8 +4787,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1456 - i32.const 1616 + i32.const 3424 + i32.const 3584 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -4586,7 +4921,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -4625,7 +4960,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -4647,7 +4982,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -4667,7 +5002,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -4689,7 +5024,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -4710,7 +5045,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -4731,7 +5066,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -4751,7 +5086,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -4773,7 +5108,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -4791,7 +5126,7 @@ call $~lib/set/Set#get:size if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -4803,8 +5138,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4818,11 +5153,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4907,11 +5242,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4982,11 +5317,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5050,11 +5385,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5235,11 +5570,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5412,11 +5747,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5437,8 +5772,8 @@ i32.const 0 i32.lt_s if - i32.const 1248 - i32.const 1616 + i32.const 3216 + i32.const 3584 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -5481,11 +5816,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5516,11 +5851,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5537,8 +5872,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1616 + i32.const 3216 + i32.const 3584 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -5566,11 +5901,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5711,7 +6046,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -5735,7 +6070,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -5756,7 +6091,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -5778,7 +6113,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -5800,7 +6135,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -5821,7 +6156,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -5843,7 +6178,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -5858,7 +6193,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -5882,7 +6217,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -5928,8 +6263,8 @@ i32.const 536870910 i32.gt_u if - i32.const 1456 - i32.const 1616 + i32.const 3424 + i32.const 3584 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -6064,7 +6399,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -6103,7 +6438,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -6125,7 +6460,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -6145,7 +6480,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -6167,7 +6502,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -6188,7 +6523,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -6209,7 +6544,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -6229,7 +6564,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -6251,7 +6586,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -6269,7 +6604,7 @@ call $~lib/set/Set#get:size if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -6281,8 +6616,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6296,11 +6631,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6384,11 +6719,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6453,11 +6788,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6638,11 +6973,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6815,11 +7150,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6836,8 +7171,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1616 + i32.const 3216 + i32.const 3584 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -6865,11 +7200,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7011,7 +7346,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -7035,7 +7370,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -7056,7 +7391,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -7078,7 +7413,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -7100,7 +7435,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -7121,7 +7456,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -7143,7 +7478,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -7158,7 +7493,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -7182,7 +7517,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -7228,8 +7563,8 @@ i32.const 536870910 i32.gt_u if - i32.const 1456 - i32.const 1616 + i32.const 3424 + i32.const 3584 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -7364,7 +7699,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -7403,7 +7738,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -7425,7 +7760,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -7445,7 +7780,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -7467,7 +7802,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -7488,7 +7823,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -7509,7 +7844,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -7529,7 +7864,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -7551,7 +7886,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -7569,7 +7904,7 @@ call $~lib/set/Set#get:size if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -7581,8 +7916,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7596,11 +7931,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7685,11 +8020,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7758,11 +8093,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7825,11 +8160,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8010,11 +8345,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8186,11 +8521,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8211,8 +8546,8 @@ i32.const 0 i32.lt_s if - i32.const 1248 - i32.const 1616 + i32.const 3216 + i32.const 3584 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -8255,11 +8590,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8290,11 +8625,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8311,8 +8646,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1616 + i32.const 3216 + i32.const 3584 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -8340,11 +8675,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8484,7 +8819,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -8508,7 +8843,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -8529,7 +8864,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -8551,7 +8886,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -8573,7 +8908,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -8594,7 +8929,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -8616,7 +8951,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -8631,7 +8966,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -8655,7 +8990,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -8701,8 +9036,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1456 - i32.const 1616 + i32.const 3424 + i32.const 3584 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -8837,7 +9172,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -8876,7 +9211,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -8898,7 +9233,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -8918,7 +9253,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -8940,7 +9275,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -8961,7 +9296,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -8982,7 +9317,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -9002,7 +9337,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -9024,7 +9359,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -9042,7 +9377,7 @@ call $~lib/set/Set#get:size if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -9054,8 +9389,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9069,11 +9404,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9158,11 +9493,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9231,11 +9566,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9298,11 +9633,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9483,11 +9818,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9658,11 +9993,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9679,8 +10014,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1616 + i32.const 3216 + i32.const 3584 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -9708,11 +10043,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9852,7 +10187,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -9876,7 +10211,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -9897,7 +10232,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -9919,7 +10254,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -9941,7 +10276,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -9962,7 +10297,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -9984,7 +10319,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -9999,7 +10334,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -10023,7 +10358,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -10069,8 +10404,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1456 - i32.const 1616 + i32.const 3424 + i32.const 3584 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -10205,7 +10540,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -10244,7 +10579,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -10266,7 +10601,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -10286,7 +10621,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -10308,7 +10643,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -10329,7 +10664,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -10350,7 +10685,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -10370,7 +10705,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -10392,7 +10727,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -10410,7 +10745,7 @@ call $~lib/set/Set#get:size if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -10422,8 +10757,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10437,11 +10772,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10526,11 +10861,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10599,11 +10934,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10679,11 +11014,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10876,11 +11211,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11064,11 +11399,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11089,8 +11424,8 @@ i32.const 0 i32.lt_s if - i32.const 1248 - i32.const 1616 + i32.const 3216 + i32.const 3584 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -11133,11 +11468,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11169,11 +11504,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11190,8 +11525,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1616 + i32.const 3216 + i32.const 3584 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -11220,11 +11555,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11368,11 +11703,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11457,7 +11792,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -11481,7 +11816,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -11502,7 +11837,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -11524,7 +11859,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -11546,7 +11881,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -11567,7 +11902,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -11589,7 +11924,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -11604,7 +11939,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -11628,7 +11963,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -11674,8 +12009,8 @@ i32.const 134217727 i32.gt_u if - i32.const 1456 - i32.const 1616 + i32.const 3424 + i32.const 3584 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -11808,7 +12143,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -11847,7 +12182,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -11869,7 +12204,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -11889,7 +12224,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -11911,7 +12246,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -11932,7 +12267,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -11953,7 +12288,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -11973,7 +12308,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -11995,7 +12330,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -12013,7 +12348,7 @@ call $~lib/set/Set#get:size if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -12025,8 +12360,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12040,11 +12375,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12129,11 +12464,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12202,11 +12537,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12282,11 +12617,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12479,11 +12814,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12667,11 +13002,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12688,8 +13023,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1616 + i32.const 3216 + i32.const 3584 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -12718,11 +13053,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12876,7 +13211,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -12900,7 +13235,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -12921,7 +13256,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -12943,7 +13278,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -12965,7 +13300,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -12986,7 +13321,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -13008,7 +13343,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -13023,7 +13358,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -13047,7 +13382,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -13093,8 +13428,8 @@ i32.const 134217727 i32.gt_u if - i32.const 1456 - i32.const 1616 + i32.const 3424 + i32.const 3584 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -13227,7 +13562,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -13266,7 +13601,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -13288,7 +13623,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -13308,7 +13643,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -13330,7 +13665,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -13351,7 +13686,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -13372,7 +13707,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -13392,7 +13727,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -13414,7 +13749,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -13432,7 +13767,7 @@ call $~lib/set/Set#get:size if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -13444,8 +13779,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13459,11 +13794,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13548,11 +13883,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13621,11 +13956,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13690,11 +14025,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13876,11 +14211,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14060,7 +14395,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -14084,7 +14419,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -14130,8 +14465,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1456 - i32.const 1616 + i32.const 3424 + i32.const 3584 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -14219,7 +14554,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -14237,8 +14572,8 @@ i32.const 0 i32.lt_s if - i32.const 1248 - i32.const 1616 + i32.const 3216 + i32.const 3584 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -14295,8 +14630,8 @@ local.get $6 return end - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14309,11 +14644,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14330,8 +14665,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1616 + i32.const 3216 + i32.const 3584 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -14360,11 +14695,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14501,11 +14836,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14532,7 +14867,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -14553,7 +14888,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -14575,7 +14910,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -14597,7 +14932,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -14618,7 +14953,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -14640,7 +14975,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -14681,7 +15016,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -14720,7 +15055,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -14742,7 +15077,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -14762,7 +15097,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -14784,7 +15119,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -14805,7 +15140,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -14826,7 +15161,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -14846,7 +15181,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -14868,7 +15203,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -14886,7 +15221,7 @@ call $~lib/set/Set#get:size if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -14905,11 +15240,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14994,11 +15329,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15068,11 +15403,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15151,11 +15486,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15351,11 +15686,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15548,7 +15883,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -15572,7 +15907,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -15618,8 +15953,8 @@ i32.const 134217727 i32.gt_u if - i32.const 1456 - i32.const 1616 + i32.const 3424 + i32.const 3584 i32.const 70 i32.const 60 call $~lib/builtins/abort @@ -15707,7 +16042,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -15725,8 +16060,8 @@ i32.const 0 i32.lt_s if - i32.const 1248 - i32.const 1616 + i32.const 3216 + i32.const 3584 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -15783,8 +16118,8 @@ local.get $6 return end - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15797,11 +16132,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15818,8 +16153,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1248 - i32.const 1616 + i32.const 3216 + i32.const 3584 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -15849,11 +16184,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16003,11 +16338,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16034,7 +16369,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 6 i32.const 5 call $~lib/builtins/abort @@ -16055,7 +16390,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -16077,7 +16412,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -16099,7 +16434,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 14 i32.const 5 call $~lib/builtins/abort @@ -16120,7 +16455,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -16142,7 +16477,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -16183,7 +16518,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 24 i32.const 5 call $~lib/builtins/abort @@ -16222,7 +16557,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -16244,7 +16579,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 31 i32.const 5 call $~lib/builtins/abort @@ -16264,7 +16599,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -16286,7 +16621,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -16307,7 +16642,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 39 i32.const 5 call $~lib/builtins/abort @@ -16328,7 +16663,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 41 i32.const 5 call $~lib/builtins/abort @@ -16348,7 +16683,7 @@ call $~lib/set/Set#has if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -16370,7 +16705,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -16388,7 +16723,7 @@ call $~lib/set/Set#get:size if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -16405,11 +16740,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3716 i32.lt_s if - i32.const 34544 - i32.const 34592 + i32.const 36512 + i32.const 36560 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16422,8 +16757,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1456 - i32.const 1504 + i32.const 3424 + i32.const 3472 i32.const 52 i32.const 43 call $~lib/builtins/abort @@ -16441,4 +16776,91 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3716 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3716 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36512 + i32.const 36560 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) ) diff --git a/tests/compiler/std/static-array.debug.wat b/tests/compiler/std/static-array.debug.wat index 9cb6bc3014..2a7141c305 100644 --- a/tests/compiler/std/static-array.debug.wat +++ b/tests/compiler/std/static-array.debug.wat @@ -1,20 +1,22 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) - (type $5 (func (param i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func)) (type $6 (func (param i32 i32 i32 i32))) (type $7 (func (param i32 i32 i64) (result i32))) (type $8 (func (result i32))) - (type $9 (func (param i32 i32) (result i64))) - (type $10 (func (param i32 i32 i64))) - (type $11 (func (param i32 i32) (result f32))) - (type $12 (func (param i32 i32 f32))) - (type $13 (func (param i32 i32) (result f64))) - (type $14 (func (param i32 i32 f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param i32 i32) (result i64))) + (type $13 (func (param i32 i32 i64))) + (type $14 (func (param i32 i32) (result f32))) + (type $15 (func (param i32 i32 f32))) + (type $16 (func (param i32 i32) (result f64))) + (type $17 (func (param i32 i32 f64))) (global $std/static-array/i i32 (i32.const 64)) (global $std/static-array/I i32 (i32.const 160)) (global $std/static-array/f i32 (i32.const 240)) @@ -33,11 +35,12 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) - (global $~lib/rt/__rtti_base i32 (i32.const 928)) - (global $~lib/memory/__data_end i32 (i32.const 964)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33732)) - (global $~lib/memory/__heap_base i32 (i32.const 33732)) + (global $~lib/rt/__rtti_base i32 (i32.const 2896)) + (global $~lib/memory/__data_end i32 (i32.const 2932)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35700)) + (global $~lib/memory/__heap_base i32 (i32.const 35700)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00 \00\00\00 \00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") @@ -47,18 +50,29 @@ (data $5 (i32.const 220) ",\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\10\00\00\00\d0\00\00\00\d0\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data $6 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00\00\00\f4?\00\00\00\00\00\00\02@\00\00\00\00\00\00\00\00\00\00\00\00") (data $7 (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\10\00\00\00 \01\00\00 \01\00\00\10\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00") - (data $9 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $11 (i32.const 540) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $12 (i32.const 588) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $13 (i32.const 652) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 720) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 752) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 780) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $17 (i32.const 832) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $18 (i32.const 860) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $19 (i32.const 928) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\n\00\00\02\19\00\00\02\1a\00\00") + (data $8 (i32.const 364) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $9 (i32.const 396) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $10 (i32.const 428) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 460) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 524) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 592) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 624) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 652) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 716) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 768) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 796) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 892) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 1020) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $22 (i32.const 1084) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 1116) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $24 (i32.const 1516) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2572) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $26 (i32.const 2668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2732) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00") + (data $28 (i32.const 2796) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $29 (i32.const 2844) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $30 (i32.const 2896) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\n\00\00\02\19\00\00\02\1a\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -67,30 +81,18 @@ local.get $this i32.load offset=12 ) - (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) - local.get $this - i32.load offset=8 - ) - (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) local.get $this - local.get $rtSize - i32.store offset=16 + i32.load offset=16 ) - (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + (func $~lib/string/String#get:length (param $this i32) (result i32) local.get $this - i32.load offset=12 + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this @@ -156,7 +158,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 544 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -226,7 +228,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 544 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -243,7 +245,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 544 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -256,6 +258,10 @@ local.get $next call $~lib/rt/itcms/Object#set:next ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) local.get $this i32.load @@ -269,8 +275,8 @@ i32.load i32.gt_u if - i32.const 448 - i32.const 800 + i32.const 672 + i32.const 736 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -338,7 +344,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 672 + i32.const 544 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -409,6 +415,10 @@ end end ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) i32.const 4 local.get $this @@ -486,7 +496,7 @@ i32.eqz if i32.const 0 - i32.const 880 + i32.const 816 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -506,7 +516,7 @@ i32.eqz if i32.const 0 - i32.const 880 + i32.const 816 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -569,7 +579,7 @@ i32.eqz if i32.const 0 - i32.const 880 + i32.const 816 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -722,7 +732,7 @@ i32.eqz if i32.const 0 - i32.const 880 + i32.const 816 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -739,7 +749,7 @@ i32.eqz if i32.const 0 - i32.const 880 + i32.const 816 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -828,7 +838,7 @@ i32.eqz if i32.const 0 - i32.const 880 + i32.const 816 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -871,7 +881,7 @@ i32.eqz if i32.const 0 - i32.const 880 + i32.const 816 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -889,7 +899,7 @@ i32.eqz if i32.const 0 - i32.const 880 + i32.const 816 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -957,7 +967,7 @@ i32.eqz if i32.const 0 - i32.const 880 + i32.const 816 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1074,7 +1084,7 @@ i32.eqz if i32.const 0 - i32.const 880 + i32.const 816 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1120,7 +1130,7 @@ i32.eqz if i32.const 0 - i32.const 880 + i32.const 816 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1152,7 +1162,7 @@ i32.eqz if i32.const 0 - i32.const 880 + i32.const 816 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1396,7 +1406,7 @@ i32.eqz if i32.const 0 - i32.const 880 + i32.const 816 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1616,7 +1626,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 544 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1724,8 +1734,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 608 - i32.const 880 + i32.const 480 + i32.const 816 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1827,7 +1837,7 @@ i32.eqz if i32.const 0 - i32.const 880 + i32.const 816 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1898,7 +1908,7 @@ i32.eqz if i32.const 0 - i32.const 880 + i32.const 816 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2055,7 +2065,7 @@ i32.eqz if i32.const 0 - i32.const 880 + i32.const 816 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2170,7 +2180,7 @@ i32.eqz if i32.const 0 - i32.const 880 + i32.const 816 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2190,7 +2200,7 @@ i32.eqz if i32.const 0 - i32.const 880 + i32.const 816 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2226,6 +2236,11 @@ local.get $rtId i32.store offset=12 ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) (local $obj i32) (local $ptr i32) @@ -2233,8 +2248,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 608 - i32.const 672 + i32.const 480 + i32.const 544 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2279,6 +2294,434 @@ local.get $ptr return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 1116 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 1116 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 1116 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 1116 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1536 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1536 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2592 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2592 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) local.get $this i32.load offset=16 @@ -2344,7 +2787,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 544 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2441,155 +2884,6 @@ local.get $length_ i32.store offset=12 ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $std/static-array/i - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/static-array/I - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/static-array/f - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/static-array/F - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 448 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 560 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 608 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - unreachable - ) (func $~start call $start:std/static-array ) @@ -2598,8 +2892,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33760 - i32.const 33808 + i32.const 35728 + i32.const 35776 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2631,6 +2925,211 @@ local.get $1 return ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 448 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 384 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 416 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 880 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 880 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2688 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) (local $value i32) (local $3 i32) @@ -2652,8 +3151,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 448 - i32.const 512 + i32.const 672 + i32.const 2816 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2723,8 +3222,8 @@ i32.shr_u i32.gt_u if - i32.const 560 - i32.const 512 + i32.const 2864 + i32.const 2816 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -2826,8 +3325,8 @@ i32.const 0 i32.lt_s if - i32.const 448 - i32.const 512 + i32.const 672 + i32.const 2816 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -2918,8 +3417,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 448 - i32.const 512 + i32.const 672 + i32.const 2816 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2973,8 +3472,8 @@ i32.const 0 i32.lt_s if - i32.const 448 - i32.const 512 + i32.const 672 + i32.const 2816 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -3065,8 +3564,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 448 - i32.const 512 + i32.const 672 + i32.const 2816 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -3120,8 +3619,8 @@ i32.const 0 i32.lt_s if - i32.const 448 - i32.const 512 + i32.const 672 + i32.const 2816 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -3212,8 +3711,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 448 - i32.const 512 + i32.const 672 + i32.const 2816 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -3267,8 +3766,8 @@ i32.const 0 i32.lt_s if - i32.const 448 - i32.const 512 + i32.const 672 + i32.const 2816 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -3326,6 +3825,23 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 592 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 624 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 768 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $std/static-array/i local.set $4 global.get $~lib/memory/__stack_pointer @@ -3338,7 +3854,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 2752 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -3357,7 +3873,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 2752 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -3376,29 +3892,12 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 2752 i32.const 8 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 720 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 752 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 832 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace global.get $std/static-array/i local.set $4 global.get $~lib/memory/__stack_pointer @@ -3421,7 +3920,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 2752 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -3439,7 +3938,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 2752 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -3458,7 +3957,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 2752 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -3477,7 +3976,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 2752 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -3505,7 +4004,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 2752 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -3523,7 +4022,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 2752 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -3542,7 +4041,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 2752 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -3561,7 +4060,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 2752 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -3589,7 +4088,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 2752 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -3607,7 +4106,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 2752 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -3626,7 +4125,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 2752 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -3645,7 +4144,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 2752 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -3673,7 +4172,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 2752 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -3684,6 +4183,308 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 912 + i32.const 1040 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 1104 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/static-array/i + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/static-array/I + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/static-array/f + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/static-array/F + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 672 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2864 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 480 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1536 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2592 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) (local $2 i32) global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/static-array.release.wat b/tests/compiler/std/static-array.release.wat index 9b5ed278de..c8ea2819e3 100644 --- a/tests/compiler/std/static-array.release.wat +++ b/tests/compiler/std/static-array.release.wat @@ -2,15 +2,14 @@ (type $0 (func)) (type $1 (func (param i32))) (type $2 (func (param i32 i32))) - (type $3 (func (param i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) + (type $7 (func (param i32 i32 i32 i32))) (type $8 (func (param i32) (result i64))) (type $9 (func (param i32) (result f32))) (type $10 (func (param i32) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -21,7 +20,7 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34756)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36724)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\01\00\00\00\08\00\00\00\01\00\00\00\02") @@ -40,23 +39,44 @@ (data $6.2 (i32.const 1318) "\f4?\00\00\00\00\00\00\02@") (data $7 (i32.const 1340) ",") (data $7.1 (i32.const 1352) "\07\00\00\00\10\00\00\00 \05\00\00 \05\00\00\10\00\00\00\02") - (data $8 (i32.const 1388) "<") - (data $8.1 (i32.const 1400) "\02\00\00\00&\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s") - (data $9 (i32.const 1452) "<") - (data $9.1 (i32.const 1464) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $10 (i32.const 1516) ",") - (data $10.1 (i32.const 1528) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $11 (i32.const 1564) ",") - (data $11.1 (i32.const 1576) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $12 (i32.const 1612) "<") - (data $12.1 (i32.const 1624) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $13 (i32.const 1676) "<") - (data $13.1 (i32.const 1688) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $16 (i32.const 1804) ",") - (data $16.1 (i32.const 1816) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $18 (i32.const 1884) "<") - (data $18.1 (i32.const 1896) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $19 (i32.const 1952) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\n\00\00\02\19\00\00\02\1a") + (data $8 (i32.const 1388) "\1c") + (data $8.1 (i32.const 1400) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $9 (i32.const 1420) "\1c") + (data $9.1 (i32.const 1432) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $10 (i32.const 1452) "\1c") + (data $10.1 (i32.const 1464) "\02") + (data $11 (i32.const 1484) "<") + (data $11.1 (i32.const 1496) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 1548) "<") + (data $12.1 (i32.const 1560) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 1676) "<") + (data $15.1 (i32.const 1688) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 1740) ",") + (data $16.1 (i32.const 1752) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 1820) "<") + (data $18.1 (i32.const 1832) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 1884) "\1c") + (data $19.1 (i32.const 1896) "\02\00\00\00\02\00\00\00:") + (data $20 (i32.const 1916) "|") + (data $20.1 (i32.const 1928) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $21 (i32.const 2044) "<") + (data $21.1 (i32.const 2056) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $22 (i32.const 2108) "\1c") + (data $22.1 (i32.const 2120) "\02\00\00\00\02\00\00\000") + (data $23 (i32.const 2140) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $24 (i32.const 2540) "\1c\04") + (data $24.1 (i32.const 2552) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $25 (i32.const 3596) "\\") + (data $25.1 (i32.const 3608) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $26 (i32.const 3692) "<") + (data $26.1 (i32.const 3704) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $27 (i32.const 3756) "<") + (data $27.1 (i32.const 3768) "\02\00\00\00&\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s") + (data $28 (i32.const 3820) ",") + (data $28.1 (i32.const 3832) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $29 (i32.const 3868) ",") + (data $29.1 (i32.const 3880) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $30 (i32.const 3920) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\n\00\00\02\19\00\00\02\1a") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots @@ -70,11 +90,15 @@ call $~lib/rt/itcms/__visit i32.const 1360 call $~lib/rt/itcms/__visit - i32.const 1472 + i32.const 1696 call $~lib/rt/itcms/__visit - i32.const 1584 + i32.const 3888 call $~lib/rt/itcms/__visit - i32.const 1632 + i32.const 1504 + call $~lib/rt/itcms/__visit + i32.const 2560 + call $~lib/rt/itcms/__visit + i32.const 3616 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -95,7 +119,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 1568 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -128,7 +152,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1568 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -137,7 +161,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$155 + block $__inlined_func$~lib/rt/itcms/Object#unlink$168 local.get $0 i32.load offset=4 i32.const -4 @@ -149,19 +173,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 34756 + i32.const 36724 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1568 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$155 + br $__inlined_func$~lib/rt/itcms/Object#unlink$168 end local.get $0 i32.load offset=8 @@ -169,7 +193,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1568 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -198,12 +222,12 @@ i32.const 1 else local.get $1 - i32.const 1952 + i32.const 3920 i32.load i32.gt_u if - i32.const 1472 - i32.const 1824 + i32.const 1696 + i32.const 1760 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -212,7 +236,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1956 + i32.const 3924 i32.add i32.load i32.const 32 @@ -283,7 +307,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 1840 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -297,7 +321,7 @@ i32.lt_u if i32.const 0 - i32.const 1904 + i32.const 1840 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -343,7 +367,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 1840 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -426,7 +450,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 1840 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -440,7 +464,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 1840 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -501,7 +525,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 1840 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -534,7 +558,7 @@ i32.lt_u if i32.const 0 - i32.const 1904 + i32.const 1840 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -549,7 +573,7 @@ i32.ne if i32.const 0 - i32.const 1904 + i32.const 1840 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -600,7 +624,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 1840 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -672,7 +696,7 @@ i64.lt_u if i32.const 0 - i32.const 1904 + i32.const 1840 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -697,7 +721,7 @@ i32.gt_u if i32.const 0 - i32.const 1904 + i32.const 1840 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -724,7 +748,7 @@ i32.gt_u if i32.const 0 - i32.const 1904 + i32.const 1840 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -796,10 +820,10 @@ if unreachable end - i32.const 34768 + i32.const 36736 i32.const 0 i32.store - i32.const 36336 + i32.const 38304 i32.const 0 i32.store loop $for-loop|0 @@ -810,7 +834,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34768 + i32.const 36736 i32.add i32.const 0 i32.store offset=4 @@ -828,7 +852,7 @@ i32.add i32.const 2 i32.shl - i32.const 34768 + i32.const 36736 i32.add i32.const 0 i32.store offset=96 @@ -846,14 +870,14 @@ br $for-loop|0 end end - i32.const 34768 - i32.const 36340 + i32.const 36736 + i32.const 38308 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34768 + i32.const 36736 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -938,7 +962,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34756 + i32.const 36724 i32.lt_u if local.get $0 @@ -1027,14 +1051,14 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 1568 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34756 + i32.const 36724 i32.lt_u if local.get $0 @@ -1057,7 +1081,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34756 + i32.const 36724 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1086,7 +1110,7 @@ end if i32.const 0 - i32.const 1904 + i32.const 1840 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1170,7 +1194,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 1840 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1222,7 +1246,7 @@ i32.eqz if i32.const 0 - i32.const 1904 + i32.const 1840 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1244,161 +1268,816 @@ end end ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1504 + i32.const 1568 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 end - return + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end - 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 1988 - i32.lt_s + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 34784 - i32.const 34832 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + global.get $~lib/rt/tlsf/ROOT + local.set $4 local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~start - call $start:std/static-array - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1988 - i32.lt_s + local.tee $2 + i32.const 1073741820 + i32.gt_u if - i32.const 34784 - i32.const 34832 - i32.const 1 - i32.const 1 + i32.const 1504 + i32.const 1840 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1988 - i32.lt_s + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if - i32.const 34784 - i32.const 34832 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1840 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store - local.get $0 - i32.const 1100 + local.get $5 + local.get $2 i32.load - i32.ge_u + i32.const -4 + i32.and + i32.gt_u if - i32.const 1472 - i32.const 1536 - i32.const 114 - i32.const 42 + i32.const 0 + i32.const 1840 + i32.const 501 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store - i32.const 1092 - i32.load - local.get $0 - i32.const 2 - i32.shl - i32.add + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - global.get $~lib/memory/__stack_pointer + local.set $6 + local.get $5 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1988 - i32.lt_s + i32.const 15 + i32.and if - i32.const 34784 - i32.const 34832 + i32.const 0 + i32.const 1840 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3956 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa32$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2128 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 2140 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2140 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2140 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 2140 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~start + call $start:std/static-array + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3956 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3956 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3956 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$173 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1472 + local.set $0 + br $__inlined_func$~lib/string/String#concat$173 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3956 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1408 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1440 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1904 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1904 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3712 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#__get (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3956 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + local.get $0 + i32.const 1100 + i32.load + i32.ge_u + if + i32.const 1696 + i32.const 3840 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 1092 + i32.load + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3956 + i32.lt_s + if + i32.const 36752 + i32.const 36800 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1422,369 +2101,61 @@ i32.shr_u i32.eqz if - i32.const 1584 - i32.const 1536 + i32.const 3888 + i32.const 3840 i32.const 19 i32.const 48 call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $__inlined_func$~lib/rt/itcms/__renew$145 - i32.const 1073741820 - local.get $2 - i32.const 1 - i32.shl - local.tee $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.const 8 - local.get $1 - i32.shl - local.tee $1 - local.get $1 - local.get $2 - i32.lt_u - select - local.tee $3 - local.get $0 - i32.load - local.tee $2 - i32.const 20 - i32.sub - local.tee $4 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $4 - local.get $3 - i32.store offset=16 - local.get $2 - local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew$145 - end - local.get $4 - i32.load offset=12 - local.set $6 - local.get $3 - i32.const 1073741804 - i32.ge_u - if - i32.const 1632 - i32.const 1696 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.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$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $7 - local.get $3 - i32.const 16 - i32.add - local.tee $1 + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$155 i32.const 1073741820 - i32.gt_u - if - i32.const 1632 - i32.const 1904 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $7 + local.get $2 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.const 8 local.get $1 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $8 - call $~lib/rt/tlsf/searchBlock + i32.shl local.tee $1 - i32.eqz - if - memory.size - local.tee $1 - local.get $8 - i32.const 256 - i32.ge_u - if (result i32) - local.get $8 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $8 - i32.const 1 - i32.const 27 - local.get $8 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $8 - end - else - local.get $8 - end - i32.const 4 - local.get $7 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $5 - local.get $1 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $7 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $7 - local.get $8 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1904 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $8 local.get $1 + local.get $2 + i32.lt_u + select + local.tee $3 + local.get $0 i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1904 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + local.tee $2 + i32.const 20 + i32.sub + local.tee $4 i32.load - local.set $9 - local.get $8 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1904 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $9 i32.const -4 i32.and - local.get $8 - i32.sub - local.tee $5 i32.const 16 - i32.ge_u + i32.sub + i32.le_u if - local.get $1 - local.get $8 - local.get $9 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $8 - i32.add - local.tee $8 - local.get $5 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $7 - local.get $8 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $9 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - local.get $5 - i32.load - i32.const -3 - i32.and - i32.store + local.get $4 + local.get $3 + i32.store offset=16 + local.get $2 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew$155 end - local.get $1 - local.get $6 - i32.store offset=12 - local.get $1 local.get $3 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $5 - i32.load offset=8 - local.set $6 - local.get $1 - local.get $5 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $6 - i32.store offset=8 - local.get $6 - local.get $1 - local.get $6 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $5 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add + local.get $4 + i32.load offset=12 + call $~lib/rt/itcms/__new local.tee $1 - i32.const 0 - local.get $3 - memory.fill - local.get $1 local.get $2 local.get $3 local.get $4 @@ -1812,7 +2183,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1568 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1873,11 +2244,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1988 + i32.const 3956 i32.lt_s if - i32.const 34784 - i32.const 34832 + i32.const 36752 + i32.const 36800 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1894,8 +2265,8 @@ i32.load i32.ge_u if - i32.const 1472 - i32.const 1536 + i32.const 1696 + i32.const 3840 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -1923,11 +2294,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1988 + i32.const 3956 i32.lt_s if - i32.const 34784 - i32.const 34832 + i32.const 36752 + i32.const 36800 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1944,8 +2315,8 @@ i32.load i32.ge_u if - i32.const 1472 - i32.const 1536 + i32.const 1696 + i32.const 3840 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -1973,11 +2344,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1988 + i32.const 3956 i32.lt_s if - i32.const 34784 - i32.const 34832 + i32.const 36752 + i32.const 36800 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1994,8 +2365,8 @@ i32.load i32.ge_u if - i32.const 1472 - i32.const 1536 + i32.const 1696 + i32.const 3840 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2023,12 +2394,44 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1988 + i32.const 3956 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + memory.size + i32.const 16 + i32.shl + i32.const 36724 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1620 + i32.const 1616 + i32.store + i32.const 1624 + i32.const 1616 + i32.store + i32.const 1616 + global.set $~lib/rt/itcms/pinSpace + i32.const 1652 + i32.const 1648 + i32.store + i32.const 1656 + i32.const 1648 + i32.store + i32.const 1648 + global.set $~lib/rt/itcms/toSpace + i32.const 1796 + i32.const 1792 + i32.store + i32.const 1800 + i32.const 1792 + i32.store + i32.const 1792 + global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 1088 i32.store @@ -2038,7 +2441,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 3776 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -2053,7 +2456,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 3776 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -2068,44 +2471,12 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 3776 i32.const 8 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - i32.const 34756 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1748 - i32.const 1744 - i32.store - i32.const 1752 - i32.const 1744 - i32.store - i32.const 1744 - global.set $~lib/rt/itcms/pinSpace - i32.const 1780 - i32.const 1776 - i32.store - i32.const 1784 - i32.const 1776 - i32.store - i32.const 1776 - global.set $~lib/rt/itcms/toSpace - i32.const 1860 - i32.const 1856 - i32.store - i32.const 1864 - i32.const 1856 - i32.store - i32.const 1856 - global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 1088 i32.store @@ -2114,7 +2485,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1988 + i32.const 3956 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2157,7 +2528,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 3776 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -2172,7 +2543,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 3776 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -2187,7 +2558,7 @@ i64.ne if i32.const 0 - i32.const 1408 + i32.const 3776 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -2202,7 +2573,7 @@ i64.ne if i32.const 0 - i32.const 1408 + i32.const 3776 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -2216,7 +2587,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1988 + i32.const 3956 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2259,7 +2630,7 @@ i64.ne if i32.const 0 - i32.const 1408 + i32.const 3776 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -2274,7 +2645,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 3776 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -2289,7 +2660,7 @@ f32.ne if i32.const 0 - i32.const 1408 + i32.const 3776 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -2304,7 +2675,7 @@ f32.ne if i32.const 0 - i32.const 1408 + i32.const 3776 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -2318,7 +2689,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1988 + i32.const 3956 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2361,7 +2732,7 @@ f32.ne if i32.const 0 - i32.const 1408 + i32.const 3776 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -2376,7 +2747,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 3776 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -2391,7 +2762,7 @@ f64.ne if i32.const 0 - i32.const 1408 + i32.const 3776 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -2406,7 +2777,7 @@ f64.ne if i32.const 0 - i32.const 1408 + i32.const 3776 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -2420,7 +2791,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1988 + i32.const 3956 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2463,7 +2834,7 @@ f64.ne if i32.const 0 - i32.const 1408 + i32.const 3776 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -2475,11 +2846,66 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34784 - i32.const 34832 + i32.const 36752 + i32.const 36800 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3956 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/std/staticarray.debug.wat b/tests/compiler/std/staticarray.debug.wat index eecfcbe17e..756a525cbe 100644 --- a/tests/compiler/std/staticarray.debug.wat +++ b/tests/compiler/std/staticarray.debug.wat @@ -3,24 +3,25 @@ (type $1 (func (param i32 i32))) (type $2 (func (param i32 i32) (result i32))) (type $3 (func (param i32 i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32) (result i32))) - (type $5 (func (param i32 i32 i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func (param i32 i32 i32 i32) (result i32))) (type $6 (func (param i32))) (type $7 (func)) - (type $8 (func (param i32 i32 i32 i32))) - (type $9 (func (result i32))) - (type $10 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $11 (func (param i32 i32 i32 i32 i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $10 (func (param i32 i32 i32 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (type $12 (func (param i32 i32 i64) (result i32))) - (type $13 (func (param i32 i32 i32 i32 i32 i32))) - (type $14 (func (param i32 f64 i32) (result i32))) - (type $15 (func (param i32 f32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $13 (func (param i32 i64 i32))) + (type $14 (func (param i64 i32) (result i32))) + (type $15 (func (param i32 i64 i32 i32))) + (type $16 (func (param i32 i32 i32 i32 i32 i32))) + (type $17 (func (param i32 f64 i32) (result i32))) + (type $18 (func (param i32 f32 i32) (result 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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -32,92 +33,103 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $std/staticarray/arr2 i32 (i32.const 2560)) (global $std/staticarray/arr3 (mut i32) (i32.const 0)) (global $std/staticarray/arr4 (mut i32) (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $std/staticarray/maxVal (mut i32) (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) - (global $~lib/rt/__rtti_base i32 (i32.const 2864)) - (global $~lib/memory/__data_end i32 (i32.const 2936)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35704)) - (global $~lib/memory/__heap_base i32 (i32.const 35704)) + (global $~lib/rt/__rtti_base i32 (i32.const 4800)) + (global $~lib/memory/__data_end i32 (i32.const 4872)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37640)) + (global $~lib/memory/__heap_base i32 (i32.const 37640)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00") - (data $3 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 236) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data $5 (i32.const 268) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00") - (data $6 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $7 (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 464) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 544) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 572) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 636) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $14 (i32.const 684) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05\00\00\00\00\00\00\00") - (data $15 (i32.const 732) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $16 (i32.const 780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $17 (i32.const 812) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") - (data $18 (i32.const 844) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $19 (i32.const 876) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $20 (i32.const 908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") - (data $21 (i32.const 940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") - (data $22 (i32.const 972) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\a0\03\00\00\c0\03\00\00\00\00\00\00") - (data $23 (i32.const 1004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\003\00\00\00\00\00\00\00\00\00\00\00") - (data $24 (i32.const 1036) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\04\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00") - (data $25 (i32.const 1068) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00n\00t\00\00\00\00\00\00\00") - (data $26 (i32.const 1100) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00b\00i\00s\00o\00n\00\00\00") - (data $27 (i32.const 1132) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00c\00a\00m\00e\00l\00\00\00") - (data $28 (i32.const 1164) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00d\00u\00c\00k\00\00\00\00\00") - (data $29 (i32.const 1196) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00e\00l\00e\00p\00h\00a\00n\00t\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $30 (i32.const 1244) ",\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\14\00\00\00@\04\00\00`\04\00\00\80\04\00\00\a0\04\00\00\c0\04\00\00\00\00\00\00\00\00\00\00") - (data $31 (i32.const 1292) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $32 (i32.const 1420) ",\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\14\00\00\00@\04\00\00`\04\00\00\80\04\00\00\a0\04\00\00\c0\04\00\00\00\00\00\00\00\00\00\00") - (data $33 (i32.const 1468) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $34 (i32.const 1500) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00f\00o\00o\00\00\00\00\00\00\00") - (data $35 (i32.const 1532) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\f0\05\00\00\00\00\00\00\00\00\00\00") - (data $36 (i32.const 1564) ",\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\14\00\00\00@\04\00\00`\04\00\00\80\04\00\00\a0\04\00\00\c0\04\00\00\00\00\00\00\00\00\00\00") - (data $37 (i32.const 1612) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00\00\00\00\00\00\00\f8\7f\00\00\00\00") - (data $38 (i32.const 1644) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\04\00\00\00\00\00\c0\7f\00\00\00\00\00\00\00\00") - (data $39 (i32.const 1676) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\02\00\00\00\t\00\00\00\t\00\00\00") - (data $40 (i32.const 1708) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $41 (i32.const 1756) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00F\00i\00r\00e\00\00\00\00\00") - (data $42 (i32.const 1788) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00i\00r\00\00\00\00\00\00\00") - (data $43 (i32.const 1820) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00W\00a\00t\00e\00r\00\00\00") - (data $44 (i32.const 1852) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\0c\00\00\00\f0\06\00\00\10\07\00\000\07\00\00") - (data $45 (i32.const 1884) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $46 (i32.const 1916) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") - (data $47 (i32.const 1948) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00F\00i\00r\00e\00,\00A\00i\00r\00,\00W\00a\00t\00e\00r\00") - (data $48 (i32.const 1996) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00F\00i\00r\00e\00A\00i\00r\00W\00a\00t\00e\00r\00\00\00\00\00") - (data $49 (i32.const 2044) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") - (data $50 (i32.const 2076) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00F\00i\00r\00e\00-\00A\00i\00r\00-\00W\00a\00t\00e\00r\00") - (data $51 (i32.const 2124) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00 \00+\00 \00\00\00\00\00\00\00") - (data $52 (i32.const 2156) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00F\00i\00r\00e\00 \00+\00 \00A\00i\00r\00 \00+\00 \00W\00a\00t\00e\00r\00\00\00\00\00\00\00\00\00") - (data $53 (i32.const 2220) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $54 (i32.const 2252) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data $55 (i32.const 2284) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $56 (i32.const 2332) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data $57 (i32.const 2364) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $58 (i32.const 2396) "\1c\00\00\00\00\00\00\00\00\00\00\00\r\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data $59 (i32.const 2428) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") - (data $60 (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") - (data $61 (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $62 (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") - (data $63 (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") - (data $64 (i32.const 2588) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") - (data $65 (i32.const 2620) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $66 (i32.const 2652) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") - (data $67 (i32.const 2684) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") - (data $68 (i32.const 2716) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") - (data $69 (i32.const 2748) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\r\00\00\00\00\00\00\00\00\00\00\00") - (data $70 (i32.const 2780) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $71 (i32.const 2828) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") - (data $72 (i32.const 2864) "\11\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00$\t\00\00 \00\00\00\04A\00\00\02\t\00\00\04A\00\00\02A\00\00$\1a\00\00$\19\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $5 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 572) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 796) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $17 (i32.const 1196) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2252) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $19 (i32.const 2348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00") + (data $21 (i32.const 2476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $23 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00") + (data $24 (i32.const 2604) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $25 (i32.const 2652) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05\00\00\00\00\00\00\00") + (data $26 (i32.const 2700) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $27 (i32.const 2748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2780) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data $29 (i32.const 2812) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 2844) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 2876) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 2908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 2940) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00P\0b\00\00p\0b\00\00\00\00\00\00") + (data $34 (i32.const 2972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data $35 (i32.const 3004) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\04\00\00\00\b0\0b\00\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 3036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00n\00t\00\00\00\00\00\00\00") + (data $37 (i32.const 3068) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00b\00i\00s\00o\00n\00\00\00") + (data $38 (i32.const 3100) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00c\00a\00m\00e\00l\00\00\00") + (data $39 (i32.const 3132) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00d\00u\00c\00k\00\00\00\00\00") + (data $40 (i32.const 3164) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00e\00l\00e\00p\00h\00a\00n\00t\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $41 (i32.const 3212) ",\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\14\00\00\00\f0\0b\00\00\10\0c\00\000\0c\00\00P\0c\00\00p\0c\00\00\00\00\00\00\00\00\00\00") + (data $42 (i32.const 3260) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $43 (i32.const 3388) ",\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\14\00\00\00\f0\0b\00\00\10\0c\00\000\0c\00\00P\0c\00\00p\0c\00\00\00\00\00\00\00\00\00\00") + (data $44 (i32.const 3436) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $45 (i32.const 3468) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00f\00o\00o\00\00\00\00\00\00\00") + (data $46 (i32.const 3500) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\a0\r\00\00\00\00\00\00\00\00\00\00") + (data $47 (i32.const 3532) ",\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\14\00\00\00\f0\0b\00\00\10\0c\00\000\0c\00\00P\0c\00\00p\0c\00\00\00\00\00\00\00\00\00\00") + (data $48 (i32.const 3580) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00\00\00\00\00\00\00\f8\7f\00\00\00\00") + (data $49 (i32.const 3612) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\04\00\00\00\00\00\c0\7f\00\00\00\00\00\00\00\00") + (data $50 (i32.const 3644) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\02\00\00\00\t\00\00\00\t\00\00\00") + (data $51 (i32.const 3676) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $52 (i32.const 3724) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00F\00i\00r\00e\00\00\00\00\00") + (data $53 (i32.const 3756) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00i\00r\00\00\00\00\00\00\00") + (data $54 (i32.const 3788) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00W\00a\00t\00e\00r\00\00\00") + (data $55 (i32.const 3820) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\0c\00\00\00\a0\0e\00\00\c0\0e\00\00\e0\0e\00\00") + (data $56 (i32.const 3852) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data $57 (i32.const 3884) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00F\00i\00r\00e\00,\00A\00i\00r\00,\00W\00a\00t\00e\00r\00") + (data $58 (i32.const 3932) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00F\00i\00r\00e\00A\00i\00r\00W\00a\00t\00e\00r\00\00\00\00\00") + (data $59 (i32.const 3980) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data $60 (i32.const 4012) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00F\00i\00r\00e\00-\00A\00i\00r\00-\00W\00a\00t\00e\00r\00") + (data $61 (i32.const 4060) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00 \00+\00 \00\00\00\00\00\00\00") + (data $62 (i32.const 4092) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00F\00i\00r\00e\00 \00+\00 \00A\00i\00r\00 \00+\00 \00W\00a\00t\00e\00r\00\00\00\00\00\00\00\00\00") + (data $63 (i32.const 4156) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $64 (i32.const 4188) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $65 (i32.const 4220) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $66 (i32.const 4268) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $67 (i32.const 4300) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $68 (i32.const 4332) "\1c\00\00\00\00\00\00\00\00\00\00\00\r\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $69 (i32.const 4364) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $70 (i32.const 4396) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $71 (i32.const 4428) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $72 (i32.const 4460) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data $73 (i32.const 4492) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data $74 (i32.const 4524) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $75 (i32.const 4556) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $76 (i32.const 4588) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data $77 (i32.const 4620) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data $78 (i32.const 4652) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data $79 (i32.const 4684) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\r\00\00\00\00\00\00\00\00\00\00\00") + (data $80 (i32.const 4716) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $81 (i32.const 4764) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") + (data $82 (i32.const 4800) "\11\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00$\t\00\00 \00\00\00\04A\00\00\02\t\00\00\04A\00\00\02A\00\00$\1a\00\00$\19\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 15 15 funcref) (elem $0 (i32.const 1) $start:std/staticarray~anonymous|0 $start:std/staticarray~anonymous|1 $start:std/staticarray~anonymous|2 $start:std/staticarray~anonymous|3 $start:std/staticarray~anonymous|4 $start:std/staticarray~anonymous|5 $start:std/staticarray~anonymous|6 $start:std/staticarray~anonymous|7 $start:std/staticarray~anonymous|8 $start:std/staticarray~anonymous|9 $start:std/staticarray~anonymous|10 $start:std/staticarray~anonymous|11 $start:std/staticarray~anonymous|12 $~lib/util/sort/COMPARATOR~anonymous|0) (export "memory" (memory $0)) @@ -135,20 +147,14 @@ i32.shr_u return ) - (func $~lib/staticarray/StaticArray#__uset (param $this i32) (param $index i32) (param $value i32) - local.get $this - local.get $index - i32.const 2 - i32.shl - i32.add - local.get $value - i32.store - i32.const 0 - drop - ) - (func $~lib/rt/common/OBJECT#get:rtId (param $this i32) (result i32) + (func $~lib/string/String#get:length (param $this i32) (result i32) local.get $this - i32.load offset=12 + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this @@ -214,7 +220,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 224 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -284,7 +290,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 224 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -301,7 +307,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 224 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -331,8 +337,8 @@ i32.load i32.gt_u if - i32.const 64 - i32.const 512 + i32.const 352 + i32.const 416 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -400,7 +406,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 384 + i32.const 224 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -552,7 +558,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 496 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -572,7 +578,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 496 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -635,7 +641,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 496 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -788,7 +794,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 496 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -805,7 +811,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 496 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -894,7 +900,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 496 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -937,7 +943,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 496 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -955,7 +961,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 496 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -1023,7 +1029,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 496 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1140,7 +1146,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 496 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1186,7 +1192,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 496 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1218,7 +1224,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 496 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1462,7 +1468,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 496 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1682,7 +1688,7 @@ i32.eqz if i32.const 0 - i32.const 384 + i32.const 224 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1790,8 +1796,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 320 - i32.const 592 + i32.const 160 + i32.const 496 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1893,7 +1899,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 496 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1964,7 +1970,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 496 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2121,7 +2127,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 496 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2236,7 +2242,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 496 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2256,7 +2262,7 @@ i32.eqz if i32.const 0 - i32.const 592 + i32.const 496 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2304,8 +2310,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 320 - i32.const 384 + i32.const 160 + i32.const 224 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2350,61 +2356,492 @@ local.get $ptr return ) - (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) - (local $buffer i32) - local.get $size - local.get $id - call $~lib/rt/itcms/__new - local.set $buffer - local.get $data + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 796 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 796 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits local.get $buffer - local.get $data - local.get $size - memory.copy + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 end - local.get $buffer - return ) - (func $std/staticarray/test (result i32) - (local $0 i32) - i32.const 12 - i32.const 4 - i32.const 288 - call $~lib/rt/__newBuffer - return + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end ) - (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) - (local $child i32) - (local $parent i32) - (local $parentColor i32) - local.get $childPtr - i32.eqz + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add return end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b i32.const 1 - drop - local.get $parentPtr - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end end - local.get $childPtr - i32.const 20 + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 i32.sub - local.set $child - local.get $child - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 i32.eq if - local.get $parentPtr + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/staticarray/StaticArray#__uset (param $this i32) (param $index i32) (param $value i32) + local.get $this + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 0 + drop + ) + (func $~lib/rt/common/OBJECT#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) + (local $buffer i32) + local.get $size + local.get $id + call $~lib/rt/itcms/__new + local.set $buffer + local.get $data + if + local.get $buffer + local.get $data + local.get $size + memory.copy + end + local.get $buffer + return + ) + (func $std/staticarray/test (result i32) + (local $0 i32) + i32.const 12 + i32.const 4 + i32.const 2592 + call $~lib/rt/__newBuffer + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr i32.const 20 i32.sub local.set $parent @@ -2474,15 +2911,6 @@ i32.shr_u return ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u - return - ) (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) (local $ptr1 i32) (local $ptr2 i32) @@ -3512,343 +3940,430 @@ i32.const 0 drop ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $std/staticarray/arr1 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/staticarray/arr2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/staticarray/arr3 - local.tee $1 + (func $~start + call $start:std/staticarray + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 37664 + i32.const 37712 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $std/staticarray/arr4 - local.tee $1 + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 128 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - i32.const 64 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 656 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 1312 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 320 - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/staticarray/StaticArray#__visit (param $this i32) (param $cookie i32) - (local $cur i32) - (local $end i32) - (local $val i32) - i32.const 1 - drop - local.get $this - local.set $cur - local.get $cur - local.get $this - i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.add - local.set $end - loop $while-continue|0 - local.get $cur - local.get $end - i32.lt_u - if - local.get $cur - i32.load - local.set $val - local.get $val - if - local.get $val - local.get $cookie - call $~lib/rt/itcms/__visit - end - local.get $cur - i32.const 4 - i32.add - local.set $cur - br $while-continue|0 - end - end + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~lib/staticarray/StaticArray~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray#__visit + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2368 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + (func $~lib/staticarray/StaticArray#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/staticarray/StaticArray#get:length + i32.ge_u + if + i32.const 352 + i32.const 2432 + i32.const 78 + i32.const 41 + call $~lib/builtins/abort + unreachable + end local.get $this + local.get $index + i32.const 2 + i32.shl + i32.add i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#__visit (param $this i32) (param $cookie i32) - (local $cur i32) - (local $end i32) - (local $val i32) - i32.const 1 + local.set $value + i32.const 0 drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/staticarray/StaticArray#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index local.get $this - local.set $cur - local.get $cur + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/staticarray/StaticArray#get:length + i32.ge_u + if + i32.const 352 + i32.const 2432 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + local.get $value + call $~lib/staticarray/StaticArray#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $end - loop $while-continue|0 - local.get $cur - local.get $end - i32.lt_u - if - local.get $cur - i32.load - local.set $val - local.get $val - if - local.get $val - local.get $cookie - call $~lib/rt/itcms/__visit - end - local.get $cur - i32.const 4 - i32.add - local.set $cur - br $while-continue|0 - end - end + global.set $~lib/memory/__stack_pointer ) - (func $~lib/staticarray/StaticArray<~lib/string/String>~visit (param $0 i32) (param $1 i32) - local.get $0 + (func $std/staticarray/Ref#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store offset=4 local.get $1 - call $~lib/staticarray/StaticArray<~lib/string/String>#__visit - ) - (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + call $~lib/object/Object#constructor + local.tee $this + i32.store local.get $this - i32.load - ) - (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool>#__visit ) - (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#get:_env (param $this i32) (result i32) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.store local.get $1 - call $~lib/object/Object~visit - local.get $0 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/function/Function<%28i32%2Ci32%29=>i32> - block $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32> - block $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool> - block $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void> - block $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32> - 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/staticarray/StaticArray - block $std/staticarray/Ref - block $~lib/staticarray/StaticArray - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $~lib/array/Array $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32> $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void> $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool> $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32> $~lib/function/Function<%28i32%2Ci32%29=>i32> $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray<~lib/string/String>~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>~visit - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit - return - end - unreachable - ) - (func $~start - call $start:std/staticarray + return ) - (func $~stack_check + (func $~lib/staticarray/StaticArray.fromArray (param $source i32) (result i32) + (local $length i32) + (local $outSize i32) + (local $out i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 35728 - i32.const 35776 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $source + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + local.set $length + local.get $length + i32.const 2 + i32.shl + local.set $outSize + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + i32.const 0 + drop + local.get $out + local.get $source + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.get $outSize + memory.copy + local.get $out + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return ) - (func $~lib/staticarray/StaticArray#__get (param $this i32) (param $index i32) (result i32) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) (local $value i32) (local $3 i32) global.get $~lib/memory/__stack_pointer @@ -3866,225 +4381,23 @@ local.get $3 i32.store local.get $3 - call $~lib/staticarray/StaticArray#get:length + call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 64 - i32.const 128 - i32.const 78 - i32.const 41 + i32.const 352 + i32.const 2720 + i32.const 114 + i32.const 42 call $~lib/builtins/abort unreachable end local.get $this - local.get $index - i32.const 2 - i32.shl - i32.add - i32.load - local.set $value - i32.const 0 - drop - local.get $value - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $~lib/staticarray/StaticArray#__set (param $this i32) (param $index i32) (param $value i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $index - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/staticarray/StaticArray#get:length - i32.ge_u - if - i32.const 64 - i32.const 128 - i32.const 93 - i32.const 41 - call $~lib/builtins/abort - unreachable - end - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - local.get $index - local.get $value - call $~lib/staticarray/StaticArray#__uset - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/staticarray/Ref#constructor (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/object/Object#constructor - local.tee $this - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/array/Array#get:length (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length_ - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/staticarray/StaticArray.fromArray (param $source i32) (result i32) - (local $length i32) - (local $outSize i32) - (local $out i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $source - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#get:length - local.set $length - local.get $length - i32.const 2 - i32.shl - local.set $outSize - global.get $~lib/memory/__stack_pointer - local.get $outSize - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $out - i32.store offset=4 - i32.const 0 - drop - local.get $out - local.get $source - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#get:dataStart - local.get $outSize - memory.copy - local.get $out - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - ) - (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) - (local $value i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $index - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#get:length_ - i32.ge_u - if - i32.const 64 - i32.const 752 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $this - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#get:dataStart + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart local.get $index i32.const 2 i32.shl @@ -4146,8 +4459,8 @@ i32.shr_u i32.gt_u if - i32.const 656 - i32.const 128 + i32.const 2624 + i32.const 2432 i32.const 178 i32.const 7 call $~lib/builtins/abort @@ -4251,8 +4564,8 @@ i32.shr_u i32.gt_u if - i32.const 656 - i32.const 128 + i32.const 2624 + i32.const 2432 i32.const 178 i32.const 7 call $~lib/builtins/abort @@ -4582,8 +4895,8 @@ call $~lib/staticarray/StaticArray<~lib/string/String>#get:length i32.ge_u if - i32.const 64 - i32.const 128 + i32.const 352 + i32.const 2432 i32.const 78 i32.const 41 call $~lib/builtins/abort @@ -4606,8 +4919,8 @@ local.get $value i32.eqz if - i32.const 1312 - i32.const 128 + i32.const 3280 + i32.const 2432 i32.const 82 i32.const 40 call $~lib/builtins/abort @@ -4792,8 +5105,8 @@ i32.shr_u i32.gt_u if - i32.const 656 - i32.const 128 + i32.const 2624 + i32.const 2432 i32.const 178 i32.const 7 call $~lib/builtins/abort @@ -5538,7 +5851,7 @@ i32.const 0 i32.lt_s if - i32.const 1904 + i32.const 128 local.set $13 global.get $~lib/memory/__stack_pointer i32.const 16 @@ -5559,7 +5872,7 @@ if (result i32) local.get $4 else - i32.const 1904 + i32.const 128 end local.set $13 global.get $~lib/memory/__stack_pointer @@ -5798,7 +6111,7 @@ local.get $1 i32.store local.get $1 - i32.const 1936 + i32.const 3872 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $1 global.get $~lib/memory/__stack_pointer @@ -6249,7 +6562,7 @@ global.set $~argumentsLength local.get $fn i32.load - call_indirect (type $5) + call_indirect (type $4) local.get $i i32.const 1 i32.add @@ -6302,8 +6615,8 @@ i32.shr_u i32.gt_u if - i32.const 656 - i32.const 752 + i32.const 2624 + i32.const 2720 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -6574,7 +6887,7 @@ global.set $~argumentsLength local.get $fn i32.load - call_indirect (type $4) + call_indirect (type $5) local.set $acc local.get $i i32.const 1 @@ -6639,7 +6952,7 @@ global.set $~argumentsLength local.get $fn i32.load - call_indirect (type $4) + call_indirect (type $5) local.set $acc local.get $i i32.const 1 @@ -7478,7 +7791,7 @@ i32.const 4 i32.le_u drop - i32.const 2848 + i32.const 4784 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator @@ -7567,6 +7880,23 @@ i32.const 0 i32.const 104 memory.fill + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 304 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 448 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $std/staticarray/arr1 local.set $52 global.get $~lib/memory/__stack_pointer @@ -7580,7 +7910,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -7598,7 +7928,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -7626,7 +7956,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -7641,7 +7971,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -7660,7 +7990,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -7678,7 +8008,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -7706,29 +8036,12 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 432 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 464 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 544 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace call $std/staticarray/test global.set $std/staticarray/arr3 global.get $std/staticarray/arr3 @@ -7744,7 +8057,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -7763,7 +8076,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -7782,7 +8095,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -7800,7 +8113,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -7828,7 +8141,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -7849,7 +8162,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -7896,7 +8209,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -7928,7 +8241,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 46 i32.const 5 call $~lib/builtins/abort @@ -7945,7 +8258,7 @@ i32.const 6 i32.const 2 i32.const 7 - i32.const 704 + i32.const 2672 call $~lib/rt/__newArray local.tee $6 i32.store offset=12 @@ -7977,7 +8290,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -8016,7 +8329,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 58 i32.const 5 call $~lib/builtins/abort @@ -8033,7 +8346,7 @@ i32.const 0 i32.const 2 i32.const 7 - i32.const 800 + i32.const 2768 call $~lib/rt/__newArray local.set $52 global.get $~lib/memory/__stack_pointer @@ -8055,7 +8368,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -8064,7 +8377,7 @@ global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 4 - i32.const 832 + i32.const 2800 call $~lib/rt/__newBuffer local.tee $11 i32.store offset=20 @@ -8077,7 +8390,7 @@ local.get $52 i32.const 4 i32.const 4 - i32.const 864 + i32.const 2832 call $~lib/rt/__newBuffer local.set $52 global.get $~lib/memory/__stack_pointer @@ -8099,7 +8412,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 69 i32.const 3 call $~lib/builtins/abort @@ -8114,7 +8427,7 @@ local.get $52 i32.const 0 i32.const 4 - i32.const 896 + i32.const 2864 call $~lib/rt/__newBuffer local.set $52 global.get $~lib/memory/__stack_pointer @@ -8142,7 +8455,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 71 i32.const 3 call $~lib/builtins/abort @@ -8151,7 +8464,7 @@ global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 8 - i32.const 992 + i32.const 2960 call $~lib/rt/__newBuffer local.tee $16 i32.store offset=32 @@ -8164,7 +8477,7 @@ local.get $52 i32.const 4 i32.const 8 - i32.const 1056 + i32.const 3024 call $~lib/rt/__newBuffer local.set $52 global.get $~lib/memory/__stack_pointer @@ -8186,7 +8499,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 76 i32.const 3 call $~lib/builtins/abort @@ -8195,7 +8508,7 @@ global.get $~lib/memory/__stack_pointer i32.const 20 i32.const 8 - i32.const 1264 + i32.const 3232 call $~lib/rt/__newBuffer local.tee $20 i32.store offset=40 @@ -8231,7 +8544,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -8280,7 +8593,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 86 i32.const 5 call $~lib/builtins/abort @@ -8317,7 +8630,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 90 i32.const 3 call $~lib/builtins/abort @@ -8336,12 +8649,12 @@ local.get $52 i32.store local.get $52 - i32.const 1120 + i32.const 3088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 91 i32.const 3 call $~lib/builtins/abort @@ -8360,12 +8673,12 @@ local.get $52 i32.store local.get $52 - i32.const 1152 + i32.const 3120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 92 i32.const 3 call $~lib/builtins/abort @@ -8405,7 +8718,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 95 i32.const 3 call $~lib/builtins/abort @@ -8441,7 +8754,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -8473,7 +8786,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 101 i32.const 3 call $~lib/builtins/abort @@ -8505,7 +8818,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -8524,12 +8837,12 @@ local.get $52 i32.store local.get $52 - i32.const 1216 + i32.const 3184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 105 i32.const 3 call $~lib/builtins/abort @@ -8559,7 +8872,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -8589,7 +8902,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 111 i32.const 3 call $~lib/builtins/abort @@ -8608,12 +8921,12 @@ local.get $52 i32.store local.get $52 - i32.const 1152 + i32.const 3120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 112 i32.const 3 call $~lib/builtins/abort @@ -8622,7 +8935,7 @@ global.get $~lib/memory/__stack_pointer i32.const 20 i32.const 8 - i32.const 1440 + i32.const 3408 call $~lib/rt/__newBuffer local.tee $24 i32.store offset=52 @@ -8636,7 +8949,7 @@ i32.const 0 i32.const 2 i32.const 9 - i32.const 1488 + i32.const 3456 call $~lib/rt/__newArray local.set $52 global.get $~lib/memory/__stack_pointer @@ -8664,7 +8977,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 122 i32.const 3 call $~lib/builtins/abort @@ -8682,7 +8995,7 @@ i32.const 1 i32.const 2 i32.const 9 - i32.const 1552 + i32.const 3520 call $~lib/rt/__newArray local.set $52 global.get $~lib/memory/__stack_pointer @@ -8712,7 +9025,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 126 i32.const 3 call $~lib/builtins/abort @@ -8723,7 +9036,7 @@ global.get $~lib/memory/__stack_pointer i32.const 20 i32.const 8 - i32.const 1584 + i32.const 3552 call $~lib/rt/__newBuffer local.tee $29 i32.store offset=60 @@ -8733,7 +9046,7 @@ local.get $52 i32.store local.get $52 - i32.const 1120 + i32.const 3088 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes i32.const 1 @@ -8741,7 +9054,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 133 i32.const 3 call $~lib/builtins/abort @@ -8753,7 +9066,7 @@ local.get $52 i32.store local.get $52 - i32.const 1520 + i32.const 3488 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes i32.const 0 @@ -8761,7 +9074,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 134 i32.const 3 call $~lib/builtins/abort @@ -8773,7 +9086,7 @@ local.get $52 i32.store local.get $52 - i32.const 1216 + i32.const 3184 i32.const 5 call $~lib/staticarray/StaticArray<~lib/string/String>#includes i32.const 0 @@ -8781,7 +9094,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 135 i32.const 3 call $~lib/builtins/abort @@ -8793,7 +9106,7 @@ local.get $52 i32.store local.get $52 - i32.const 1216 + i32.const 3184 i32.const -1 call $~lib/staticarray/StaticArray<~lib/string/String>#includes i32.const 1 @@ -8801,7 +9114,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 136 i32.const 3 call $~lib/builtins/abort @@ -8809,7 +9122,7 @@ end i32.const 8 i32.const 10 - i32.const 1632 + i32.const 3600 call $~lib/rt/__newBuffer local.set $52 global.get $~lib/memory/__stack_pointer @@ -8824,7 +9137,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 138 i32.const 3 call $~lib/builtins/abort @@ -8832,7 +9145,7 @@ end i32.const 4 i32.const 11 - i32.const 1664 + i32.const 3632 call $~lib/rt/__newBuffer local.set $52 global.get $~lib/memory/__stack_pointer @@ -8847,7 +9160,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 139 i32.const 3 call $~lib/builtins/abort @@ -8856,7 +9169,7 @@ global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 4 - i32.const 1696 + i32.const 3664 call $~lib/rt/__newBuffer local.tee $33 i32.store offset=64 @@ -8874,7 +9187,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 145 i32.const 3 call $~lib/builtins/abort @@ -8894,7 +9207,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 146 i32.const 3 call $~lib/builtins/abort @@ -8914,7 +9227,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 147 i32.const 3 call $~lib/builtins/abort @@ -8934,7 +9247,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 148 i32.const 3 call $~lib/builtins/abort @@ -8954,7 +9267,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 149 i32.const 3 call $~lib/builtins/abort @@ -8963,7 +9276,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16 i32.const 4 - i32.const 1728 + i32.const 3696 call $~lib/rt/__newBuffer local.tee $35 i32.store offset=68 @@ -8983,7 +9296,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 155 i32.const 3 call $~lib/builtins/abort @@ -9005,7 +9318,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 156 i32.const 3 call $~lib/builtins/abort @@ -9025,7 +9338,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 157 i32.const 3 call $~lib/builtins/abort @@ -9045,7 +9358,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 158 i32.const 3 call $~lib/builtins/abort @@ -9065,7 +9378,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 159 i32.const 3 call $~lib/builtins/abort @@ -9085,7 +9398,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 160 i32.const 3 call $~lib/builtins/abort @@ -9094,7 +9407,7 @@ global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 8 - i32.const 1872 + i32.const 3840 call $~lib/rt/__newBuffer local.tee $37 i32.store offset=72 @@ -9104,19 +9417,19 @@ local.get $52 i32.store offset=24 local.get $52 - i32.const 1936 + i32.const 3872 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1968 + i32.const 3904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 166 i32.const 3 call $~lib/builtins/abort @@ -9128,19 +9441,19 @@ local.get $52 i32.store offset=24 local.get $52 - i32.const 1904 + i32.const 128 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 2016 + i32.const 3952 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 167 i32.const 3 call $~lib/builtins/abort @@ -9152,19 +9465,19 @@ local.get $52 i32.store offset=24 local.get $52 - i32.const 2064 + i32.const 4000 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 2096 + i32.const 4032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 168 i32.const 3 call $~lib/builtins/abort @@ -9176,19 +9489,19 @@ local.get $52 i32.store offset=24 local.get $52 - i32.const 2144 + i32.const 4080 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 2176 + i32.const 4112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 169 i32.const 3 call $~lib/builtins/abort @@ -9200,7 +9513,7 @@ local.get $52 i32.store offset=48 local.get $52 - i32.const 1936 + i32.const 3872 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $52 global.get $~lib/memory/__stack_pointer @@ -9223,7 +9536,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 170 i32.const 3 call $~lib/builtins/abort @@ -9232,7 +9545,7 @@ global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 4 - i32.const 2240 + i32.const 4176 call $~lib/rt/__newBuffer local.tee $39 i32.store offset=76 @@ -9262,7 +9575,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 178 i32.const 3 call $~lib/builtins/abort @@ -9281,7 +9594,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 179 i32.const 3 call $~lib/builtins/abort @@ -9290,7 +9603,7 @@ global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 4 - i32.const 2272 + i32.const 4208 call $~lib/rt/__newBuffer local.tee $41 i32.store offset=80 @@ -9315,7 +9628,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 187 i32.const 3 call $~lib/builtins/abort @@ -9334,7 +9647,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 188 i32.const 3 call $~lib/builtins/abort @@ -9353,7 +9666,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 189 i32.const 3 call $~lib/builtins/abort @@ -9362,7 +9675,7 @@ global.get $~lib/memory/__stack_pointer i32.const 20 i32.const 4 - i32.const 2304 + i32.const 4240 call $~lib/rt/__newBuffer local.tee $43 i32.store offset=84 @@ -9392,7 +9705,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 197 i32.const 3 call $~lib/builtins/abort @@ -9411,7 +9724,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 198 i32.const 3 call $~lib/builtins/abort @@ -9430,7 +9743,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 199 i32.const 3 call $~lib/builtins/abort @@ -9449,7 +9762,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 200 i32.const 3 call $~lib/builtins/abort @@ -9468,7 +9781,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 201 i32.const 3 call $~lib/builtins/abort @@ -9477,7 +9790,7 @@ global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 4 - i32.const 2352 + i32.const 4288 call $~lib/rt/__newBuffer local.tee $45 i32.store offset=88 @@ -9488,7 +9801,7 @@ local.get $52 i32.store local.get $52 - i32.const 2384 + i32.const 4320 local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 @@ -9510,7 +9823,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 210 i32.const 3 call $~lib/builtins/abort @@ -9529,7 +9842,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 211 i32.const 3 call $~lib/builtins/abort @@ -9548,7 +9861,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 212 i32.const 3 call $~lib/builtins/abort @@ -9560,7 +9873,7 @@ local.get $52 i32.store local.get $52 - i32.const 2416 + i32.const 4352 local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 @@ -9573,7 +9886,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 216 i32.const 3 call $~lib/builtins/abort @@ -9586,7 +9899,7 @@ local.get $52 i32.store local.get $52 - i32.const 2448 + i32.const 4384 local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 @@ -9607,7 +9920,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 220 i32.const 3 call $~lib/builtins/abort @@ -9626,7 +9939,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 221 i32.const 3 call $~lib/builtins/abort @@ -9645,7 +9958,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 222 i32.const 3 call $~lib/builtins/abort @@ -9657,7 +9970,7 @@ local.get $52 i32.store local.get $52 - i32.const 2480 + i32.const 4416 local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 @@ -9672,7 +9985,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 226 i32.const 3 call $~lib/builtins/abort @@ -9684,7 +9997,7 @@ local.get $52 i32.store local.get $52 - i32.const 2512 + i32.const 4448 local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 @@ -9699,7 +10012,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 230 i32.const 3 call $~lib/builtins/abort @@ -9711,7 +10024,7 @@ local.get $52 i32.store local.get $52 - i32.const 2544 + i32.const 4480 local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 @@ -9721,7 +10034,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 233 i32.const 3 call $~lib/builtins/abort @@ -9733,7 +10046,7 @@ local.get $52 i32.store local.get $52 - i32.const 2576 + i32.const 4512 local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 @@ -9744,7 +10057,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 234 i32.const 3 call $~lib/builtins/abort @@ -9756,7 +10069,7 @@ local.get $52 i32.store local.get $52 - i32.const 2608 + i32.const 4544 local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 @@ -9766,7 +10079,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 237 i32.const 3 call $~lib/builtins/abort @@ -9778,7 +10091,7 @@ local.get $52 i32.store local.get $52 - i32.const 2640 + i32.const 4576 local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 @@ -9789,7 +10102,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 238 i32.const 3 call $~lib/builtins/abort @@ -9801,7 +10114,7 @@ local.get $52 i32.store local.get $52 - i32.const 2672 + i32.const 4608 local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 @@ -9813,7 +10126,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 241 i32.const 3 call $~lib/builtins/abort @@ -9825,7 +10138,7 @@ local.get $52 i32.store local.get $52 - i32.const 2704 + i32.const 4640 local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 @@ -9837,7 +10150,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 242 i32.const 3 call $~lib/builtins/abort @@ -9849,7 +10162,7 @@ local.get $52 i32.store local.get $52 - i32.const 2736 + i32.const 4672 local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 @@ -9861,7 +10174,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 245 i32.const 3 call $~lib/builtins/abort @@ -9873,7 +10186,7 @@ local.get $52 i32.store local.get $52 - i32.const 2768 + i32.const 4704 local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 @@ -9885,7 +10198,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 246 i32.const 3 call $~lib/builtins/abort @@ -9894,7 +10207,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16 i32.const 4 - i32.const 2800 + i32.const 4736 call $~lib/rt/__newBuffer local.tee $51 i32.store offset=100 @@ -9922,7 +10235,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 255 i32.const 3 call $~lib/builtins/abort @@ -9941,7 +10254,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 256 i32.const 3 call $~lib/builtins/abort @@ -9960,7 +10273,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 257 i32.const 3 call $~lib/builtins/abort @@ -9979,19 +10292,621 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 2496 i32.const 258 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__heap_base - global.set $~lib/memory/__stack_pointer - call $~lib/rt/itcms/__collect - global.get $~lib/memory/__stack_pointer - i32.const 104 - i32.add - global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__heap_base + global.set $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__collect + global.get $~lib/memory/__stack_pointer + i32.const 104 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 592 + i32.const 720 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 784 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/staticarray/StaticArray#constructor (param $this i32) (param $length i32) (result i32) + (local $outSize i32) + (local $out i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 2624 + i32.const 2432 + i32.const 51 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + i32.const 2 + i32.shl + local.set $outSize + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $out + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/staticarray/arr1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/staticarray/arr2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/staticarray/arr3 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/staticarray/arr4 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 352 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2624 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 3280 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 160 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1216 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2272 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/staticarray/StaticArray#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + i32.const 1 + drop + local.get $this + local.set $cur + local.get $cur + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + ) + (func $~lib/staticarray/StaticArray~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + i32.const 1 + drop + local.get $this + local.set $cur + local.get $cur + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__visit + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32> + 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/staticarray/StaticArray + block $std/staticarray/Ref + block $~lib/staticarray/StaticArray + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $~lib/array/Array $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32> $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void> $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool> $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32> $~lib/function/Function<%28i32%2Ci32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + return + end + unreachable ) (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) (local $2 i32) @@ -10209,133 +11124,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/object/Object#constructor (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/staticarray/StaticArray#constructor (param $this i32) (param $length i32) (result i32) - (local $outSize i32) - (local $out i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $length - i32.const 1073741820 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 656 - i32.const 128 - i32.const 51 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $length - i32.const 2 - i32.shl - local.set $outSize - global.get $~lib/memory/__stack_pointer - local.get $outSize - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $out - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return - ) - (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) - (local $bufferSize i32) - (local $buffer i32) - (local $array i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $length - local.get $alignLog2 - i32.shl - local.set $bufferSize - global.get $~lib/memory/__stack_pointer - local.get $bufferSize - i32.const 1 - local.get $data - call $~lib/rt/__newBuffer - local.tee $buffer - i32.store - i32.const 16 - local.get $id - call $~lib/rt/itcms/__new - local.set $array - local.get $array - local.get $buffer - i32.store - local.get $array - local.get $buffer - i32.const 0 - call $~lib/rt/itcms/__link - local.get $array - local.get $buffer - i32.store offset=4 - local.get $array - local.get $bufferSize - i32.store offset=8 - local.get $array - local.get $length - i32.store offset=12 - local.get $array - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - ) ) diff --git a/tests/compiler/std/staticarray.release.wat b/tests/compiler/std/staticarray.release.wat index 5db8f652ff..ea1ddccc44 100644 --- a/tests/compiler/std/staticarray.release.wat +++ b/tests/compiler/std/staticarray.release.wat @@ -4,14 +4,13 @@ (type $2 (func (param i32))) (type $3 (func)) (type $4 (func (param i32 i32))) - (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32) (result i32))) - (type $7 (func (param i32) (result i32))) - (type $8 (func (param i32 i32 i32 i32))) - (type $9 (func (result i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i32 i32 i32))) (type $10 (func (param i32 i32 i64))) (type $11 (func (param i32 i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -26,148 +25,167 @@ (global $std/staticarray/arr4 (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $std/staticarray/maxVal (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36728)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 38664)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data $1 (i32.const 1068) "<") - (data $1.1 (i32.const 1080) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $2 (i32.const 1132) "<") - (data $2.1 (i32.const 1144) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") - (data $3 (i32.const 1196) "<") - (data $3.1 (i32.const 1208) "\02\00\00\00$\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") - (data $4 (i32.const 1260) "\1c") - (data $4.1 (i32.const 1272) "\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data $5 (i32.const 1292) "\1c") - (data $5.1 (i32.const 1304) "\04\00\00\00\0c\00\00\00\05\00\00\00\06\00\00\00\07") - (data $6 (i32.const 1324) "<") - (data $6.1 (i32.const 1336) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $7 (i32.const 1388) "<") - (data $7.1 (i32.const 1400) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $10 (i32.const 1516) ",") - (data $10.1 (i32.const 1528) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $12 (i32.const 1596) "<") - (data $12.1 (i32.const 1608) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $13 (i32.const 1660) ",") - (data $13.1 (i32.const 1672) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $14 (i32.const 1708) ",") - (data $14.1 (i32.const 1720) "\01\00\00\00\18\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05") - (data $15 (i32.const 1756) ",") - (data $15.1 (i32.const 1768) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $16 (i32.const 1804) "\1c") - (data $16.1 (i32.const 1816) "\01") - (data $17 (i32.const 1836) "\1c") - (data $17.1 (i32.const 1848) "\04\00\00\00\08\00\00\00\01\00\00\00\02") - (data $18 (i32.const 1868) "\1c") - (data $18.1 (i32.const 1880) "\04\00\00\00\04\00\00\00\01") - (data $19 (i32.const 1900) "\1c") - (data $19.1 (i32.const 1912) "\04") - (data $20 (i32.const 1932) "\1c") - (data $20.1 (i32.const 1944) "\02\00\00\00\02\00\00\001") - (data $21 (i32.const 1964) "\1c") - (data $21.1 (i32.const 1976) "\02\00\00\00\02\00\00\002") - (data $22 (i32.const 1996) "\1c") - (data $22.1 (i32.const 2008) "\08\00\00\00\08\00\00\00\a0\07\00\00\c0\07") - (data $23 (i32.const 2028) "\1c") - (data $23.1 (i32.const 2040) "\02\00\00\00\02\00\00\003") - (data $24 (i32.const 2060) "\1c") - (data $24.1 (i32.const 2072) "\08\00\00\00\04\00\00\00\00\08") - (data $25 (i32.const 2092) "\1c") - (data $25.1 (i32.const 2104) "\02\00\00\00\06\00\00\00a\00n\00t") - (data $26 (i32.const 2124) "\1c") - (data $26.1 (i32.const 2136) "\02\00\00\00\n\00\00\00b\00i\00s\00o\00n") - (data $27 (i32.const 2156) "\1c") - (data $27.1 (i32.const 2168) "\02\00\00\00\n\00\00\00c\00a\00m\00e\00l") - (data $28 (i32.const 2188) "\1c") - (data $28.1 (i32.const 2200) "\02\00\00\00\08\00\00\00d\00u\00c\00k") - (data $29 (i32.const 2220) ",") - (data $29.1 (i32.const 2232) "\02\00\00\00\10\00\00\00e\00l\00e\00p\00h\00a\00n\00t") - (data $30 (i32.const 2268) ",") - (data $30.1 (i32.const 2280) "\08\00\00\00\14\00\00\00@\08\00\00`\08\00\00\80\08\00\00\a0\08\00\00\c0\08") - (data $31 (i32.const 2316) "|") - (data $31.1 (i32.const 2328) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data $32 (i32.const 2444) ",") - (data $32.1 (i32.const 2456) "\08\00\00\00\14\00\00\00@\08\00\00`\08\00\00\80\08\00\00\a0\08\00\00\c0\08") - (data $33 (i32.const 2492) "\1c") - (data $33.1 (i32.const 2504) "\01") - (data $34 (i32.const 2524) "\1c") - (data $34.1 (i32.const 2536) "\02\00\00\00\06\00\00\00f\00o\00o") - (data $35 (i32.const 2556) "\1c") - (data $35.1 (i32.const 2568) "\01\00\00\00\04\00\00\00\f0\t") - (data $36 (i32.const 2588) ",") - (data $36.1 (i32.const 2600) "\08\00\00\00\14\00\00\00@\08\00\00`\08\00\00\80\08\00\00\a0\08\00\00\c0\08") - (data $37 (i32.const 2636) "\1c") - (data $37.1 (i32.const 2648) "\n\00\00\00\08") - (data $37.2 (i32.const 2662) "\f8\7f") - (data $38 (i32.const 2668) "\1c") - (data $38.1 (i32.const 2680) "\0b\00\00\00\04\00\00\00\00\00\c0\7f") - (data $39 (i32.const 2700) "\1c") - (data $39.1 (i32.const 2712) "\04\00\00\00\0c\00\00\00\02\00\00\00\t\00\00\00\t") - (data $40 (i32.const 2732) ",") - (data $40.1 (i32.const 2744) "\04\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02") - (data $41 (i32.const 2780) "\1c") - (data $41.1 (i32.const 2792) "\02\00\00\00\08\00\00\00F\00i\00r\00e") - (data $42 (i32.const 2812) "\1c") - (data $42.1 (i32.const 2824) "\02\00\00\00\06\00\00\00A\00i\00r") - (data $43 (i32.const 2844) "\1c") - (data $43.1 (i32.const 2856) "\02\00\00\00\n\00\00\00W\00a\00t\00e\00r") - (data $44 (i32.const 2876) "\1c") - (data $44.1 (i32.const 2888) "\08\00\00\00\0c\00\00\00\f0\n\00\00\10\0b\00\000\0b") - (data $45 (i32.const 2908) "\1c") - (data $45.1 (i32.const 2920) "\02") - (data $46 (i32.const 2940) "\1c") - (data $46.1 (i32.const 2952) "\02\00\00\00\02\00\00\00,") - (data $47 (i32.const 2972) ",") - (data $47.1 (i32.const 2984) "\02\00\00\00\1c\00\00\00F\00i\00r\00e\00,\00A\00i\00r\00,\00W\00a\00t\00e\00r") - (data $48 (i32.const 3020) ",") - (data $48.1 (i32.const 3032) "\02\00\00\00\18\00\00\00F\00i\00r\00e\00A\00i\00r\00W\00a\00t\00e\00r") - (data $49 (i32.const 3068) "\1c") - (data $49.1 (i32.const 3080) "\02\00\00\00\02\00\00\00-") - (data $50 (i32.const 3100) ",") - (data $50.1 (i32.const 3112) "\02\00\00\00\1c\00\00\00F\00i\00r\00e\00-\00A\00i\00r\00-\00W\00a\00t\00e\00r") - (data $51 (i32.const 3148) "\1c") - (data $51.1 (i32.const 3160) "\02\00\00\00\06\00\00\00 \00+\00 ") - (data $52 (i32.const 3180) "<") - (data $52.1 (i32.const 3192) "\02\00\00\00$\00\00\00F\00i\00r\00e\00 \00+\00 \00A\00i\00r\00 \00+\00 \00W\00a\00t\00e\00r") - (data $53 (i32.const 3244) "\1c") - (data $53.1 (i32.const 3256) "\04\00\00\00\08") - (data $54 (i32.const 3276) "\1c") - (data $54.1 (i32.const 3288) "\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data $55 (i32.const 3308) ",") - (data $55.1 (i32.const 3320) "\04\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $56 (i32.const 3356) "\1c") - (data $56.1 (i32.const 3368) "\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data $57 (i32.const 3388) "\1c") - (data $57.1 (i32.const 3400) "\0c\00\00\00\08\00\00\00\01") - (data $58 (i32.const 3420) "\1c") - (data $58.1 (i32.const 3432) "\r\00\00\00\08\00\00\00\02") - (data $59 (i32.const 3452) "\1c") - (data $59.1 (i32.const 3464) "\0e\00\00\00\08\00\00\00\03") - (data $60 (i32.const 3484) "\1c") - (data $60.1 (i32.const 3496) "\0f\00\00\00\08\00\00\00\04") - (data $61 (i32.const 3516) "\1c") - (data $61.1 (i32.const 3528) "\0f\00\00\00\08\00\00\00\05") - (data $62 (i32.const 3548) "\1c") - (data $62.1 (i32.const 3560) "\0e\00\00\00\08\00\00\00\06") - (data $63 (i32.const 3580) "\1c") - (data $63.1 (i32.const 3592) "\0e\00\00\00\08\00\00\00\07") - (data $64 (i32.const 3612) "\1c") - (data $64.1 (i32.const 3624) "\0e\00\00\00\08\00\00\00\08") - (data $65 (i32.const 3644) "\1c") - (data $65.1 (i32.const 3656) "\0e\00\00\00\08\00\00\00\t") - (data $66 (i32.const 3676) "\1c") - (data $66.1 (i32.const 3688) "\0e\00\00\00\08\00\00\00\n") - (data $67 (i32.const 3708) "\1c") - (data $67.1 (i32.const 3720) "\0e\00\00\00\08\00\00\00\0b") - (data $68 (i32.const 3740) "\1c") - (data $68.1 (i32.const 3752) "\0e\00\00\00\08\00\00\00\0c") - (data $69 (i32.const 3772) "\1c") - (data $69.1 (i32.const 3784) "\0e\00\00\00\08\00\00\00\r") - (data $70 (i32.const 3804) ",") - (data $70.1 (i32.const 3816) "\04\00\00\00\10\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01") - (data $71 (i32.const 3852) "\1c") - (data $71.1 (i32.const 3864) "\10\00\00\00\08\00\00\00\0e") - (data $72 (i32.const 3888) "\11\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00$\t\00\00 \00\00\00\04A\00\00\02\t\00\00\04A\00\00\02A\00\00$\1a\00\00$\19") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02") + (data $4 (i32.const 1164) "<") + (data $4.1 (i32.const 1176) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1228) "<") + (data $5.1 (i32.const 1240) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1356) "<") + (data $8.1 (i32.const 1368) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1420) ",") + (data $9.1 (i32.const 1432) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1500) "<") + (data $11.1 (i32.const 1512) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1564) "\1c") + (data $12.1 (i32.const 1576) "\02\00\00\00\02\00\00\00:") + (data $13 (i32.const 1596) "|") + (data $13.1 (i32.const 1608) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $14 (i32.const 1724) "<") + (data $14.1 (i32.const 1736) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $15 (i32.const 1788) "\1c") + (data $15.1 (i32.const 1800) "\02\00\00\00\02\00\00\000") + (data $16 (i32.const 1820) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $17 (i32.const 2220) "\1c\04") + (data $17.1 (i32.const 2232) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $18 (i32.const 3276) "\\") + (data $18.1 (i32.const 3288) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $19 (i32.const 3372) "<") + (data $19.1 (i32.const 3384) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $20 (i32.const 3436) "<") + (data $20.1 (i32.const 3448) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") + (data $21 (i32.const 3500) "<") + (data $21.1 (i32.const 3512) "\02\00\00\00$\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") + (data $22 (i32.const 3564) "\1c") + (data $22.1 (i32.const 3576) "\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $23 (i32.const 3596) "\1c") + (data $23.1 (i32.const 3608) "\04\00\00\00\0c\00\00\00\05\00\00\00\06\00\00\00\07") + (data $24 (i32.const 3628) ",") + (data $24.1 (i32.const 3640) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $25 (i32.const 3676) ",") + (data $25.1 (i32.const 3688) "\01\00\00\00\18\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05") + (data $26 (i32.const 3724) ",") + (data $26.1 (i32.const 3736) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $27 (i32.const 3772) "\1c") + (data $27.1 (i32.const 3784) "\01") + (data $28 (i32.const 3804) "\1c") + (data $28.1 (i32.const 3816) "\04\00\00\00\08\00\00\00\01\00\00\00\02") + (data $29 (i32.const 3836) "\1c") + (data $29.1 (i32.const 3848) "\04\00\00\00\04\00\00\00\01") + (data $30 (i32.const 3868) "\1c") + (data $30.1 (i32.const 3880) "\04") + (data $31 (i32.const 3900) "\1c") + (data $31.1 (i32.const 3912) "\02\00\00\00\02\00\00\001") + (data $32 (i32.const 3932) "\1c") + (data $32.1 (i32.const 3944) "\02\00\00\00\02\00\00\002") + (data $33 (i32.const 3964) "\1c") + (data $33.1 (i32.const 3976) "\08\00\00\00\08\00\00\00P\0f\00\00p\0f") + (data $34 (i32.const 3996) "\1c") + (data $34.1 (i32.const 4008) "\02\00\00\00\02\00\00\003") + (data $35 (i32.const 4028) "\1c") + (data $35.1 (i32.const 4040) "\08\00\00\00\04\00\00\00\b0\0f") + (data $36 (i32.const 4060) "\1c") + (data $36.1 (i32.const 4072) "\02\00\00\00\06\00\00\00a\00n\00t") + (data $37 (i32.const 4092) "\1c") + (data $37.1 (i32.const 4104) "\02\00\00\00\n\00\00\00b\00i\00s\00o\00n") + (data $38 (i32.const 4124) "\1c") + (data $38.1 (i32.const 4136) "\02\00\00\00\n\00\00\00c\00a\00m\00e\00l") + (data $39 (i32.const 4156) "\1c") + (data $39.1 (i32.const 4168) "\02\00\00\00\08\00\00\00d\00u\00c\00k") + (data $40 (i32.const 4188) ",") + (data $40.1 (i32.const 4200) "\02\00\00\00\10\00\00\00e\00l\00e\00p\00h\00a\00n\00t") + (data $41 (i32.const 4236) ",") + (data $41.1 (i32.const 4248) "\08\00\00\00\14\00\00\00\f0\0f\00\00\10\10\00\000\10\00\00P\10\00\00p\10") + (data $42 (i32.const 4284) "|") + (data $42.1 (i32.const 4296) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $43 (i32.const 4412) ",") + (data $43.1 (i32.const 4424) "\08\00\00\00\14\00\00\00\f0\0f\00\00\10\10\00\000\10\00\00P\10\00\00p\10") + (data $44 (i32.const 4460) "\1c") + (data $44.1 (i32.const 4472) "\01") + (data $45 (i32.const 4492) "\1c") + (data $45.1 (i32.const 4504) "\02\00\00\00\06\00\00\00f\00o\00o") + (data $46 (i32.const 4524) "\1c") + (data $46.1 (i32.const 4536) "\01\00\00\00\04\00\00\00\a0\11") + (data $47 (i32.const 4556) ",") + (data $47.1 (i32.const 4568) "\08\00\00\00\14\00\00\00\f0\0f\00\00\10\10\00\000\10\00\00P\10\00\00p\10") + (data $48 (i32.const 4604) "\1c") + (data $48.1 (i32.const 4616) "\n\00\00\00\08") + (data $48.2 (i32.const 4630) "\f8\7f") + (data $49 (i32.const 4636) "\1c") + (data $49.1 (i32.const 4648) "\0b\00\00\00\04\00\00\00\00\00\c0\7f") + (data $50 (i32.const 4668) "\1c") + (data $50.1 (i32.const 4680) "\04\00\00\00\0c\00\00\00\02\00\00\00\t\00\00\00\t") + (data $51 (i32.const 4700) ",") + (data $51.1 (i32.const 4712) "\04\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02") + (data $52 (i32.const 4748) "\1c") + (data $52.1 (i32.const 4760) "\02\00\00\00\08\00\00\00F\00i\00r\00e") + (data $53 (i32.const 4780) "\1c") + (data $53.1 (i32.const 4792) "\02\00\00\00\06\00\00\00A\00i\00r") + (data $54 (i32.const 4812) "\1c") + (data $54.1 (i32.const 4824) "\02\00\00\00\n\00\00\00W\00a\00t\00e\00r") + (data $55 (i32.const 4844) "\1c") + (data $55.1 (i32.const 4856) "\08\00\00\00\0c\00\00\00\a0\12\00\00\c0\12\00\00\e0\12") + (data $56 (i32.const 4876) "\1c") + (data $56.1 (i32.const 4888) "\02\00\00\00\02\00\00\00,") + (data $57 (i32.const 4908) ",") + (data $57.1 (i32.const 4920) "\02\00\00\00\1c\00\00\00F\00i\00r\00e\00,\00A\00i\00r\00,\00W\00a\00t\00e\00r") + (data $58 (i32.const 4956) ",") + (data $58.1 (i32.const 4968) "\02\00\00\00\18\00\00\00F\00i\00r\00e\00A\00i\00r\00W\00a\00t\00e\00r") + (data $59 (i32.const 5004) "\1c") + (data $59.1 (i32.const 5016) "\02\00\00\00\02\00\00\00-") + (data $60 (i32.const 5036) ",") + (data $60.1 (i32.const 5048) "\02\00\00\00\1c\00\00\00F\00i\00r\00e\00-\00A\00i\00r\00-\00W\00a\00t\00e\00r") + (data $61 (i32.const 5084) "\1c") + (data $61.1 (i32.const 5096) "\02\00\00\00\06\00\00\00 \00+\00 ") + (data $62 (i32.const 5116) "<") + (data $62.1 (i32.const 5128) "\02\00\00\00$\00\00\00F\00i\00r\00e\00 \00+\00 \00A\00i\00r\00 \00+\00 \00W\00a\00t\00e\00r") + (data $63 (i32.const 5180) "\1c") + (data $63.1 (i32.const 5192) "\04\00\00\00\08") + (data $64 (i32.const 5212) "\1c") + (data $64.1 (i32.const 5224) "\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $65 (i32.const 5244) ",") + (data $65.1 (i32.const 5256) "\04\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $66 (i32.const 5292) "\1c") + (data $66.1 (i32.const 5304) "\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $67 (i32.const 5324) "\1c") + (data $67.1 (i32.const 5336) "\0c\00\00\00\08\00\00\00\01") + (data $68 (i32.const 5356) "\1c") + (data $68.1 (i32.const 5368) "\r\00\00\00\08\00\00\00\02") + (data $69 (i32.const 5388) "\1c") + (data $69.1 (i32.const 5400) "\0e\00\00\00\08\00\00\00\03") + (data $70 (i32.const 5420) "\1c") + (data $70.1 (i32.const 5432) "\0f\00\00\00\08\00\00\00\04") + (data $71 (i32.const 5452) "\1c") + (data $71.1 (i32.const 5464) "\0f\00\00\00\08\00\00\00\05") + (data $72 (i32.const 5484) "\1c") + (data $72.1 (i32.const 5496) "\0e\00\00\00\08\00\00\00\06") + (data $73 (i32.const 5516) "\1c") + (data $73.1 (i32.const 5528) "\0e\00\00\00\08\00\00\00\07") + (data $74 (i32.const 5548) "\1c") + (data $74.1 (i32.const 5560) "\0e\00\00\00\08\00\00\00\08") + (data $75 (i32.const 5580) "\1c") + (data $75.1 (i32.const 5592) "\0e\00\00\00\08\00\00\00\t") + (data $76 (i32.const 5612) "\1c") + (data $76.1 (i32.const 5624) "\0e\00\00\00\08\00\00\00\n") + (data $77 (i32.const 5644) "\1c") + (data $77.1 (i32.const 5656) "\0e\00\00\00\08\00\00\00\0b") + (data $78 (i32.const 5676) "\1c") + (data $78.1 (i32.const 5688) "\0e\00\00\00\08\00\00\00\0c") + (data $79 (i32.const 5708) "\1c") + (data $79.1 (i32.const 5720) "\0e\00\00\00\08\00\00\00\r") + (data $80 (i32.const 5740) ",") + (data $80.1 (i32.const 5752) "\04\00\00\00\10\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01") + (data $81 (i32.const 5788) "\1c") + (data $81.1 (i32.const 5800) "\10\00\00\00\08\00\00\00\0e") + (data $82 (i32.const 5824) "\11\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00$\t\00\00 \00\00\00\04A\00\00\02\t\00\00\04A\00\00\02A\00\00$\1a\00\00$\19") (table $0 15 15 funcref) (elem $0 (i32.const 1) $start:std/staticarray~anonymous|0 $start:std/staticarray~anonymous|1 $start:std/staticarray~anonymous|2 $start:std/staticarray~anonymous|3 $start:std/staticarray~anonymous|3 $start:std/staticarray~anonymous|5 $start:std/staticarray~anonymous|6 $start:std/staticarray~anonymous|7 $start:std/staticarray~anonymous|8 $start:std/staticarray~anonymous|5 $start:std/staticarray~anonymous|6 $start:std/staticarray~anonymous|5 $start:std/staticarray~anonymous|6 $~lib/util/sort/COMPARATOR~anonymous|0) (export "memory" (memory $0)) @@ -177,7 +195,7 @@ (local $1 i32) i32.const 1056 call $~lib/rt/itcms/__visit - i32.const 1280 + i32.const 3584 call $~lib/rt/itcms/__visit global.get $std/staticarray/arr3 local.tee $0 @@ -191,13 +209,17 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1088 + i32.const 1376 + call $~lib/rt/itcms/__visit + i32.const 3648 call $~lib/rt/itcms/__visit - i32.const 1680 + i32.const 4304 call $~lib/rt/itcms/__visit - i32.const 2336 + i32.const 1184 call $~lib/rt/itcms/__visit - i32.const 1344 + i32.const 2240 + call $~lib/rt/itcms/__visit + i32.const 3296 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -218,7 +240,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1248 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -251,7 +273,7 @@ i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1248 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -260,7 +282,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$267 + block $__inlined_func$~lib/rt/itcms/Object#unlink$279 local.get $0 i32.load offset=4 i32.const -4 @@ -272,19 +294,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 36728 + i32.const 38664 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1248 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$267 + br $__inlined_func$~lib/rt/itcms/Object#unlink$279 end local.get $0 i32.load offset=8 @@ -292,7 +314,7 @@ i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1248 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -321,12 +343,12 @@ i32.const 1 else local.get $1 - i32.const 3888 + i32.const 5824 i32.load i32.gt_u if - i32.const 1088 - i32.const 1536 + i32.const 1376 + i32.const 1440 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -335,7 +357,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 3892 + i32.const 5828 i32.add i32.load i32.const 32 @@ -406,7 +428,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1520 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -420,7 +442,7 @@ i32.lt_u if i32.const 0 - i32.const 1616 + i32.const 1520 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -466,7 +488,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1520 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -549,7 +571,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1520 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -563,7 +585,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1520 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -624,7 +646,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1520 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -657,7 +679,7 @@ i32.lt_u if i32.const 0 - i32.const 1616 + i32.const 1520 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -672,7 +694,7 @@ i32.ne if i32.const 0 - i32.const 1616 + i32.const 1520 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -723,7 +745,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1520 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -795,7 +817,7 @@ i64.lt_u if i32.const 0 - i32.const 1616 + i32.const 1520 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -820,7 +842,7 @@ i32.gt_u if i32.const 0 - i32.const 1616 + i32.const 1520 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -847,7 +869,7 @@ i32.gt_u if i32.const 0 - i32.const 1616 + i32.const 1520 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -919,10 +941,10 @@ if unreachable end - i32.const 36736 + i32.const 38672 i32.const 0 i32.store - i32.const 38304 + i32.const 40240 i32.const 0 i32.store loop $for-loop|0 @@ -933,7 +955,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 36736 + i32.const 38672 i32.add i32.const 0 i32.store offset=4 @@ -951,7 +973,7 @@ i32.add i32.const 2 i32.shl - i32.const 36736 + i32.const 38672 i32.add i32.const 0 i32.store offset=96 @@ -969,21 +991,21 @@ br $for-loop|0 end end - i32.const 36736 - i32.const 38308 + i32.const 38672 + i32.const 40244 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 36736 + i32.const 38672 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 - i32.const 36728 + i32.const 38664 i32.lt_u if return @@ -1014,7 +1036,7 @@ end if i32.const 0 - i32.const 1616 + i32.const 1520 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1111,7 +1133,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 36728 + i32.const 38664 i32.lt_u if local.get $0 @@ -1200,14 +1222,14 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1248 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 36728 + i32.const 38664 i32.lt_u if local.get $0 @@ -1299,7 +1321,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1520 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1351,7 +1373,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1520 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1381,8 +1403,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1344 - i32.const 1616 + i32.const 1184 + i32.const 1520 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1484,7 +1506,7 @@ i32.eqz if i32.const 0 - i32.const 1616 + i32.const 1520 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1499,7 +1521,7 @@ i32.gt_u if i32.const 0 - i32.const 1616 + i32.const 1520 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1518,7 +1540,7 @@ i32.and if i32.const 0 - i32.const 1616 + i32.const 1520 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1585,8 +1607,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1344 - i32.const 1408 + i32.const 1184 + i32.const 1248 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1596,7 +1618,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1617,7 +1639,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end local.get $2 i32.const 0 @@ -1693,6 +1715,204 @@ memory.fill local.get $1 ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 5896 + i32.lt_s + if + i32.const 38688 + i32.const 38736 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1808 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 @@ -1704,7 +1924,7 @@ i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1248 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1844,7 +2064,7 @@ global.set $~argumentsLength local.get $3 local.get $5 - i32.const 3872 + i32.const 5808 i32.load call_indirect (type $0) i32.const 0 @@ -1877,7 +2097,7 @@ global.set $~argumentsLength local.get $7 local.get $3 - i32.const 3872 + i32.const 5808 i32.load call_indirect (type $0) i32.const 0 @@ -1919,7 +2139,7 @@ global.set $~argumentsLength local.get $7 local.get $4 - i32.const 3872 + i32.const 5808 i32.load call_indirect (type $0) i32.const 0 @@ -1979,7 +2199,7 @@ i32.load i32.const 2 global.set $~argumentsLength - i32.const 3872 + i32.const 5808 i32.load call_indirect (type $0) i32.const 0 @@ -2001,7 +2221,7 @@ i32.load i32.const 2 global.set $~argumentsLength - i32.const 3872 + i32.const 5808 i32.load call_indirect (type $0) i32.const 31 @@ -2072,7 +2292,7 @@ i32.load i32.const 2 global.set $~argumentsLength - i32.const 3872 + i32.const 5808 i32.load call_indirect (type $0) i32.const 0 @@ -2177,7 +2397,7 @@ global.set $~argumentsLength local.get $6 local.get $7 - i32.const 3872 + i32.const 5808 i32.load call_indirect (type $0) i32.const 0 @@ -2220,208 +2440,220 @@ local.get $1 i32.sub ) - (func $~lib/staticarray/StaticArray~visit (param $0 i32) - (local $1 i32) + (func $~start + call $start:std/staticarray + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - local.get $0 - i32.const 20 + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - i32.load offset=16 - i32.add - local.set $1 - loop $while-continue|0 + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 5896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $~lib/rt/itcms/__visit - end - local.get $0 - i32.const 4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$284 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 i32.add - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - 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/staticarray/StaticArray - block $std/staticarray/Ref - block $~lib/staticarray/StaticArray - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $~lib/array/Array $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - local.get $0 - call $~lib/staticarray/StaticArray~visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - br $folding-inner1 - end - local.get $0 - call $~lib/staticarray/StaticArray~visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - br $folding-inner1 - end - return - end - return - end - unreachable + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1152 + local.set $0 + br $__inlined_func$~lib/string/String#concat$284 end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 local.get $0 - i32.load - call $~lib/rt/itcms/__visit + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - return end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub + i32.const 8 + i32.add global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 38688 + i32.const 38736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5896 + i32.lt_s + if + i32.const 38688 + i32.const 38736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1088 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - br_if $folding-inner3 + local.get $0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1120 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 + local.get $0 + i32.const 3392 + i32.const 2626 + i32.const 5 call $~lib/builtins/abort unreachable ) - (func $~start - call $start:std/staticarray - ) (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2442,8 +2674,8 @@ i32.shr_u i32.ge_u if - i32.const 1088 - i32.const 1152 + i32.const 1376 + i32.const 3456 i32.const 78 i32.const 41 call $~lib/builtins/abort @@ -2466,11 +2698,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2491,8 +2723,8 @@ i32.const 1 i32.le_u if - i32.const 1088 - i32.const 1152 + i32.const 1376 + i32.const 3456 i32.const 93 i32.const 41 call $~lib/builtins/abort @@ -2518,7 +2750,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2539,7 +2771,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2568,8 +2800,8 @@ local.get $0 return end - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2581,11 +2813,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2612,11 +2844,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2659,11 +2891,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2680,8 +2912,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1088 - i32.const 1776 + i32.const 1376 + i32.const 3744 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -2711,11 +2943,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2750,8 +2982,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1680 - i32.const 1152 + i32.const 3648 + i32.const 3456 i32.const 178 i32.const 7 call $~lib/builtins/abort @@ -2798,11 +3030,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2928,11 +3160,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2974,11 +3206,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2999,8 +3231,8 @@ i32.shr_u i32.ge_u if - i32.const 1088 - i32.const 1152 + i32.const 1376 + i32.const 3456 i32.const 78 i32.const 41 call $~lib/builtins/abort @@ -3018,8 +3250,8 @@ local.get $0 i32.eqz if - i32.const 2336 - i32.const 1152 + i32.const 4304 + i32.const 3456 i32.const 82 i32.const 40 call $~lib/builtins/abort @@ -3041,11 +3273,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3144,7 +3376,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$106 + block $__inlined_func$~lib/util/string/compareImpl$101 loop $while-continue|1 local.get $0 local.tee $3 @@ -3164,7 +3396,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$106 + br_if $__inlined_func$~lib/util/string/compareImpl$101 local.get $2 i32.const 2 i32.add @@ -3205,11 +3437,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3240,8 +3472,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1680 - i32.const 1152 + i32.const 3648 + i32.const 3456 i32.const 178 i32.const 7 call $~lib/builtins/abort @@ -3350,7 +3582,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3367,7 +3599,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3376,7 +3608,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 + block $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$285 local.get $0 i32.const 20 i32.sub @@ -3396,7 +3628,7 @@ global.set $~lib/memory/__stack_pointer i32.const -1 local.set $2 - br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 + br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$285 end local.get $2 i32.const 0 @@ -3438,7 +3670,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 + br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$285 end local.get $2 i32.const 1 @@ -3463,8 +3695,8 @@ i32.ge_s return end - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3477,11 +3709,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3569,11 +3801,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3658,11 +3890,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3715,11 +3947,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3742,7 +3974,7 @@ i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - i32.const 2928 + i32.const 1152 return end local.get $5 @@ -3758,7 +3990,7 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 2928 + i32.const 1152 local.get $0 select return @@ -3929,11 +4161,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3981,7 +4213,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4024,7 +4256,7 @@ local.get $8 local.get $9 local.get $0 - i32.const 3472 + i32.const 5408 i32.load call_indirect (type $1) if @@ -4036,7 +4268,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4057,7 +4289,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -4078,8 +4310,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1680 - i32.const 1776 + i32.const 3648 + i32.const 3744 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -4088,7 +4320,7 @@ global.get $~lib/memory/__stack_pointer local.get $10 i32.store - block $__inlined_func$~lib/rt/itcms/__renew$224 + block $__inlined_func$~lib/rt/itcms/__renew$226 i32.const 1073741820 local.get $1 i32.const 1 @@ -4131,7 +4363,7 @@ i32.store offset=16 local.get $1 local.set $2 - br $__inlined_func$~lib/rt/itcms/__renew$224 + br $__inlined_func$~lib/rt/itcms/__renew$226 end local.get $4 local.get $3 @@ -4208,8 +4440,8 @@ local.get $10 return end - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4224,11 +4456,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4298,11 +4530,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4373,11 +4605,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4446,11 +4678,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4532,11 +4764,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4579,7 +4811,7 @@ local.get $1 local.get $1 local.get $2 - i32.const 3872 + i32.const 5808 i32.load call_indirect (type $0) i32.const 0 @@ -4598,7 +4830,7 @@ select local.tee $1 local.get $4 - i32.const 3872 + i32.const 5808 i32.load call_indirect (type $0) i32.const 0 @@ -4630,7 +4862,7 @@ local.get $1 local.get $1 local.get $2 - i32.const 3872 + i32.const 5808 i32.load call_indirect (type $0) i32.const 0 @@ -4647,7 +4879,7 @@ br $folding-inner0 end global.get $~lib/memory/__stack_pointer - i32.const 3872 + i32.const 5808 i32.store local.get $0 i32.const 0 @@ -4716,7 +4948,7 @@ i32.add local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 3872 + i32.const 5808 i32.store local.get $0 i32.const 0 @@ -4733,7 +4965,7 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 3872 + i32.const 5808 i32.store local.get $0 i32.const 0 @@ -4757,7 +4989,7 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 3872 + i32.const 5808 i32.store local.get $0 local.get $4 @@ -4776,7 +5008,7 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 3872 + i32.const 5808 i32.store local.get $0 local.get $5 @@ -4844,7 +5076,7 @@ i32.add local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 3872 + i32.const 5808 i32.store local.get $0 local.get $7 @@ -4909,7 +5141,7 @@ i32.add local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 3872 + i32.const 5808 i32.store local.get $0 local.get $3 @@ -4957,13 +5189,45 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 104 memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 38664 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/pinSpace + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/toSpace + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store @@ -4974,7 +5238,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -4991,7 +5255,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -5013,7 +5277,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -5025,32 +5289,32 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 9 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1280 + i32.const 3584 i32.store - i32.const 1280 + i32.const 3584 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 2 i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1280 + i32.const 3584 i32.store - i32.const 1276 + i32.const 3580 i32.load i32.const 2 i32.shr_u @@ -5058,71 +5322,39 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1280 + i32.const 3584 i32.store - i32.const 1280 + i32.const 3584 i32.const 4 call $~lib/staticarray/StaticArray#__set global.get $~lib/memory/__stack_pointer - i32.const 1280 + i32.const 3584 i32.store - i32.const 1280 + i32.const 3584 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 4 i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - i32.const 36728 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1460 - i32.const 1456 - i32.store - i32.const 1464 - i32.const 1456 - i32.store - i32.const 1456 - global.set $~lib/rt/itcms/pinSpace - i32.const 1492 - i32.const 1488 - i32.store - i32.const 1496 - i32.const 1488 - i32.store - i32.const 1488 - global.set $~lib/rt/itcms/toSpace - i32.const 1572 - i32.const 1568 - i32.store - i32.const 1576 - i32.const 1568 - i32.store - i32.const 1568 - global.set $~lib/rt/itcms/fromSpace i32.const 12 i32.const 4 call $~lib/rt/itcms/__new local.tee $5 - i32.const 1312 + i32.const 3616 i32.const 12 memory.copy local.get $5 @@ -5138,7 +5370,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -5155,7 +5387,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -5172,7 +5404,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -5192,7 +5424,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -5216,7 +5448,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -5226,7 +5458,7 @@ i32.const 4 call $~lib/rt/itcms/__new local.tee $5 - i32.const 1312 + i32.const 3616 i32.const 12 memory.copy local.get $5 @@ -5242,7 +5474,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -5282,7 +5514,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -5313,7 +5545,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -5340,7 +5572,7 @@ call $~lib/staticarray/StaticArray#__get if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 46 i32.const 5 call $~lib/builtins/abort @@ -5356,7 +5588,7 @@ global.get $~lib/memory/__stack_pointer i32.const 6 i32.const 7 - i32.const 1728 + i32.const 3696 call $~lib/rt/__newArray local.tee $0 i32.store offset=12 @@ -5387,7 +5619,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -5419,7 +5651,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 58 i32.const 5 call $~lib/builtins/abort @@ -5435,7 +5667,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 7 - i32.const 1824 + i32.const 3792 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -5456,7 +5688,7 @@ i32.shr_u if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -5467,7 +5699,7 @@ i32.const 4 call $~lib/rt/itcms/__new local.tee $1 - i32.const 1856 + i32.const 3824 i64.load align=1 i64.store align=1 local.get $1 @@ -5480,7 +5712,7 @@ i32.const 4 call $~lib/rt/itcms/__new local.tee $5 - i32.const 1888 + i32.const 3856 i32.load align=1 i32.store align=1 global.get $~lib/memory/__stack_pointer @@ -5504,7 +5736,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 69 i32.const 3 call $~lib/builtins/abort @@ -5518,7 +5750,7 @@ i32.const 4 call $~lib/rt/itcms/__new local.tee $5 - i32.const 1920 + i32.const 3888 i32.const 0 memory.copy global.get $~lib/memory/__stack_pointer @@ -5550,7 +5782,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 71 i32.const 3 call $~lib/builtins/abort @@ -5561,7 +5793,7 @@ i32.const 8 call $~lib/rt/itcms/__new local.tee $1 - i32.const 2016 + i32.const 3984 i64.load align=1 i64.store align=1 local.get $1 @@ -5574,7 +5806,7 @@ i32.const 8 call $~lib/rt/itcms/__new local.tee $6 - i32.const 2080 + i32.const 4048 i32.load align=1 i32.store align=1 global.get $~lib/memory/__stack_pointer @@ -5585,7 +5817,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -5617,8 +5849,8 @@ i32.const 268435455 i32.gt_u if - i32.const 1680 - i32.const 1152 + i32.const 3648 + i32.const 3456 i32.const 178 i32.const 7 call $~lib/builtins/abort @@ -5639,7 +5871,7 @@ call $~lib/rt/itcms/__new local.tee $8 i32.store offset=4 - loop $for-loop|03 + loop $for-loop|02 local.get $0 local.get $2 i32.gt_u @@ -5661,7 +5893,7 @@ i32.const 4 i32.add local.set $2 - br $for-loop|03 + br $for-loop|02 end end local.get $0 @@ -5674,7 +5906,7 @@ local.set $2 i32.const 0 local.set $0 - loop $for-loop|14 + loop $for-loop|13 local.get $0 local.get $2 i32.lt_u @@ -5696,7 +5928,7 @@ i32.const 4 i32.add local.set $0 - br $for-loop|14 + br $for-loop|13 end end global.get $~lib/memory/__stack_pointer @@ -5718,7 +5950,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 76 i32.const 3 call $~lib/builtins/abort @@ -5729,7 +5961,7 @@ i32.const 8 call $~lib/rt/itcms/__new local.tee $2 - i32.const 2288 + i32.const 4256 i32.const 20 memory.copy local.get $2 @@ -5766,7 +5998,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -5813,7 +6045,7 @@ i32.eqz if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 86 i32.const 5 call $~lib/builtins/abort @@ -5849,7 +6081,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 90 i32.const 3 call $~lib/builtins/abort @@ -5866,12 +6098,12 @@ local.get $1 i32.store local.get $1 - i32.const 2144 + i32.const 4112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 91 i32.const 3 call $~lib/builtins/abort @@ -5888,12 +6120,12 @@ local.get $0 i32.store local.get $0 - i32.const 2176 + i32.const 4144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 92 i32.const 3 call $~lib/builtins/abort @@ -5933,7 +6165,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 95 i32.const 3 call $~lib/builtins/abort @@ -5970,7 +6202,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -5998,7 +6230,7 @@ i32.shr_u if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 101 i32.const 3 call $~lib/builtins/abort @@ -6028,7 +6260,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -6045,12 +6277,12 @@ local.get $0 i32.store local.get $0 - i32.const 2240 + i32.const 4208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 105 i32.const 3 call $~lib/builtins/abort @@ -6077,7 +6309,7 @@ i32.shr_u if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -6106,7 +6338,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 111 i32.const 3 call $~lib/builtins/abort @@ -6123,12 +6355,12 @@ local.get $0 i32.store local.get $0 - i32.const 2176 + i32.const 4144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 112 i32.const 3 call $~lib/builtins/abort @@ -6139,7 +6371,7 @@ i32.const 8 call $~lib/rt/itcms/__new local.tee $1 - i32.const 2464 + i32.const 4432 i32.const 20 memory.copy local.get $1 @@ -6150,7 +6382,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 9 - i32.const 2512 + i32.const 4480 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -6178,7 +6410,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 122 i32.const 3 call $~lib/builtins/abort @@ -6190,7 +6422,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 9 - i32.const 2576 + i32.const 4544 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -6220,7 +6452,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 126 i32.const 3 call $~lib/builtins/abort @@ -6231,7 +6463,7 @@ i32.const 8 call $~lib/rt/itcms/__new local.tee $1 - i32.const 2608 + i32.const 4576 i32.const 20 memory.copy local.get $1 @@ -6240,14 +6472,14 @@ local.get $1 i32.store local.get $1 - i32.const 2144 + i32.const 4112 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes i32.const 1 i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 133 i32.const 3 call $~lib/builtins/abort @@ -6257,12 +6489,12 @@ local.get $1 i32.store local.get $1 - i32.const 2544 + i32.const 4512 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 134 i32.const 3 call $~lib/builtins/abort @@ -6272,12 +6504,12 @@ local.get $1 i32.store local.get $1 - i32.const 2240 + i32.const 4208 i32.const 5 call $~lib/staticarray/StaticArray<~lib/string/String>#includes if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 135 i32.const 3 call $~lib/builtins/abort @@ -6287,25 +6519,25 @@ local.get $1 i32.store local.get $1 - i32.const 2240 + i32.const 4208 i32.const -1 call $~lib/staticarray/StaticArray<~lib/string/String>#includes i32.const 1 i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 136 i32.const 3 call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#includes$276 (result i32) + block $__inlined_func$~lib/staticarray/StaticArray#includes$287 (result i32) i32.const 8 i32.const 10 call $~lib/rt/itcms/__new local.tee $0 - i32.const 2656 + i32.const 4624 i64.load align=1 i64.store align=1 global.get $~lib/memory/__stack_pointer @@ -6318,7 +6550,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -6341,7 +6573,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$~lib/staticarray/StaticArray#includes$276 + br $__inlined_func$~lib/staticarray/StaticArray#includes$287 end loop $while-continue|0 local.get $1 @@ -6363,7 +6595,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1 - br $__inlined_func$~lib/staticarray/StaticArray#includes$276 + br $__inlined_func$~lib/staticarray/StaticArray#includes$287 end local.get $1 i32.const 1 @@ -6381,18 +6613,18 @@ i32.eqz if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 138 i32.const 3 call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#includes$277 (result i32) + block $__inlined_func$~lib/staticarray/StaticArray#includes$288 (result i32) i32.const 4 i32.const 11 call $~lib/rt/itcms/__new local.tee $0 - i32.const 2688 + i32.const 4656 i32.load align=1 i32.store align=1 global.get $~lib/memory/__stack_pointer @@ -6405,7 +6637,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -6428,7 +6660,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$~lib/staticarray/StaticArray#includes$277 + br $__inlined_func$~lib/staticarray/StaticArray#includes$288 end loop $while-continue|030 local.get $1 @@ -6450,7 +6682,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1 - br $__inlined_func$~lib/staticarray/StaticArray#includes$277 + br $__inlined_func$~lib/staticarray/StaticArray#includes$288 end local.get $1 i32.const 1 @@ -6468,7 +6700,7 @@ i32.eqz if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 139 i32.const 3 call $~lib/builtins/abort @@ -6479,7 +6711,7 @@ i32.const 4 call $~lib/rt/itcms/__new local.tee $1 - i32.const 2720 + i32.const 4688 i32.const 12 memory.copy local.get $1 @@ -6493,7 +6725,7 @@ call $~lib/staticarray/StaticArray#indexOf if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 145 i32.const 3 call $~lib/builtins/abort @@ -6510,7 +6742,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 146 i32.const 3 call $~lib/builtins/abort @@ -6527,7 +6759,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 147 i32.const 3 call $~lib/builtins/abort @@ -6544,7 +6776,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 148 i32.const 3 call $~lib/builtins/abort @@ -6559,7 +6791,7 @@ call $~lib/staticarray/StaticArray#indexOf if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 149 i32.const 3 call $~lib/builtins/abort @@ -6570,7 +6802,7 @@ i32.const 4 call $~lib/rt/itcms/__new local.tee $1 - i32.const 2752 + i32.const 4720 i32.const 16 memory.copy local.get $1 @@ -6587,7 +6819,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 155 i32.const 3 call $~lib/builtins/abort @@ -6605,7 +6837,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 156 i32.const 3 call $~lib/builtins/abort @@ -6622,7 +6854,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 157 i32.const 3 call $~lib/builtins/abort @@ -6637,7 +6869,7 @@ call $~lib/staticarray/StaticArray#lastIndexOf if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 158 i32.const 3 call $~lib/builtins/abort @@ -6652,7 +6884,7 @@ call $~lib/staticarray/StaticArray#lastIndexOf if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 159 i32.const 3 call $~lib/builtins/abort @@ -6669,7 +6901,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 160 i32.const 3 call $~lib/builtins/abort @@ -6680,7 +6912,7 @@ i32.const 8 call $~lib/rt/itcms/__new local.tee $1 - i32.const 2896 + i32.const 4864 i32.const 12 memory.copy local.get $1 @@ -6689,19 +6921,19 @@ local.get $1 i32.store offset=24 local.get $1 - i32.const 2960 + i32.const 4896 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2992 + i32.const 4928 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 166 i32.const 3 call $~lib/builtins/abort @@ -6711,19 +6943,19 @@ local.get $1 i32.store offset=24 local.get $1 - i32.const 2928 + i32.const 1152 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3040 + i32.const 4976 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 167 i32.const 3 call $~lib/builtins/abort @@ -6733,19 +6965,19 @@ local.get $1 i32.store offset=24 local.get $1 - i32.const 3088 + i32.const 5024 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3120 + i32.const 5056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 168 i32.const 3 call $~lib/builtins/abort @@ -6755,19 +6987,19 @@ local.get $1 i32.store offset=24 local.get $1 - i32.const 3168 + i32.const 5104 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3200 + i32.const 5136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 169 i32.const 3 call $~lib/builtins/abort @@ -6777,7 +7009,7 @@ local.get $1 i32.store offset=48 local.get $1 - i32.const 2960 + i32.const 4896 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 global.get $~lib/memory/__stack_pointer @@ -6791,7 +7023,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -6801,7 +7033,7 @@ local.get $1 i32.store local.get $1 - i32.const 2960 + i32.const 4896 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $1 global.get $~lib/memory/__stack_pointer @@ -6817,7 +7049,7 @@ i32.eqz if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 170 i32.const 3 call $~lib/builtins/abort @@ -6828,7 +7060,7 @@ i32.const 4 call $~lib/rt/itcms/__new local.tee $1 - i32.const 3264 + i32.const 5200 i64.load align=1 i64.store align=1 local.get $1 @@ -6843,7 +7075,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -6857,7 +7089,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -6914,7 +7146,7 @@ call $~lib/staticarray/StaticArray#__get if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 178 i32.const 3 call $~lib/builtins/abort @@ -6930,7 +7162,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 179 i32.const 3 call $~lib/builtins/abort @@ -6941,7 +7173,7 @@ i32.const 4 call $~lib/rt/itcms/__new local.tee $1 - i32.const 3296 + i32.const 5232 i32.const 12 memory.copy local.get $1 @@ -6954,7 +7186,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -7032,7 +7264,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 187 i32.const 3 call $~lib/builtins/abort @@ -7048,7 +7280,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 188 i32.const 3 call $~lib/builtins/abort @@ -7064,7 +7296,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 189 i32.const 3 call $~lib/builtins/abort @@ -7075,7 +7307,7 @@ i32.const 4 call $~lib/rt/itcms/__new local.tee $1 - i32.const 3328 + i32.const 5264 i32.const 20 memory.copy local.get $1 @@ -7090,7 +7322,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -7104,7 +7336,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -7176,7 +7408,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 197 i32.const 3 call $~lib/builtins/abort @@ -7192,7 +7424,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 198 i32.const 3 call $~lib/builtins/abort @@ -7208,7 +7440,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 199 i32.const 3 call $~lib/builtins/abort @@ -7224,7 +7456,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 200 i32.const 3 call $~lib/builtins/abort @@ -7240,7 +7472,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 201 i32.const 3 call $~lib/builtins/abort @@ -7251,7 +7483,7 @@ i32.const 4 call $~lib/rt/itcms/__new local.tee $2 - i32.const 3376 + i32.const 5312 i32.const 12 memory.copy local.get $2 @@ -7261,14 +7493,14 @@ local.get $2 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3408 + i32.const 5344 i32.store offset=24 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -7322,7 +7554,7 @@ local.get $9 local.get $0 local.get $2 - i32.const 3408 + i32.const 5344 i32.load call_indirect (type $1) i32.store @@ -7349,7 +7581,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 210 i32.const 3 call $~lib/builtins/abort @@ -7365,7 +7597,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 211 i32.const 3 call $~lib/builtins/abort @@ -7381,7 +7613,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 212 i32.const 3 call $~lib/builtins/abort @@ -7391,14 +7623,14 @@ local.get $2 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3440 + i32.const 5376 i32.store offset=24 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -7434,9 +7666,9 @@ global.set $~argumentsLength local.get $1 local.get $2 - i32.const 3440 + i32.const 5376 i32.load - call_indirect (type $5) + call_indirect (type $6) local.get $1 i32.const 1 i32.add @@ -7453,7 +7685,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 216 i32.const 3 call $~lib/builtins/abort @@ -7463,7 +7695,7 @@ local.get $2 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3472 + i32.const 5408 i32.store offset=24 global.get $~lib/memory/__stack_pointer local.get $2 @@ -7479,7 +7711,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 220 i32.const 3 call $~lib/builtins/abort @@ -7495,7 +7727,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 221 i32.const 3 call $~lib/builtins/abort @@ -7511,7 +7743,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 222 i32.const 3 call $~lib/builtins/abort @@ -7521,7 +7753,7 @@ local.get $2 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3504 + i32.const 5440 i32.store offset=24 i32.const 0 local.set $1 @@ -7530,7 +7762,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -7569,9 +7801,9 @@ local.get $6 local.get $0 local.get $2 - i32.const 3504 + i32.const 5440 i32.load - call_indirect (type $6) + call_indirect (type $7) local.set $1 local.get $0 i32.const 1 @@ -7589,7 +7821,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 226 i32.const 3 call $~lib/builtins/abort @@ -7599,7 +7831,7 @@ local.get $2 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3536 + i32.const 5472 i32.store offset=24 i32.const 0 local.set $1 @@ -7608,7 +7840,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -7647,9 +7879,9 @@ local.get $5 local.get $0 local.get $2 - i32.const 3536 + i32.const 5472 i32.load - call_indirect (type $6) + call_indirect (type $7) local.set $1 local.get $0 i32.const 1 @@ -7667,7 +7899,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 230 i32.const 3 call $~lib/builtins/abort @@ -7677,15 +7909,15 @@ local.get $2 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3568 + i32.const 5504 i32.store offset=24 local.get $2 - i32.const 3568 + i32.const 5504 call $~lib/staticarray/StaticArray#some i32.eqz if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 233 i32.const 3 call $~lib/builtins/abort @@ -7695,14 +7927,14 @@ local.get $2 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3600 + i32.const 5536 i32.store offset=24 local.get $2 - i32.const 3600 + i32.const 5536 call $~lib/staticarray/StaticArray#some if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 234 i32.const 3 call $~lib/builtins/abort @@ -7712,15 +7944,15 @@ local.get $2 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3632 + i32.const 5568 i32.store offset=24 local.get $2 - i32.const 3632 + i32.const 5568 call $~lib/staticarray/StaticArray#every i32.eqz if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 237 i32.const 3 call $~lib/builtins/abort @@ -7730,14 +7962,14 @@ local.get $2 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3664 + i32.const 5600 i32.store offset=24 local.get $2 - i32.const 3664 + i32.const 5600 call $~lib/staticarray/StaticArray#every if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 238 i32.const 3 call $~lib/builtins/abort @@ -7747,16 +7979,16 @@ local.get $2 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3696 + i32.const 5632 i32.store offset=24 local.get $2 - i32.const 3696 + i32.const 5632 call $~lib/staticarray/StaticArray#findIndex i32.const 1 i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 241 i32.const 3 call $~lib/builtins/abort @@ -7766,16 +7998,16 @@ local.get $2 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3728 + i32.const 5664 i32.store offset=24 local.get $2 - i32.const 3728 + i32.const 5664 call $~lib/staticarray/StaticArray#findIndex i32.const -1 i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 242 i32.const 3 call $~lib/builtins/abort @@ -7785,16 +8017,16 @@ local.get $2 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3760 + i32.const 5696 i32.store offset=24 local.get $2 - i32.const 3760 + i32.const 5696 call $~lib/staticarray/StaticArray#findLastIndex i32.const 1 i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 245 i32.const 3 call $~lib/builtins/abort @@ -7804,16 +8036,16 @@ local.get $2 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3792 + i32.const 5728 i32.store offset=24 local.get $2 - i32.const 3792 + i32.const 5728 call $~lib/staticarray/StaticArray#findLastIndex i32.const -1 i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 246 i32.const 3 call $~lib/builtins/abort @@ -7824,7 +8056,7 @@ i32.const 4 call $~lib/rt/itcms/__new local.tee $1 - i32.const 3824 + i32.const 5760 i32.const 16 memory.copy local.get $1 @@ -7839,7 +8071,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -7849,20 +8081,20 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 3872 + i32.const 5808 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3872 + i32.const 5808 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -7879,7 +8111,7 @@ i32.shr_u local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 3872 + i32.const 5808 i32.store local.get $1 local.get $0 @@ -7900,7 +8132,7 @@ call $~lib/staticarray/StaticArray#__get if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 255 i32.const 3 call $~lib/builtins/abort @@ -7916,7 +8148,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 256 i32.const 3 call $~lib/builtins/abort @@ -7932,7 +8164,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 257 i32.const 3 call $~lib/builtins/abort @@ -7948,13 +8180,13 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 3520 i32.const 258 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 36728 + i32.const 38664 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 @@ -7995,8 +8227,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8011,11 +8243,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3960 + i32.const 5896 i32.lt_s if - i32.const 36752 - i32.const 36800 + i32.const 38688 + i32.const 38736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8066,4 +8298,192 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/staticarray/StaticArray~visit (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + 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/staticarray/StaticArray + block $std/staticarray/Ref + block $~lib/staticarray/StaticArray + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $~lib/array/Array $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + local.get $0 + call $~lib/staticarray/StaticArray~visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5896 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner1 + end + local.get $0 + call $~lib/staticarray/StaticArray~visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5896 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner1 + end + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5896 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 38688 + i32.const 38736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) ) diff --git a/tests/compiler/std/string-casemapping.debug.wat b/tests/compiler/std/string-casemapping.debug.wat index 7c96ce666c..a81464199a 100644 --- a/tests/compiler/std/string-casemapping.debug.wat +++ b/tests/compiler/std/string-casemapping.debug.wat @@ -7,20 +7,20 @@ (type $5 (func (param i32 i32 i32))) (type $6 (func (param i64 i32) (result i32))) (type $7 (func (param i32 i64 i32))) - (type $8 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i64 i32 i32))) (type $9 (func (param i32 i32 i64) (result i32))) (type $10 (func (result i32))) (type $11 (func (param i32 i32 i32 i32 i32) (result i32))) (type $12 (func (param i32 i32 f64 f64 f64 f64 f64))) (type $13 (func (param i64) (result i32))) - (type $14 (func (param i32 i64 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $14 (func (param i32 i32 i32 i32))) (import "string_casemapping" "toLowerCaseFromIndex" (func $std/string-casemapping/toLowerCaseFromIndex (param i32 i32) (result i32))) (import "string_casemapping" "toUpperCaseFromIndex" (func $std/string-casemapping/toUpperCaseFromIndex (param i32 i32) (result i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -32,193 +32,196 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/util/casemap/SPECIALS_UPPER i32 (i32.const 464)) - (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/util/casemap/SPECIALS_UPPER i32 (i32.const 2400)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) - (global $~lib/rt/__rtti_base i32 (i32.const 20032)) - (global $~lib/memory/__data_end i32 (i32.const 20056)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 52824)) - (global $~lib/memory/__heap_base i32 (i32.const 52824)) + (global $~lib/rt/__rtti_base i32 (i32.const 20192)) + (global $~lib/memory/__data_end i32 (i32.const 20216)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 52984)) + (global $~lib/memory/__heap_base i32 (i32.const 52984)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 444) "L\03\00\00\00\00\00\00\00\00\00\00\04\00\00\000\03\00\00\df\00S\00S\00\00\00I\01\bc\02N\00\00\00\f0\01J\00\0c\03\00\00\90\03\99\03\08\03\01\03\b0\03\a5\03\08\03\01\03\87\055\05R\05\00\00\96\1eH\001\03\00\00\97\1eT\00\08\03\00\00\98\1eW\00\n\03\00\00\99\1eY\00\n\03\00\00\9a\1eA\00\be\02\00\00P\1f\a5\03\13\03\00\00R\1f\a5\03\13\03\00\03T\1f\a5\03\13\03\01\03V\1f\a5\03\13\03B\03\80\1f\08\1f\99\03\00\00\81\1f\t\1f\99\03\00\00\82\1f\n\1f\99\03\00\00\83\1f\0b\1f\99\03\00\00\84\1f\0c\1f\99\03\00\00\85\1f\r\1f\99\03\00\00\86\1f\0e\1f\99\03\00\00\87\1f\0f\1f\99\03\00\00\88\1f\08\1f\99\03\00\00\89\1f\t\1f\99\03\00\00\8a\1f\n\1f\99\03\00\00\8b\1f\0b\1f\99\03\00\00\8c\1f\0c\1f\99\03\00\00\8d\1f\r\1f\99\03\00\00\8e\1f\0e\1f\99\03\00\00\8f\1f\0f\1f\99\03\00\00\90\1f(\1f\99\03\00\00\91\1f)\1f\99\03\00\00\92\1f*\1f\99\03\00\00\93\1f+\1f\99\03\00\00\94\1f,\1f\99\03\00\00\95\1f-\1f\99\03\00\00\96\1f.\1f\99\03\00\00\97\1f/\1f\99\03\00\00\98\1f(\1f\99\03\00\00\99\1f)\1f\99\03\00\00\9a\1f*\1f\99\03\00\00\9b\1f+\1f\99\03\00\00\9c\1f,\1f\99\03\00\00\9d\1f-\1f\99\03\00\00\9e\1f.\1f\99\03\00\00\9f\1f/\1f\99\03\00\00\a0\1fh\1f\99\03\00\00\a1\1fi\1f\99\03\00\00\a2\1fj\1f\99\03\00\00\a3\1fk\1f\99\03\00\00\a4\1fl\1f\99\03\00\00\a5\1fm\1f\99\03\00\00\a6\1fn\1f\99\03\00\00\a7\1fo\1f\99\03\00\00\a8\1fh\1f\99\03\00\00\a9\1fi\1f\99\03\00\00\aa\1fj\1f\99\03\00\00\ab\1fk\1f\99\03\00\00\ac\1fl\1f\99\03\00\00\ad\1fm\1f\99\03\00\00\ae\1fn\1f\99\03\00\00\af\1fo\1f\99\03\00\00\b2\1f\ba\1f\99\03\00\00\b3\1f\91\03\99\03\00\00\b4\1f\86\03\99\03\00\00\b6\1f\91\03B\03\00\00\b7\1f\91\03B\03\99\03\bc\1f\91\03\99\03\00\00\c2\1f\ca\1f\99\03\00\00\c3\1f\97\03\99\03\00\00\c4\1f\89\03\99\03\00\00\c6\1f\97\03B\03\00\00\c7\1f\97\03B\03\99\03\cc\1f\97\03\99\03\00\00\d2\1f\99\03\08\03\00\03\d3\1f\99\03\08\03\01\03\d6\1f\99\03B\03\00\00\d7\1f\99\03\08\03B\03\e2\1f\a5\03\08\03\00\03\e3\1f\a5\03\08\03\01\03\e4\1f\a1\03\13\03\00\00\e6\1f\a5\03B\03\00\00\e7\1f\a5\03\08\03B\03\f2\1f\fa\1f\99\03\00\00\f3\1f\a9\03\99\03\00\00\f4\1f\8f\03\99\03\00\00\f6\1f\a9\03B\03\00\00\f7\1f\a9\03B\03\99\03\fc\1f\a9\03\99\03\00\00\00\fbF\00F\00\00\00\01\fbF\00I\00\00\00\02\fbF\00L\00\00\00\03\fbF\00F\00I\00\04\fbF\00F\00L\00\05\fbS\00T\00\00\00\06\fbS\00T\00\00\00\13\fbD\05F\05\00\00\14\fbD\055\05\00\00\15\fbD\05;\05\00\00\16\fbN\05F\05\00\00\17\fbD\05=\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 1292) "\00\01\02\03\04\05\06\07\08\t\n\0b\0c\r\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\7f") - (data $11 (i32.const 1420) "\07\08\t\n\0b\0c\06\06\06\06\06\06\06\06\06\06\r\06\06\0e\06\06\06\06\06\06\06\06\0f\10\11\12\06\13\06\06\06\06\06\06\06\06\06\06\14\15\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\16\17\06\06\06\18\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\19\06\06\06\06\1a\06\06\06\06\06\06\06\1b\06\06\06\06\06\06\06\06\06\06\06\1c\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1d\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1e\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$++++++++\01\00TVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00+++++++\07++[VVVVVVVJVV\051P1P1P1P1P1P1P1P$Py1P1P18P1P1P1P1P1P1P1PN1\02N\r\rN\03N\00$n\00N1&nQN$PN9\14\81\1b\1d\1dS1P1P\r1P1P1P\1bS$P1\02\\{\\{\\{\\{\\{\14y\\{\\{\\-+I\03H\03x\\{\14\00\96\n\01+(\06\06\00*\06**+\07\bb\b5+\1e\00+\07+++\01++++++++++++++++++++++++++++++++\01+++++++++++++++++++++++*+++++++++++++\cdF\cd+\00%+\07\01\06\01UVVVVVUVV\02$\81\81\81\81\81\15\81\81\81\00\00+\00\b2\d1\b2\d1\b2\d1\b2\d1\00\00\cd\cc\01\00\d7\d7\d7\d7\d7\83\81\81\81\81\81\81\81\81\81\81\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\1c\00\00\00\00\001P1P1P1P1P1\02\00\001P1P1P1P1P1P1P1P1PN1P1PN1P1P1P1P1P1P1P1\02\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6*++++++++++++\00\00\00TVVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00TVVVVVVVVVVVV\0c\00\0c*+++++++++++++\07*\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*++++++++++++++++++++++++++VVl\81\15\00++++++++++++++++++++++++++++++++++++++++++\07l\03A++VVVVVVVVVVVVVV,V+++++++++++++++++++++\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0cl\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%Vz\9e&\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06\01++OVV,+\7fVV9++UVV++OVV,+\7fVV\817u[{\\++OVV\02\ac\04\00\009++UVV++OVV,++VV2\13\81W\00o\81~\c9\d7~-\81\81\0e~9\7foW\00\81\81~\15\00~\03++++++++++++\07+$+\97+++++++++*+++++VVVVV\80\81\81\81\819\bb*++++++++++++++++++++++++++++++++++++++++\01\81\81\81\81\81\81\81\81\81\81\81\81\81\81\81\c9\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\d0\r\00N1\02\b4\c1\c1\d7\d7$P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P\d7\d7S\c1G\d4\d7\d7\d7\05++++++++++++\07\01\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00N1P1P1P1P1P1P1P\r\00\00\00\00\00$P1P1P1P1P\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+++++++++++y\\{\\{O{\\{\\{\\{\\{\\{\\{\\{\\{\\{\\-++y\14\\{\\-y*\\\'\\{\\{\\{\a4\00\n\b4\\{\\{O\03x8+++++++++++++O-++\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00H\00\00\00\00\00\00\00\00\00*++++++++++++++++++++++++++\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00++++++++\07\00HVVVVVVVV\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+++++++++++++UVVVVVVVVVVVV\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$+++++++++++\07\00VVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$++++++++++++++++\07\00\00\00\00VVVVVVVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*++++++++++VVVVVVVVVV\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*++++++++++VVVVVVVVVV\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+++++++++++UVVVVVVVVVV\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 4088) "\00\08\00\00V\01\00\009\00\00\00") - (data $13 (i32.const 4100) "\00\00\00\00\01 \00\00\00\e0\ff\ff\00\bf\1d\00\00\e7\02\00\00y\00\00\02$\00\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\01\02\00\00\00\fe\ff\ff\019\ff\ff\00\18\ff\ff\01\87\ff\ff\00\d4\fe\ff\00\c3\00\00\01\d2\00\00\01\ce\00\00\01\cd\00\00\01O\00\00\01\ca\00\00\01\cb\00\00\01\cf\00\00\00a\00\00\01\d3\00\00\01\d1\00\00\00\a3\00\00\01\d5\00\00\00\82\00\00\01\d6\00\00\01\da\00\00\01\d9\00\00\01\db\00\00\008\00\00\03\00\00\00\00\b1\ff\ff\01\9f\ff\ff\01\c8\ff\ff\02($\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\003\ff\ff\00&\ff\ff\01~\ff\ff\01+*\00\01]\ff\ff\01(*\00\00?*\00\01=\ff\ff\01E\00\00\01G\00\00\00\1f*\00\00\1c*\00\00\1e*\00\00.\ff\ff\002\ff\ff\006\ff\ff\005\ff\ff\00O\a5\00\00K\a5\00\001\ff\ff\00(\a5\00\00D\a5\00\00/\ff\ff\00-\ff\ff\00\f7)\00\00A\a5\00\00\fd)\00\00+\ff\ff\00*\ff\ff\00\e7)\00\00C\a5\00\00*\a5\00\00\bb\ff\ff\00\'\ff\ff\00\b9\ff\ff\00%\ff\ff\00\15\a5\00\00\12\a5\00\02$L\00\00\00\00\00\01 \00\00\00\e0\ff\ff\01\01\00\00\00\ff\ff\ff\00T\00\00\01t\00\00\01&\00\00\01%\00\00\01@\00\00\01?\00\00\00\da\ff\ff\00\db\ff\ff\00\e1\ff\ff\00\c0\ff\ff\00\c1\ff\ff\01\08\00\00\00\c2\ff\ff\00\c7\ff\ff\00\d1\ff\ff\00\ca\ff\ff\00\f8\ff\ff\00\aa\ff\ff\00\b0\ff\ff\00\07\00\00\00\8c\ff\ff\01\c4\ff\ff\00\a0\ff\ff\01\f9\ff\ff\02\1ap\00\01\01\00\00\00\ff\ff\ff\01 \00\00\00\e0\ff\ff\01P\00\00\01\0f\00\00\00\f1\ff\ff\00\00\00\00\010\00\00\00\d0\ff\ff\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c0\0b\00\01`\1c\00\00\00\00\00\01\d0\97\00\01\08\00\00\00\f8\ff\ff\02\05\8a\00\00\00\00\00\01@\f4\ff\00\9e\e7\ff\00\c2\89\00\00\db\e7\ff\00\92\e7\ff\00\93\e7\ff\00\9c\e7\ff\00\9d\e7\ff\00\a4\e7\ff\00\00\00\00\008\8a\00\00\04\8a\00\00\e6\0e\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c5\ff\ff\01A\e2\ff\02\1d\8f\00\00\08\00\00\01\f8\ff\ff\00\00\00\00\00V\00\00\01\aa\ff\ff\00J\00\00\00d\00\00\00\80\00\00\00p\00\00\00~\00\00\00\t\00\00\01\b6\ff\ff\01\f7\ff\ff\00\db\e3\ff\01\9c\ff\ff\01\90\ff\ff\01\80\ff\ff\01\82\ff\ff\02\05\ac\00\00\00\00\00\01\10\00\00\00\f0\ff\ff\01\1c\00\00\01\01\00\00\01\a3\e2\ff\01A\df\ff\01\ba\df\ff\00\e4\ff\ff\02\0b\b1\00\01\01\00\00\00\ff\ff\ff\010\00\00\00\d0\ff\ff\00\00\00\00\01\t\d6\ff\01\1a\f1\ff\01\19\d6\ff\00\d5\d5\ff\00\d8\d5\ff\01\e4\d5\ff\01\03\d6\ff\01\e1\d5\ff\01\e2\d5\ff\01\c1\d5\ff\00\00\00\00\00\a0\e3\ff\00\00\00\00\01\01\00\00\00\ff\ff\ff\02\0c\bc\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\01\bcZ\ff\01\a0\03\00\01\fcu\ff\01\d8Z\ff\000\00\00\01\b1Z\ff\01\b5Z\ff\01\bfZ\ff\01\eeZ\ff\01\d6Z\ff\01\ebZ\ff\01\d0\ff\ff\01\bdZ\ff\01\c8u\ff\00\00\00\00\000h\ff\00`\fc\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01(\00\00\00\d8\ff\ff\00\00\00\00\01@\00\00\00\c0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01\"\00\00\00\de\ff\ff") - (data $14 (i32.const 5060) "\00\06\'Qow\00\00\00\00\00\00\00\00\00\00|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa\00\00\00\00\00\00\00\00\00\00\b4\c4\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c6\c9\00\00\00\db\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4\00\00\00\00\00\00\00\00\00\00\00\e7\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ea\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ed\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 5572) "0\0c1\rx\0e\7f\0f\80\10\81\11\86\12\89\13\8a\13\8e\14\8f\15\90\16\93\13\94\17\95\18\96\19\97\1a\9a\1b\9c\19\9d\1c\9e\1d\9f\1e\a6\1f\a9\1f\ae\1f\b1 \b2 \b7!\bf\"\c5#\c8#\cb#\dd$\f2#\f6%\f7& -:.=/>0?1@1C2D3E4P5Q6R7S8T9Y:[;\\e?f@hAiBj@kClDoBqErFuG}H\82I\87J\89K\8aL\8bL\8cM\92N\9dO\9ePEW{\1d|\1d}\1d\7fX\86Y\88Z\89Z\8aZ\8c[\8e\\\8f\\\ac]\ad^\ae^\af^\c2_\cc`\cda\cea\cfb\d0c\d1d\d5e\d6f\d7g\f0h\f1i\f2j\f3k\f4l\f5m\f9n\fd-\fe-\ff-PiQiRiSiTiUiViWiXiYiZi[i\\i]i^i_i\82\00\83\00\84\00\85\00\86\00\87\00\88\00\89\00\c0u\cfv\80\89\81\8a\82\8b\85\8c\86\8dp\9dq\9dv\9ew\9ex\9fy\9fz\a0{\a0|\a1}\a1\b3\a2\ba\a3\bb\a3\bc\a4\be\a5\c3\a2\cc\a4\da\a6\db\a6\e5j\ea\a7\eb\a7\ecn\f3\a2\f8\a8\f9\a8\fa\a9\fb\a9\fc\a4&\b0*\b1+\b2N\b3\84\08b\bac\bbd\bce\bdf\bem\bfn\c0o\c1p\c2~\c3\7f\c3}\cf\8d\d0\94\d1\ab\d2\ac\d3\ad\d4\b0\d5\b1\d6\b2\d7\c4\d8\c5\d9\c6\da") - (data $16 (i32.const 5980) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00c\00a\00s\00e\00m\00a\00p\00p\00i\00n\00g\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (data $17 (i32.const 6060) "\00\01\02\03\04\05\06\07\08\t\n\0b\0c\r\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\7f") - (data $18 (i32.const 6188) "\12\10\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\10\10\"\10\10\10#$%&\'()\10*+\10\10\10\10\10\10\10\10\10\10\10,-.\10/\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\100\10\10\101\10234567\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\108\10\109:\10;<=\10\10\10\10\10\10>\10\10?@ABCDEFGHIJKL\10MNO\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10P\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10QR\10\10\10S\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10T\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10UV\10\10\10\10\10\10\10W\10\10\10\10\10XYZ\10\10\10\10\10[\\\10\10\10\10\10\10\10\10\10]\10\10\10\10\10\10\10\10\10\10\10\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\80@\00\04\00\00\00@\01\00\00\00\00\00\00\00\00\a1\90\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff0\04\b0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\82\00\00\00\00\00\00\fe\ff\ff\ff\ff\bf\b6\00\00\00\00\00\10\00?\00\ff\17\00\00\00\00\01\f8\ff\ff\00\00\01\00\00\00\00\00\00\00\00\00\00\00\c0\bf\ff=\00\00\00\80\02\00\00\00\ff\ff\ff\07\00\00\00\00\00\00\00\00\00\00\c0\ff\01\00\00\00\00\00\00\f8?$\00\00\c0\ff\ff?\00\00\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\14\fe!\fe\00\0c\00\02\00\02\00\00\00\00\00\00\10\1e \00\00\0c\00\00@\06\00\00\00\00\00\00\10\869\02\00\00\00#\00\06\00\00\00\00\00\00\10\be!\00\00\0c\00\00\fc\02\00\00\00\00\00\00\90\1e `\00\0c\00\00\00\04\00\00\00\00\00\00\00\01 \00\00\00\00\00\00\11\00\00\00\00\00\00\c0\c1=`\00\0c\00\00\00\02\00\00\00\00\00\00\90@0\00\00\0c\00\00\00\03\00\00\00\00\00\00\18\1e \00\00\0c\00\00\00\02\00\00\00\00\00\00\00\00\04\\\00\00\00\00\00\00\00\00\00\00\00\f2\07\c0\7f\00\00\00\00\00\00\00\00\00\00\00\00\f2\1f@?\00\00\00\00\00\00\00\00\00\03\00\00\a0\02\00\00\00\00\00\00\fe\7f\df\e0\ff\fe\ff\ff\ff\1f@\00\00\00\00\00\00\00\00\00\00\00\00\e0\fdf\00\00\00\c3\01\00\1e\00d \00 \00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\e0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\1c\00\00\00\0c\00\00\00\0c\00\00\00\00\00\00\00\b0?@\fe\8f \00\00\00\00\00x\00\00\00\00\00\00\08\00\00\00\00\00\00\00`\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\87\01\04\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\t\00\00\00\00\00\00@\7f\e5\1f\f8\9f\00\00\00\00\80\00\ff\ff\01\00\00\00\00\00\00\00\0f\00\00\00\00\00\d0\17\04\00\00\00\00\f8\0f\00\03\00\00\00<;\00\00\00\00\00\00@\a3\03\00\00\00\00\00\00\f0\cf\00\00\00\00\00\00\00\00?\00\00\00\00\00\00\00\00\00\00\f7\ff\fd!\10\03\00\00\00\00\00\f0\ff\ff\ff\ff\ff\ff\ff\07\00\01\00\00\00\f8\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fb\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\a0\03\e0\00\e0\00\e0\00`\00\f8\00\03\90|\00\00\00\00\00\00\df\ff\02\80\00\00\ff\1f\00\00\00\00\00\00\ff\ff\ff\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\80\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\00\80\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\00\00\00\00\00\80\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00<>\08\00\00\00\00\00\00\00\00\00\00\00~\00\00\00\00\00\00\00\00\00\00\00p\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00?\00\10\00\00\00\00\00\00\00\00\00\00\00\80\f7\bf\00\00\00\f0\00\00\00\00\00\00\00\00\00\00\03\00\ff\ff\ff\ff\03\00\00\00\00\00\00\00\00\00\01\00\00\07\00\00\00\00\00\00\00\00\00\00\00\00\00\03D\08\00\00`\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000\00\00\00\ff\ff\03\80\00\00\00\00\c0?\00\00\80\ff\03\00\00\00\00\00\07\00\00\00\00\00\c83\00\80\00\00`\00\00\00\00\00\00\00\00~f\00\08\10\00\00\00\00\01\10\00\00\00\00\00\00\9d\c1\02\00\00 \000X\00\00\00\00\00\00\00\00\00\00\00\00\f8\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00 !\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fc\ff\03\00\00\00\00\00\00\00\ff\ff\08\00\ff\ff\00\00\00\00$\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\80@\00\04\00\00\00@\01\00\00\00\00\00\01\00\00\00\00\c0\00\00\00\00\00\00\00\00\08\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00n\f0\00\00\00\00\00\87\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00`\00\00\00\00\00\00\00\f0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\ff\7f\00\00\00\00\00\00\80\03\00\00\00\00\00x&\00 \00\00\00\00\00\00\07\00\00\00\80\ef\1f\00\00\00\00\00\00\00\08\00\03\00\00\00\00\00\c0\7f\00\9e\00\00\00\00\00\00\00\00\00\00\00\80\d3@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\f8\07\00\00\03\00\00\00\00\00\00\18\01\00\00\00\c0\1f\1f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\\\00\00@\00\00\00\00\00\00\00\00\00\00\f8\85\r\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00<\b0\01\00\000\00\00\00\00\00\00\00\00\00\00\f8\a7\01\00\00\00\00\00\00\00\00\00\00\00\00(\bf\00\00\00\00\00\00\00\00\00\00\00\00\e0\bc\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\ff\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00X\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\0c\01\00\00\00\fe\07\00\00\00\00\f8y\80\00~\0e\00\00\00\00\00\fc\7f\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\7f\bf\00\00\00\00\00\00\00\00\00\00\fc\ff\ff\fcm\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00~\b4\bf\00\00\00\00\00\00\00\00\00\a3\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1f\00\00\00\00\00\00\00\7f\00\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\80\ff\ff\00\00\00\00\00\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00`\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\03\f8\ff\e7\0f\00\00\00<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\7f\f8\ff\ff\ff\ff\ff\1f \00\10\00\00\f8\fe\ff\00\00\00\00\00\00\00\00\00\00\7f\ff\ff\f9\db\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8") - (data $19 (i32.const 9196) "\12\13\14\15\16\17\10\10\10\10\10\10\10\10\10\10\18\10\10\19\10\10\10\10\10\10\10\10\1a\1b\11\1c\1d\1e\10\10\1f\10\10\10\10\10\10\10 !\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\"#\10\10\10$\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10%\10\10\10&\10\10\10\10\'\10\10\10\10\10\10\10(\10\10\10\10\10\10\10\10\10\10\10)\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10*\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10+,-.\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/\10\10\10\10\10\10\100\10\10\10\10\10\10\10\10\10\10\10\10\10\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\04 \04\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\f7\f0\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ef\ff\ff\ff\ff\01\03\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\cf\bc@\d7\ff\ff\fb\ff\ff\ff\ff\ff\ff\ff\ff\ff\bf\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\03\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fe\ff\ff\ff\7f\00\ff\ff\ff\ff\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\01\ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\ff\ff??\ff\ff\ff\ff??\ff\aa\ff\ff\ff?\ff\ff\ff\ff\ff\ff\df_\dc\1f\cf\0f\ff\1f\dc\1f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\80\00\00\ff\1f\00\00\00\00\00\00\00\00\00\00\00\00\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\ff\ff\ff\ff\ff\ff\03\00\00\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\1fx\0c\00\ff\ff\ff\ff\bf \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ffx\ff\ff\ff\ff\ff\ff\fc\07\00\00\00\00`\07\00\00\00\00\00\00\ff\ff\ff\ff\ff\f7\ff\01\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\7f\00\f8\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\df\ff\ff\ff\ff\ff\ff\ff\ff\dfd\de\ff\eb\ef\ff\ff\ff\ff\ff\ff\ff\bf\e7\df\df\ff\ff\ff{_\fc\fd\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff?\ff\ff\ff\fd\ff\ff\f7\ff\ff\ff\f7\ff\ff\df\ff\ff\ff\df\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\fd\ff\ff\ff\fd\ff\ff\f7\0f\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $20 (i32.const 10764) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\n\00\00\00\00\00\00\00") - (data $21 (i32.const 10812) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00A\00Z\00.\00!\00\n\00\00\00\00\00\00\00") - (data $22 (i32.const 10860) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\t\00\00\00\00\00\00\00") - (data $23 (i32.const 10908) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\000\009\00_\00a\00z\00 \00a\00z\00.\00!\00\t\00\00\00\00\00\00\00") - (data $24 (i32.const 10956) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00J\00\00\00D\00e\00r\00 \00W\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00B\00e\00s\00t\00\e4\00n\00d\00i\00g\00e\00\00\00") - (data $25 (i32.const 11052) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00J\00\00\00D\00E\00R\00 \00W\00E\00C\00H\00S\00E\00L\00 \00A\00L\00L\00E\00I\00N\00 \00I\00S\00T\00 \00D\00A\00S\00 \00B\00E\00S\00T\00\c4\00N\00D\00I\00G\00E\00\00\00") - (data $26 (i32.const 11148) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00J\00\00\00d\00e\00r\00 \00w\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00b\00e\00s\00t\00\e4\00n\00d\00i\00g\00e\00\00\00") - (data $27 (i32.const 11244) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00@\00 \00\14 \00\14\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!\00\00\00\00\00\00\00\00\00") - (data $28 (i32.const 11308) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00@\00 \00\14 \00\14\04 \04#\04\13\04 \00\'\04\15\04\1b\04\1e\04\12\04\15\04\1a\04\10\04!\00\00\00\00\00\00\00\00\00") - (data $29 (i32.const 11372) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00@\00 \00\14 \004\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!\00\00\00\00\00\00\00\00\00") - (data $30 (i32.const 11436) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00D\00\00\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00\00\00\00\00\00\00\00\00") - (data $31 (i32.const 11532) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00D\00\00\00.\" \00E\00\c5\"D\00A\00 \00=\00 \00Q\00,\00 \00N\00 \00\92! \00\1e\",\00 \00\11\" \00F\00(\00I\00)\00 \00=\00 \00\0f\" \00G\00(\00I\00)\00\00\00\00\00\00\00\00\00") - (data $32 (i32.const 11628) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00D\00\00\00.\" \00e\00\c5\"d\00a\00 \00=\00 \00q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00\00\00\00\00\00\00\00\00") - (data $33 (i32.const 11724) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\00\00\00\00") - (data $34 (i32.const 11820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\00\d0\00I\00 \00I\00N\00T\00\8f\01\c8\02N\00\c6\00\a9\01\8f\01N\00\8f\01L\00 \00F\00\8f\01\c8\02N\00\90\01T\00I\00K\00 \00\8f\01S\00O\00\b1\01S\00I\00\c8\02E\00I\00\a9\01N\00\00\00\00\00") - (data $35 (i32.const 11916) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\00\f0\00i\00 \00i\00n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\00i\00k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\00i\00\83\02n\00\00\00\00\00") - (data $36 (i32.const 12012) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03\cc\03\c8\03\b7\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $37 (i32.const 12092) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00\9a\03\8c\03\a8\03\97\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $38 (i32.const 12172) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03\ae\03,\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $39 (i32.const 12252) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\004\00\00\00\a4\03\9f\03\a5\03B\03 \00\a3\03\a0\03\91\03\98\03\99\03\9f\03\a5\03B\03 \00\a4\03\ca\1f\9d\03 \00\a4\03\a1\03\9f\03\9c\03\95\03\a1\03\89\03,\00\00\00\00\00\00\00\00\00") - (data $40 (i32.const 12332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03") - (data $41 (i32.const 12396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00L\1f\a8\03\97\03") - (data $42 (i32.const 12460) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03\af\03\b1\03 \00\bc\03\b5\03\c4\03\c1\03\ac\03\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\00\00\00\00\00\00\00\00\00\00") - (data $43 (i32.const 12540) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\004\00\00\00\a0\03\9f\03\ea\1f \00\9c\03\c8\1f \00\92\03\8a\03\91\03 \00\9c\03\95\03\a4\03\a1\03\86\03\95\03\99\03 \00\a4\03\ca\1f \00\93\03\97\03B\03.\00\00\00\00\00\00\00\00\00") - (data $44 (i32.const 12620) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03\cc\03\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03\ad\03\bd\03\b7\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $45 (i32.const 12700) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00\91\03\a0\03\bf\1f \00\a4\03\ba\1f \00\9a\03\8c\03\9a\03\9a\03\91\03\9b\03\91\03 \00\92\03\93\03\91\03\9b\03\9c\03\88\03\9d\03\97\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $46 (i32.const 12780) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03\ae\03\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03\ac\03\00\00\00\00") - (data $47 (i32.const 12844) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00\a4\03\a9\03B\03\9d\03 \00\fe\1f\95\03\9b\03\9b\03\89\03\9d\03\a9\03\9d\03 \00\a4\03\ba\1f \009\1f\95\03\a1\03\86\03\00\00") - (data $48 (i32.const 12908) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03\ad\03\bd\03\b7\03\00\00\00\00\00\00\00\00\00\00") - (data $49 (i32.const 12988) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\004\00\00\00\9a\03\91\03\da\1f \00\a3\03\ba\1f\9d\03 \00\a0\03\a1\03\a9\03B\03\a4\03\91\03 \00\08\1f\9d\03\94\03\a1\03\95\03\99\03\a9\03\9c\03\88\03\9d\03\97\03\00\00\00\00\00\00\00\00") - (data $50 (i32.const 13068) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03\ac\03!\00\00\00\00\00\00\00") - (data $51 (i32.const 13148) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00:\00\00\00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00n\1f \00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00\bf\1f\95\03\9b\03\95\03\a5\03\98\03\95\03\a1\03\99\03\86\03!\00\00\00") - (data $52 (i32.const 13228) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $53 (i32.const 13388) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $54 (i32.const 13548) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\80\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $55 (i32.const 13708) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\df\00\00\00\00\00\00\00\00\00\00\00") - (data $56 (i32.const 13740) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00S\00S\00\00\00\00\00\00\00\00\00") - (data $57 (i32.const 13772) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\01\00\00\00\00\00\00\00\00\00\00") - (data $58 (i32.const 13804) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00i\00\07\03\00\00\00\00\00\00\00\00") - (data $59 (i32.const 13836) "\cc\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\ae\00\00\00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $60 (i32.const 14044) "\cc\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\b2\00\00\00\a3\00\a9\00\9c\03\c0\00\c6\00\d6\00\de\00S\00S\00\c9\00\d6\00x\01\13 \14 \18 \1c \1d \1e \" & 0 \"!R\01`\01x\01}\01\ac \00\91\03\92\03\93\03\94\03\a9\03\91\03\92\03\93\03\94\03\a9\03 \00\10\04\11\04\12\04\13\04\14\04\10\04\11\04\12\04\13\04\14\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00F\00I\00\fd\ff@$\82 (\1f\02\1e\e4\04\84\1eo,\d0\02N#\d0\051\05\90\1c\00\00\00\00\00\00\00\00\00\00") - (data $61 (i32.const 14252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00s\00s\00\00\00\00\00\00\00\00\00") - (data $62 (i32.const 14284) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\01\fb\00\00\00\00\00\00\00\00\00\00") - (data $63 (i32.const 14316) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00f\00i\00\00\00\00\00\00\00\00\00") - (data $64 (i32.const 14348) "\cc\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\b8\00\00\00A\d8\0e\df \00A\d81\df \00A\d8y\df \00C\d8S\dc \00C\d8x\dc \00C\d8\96\dc \00C\d8\cf\dc \00C\d8\d5\dc \00C\d8\15\dd \00C\d8|\dd \00C\d8\7f\dd \00C\d8\0e\de \00C\d8\0f\de \00C\d8w\de \00C\d8\9d\de \00C\d8\a2\de \00C\d8\d7\de \00C\d8\f9\de \00C\d8\fa\de \00C\d8-\df \00C\d8.\df \00C\d8L\df \00C\d8\b4\df \00C\d8\bc\df \00C\d8\ea\df \00D\d8\\\dc \00D\d8o\dc \00D\d8u\dc \00D\d8v\dc \00D\d8{\dc \00D\d8\c1\dc\00\00\00\00") - (data $65 (i32.const 14556) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data $66 (i32.const 14604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\00\d8\00\dc\00\00\00\00\00\00\00\00") - (data $67 (i32.const 14636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\88\1f\00\00\00\00\00\00\00\00\00\00") - (data $68 (i32.const 14668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\80\1f\00\00\00\00\00\00\00\00\00\00") - (data $69 (i32.const 14700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\8f\1f\00\00\00\00\00\00\00\00\00\00") - (data $70 (i32.const 14732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\87\1f\00\00\00\00\00\00\00\00\00\00") - (data $71 (i32.const 14764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\fc\1f\00\00\00\00\00\00\00\00\00\00") - (data $72 (i32.const 14796) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\f3\1f\00\00\00\00\00\00\00\00\00\00") - (data $73 (i32.const 14828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\a3\03\00\00\00\00\00\00\00\00\00\00") - (data $74 (i32.const 14860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\c3\03\00\00\00\00\00\00\00\00\00\00") - (data $75 (i32.const 14892) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00 \00\a3\03\00\00\00\00\00\00\00\00") - (data $76 (i32.const 14924) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00 \00\c3\03\00\00\00\00\00\00\00\00") - (data $77 (i32.const 14956) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\a3\03 \00\00\00\00\00\00\00\00\00") - (data $78 (i32.const 14988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\c3\03 \00\00\00\00\00\00\00\00\00") - (data $79 (i32.const 15020) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00 \00\a3\03 \00\00\00\00\00\00\00") - (data $80 (i32.const 15052) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00 \00\c3\03 \00\00\00\00\00\00\00") - (data $81 (i32.const 15084) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\a3\03 \00\00\00\00\00\00\00") - (data $82 (i32.const 15116) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\c2\03 \00\00\00\00\00\00\00") - (data $83 (i32.const 15148) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\a3\03\n\00\00\00\00\00\00\00") - (data $84 (i32.const 15180) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\c2\03\n\00\00\00\00\00\00\00") - (data $85 (i32.const 15212) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00\a3\03\00\00\00\00\00\00\00\00") - (data $86 (i32.const 15244) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00\c2\03\00\00\00\00\00\00\00\00") - (data $87 (i32.const 15276) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\a3\03b\00\00\00\00\00\00\00") - (data $88 (i32.const 15308) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\c3\03b\00\00\00\00\00\00\00") - (data $89 (i32.const 15340) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\a3\03\a3\03 \00\00\00\00\00\00\00") - (data $90 (i32.const 15372) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\c3\03\c2\03 \00\00\00\00\00\00\00") - (data $91 (i32.const 15404) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00\a3\03 \00\00\00\00\00\00\00") - (data $92 (i32.const 15436) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00\c3\03 \00\00\00\00\00\00\00") - (data $93 (i32.const 15468) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00;\00\a3\03 \00\00\00\00\00\00\00") - (data $94 (i32.const 15500) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00;\00\c3\03 \00\00\00\00\00\00\00") - (data $95 (i32.const 15532) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\01\03\a3\03 \00\00\00\00\00\00\00") - (data $96 (i32.const 15564) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\01\03\c3\03 \00\00\00\00\00\00\00") - (data $97 (i32.const 15596) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03 \00\00\00") - (data $98 (i32.const 15628) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03 \00\00\00") - (data $99 (i32.const 15660) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\a3\03\a3\03-\00\00\00\00\00\00\00") - (data $100 (i32.const 15692) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\c3\03\c2\03-\00\00\00\00\00\00\00") - (data $101 (i32.const 15724) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03-\00\00\00") - (data $102 (i32.const 15756) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03-\00\00\00") - (data $103 (i32.const 15788) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03*s\00\00") - (data $104 (i32.const 15820) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03*s\00\00") - (data $105 (i32.const 15852) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\005\d8\a2\dc\a3\03\00\00\00\00\00\00") - (data $106 (i32.const 15884) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\005\d8\a2\dc\c2\03\00\00\00\00\00\00") - (data $107 (i32.const 15916) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00.\00\a3\03\00\00\00\00\00\00") - (data $108 (i32.const 15948) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00.\00\c2\03\00\00\00\00\00\00") - (data $109 (i32.const 15980) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00\ad\00\a3\03\00\00\00\00\00\00") - (data $110 (i32.const 16012) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\ad\00\c2\03\00\00\00\00\00\00") - (data $111 (i32.const 16044) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\004\d8B\de\a3\03\00\00\00\00") - (data $112 (i32.const 16076) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\004\d8B\de\c2\03\00\00\00\00") - (data $113 (i32.const 16108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00E\03\a3\03\00\00\00\00\00\00\00\00") - (data $114 (i32.const 16140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00E\03\c3\03\00\00\00\00\00\00\00\00") - (data $115 (i32.const 16172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\91\03E\03\a3\03\00\00\00\00\00\00") - (data $116 (i32.const 16204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\b1\03E\03\c2\03\00\00\00\00\00\00") - (data $117 (i32.const 16236) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00\a3\03B\00\00\00\00\00\00\00") - (data $118 (i32.const 16268) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc\00\00\00\00") - (data $119 (i32.const 16300) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc\00\00\00\00") - (data $120 (i32.const 16332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\a3\03.\00b\00\00\00\00\00") - (data $121 (i32.const 16364) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\c3\03.\00b\00\00\00\00\00") - (data $122 (i32.const 16396) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\a3\03\ad\00B\00\00\00\00\00") - (data $123 (i32.const 16428) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\c3\03\ad\00b\00\00\00\00\00") - (data $124 (i32.const 16460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00A\00\a3\034\d8B\deB\00\00\00") - (data $125 (i32.const 16492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00\c3\034\d8B\deb\00\00\00") - (data $126 (i32.const 16524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00\a3\03E\03\00\00\00\00\00\00") - (data $127 (i32.const 16556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\c2\03E\03\00\00\00\00\00\00") - (data $128 (i32.const 16588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\a3\03E\03\91\03\00\00\00\00") - (data $129 (i32.const 16620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03\00\00\00\00") - (data $130 (i32.const 16652) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00\0e\18\a3\03\00\00\00\00\00\00") - (data $131 (i32.const 16684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\0e\18\c2\03\00\00\00\00\00\00") - (data $132 (i32.const 16716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\0e\18\a3\03B\00\00\00\00\00") - (data $133 (i32.const 16748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\0e\18\c3\03b\00\00\00\00\00") - (data $134 (i32.const 16780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00\a3\03\0e\18\00\00\00\00\00\00") - (data $135 (i32.const 16812) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\c2\03\0e\18\00\00\00\00\00\00") - (data $136 (i32.const 16844) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\a3\03\0e\18B\00\00\00\00\00") - (data $137 (i32.const 16876) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\c3\03\0e\18b\00\00\00\00\00") - (data $138 (i32.const 16908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\0e\18\a3\03\0e\18\00\00\00\00") - (data $139 (i32.const 16940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\0e\18\c2\03\0e\18\00\00\00\00") - (data $140 (i32.const 16972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00A\00\0e\18\a3\03\0e\18B\00\00\00") - (data $141 (i32.const 17004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00\0e\18\c3\03\0e\18b\00\00\00") - (data $142 (i32.const 17036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\fb\00\00\00\00\00\00\00\00\00\00") - (data $143 (i32.const 17068) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00F\00F\00\00\00\00\00\00\00\00\00") - (data $144 (i32.const 17100) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00F\00I\00\00\00\00\00\00\00\00\00") - (data $145 (i32.const 17132) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\02\fb\00\00\00\00\00\00\00\00\00\00") - (data $146 (i32.const 17164) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00F\00L\00\00\00\00\00\00\00\00\00") - (data $147 (i32.const 17196) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\03\fb\00\00\00\00\00\00\00\00\00\00") - (data $148 (i32.const 17228) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00F\00F\00I\00\00\00\00\00\00\00") - (data $149 (i32.const 17260) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\04\fb\00\00\00\00\00\00\00\00\00\00") - (data $150 (i32.const 17292) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00F\00F\00L\00\00\00\00\00\00\00") - (data $151 (i32.const 17324) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\05\fb\00\00\00\00\00\00\00\00\00\00") - (data $152 (i32.const 17356) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00S\00T\00\00\00\00\00\00\00\00\00") - (data $153 (i32.const 17388) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\06\fb\00\00\00\00\00\00\00\00\00\00") - (data $154 (i32.const 17420) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\f0\01\00\00\00\00\00\00\00\00\00\00") - (data $155 (i32.const 17452) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00J\00\0c\03\00\00\00\00\00\00\00\00") - (data $156 (i32.const 17484) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\96\1e\00\00\00\00\00\00\00\00\00\00") - (data $157 (i32.const 17516) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00H\001\03\00\00\00\00\00\00\00\00") - (data $158 (i32.const 17548) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\97\1e\00\00\00\00\00\00\00\00\00\00") - (data $159 (i32.const 17580) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00T\00\08\03\00\00\00\00\00\00\00\00") - (data $160 (i32.const 17612) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\98\1e\00\00\00\00\00\00\00\00\00\00") - (data $161 (i32.const 17644) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00W\00\n\03\00\00\00\00\00\00\00\00") - (data $162 (i32.const 17676) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\99\1e\00\00\00\00\00\00\00\00\00\00") - (data $163 (i32.const 17708) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00Y\00\n\03\00\00\00\00\00\00\00\00") - (data $164 (i32.const 17740) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\9a\1e\00\00\00\00\00\00\00\00\00\00") - (data $165 (i32.const 17772) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00A\00\be\02\00\00\00\00\00\00\00\00") - (data $166 (i32.const 17804) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $167 (i32.const 17900) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00 \00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 \00\00\00\00\00\00\00\00\00\00\00") - (data $168 (i32.const 17964) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") - (data $169 (i32.const 18092) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $170 (i32.const 18156) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data $171 (i32.const 18188) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data $172 (i32.const 18588) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $173 (i32.const 19644) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") - (data $174 (i32.const 19740) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 \00\00\00\00\00\00\00") - (data $175 (i32.const 19804) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $176 (i32.const 19900) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00 \00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 \00\00\00\00\00\00\00\00\00\00\00") - (data $177 (i32.const 19964) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 \00\00\00\00\00\00\00") - (data $178 (i32.const 20032) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\a4\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) "L\03\00\00\00\00\00\00\00\00\00\00\04\00\00\000\03\00\00\df\00S\00S\00\00\00I\01\bc\02N\00\00\00\f0\01J\00\0c\03\00\00\90\03\99\03\08\03\01\03\b0\03\a5\03\08\03\01\03\87\055\05R\05\00\00\96\1eH\001\03\00\00\97\1eT\00\08\03\00\00\98\1eW\00\n\03\00\00\99\1eY\00\n\03\00\00\9a\1eA\00\be\02\00\00P\1f\a5\03\13\03\00\00R\1f\a5\03\13\03\00\03T\1f\a5\03\13\03\01\03V\1f\a5\03\13\03B\03\80\1f\08\1f\99\03\00\00\81\1f\t\1f\99\03\00\00\82\1f\n\1f\99\03\00\00\83\1f\0b\1f\99\03\00\00\84\1f\0c\1f\99\03\00\00\85\1f\r\1f\99\03\00\00\86\1f\0e\1f\99\03\00\00\87\1f\0f\1f\99\03\00\00\88\1f\08\1f\99\03\00\00\89\1f\t\1f\99\03\00\00\8a\1f\n\1f\99\03\00\00\8b\1f\0b\1f\99\03\00\00\8c\1f\0c\1f\99\03\00\00\8d\1f\r\1f\99\03\00\00\8e\1f\0e\1f\99\03\00\00\8f\1f\0f\1f\99\03\00\00\90\1f(\1f\99\03\00\00\91\1f)\1f\99\03\00\00\92\1f*\1f\99\03\00\00\93\1f+\1f\99\03\00\00\94\1f,\1f\99\03\00\00\95\1f-\1f\99\03\00\00\96\1f.\1f\99\03\00\00\97\1f/\1f\99\03\00\00\98\1f(\1f\99\03\00\00\99\1f)\1f\99\03\00\00\9a\1f*\1f\99\03\00\00\9b\1f+\1f\99\03\00\00\9c\1f,\1f\99\03\00\00\9d\1f-\1f\99\03\00\00\9e\1f.\1f\99\03\00\00\9f\1f/\1f\99\03\00\00\a0\1fh\1f\99\03\00\00\a1\1fi\1f\99\03\00\00\a2\1fj\1f\99\03\00\00\a3\1fk\1f\99\03\00\00\a4\1fl\1f\99\03\00\00\a5\1fm\1f\99\03\00\00\a6\1fn\1f\99\03\00\00\a7\1fo\1f\99\03\00\00\a8\1fh\1f\99\03\00\00\a9\1fi\1f\99\03\00\00\aa\1fj\1f\99\03\00\00\ab\1fk\1f\99\03\00\00\ac\1fl\1f\99\03\00\00\ad\1fm\1f\99\03\00\00\ae\1fn\1f\99\03\00\00\af\1fo\1f\99\03\00\00\b2\1f\ba\1f\99\03\00\00\b3\1f\91\03\99\03\00\00\b4\1f\86\03\99\03\00\00\b6\1f\91\03B\03\00\00\b7\1f\91\03B\03\99\03\bc\1f\91\03\99\03\00\00\c2\1f\ca\1f\99\03\00\00\c3\1f\97\03\99\03\00\00\c4\1f\89\03\99\03\00\00\c6\1f\97\03B\03\00\00\c7\1f\97\03B\03\99\03\cc\1f\97\03\99\03\00\00\d2\1f\99\03\08\03\00\03\d3\1f\99\03\08\03\01\03\d6\1f\99\03B\03\00\00\d7\1f\99\03\08\03B\03\e2\1f\a5\03\08\03\00\03\e3\1f\a5\03\08\03\01\03\e4\1f\a1\03\13\03\00\00\e6\1f\a5\03B\03\00\00\e7\1f\a5\03\08\03B\03\f2\1f\fa\1f\99\03\00\00\f3\1f\a9\03\99\03\00\00\f4\1f\8f\03\99\03\00\00\f6\1f\a9\03B\03\00\00\f7\1f\a9\03B\03\99\03\fc\1f\a9\03\99\03\00\00\00\fbF\00F\00\00\00\01\fbF\00I\00\00\00\02\fbF\00L\00\00\00\03\fbF\00F\00I\00\04\fbF\00F\00L\00\05\fbS\00T\00\00\00\06\fbS\00T\00\00\00\13\fbD\05F\05\00\00\14\fbD\055\05\00\00\15\fbD\05;\05\00\00\16\fbN\05F\05\00\00\17\fbD\05=\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 3228) "\00\01\02\03\04\05\06\07\08\t\n\0b\0c\r\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\7f") + (data $21 (i32.const 3356) "\07\08\t\n\0b\0c\06\06\06\06\06\06\06\06\06\06\r\06\06\0e\06\06\06\06\06\06\06\06\0f\10\11\12\06\13\06\06\06\06\06\06\06\06\06\06\14\15\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\16\17\06\06\06\18\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\19\06\06\06\06\1a\06\06\06\06\06\06\06\1b\06\06\06\06\06\06\06\06\06\06\06\1c\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1d\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1e\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$++++++++\01\00TVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00+++++++\07++[VVVVVVVJVV\051P1P1P1P1P1P1P1P$Py1P1P18P1P1P1P1P1P1P1PN1\02N\r\rN\03N\00$n\00N1&nQN$PN9\14\81\1b\1d\1dS1P1P\r1P1P1P\1bS$P1\02\\{\\{\\{\\{\\{\14y\\{\\{\\-+I\03H\03x\\{\14\00\96\n\01+(\06\06\00*\06**+\07\bb\b5+\1e\00+\07+++\01++++++++++++++++++++++++++++++++\01+++++++++++++++++++++++*+++++++++++++\cdF\cd+\00%+\07\01\06\01UVVVVVUVV\02$\81\81\81\81\81\15\81\81\81\00\00+\00\b2\d1\b2\d1\b2\d1\b2\d1\00\00\cd\cc\01\00\d7\d7\d7\d7\d7\83\81\81\81\81\81\81\81\81\81\81\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\1c\00\00\00\00\001P1P1P1P1P1\02\00\001P1P1P1P1P1P1P1P1PN1P1PN1P1P1P1P1P1P1P1\02\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6*++++++++++++\00\00\00TVVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00TVVVVVVVVVVVV\0c\00\0c*+++++++++++++\07*\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*++++++++++++++++++++++++++VVl\81\15\00++++++++++++++++++++++++++++++++++++++++++\07l\03A++VVVVVVVVVVVVVV,V+++++++++++++++++++++\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0cl\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%Vz\9e&\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06\01++OVV,+\7fVV9++UVV++OVV,+\7fVV\817u[{\\++OVV\02\ac\04\00\009++UVV++OVV,++VV2\13\81W\00o\81~\c9\d7~-\81\81\0e~9\7foW\00\81\81~\15\00~\03++++++++++++\07+$+\97+++++++++*+++++VVVVV\80\81\81\81\819\bb*++++++++++++++++++++++++++++++++++++++++\01\81\81\81\81\81\81\81\81\81\81\81\81\81\81\81\c9\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\d0\r\00N1\02\b4\c1\c1\d7\d7$P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P\d7\d7S\c1G\d4\d7\d7\d7\05++++++++++++\07\01\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00N1P1P1P1P1P1P1P\r\00\00\00\00\00$P1P1P1P1P\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+++++++++++y\\{\\{O{\\{\\{\\{\\{\\{\\{\\{\\{\\{\\-++y\14\\{\\-y*\\\'\\{\\{\\{\a4\00\n\b4\\{\\{O\03x8+++++++++++++O-++\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00H\00\00\00\00\00\00\00\00\00*++++++++++++++++++++++++++\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00++++++++\07\00HVVVVVVVV\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+++++++++++++UVVVVVVVVVVVV\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$+++++++++++\07\00VVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$++++++++++++++++\07\00\00\00\00VVVVVVVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*++++++++++VVVVVVVVVV\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*++++++++++VVVVVVVVVV\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+++++++++++UVVVVVVVVVV\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 6024) "\00\08\00\00V\01\00\009\00\00\00") + (data $23 (i32.const 6036) "\00\00\00\00\01 \00\00\00\e0\ff\ff\00\bf\1d\00\00\e7\02\00\00y\00\00\02$\00\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\01\02\00\00\00\fe\ff\ff\019\ff\ff\00\18\ff\ff\01\87\ff\ff\00\d4\fe\ff\00\c3\00\00\01\d2\00\00\01\ce\00\00\01\cd\00\00\01O\00\00\01\ca\00\00\01\cb\00\00\01\cf\00\00\00a\00\00\01\d3\00\00\01\d1\00\00\00\a3\00\00\01\d5\00\00\00\82\00\00\01\d6\00\00\01\da\00\00\01\d9\00\00\01\db\00\00\008\00\00\03\00\00\00\00\b1\ff\ff\01\9f\ff\ff\01\c8\ff\ff\02($\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\003\ff\ff\00&\ff\ff\01~\ff\ff\01+*\00\01]\ff\ff\01(*\00\00?*\00\01=\ff\ff\01E\00\00\01G\00\00\00\1f*\00\00\1c*\00\00\1e*\00\00.\ff\ff\002\ff\ff\006\ff\ff\005\ff\ff\00O\a5\00\00K\a5\00\001\ff\ff\00(\a5\00\00D\a5\00\00/\ff\ff\00-\ff\ff\00\f7)\00\00A\a5\00\00\fd)\00\00+\ff\ff\00*\ff\ff\00\e7)\00\00C\a5\00\00*\a5\00\00\bb\ff\ff\00\'\ff\ff\00\b9\ff\ff\00%\ff\ff\00\15\a5\00\00\12\a5\00\02$L\00\00\00\00\00\01 \00\00\00\e0\ff\ff\01\01\00\00\00\ff\ff\ff\00T\00\00\01t\00\00\01&\00\00\01%\00\00\01@\00\00\01?\00\00\00\da\ff\ff\00\db\ff\ff\00\e1\ff\ff\00\c0\ff\ff\00\c1\ff\ff\01\08\00\00\00\c2\ff\ff\00\c7\ff\ff\00\d1\ff\ff\00\ca\ff\ff\00\f8\ff\ff\00\aa\ff\ff\00\b0\ff\ff\00\07\00\00\00\8c\ff\ff\01\c4\ff\ff\00\a0\ff\ff\01\f9\ff\ff\02\1ap\00\01\01\00\00\00\ff\ff\ff\01 \00\00\00\e0\ff\ff\01P\00\00\01\0f\00\00\00\f1\ff\ff\00\00\00\00\010\00\00\00\d0\ff\ff\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c0\0b\00\01`\1c\00\00\00\00\00\01\d0\97\00\01\08\00\00\00\f8\ff\ff\02\05\8a\00\00\00\00\00\01@\f4\ff\00\9e\e7\ff\00\c2\89\00\00\db\e7\ff\00\92\e7\ff\00\93\e7\ff\00\9c\e7\ff\00\9d\e7\ff\00\a4\e7\ff\00\00\00\00\008\8a\00\00\04\8a\00\00\e6\0e\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c5\ff\ff\01A\e2\ff\02\1d\8f\00\00\08\00\00\01\f8\ff\ff\00\00\00\00\00V\00\00\01\aa\ff\ff\00J\00\00\00d\00\00\00\80\00\00\00p\00\00\00~\00\00\00\t\00\00\01\b6\ff\ff\01\f7\ff\ff\00\db\e3\ff\01\9c\ff\ff\01\90\ff\ff\01\80\ff\ff\01\82\ff\ff\02\05\ac\00\00\00\00\00\01\10\00\00\00\f0\ff\ff\01\1c\00\00\01\01\00\00\01\a3\e2\ff\01A\df\ff\01\ba\df\ff\00\e4\ff\ff\02\0b\b1\00\01\01\00\00\00\ff\ff\ff\010\00\00\00\d0\ff\ff\00\00\00\00\01\t\d6\ff\01\1a\f1\ff\01\19\d6\ff\00\d5\d5\ff\00\d8\d5\ff\01\e4\d5\ff\01\03\d6\ff\01\e1\d5\ff\01\e2\d5\ff\01\c1\d5\ff\00\00\00\00\00\a0\e3\ff\00\00\00\00\01\01\00\00\00\ff\ff\ff\02\0c\bc\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\01\bcZ\ff\01\a0\03\00\01\fcu\ff\01\d8Z\ff\000\00\00\01\b1Z\ff\01\b5Z\ff\01\bfZ\ff\01\eeZ\ff\01\d6Z\ff\01\ebZ\ff\01\d0\ff\ff\01\bdZ\ff\01\c8u\ff\00\00\00\00\000h\ff\00`\fc\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01(\00\00\00\d8\ff\ff\00\00\00\00\01@\00\00\00\c0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01\"\00\00\00\de\ff\ff") + (data $24 (i32.const 6996) "\00\06\'Qow\00\00\00\00\00\00\00\00\00\00|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa\00\00\00\00\00\00\00\00\00\00\b4\c4\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c6\c9\00\00\00\db\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4\00\00\00\00\00\00\00\00\00\00\00\e7\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ea\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ed\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 7508) "0\0c1\rx\0e\7f\0f\80\10\81\11\86\12\89\13\8a\13\8e\14\8f\15\90\16\93\13\94\17\95\18\96\19\97\1a\9a\1b\9c\19\9d\1c\9e\1d\9f\1e\a6\1f\a9\1f\ae\1f\b1 \b2 \b7!\bf\"\c5#\c8#\cb#\dd$\f2#\f6%\f7& -:.=/>0?1@1C2D3E4P5Q6R7S8T9Y:[;\\e?f@hAiBj@kClDoBqErFuG}H\82I\87J\89K\8aL\8bL\8cM\92N\9dO\9ePEW{\1d|\1d}\1d\7fX\86Y\88Z\89Z\8aZ\8c[\8e\\\8f\\\ac]\ad^\ae^\af^\c2_\cc`\cda\cea\cfb\d0c\d1d\d5e\d6f\d7g\f0h\f1i\f2j\f3k\f4l\f5m\f9n\fd-\fe-\ff-PiQiRiSiTiUiViWiXiYiZi[i\\i]i^i_i\82\00\83\00\84\00\85\00\86\00\87\00\88\00\89\00\c0u\cfv\80\89\81\8a\82\8b\85\8c\86\8dp\9dq\9dv\9ew\9ex\9fy\9fz\a0{\a0|\a1}\a1\b3\a2\ba\a3\bb\a3\bc\a4\be\a5\c3\a2\cc\a4\da\a6\db\a6\e5j\ea\a7\eb\a7\ecn\f3\a2\f8\a8\f9\a8\fa\a9\fb\a9\fc\a4&\b0*\b1+\b2N\b3\84\08b\bac\bbd\bce\bdf\bem\bfn\c0o\c1p\c2~\c3\7f\c3}\cf\8d\d0\94\d1\ab\d2\ac\d3\ad\d4\b0\d5\b1\d6\b2\d7\c4\d8\c5\d9\c6\da") + (data $26 (i32.const 7916) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00c\00a\00s\00e\00m\00a\00p\00p\00i\00n\00g\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 7996) "\00\01\02\03\04\05\06\07\08\t\n\0b\0c\r\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\7f") + (data $28 (i32.const 8124) "\12\10\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\10\10\"\10\10\10#$%&\'()\10*+\10\10\10\10\10\10\10\10\10\10\10,-.\10/\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\100\10\10\101\10234567\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\108\10\109:\10;<=\10\10\10\10\10\10>\10\10?@ABCDEFGHIJKL\10MNO\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10P\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10QR\10\10\10S\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10T\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10UV\10\10\10\10\10\10\10W\10\10\10\10\10XYZ\10\10\10\10\10[\\\10\10\10\10\10\10\10\10\10]\10\10\10\10\10\10\10\10\10\10\10\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\80@\00\04\00\00\00@\01\00\00\00\00\00\00\00\00\a1\90\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff0\04\b0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\82\00\00\00\00\00\00\fe\ff\ff\ff\ff\bf\b6\00\00\00\00\00\10\00?\00\ff\17\00\00\00\00\01\f8\ff\ff\00\00\01\00\00\00\00\00\00\00\00\00\00\00\c0\bf\ff=\00\00\00\80\02\00\00\00\ff\ff\ff\07\00\00\00\00\00\00\00\00\00\00\c0\ff\01\00\00\00\00\00\00\f8?$\00\00\c0\ff\ff?\00\00\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\14\fe!\fe\00\0c\00\02\00\02\00\00\00\00\00\00\10\1e \00\00\0c\00\00@\06\00\00\00\00\00\00\10\869\02\00\00\00#\00\06\00\00\00\00\00\00\10\be!\00\00\0c\00\00\fc\02\00\00\00\00\00\00\90\1e `\00\0c\00\00\00\04\00\00\00\00\00\00\00\01 \00\00\00\00\00\00\11\00\00\00\00\00\00\c0\c1=`\00\0c\00\00\00\02\00\00\00\00\00\00\90@0\00\00\0c\00\00\00\03\00\00\00\00\00\00\18\1e \00\00\0c\00\00\00\02\00\00\00\00\00\00\00\00\04\\\00\00\00\00\00\00\00\00\00\00\00\f2\07\c0\7f\00\00\00\00\00\00\00\00\00\00\00\00\f2\1f@?\00\00\00\00\00\00\00\00\00\03\00\00\a0\02\00\00\00\00\00\00\fe\7f\df\e0\ff\fe\ff\ff\ff\1f@\00\00\00\00\00\00\00\00\00\00\00\00\e0\fdf\00\00\00\c3\01\00\1e\00d \00 \00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\e0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\1c\00\00\00\0c\00\00\00\0c\00\00\00\00\00\00\00\b0?@\fe\8f \00\00\00\00\00x\00\00\00\00\00\00\08\00\00\00\00\00\00\00`\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\87\01\04\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\t\00\00\00\00\00\00@\7f\e5\1f\f8\9f\00\00\00\00\80\00\ff\ff\01\00\00\00\00\00\00\00\0f\00\00\00\00\00\d0\17\04\00\00\00\00\f8\0f\00\03\00\00\00<;\00\00\00\00\00\00@\a3\03\00\00\00\00\00\00\f0\cf\00\00\00\00\00\00\00\00?\00\00\00\00\00\00\00\00\00\00\f7\ff\fd!\10\03\00\00\00\00\00\f0\ff\ff\ff\ff\ff\ff\ff\07\00\01\00\00\00\f8\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fb\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\a0\03\e0\00\e0\00\e0\00`\00\f8\00\03\90|\00\00\00\00\00\00\df\ff\02\80\00\00\ff\1f\00\00\00\00\00\00\ff\ff\ff\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\80\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\00\80\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\00\00\00\00\00\80\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00<>\08\00\00\00\00\00\00\00\00\00\00\00~\00\00\00\00\00\00\00\00\00\00\00p\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00?\00\10\00\00\00\00\00\00\00\00\00\00\00\80\f7\bf\00\00\00\f0\00\00\00\00\00\00\00\00\00\00\03\00\ff\ff\ff\ff\03\00\00\00\00\00\00\00\00\00\01\00\00\07\00\00\00\00\00\00\00\00\00\00\00\00\00\03D\08\00\00`\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000\00\00\00\ff\ff\03\80\00\00\00\00\c0?\00\00\80\ff\03\00\00\00\00\00\07\00\00\00\00\00\c83\00\80\00\00`\00\00\00\00\00\00\00\00~f\00\08\10\00\00\00\00\01\10\00\00\00\00\00\00\9d\c1\02\00\00 \000X\00\00\00\00\00\00\00\00\00\00\00\00\f8\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00 !\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fc\ff\03\00\00\00\00\00\00\00\ff\ff\08\00\ff\ff\00\00\00\00$\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\80@\00\04\00\00\00@\01\00\00\00\00\00\01\00\00\00\00\c0\00\00\00\00\00\00\00\00\08\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00n\f0\00\00\00\00\00\87\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00`\00\00\00\00\00\00\00\f0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\ff\7f\00\00\00\00\00\00\80\03\00\00\00\00\00x&\00 \00\00\00\00\00\00\07\00\00\00\80\ef\1f\00\00\00\00\00\00\00\08\00\03\00\00\00\00\00\c0\7f\00\9e\00\00\00\00\00\00\00\00\00\00\00\80\d3@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\f8\07\00\00\03\00\00\00\00\00\00\18\01\00\00\00\c0\1f\1f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\\\00\00@\00\00\00\00\00\00\00\00\00\00\f8\85\r\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00<\b0\01\00\000\00\00\00\00\00\00\00\00\00\00\f8\a7\01\00\00\00\00\00\00\00\00\00\00\00\00(\bf\00\00\00\00\00\00\00\00\00\00\00\00\e0\bc\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\ff\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00X\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\0c\01\00\00\00\fe\07\00\00\00\00\f8y\80\00~\0e\00\00\00\00\00\fc\7f\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\7f\bf\00\00\00\00\00\00\00\00\00\00\fc\ff\ff\fcm\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00~\b4\bf\00\00\00\00\00\00\00\00\00\a3\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1f\00\00\00\00\00\00\00\7f\00\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\80\ff\ff\00\00\00\00\00\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00`\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\03\f8\ff\e7\0f\00\00\00<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\7f\f8\ff\ff\ff\ff\ff\1f \00\10\00\00\f8\fe\ff\00\00\00\00\00\00\00\00\00\00\7f\ff\ff\f9\db\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8") + (data $29 (i32.const 11132) "\12\13\14\15\16\17\10\10\10\10\10\10\10\10\10\10\18\10\10\19\10\10\10\10\10\10\10\10\1a\1b\11\1c\1d\1e\10\10\1f\10\10\10\10\10\10\10 !\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\"#\10\10\10$\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10%\10\10\10&\10\10\10\10\'\10\10\10\10\10\10\10(\10\10\10\10\10\10\10\10\10\10\10)\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10*\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10+,-.\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/\10\10\10\10\10\10\100\10\10\10\10\10\10\10\10\10\10\10\10\10\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\04 \04\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\f7\f0\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ef\ff\ff\ff\ff\01\03\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\cf\bc@\d7\ff\ff\fb\ff\ff\ff\ff\ff\ff\ff\ff\ff\bf\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\03\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fe\ff\ff\ff\7f\00\ff\ff\ff\ff\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\01\ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\ff\ff??\ff\ff\ff\ff??\ff\aa\ff\ff\ff?\ff\ff\ff\ff\ff\ff\df_\dc\1f\cf\0f\ff\1f\dc\1f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\80\00\00\ff\1f\00\00\00\00\00\00\00\00\00\00\00\00\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\ff\ff\ff\ff\ff\ff\03\00\00\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\1fx\0c\00\ff\ff\ff\ff\bf \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ffx\ff\ff\ff\ff\ff\ff\fc\07\00\00\00\00`\07\00\00\00\00\00\00\ff\ff\ff\ff\ff\f7\ff\01\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\7f\00\f8\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\df\ff\ff\ff\ff\ff\ff\ff\ff\dfd\de\ff\eb\ef\ff\ff\ff\ff\ff\ff\ff\bf\e7\df\df\ff\ff\ff{_\fc\fd\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff?\ff\ff\ff\fd\ff\ff\f7\ff\ff\ff\f7\ff\ff\df\ff\ff\ff\df\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\fd\ff\ff\ff\fd\ff\ff\f7\0f\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 12700) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\n\00\00\00\00\00\00\00") + (data $31 (i32.const 12748) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00A\00Z\00.\00!\00\n\00\00\00\00\00\00\00") + (data $32 (i32.const 12796) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\t\00\00\00\00\00\00\00") + (data $33 (i32.const 12844) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\000\009\00_\00a\00z\00 \00a\00z\00.\00!\00\t\00\00\00\00\00\00\00") + (data $34 (i32.const 12892) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00J\00\00\00D\00e\00r\00 \00W\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00B\00e\00s\00t\00\e4\00n\00d\00i\00g\00e\00\00\00") + (data $35 (i32.const 12988) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00J\00\00\00D\00E\00R\00 \00W\00E\00C\00H\00S\00E\00L\00 \00A\00L\00L\00E\00I\00N\00 \00I\00S\00T\00 \00D\00A\00S\00 \00B\00E\00S\00T\00\c4\00N\00D\00I\00G\00E\00\00\00") + (data $36 (i32.const 13084) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00J\00\00\00d\00e\00r\00 \00w\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00b\00e\00s\00t\00\e4\00n\00d\00i\00g\00e\00\00\00") + (data $37 (i32.const 13180) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00@\00 \00\14 \00\14\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!\00\00\00\00\00\00\00\00\00") + (data $38 (i32.const 13244) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00@\00 \00\14 \00\14\04 \04#\04\13\04 \00\'\04\15\04\1b\04\1e\04\12\04\15\04\1a\04\10\04!\00\00\00\00\00\00\00\00\00") + (data $39 (i32.const 13308) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00@\00 \00\14 \004\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!\00\00\00\00\00\00\00\00\00") + (data $40 (i32.const 13372) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00D\00\00\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00\00\00\00\00\00\00\00\00") + (data $41 (i32.const 13468) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00D\00\00\00.\" \00E\00\c5\"D\00A\00 \00=\00 \00Q\00,\00 \00N\00 \00\92! \00\1e\",\00 \00\11\" \00F\00(\00I\00)\00 \00=\00 \00\0f\" \00G\00(\00I\00)\00\00\00\00\00\00\00\00\00") + (data $42 (i32.const 13564) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00D\00\00\00.\" \00e\00\c5\"d\00a\00 \00=\00 \00q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00\00\00\00\00\00\00\00\00") + (data $43 (i32.const 13660) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\00\00\00\00") + (data $44 (i32.const 13756) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\00\d0\00I\00 \00I\00N\00T\00\8f\01\c8\02N\00\c6\00\a9\01\8f\01N\00\8f\01L\00 \00F\00\8f\01\c8\02N\00\90\01T\00I\00K\00 \00\8f\01S\00O\00\b1\01S\00I\00\c8\02E\00I\00\a9\01N\00\00\00\00\00") + (data $45 (i32.const 13852) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\00\f0\00i\00 \00i\00n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\00i\00k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\00i\00\83\02n\00\00\00\00\00") + (data $46 (i32.const 13948) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03\cc\03\c8\03\b7\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $47 (i32.const 14028) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00\9a\03\8c\03\a8\03\97\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $48 (i32.const 14108) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03\ae\03,\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $49 (i32.const 14188) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\004\00\00\00\a4\03\9f\03\a5\03B\03 \00\a3\03\a0\03\91\03\98\03\99\03\9f\03\a5\03B\03 \00\a4\03\ca\1f\9d\03 \00\a4\03\a1\03\9f\03\9c\03\95\03\a1\03\89\03,\00\00\00\00\00\00\00\00\00") + (data $50 (i32.const 14268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03") + (data $51 (i32.const 14332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00L\1f\a8\03\97\03") + (data $52 (i32.const 14396) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03\af\03\b1\03 \00\bc\03\b5\03\c4\03\c1\03\ac\03\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\00\00\00\00\00\00\00\00\00\00") + (data $53 (i32.const 14476) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\004\00\00\00\a0\03\9f\03\ea\1f \00\9c\03\c8\1f \00\92\03\8a\03\91\03 \00\9c\03\95\03\a4\03\a1\03\86\03\95\03\99\03 \00\a4\03\ca\1f \00\93\03\97\03B\03.\00\00\00\00\00\00\00\00\00") + (data $54 (i32.const 14556) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03\cc\03\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03\ad\03\bd\03\b7\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $55 (i32.const 14636) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00\91\03\a0\03\bf\1f \00\a4\03\ba\1f \00\9a\03\8c\03\9a\03\9a\03\91\03\9b\03\91\03 \00\92\03\93\03\91\03\9b\03\9c\03\88\03\9d\03\97\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $56 (i32.const 14716) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03\ae\03\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03\ac\03\00\00\00\00") + (data $57 (i32.const 14780) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00\a4\03\a9\03B\03\9d\03 \00\fe\1f\95\03\9b\03\9b\03\89\03\9d\03\a9\03\9d\03 \00\a4\03\ba\1f \009\1f\95\03\a1\03\86\03\00\00") + (data $58 (i32.const 14844) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03\ad\03\bd\03\b7\03\00\00\00\00\00\00\00\00\00\00") + (data $59 (i32.const 14924) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\004\00\00\00\9a\03\91\03\da\1f \00\a3\03\ba\1f\9d\03 \00\a0\03\a1\03\a9\03B\03\a4\03\91\03 \00\08\1f\9d\03\94\03\a1\03\95\03\99\03\a9\03\9c\03\88\03\9d\03\97\03\00\00\00\00\00\00\00\00") + (data $60 (i32.const 15004) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03\ac\03!\00\00\00\00\00\00\00") + (data $61 (i32.const 15084) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00:\00\00\00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00n\1f \00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00\bf\1f\95\03\9b\03\95\03\a5\03\98\03\95\03\a1\03\99\03\86\03!\00\00\00") + (data $62 (i32.const 15164) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $63 (i32.const 15324) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $64 (i32.const 15484) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\80\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $65 (i32.const 15644) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\df\00\00\00\00\00\00\00\00\00\00\00") + (data $66 (i32.const 15676) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00S\00S\00\00\00\00\00\00\00\00\00") + (data $67 (i32.const 15708) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\01\00\00\00\00\00\00\00\00\00\00") + (data $68 (i32.const 15740) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00i\00\07\03\00\00\00\00\00\00\00\00") + (data $69 (i32.const 15772) "\cc\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\ae\00\00\00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $70 (i32.const 15980) "\cc\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\b2\00\00\00\a3\00\a9\00\9c\03\c0\00\c6\00\d6\00\de\00S\00S\00\c9\00\d6\00x\01\13 \14 \18 \1c \1d \1e \" & 0 \"!R\01`\01x\01}\01\ac \00\91\03\92\03\93\03\94\03\a9\03\91\03\92\03\93\03\94\03\a9\03 \00\10\04\11\04\12\04\13\04\14\04\10\04\11\04\12\04\13\04\14\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00F\00I\00\fd\ff@$\82 (\1f\02\1e\e4\04\84\1eo,\d0\02N#\d0\051\05\90\1c\00\00\00\00\00\00\00\00\00\00") + (data $71 (i32.const 16188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00s\00s\00\00\00\00\00\00\00\00\00") + (data $72 (i32.const 16220) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\01\fb\00\00\00\00\00\00\00\00\00\00") + (data $73 (i32.const 16252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00f\00i\00\00\00\00\00\00\00\00\00") + (data $74 (i32.const 16284) "\cc\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\b8\00\00\00A\d8\0e\df \00A\d81\df \00A\d8y\df \00C\d8S\dc \00C\d8x\dc \00C\d8\96\dc \00C\d8\cf\dc \00C\d8\d5\dc \00C\d8\15\dd \00C\d8|\dd \00C\d8\7f\dd \00C\d8\0e\de \00C\d8\0f\de \00C\d8w\de \00C\d8\9d\de \00C\d8\a2\de \00C\d8\d7\de \00C\d8\f9\de \00C\d8\fa\de \00C\d8-\df \00C\d8.\df \00C\d8L\df \00C\d8\b4\df \00C\d8\bc\df \00C\d8\ea\df \00D\d8\\\dc \00D\d8o\dc \00D\d8u\dc \00D\d8v\dc \00D\d8{\dc \00D\d8\c1\dc\00\00\00\00") + (data $75 (i32.const 16492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data $76 (i32.const 16540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\00\d8\00\dc\00\00\00\00\00\00\00\00") + (data $77 (i32.const 16572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\88\1f\00\00\00\00\00\00\00\00\00\00") + (data $78 (i32.const 16604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\80\1f\00\00\00\00\00\00\00\00\00\00") + (data $79 (i32.const 16636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\8f\1f\00\00\00\00\00\00\00\00\00\00") + (data $80 (i32.const 16668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\87\1f\00\00\00\00\00\00\00\00\00\00") + (data $81 (i32.const 16700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\fc\1f\00\00\00\00\00\00\00\00\00\00") + (data $82 (i32.const 16732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\f3\1f\00\00\00\00\00\00\00\00\00\00") + (data $83 (i32.const 16764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\a3\03\00\00\00\00\00\00\00\00\00\00") + (data $84 (i32.const 16796) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\c3\03\00\00\00\00\00\00\00\00\00\00") + (data $85 (i32.const 16828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00 \00\a3\03\00\00\00\00\00\00\00\00") + (data $86 (i32.const 16860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00 \00\c3\03\00\00\00\00\00\00\00\00") + (data $87 (i32.const 16892) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\a3\03 \00\00\00\00\00\00\00\00\00") + (data $88 (i32.const 16924) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\c3\03 \00\00\00\00\00\00\00\00\00") + (data $89 (i32.const 16956) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00 \00\a3\03 \00\00\00\00\00\00\00") + (data $90 (i32.const 16988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00 \00\c3\03 \00\00\00\00\00\00\00") + (data $91 (i32.const 17020) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\a3\03 \00\00\00\00\00\00\00") + (data $92 (i32.const 17052) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\c2\03 \00\00\00\00\00\00\00") + (data $93 (i32.const 17084) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\a3\03\n\00\00\00\00\00\00\00") + (data $94 (i32.const 17116) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\c2\03\n\00\00\00\00\00\00\00") + (data $95 (i32.const 17148) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00\a3\03\00\00\00\00\00\00\00\00") + (data $96 (i32.const 17180) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00\c2\03\00\00\00\00\00\00\00\00") + (data $97 (i32.const 17212) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\a3\03b\00\00\00\00\00\00\00") + (data $98 (i32.const 17244) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\c3\03b\00\00\00\00\00\00\00") + (data $99 (i32.const 17276) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\a3\03\a3\03 \00\00\00\00\00\00\00") + (data $100 (i32.const 17308) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\c3\03\c2\03 \00\00\00\00\00\00\00") + (data $101 (i32.const 17340) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00\a3\03 \00\00\00\00\00\00\00") + (data $102 (i32.const 17372) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00\c3\03 \00\00\00\00\00\00\00") + (data $103 (i32.const 17404) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00;\00\a3\03 \00\00\00\00\00\00\00") + (data $104 (i32.const 17436) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00;\00\c3\03 \00\00\00\00\00\00\00") + (data $105 (i32.const 17468) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\01\03\a3\03 \00\00\00\00\00\00\00") + (data $106 (i32.const 17500) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\01\03\c3\03 \00\00\00\00\00\00\00") + (data $107 (i32.const 17532) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03 \00\00\00") + (data $108 (i32.const 17564) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03 \00\00\00") + (data $109 (i32.const 17596) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\a3\03\a3\03-\00\00\00\00\00\00\00") + (data $110 (i32.const 17628) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\c3\03\c2\03-\00\00\00\00\00\00\00") + (data $111 (i32.const 17660) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03-\00\00\00") + (data $112 (i32.const 17692) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03-\00\00\00") + (data $113 (i32.const 17724) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03*s\00\00") + (data $114 (i32.const 17756) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03*s\00\00") + (data $115 (i32.const 17788) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\005\d8\a2\dc\a3\03\00\00\00\00\00\00") + (data $116 (i32.const 17820) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\005\d8\a2\dc\c2\03\00\00\00\00\00\00") + (data $117 (i32.const 17852) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00.\00\a3\03\00\00\00\00\00\00") + (data $118 (i32.const 17884) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00.\00\c2\03\00\00\00\00\00\00") + (data $119 (i32.const 17916) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00\ad\00\a3\03\00\00\00\00\00\00") + (data $120 (i32.const 17948) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\ad\00\c2\03\00\00\00\00\00\00") + (data $121 (i32.const 17980) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\004\d8B\de\a3\03\00\00\00\00") + (data $122 (i32.const 18012) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\004\d8B\de\c2\03\00\00\00\00") + (data $123 (i32.const 18044) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00E\03\a3\03\00\00\00\00\00\00\00\00") + (data $124 (i32.const 18076) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00E\03\c3\03\00\00\00\00\00\00\00\00") + (data $125 (i32.const 18108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\91\03E\03\a3\03\00\00\00\00\00\00") + (data $126 (i32.const 18140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\b1\03E\03\c2\03\00\00\00\00\00\00") + (data $127 (i32.const 18172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00\a3\03B\00\00\00\00\00\00\00") + (data $128 (i32.const 18204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc\00\00\00\00") + (data $129 (i32.const 18236) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc\00\00\00\00") + (data $130 (i32.const 18268) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\a3\03.\00b\00\00\00\00\00") + (data $131 (i32.const 18300) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\c3\03.\00b\00\00\00\00\00") + (data $132 (i32.const 18332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\a3\03\ad\00B\00\00\00\00\00") + (data $133 (i32.const 18364) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\c3\03\ad\00b\00\00\00\00\00") + (data $134 (i32.const 18396) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00A\00\a3\034\d8B\deB\00\00\00") + (data $135 (i32.const 18428) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00\c3\034\d8B\deb\00\00\00") + (data $136 (i32.const 18460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00\a3\03E\03\00\00\00\00\00\00") + (data $137 (i32.const 18492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\c2\03E\03\00\00\00\00\00\00") + (data $138 (i32.const 18524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\a3\03E\03\91\03\00\00\00\00") + (data $139 (i32.const 18556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03\00\00\00\00") + (data $140 (i32.const 18588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00\0e\18\a3\03\00\00\00\00\00\00") + (data $141 (i32.const 18620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\0e\18\c2\03\00\00\00\00\00\00") + (data $142 (i32.const 18652) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\0e\18\a3\03B\00\00\00\00\00") + (data $143 (i32.const 18684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\0e\18\c3\03b\00\00\00\00\00") + (data $144 (i32.const 18716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00\a3\03\0e\18\00\00\00\00\00\00") + (data $145 (i32.const 18748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\c2\03\0e\18\00\00\00\00\00\00") + (data $146 (i32.const 18780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\a3\03\0e\18B\00\00\00\00\00") + (data $147 (i32.const 18812) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\c3\03\0e\18b\00\00\00\00\00") + (data $148 (i32.const 18844) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\0e\18\a3\03\0e\18\00\00\00\00") + (data $149 (i32.const 18876) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\0e\18\c2\03\0e\18\00\00\00\00") + (data $150 (i32.const 18908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00A\00\0e\18\a3\03\0e\18B\00\00\00") + (data $151 (i32.const 18940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00\0e\18\c3\03\0e\18b\00\00\00") + (data $152 (i32.const 18972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\fb\00\00\00\00\00\00\00\00\00\00") + (data $153 (i32.const 19004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00F\00F\00\00\00\00\00\00\00\00\00") + (data $154 (i32.const 19036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00F\00I\00\00\00\00\00\00\00\00\00") + (data $155 (i32.const 19068) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\02\fb\00\00\00\00\00\00\00\00\00\00") + (data $156 (i32.const 19100) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00F\00L\00\00\00\00\00\00\00\00\00") + (data $157 (i32.const 19132) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\03\fb\00\00\00\00\00\00\00\00\00\00") + (data $158 (i32.const 19164) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00F\00F\00I\00\00\00\00\00\00\00") + (data $159 (i32.const 19196) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\04\fb\00\00\00\00\00\00\00\00\00\00") + (data $160 (i32.const 19228) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00F\00F\00L\00\00\00\00\00\00\00") + (data $161 (i32.const 19260) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\05\fb\00\00\00\00\00\00\00\00\00\00") + (data $162 (i32.const 19292) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00S\00T\00\00\00\00\00\00\00\00\00") + (data $163 (i32.const 19324) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\06\fb\00\00\00\00\00\00\00\00\00\00") + (data $164 (i32.const 19356) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\f0\01\00\00\00\00\00\00\00\00\00\00") + (data $165 (i32.const 19388) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00J\00\0c\03\00\00\00\00\00\00\00\00") + (data $166 (i32.const 19420) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\96\1e\00\00\00\00\00\00\00\00\00\00") + (data $167 (i32.const 19452) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00H\001\03\00\00\00\00\00\00\00\00") + (data $168 (i32.const 19484) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\97\1e\00\00\00\00\00\00\00\00\00\00") + (data $169 (i32.const 19516) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00T\00\08\03\00\00\00\00\00\00\00\00") + (data $170 (i32.const 19548) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\98\1e\00\00\00\00\00\00\00\00\00\00") + (data $171 (i32.const 19580) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00W\00\n\03\00\00\00\00\00\00\00\00") + (data $172 (i32.const 19612) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\99\1e\00\00\00\00\00\00\00\00\00\00") + (data $173 (i32.const 19644) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00Y\00\n\03\00\00\00\00\00\00\00\00") + (data $174 (i32.const 19676) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\9a\1e\00\00\00\00\00\00\00\00\00\00") + (data $175 (i32.const 19708) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00A\00\be\02\00\00\00\00\00\00\00\00") + (data $176 (i32.const 19740) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $177 (i32.const 19836) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00 \00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $178 (i32.const 19900) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 \00\00\00\00\00\00\00") + (data $179 (i32.const 19964) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $180 (i32.const 20060) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00 \00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $181 (i32.const 20124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 \00\00\00\00\00\00\00") + (data $182 (i32.const 20192) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\a4\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -236,159 +239,575 @@ i32.shr_u return ) - (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) - local.get $this - local.get $nextWithColor - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) - local.get $this - local.get $prev - i32.store offset=8 - ) - (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) - local.get $space - local.get $space - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $space - local.get $space - call $~lib/rt/itcms/Object#set:prev - local.get $space - return - ) - (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.const -1 - i32.xor - i32.and - return - ) - (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.and - return - ) - (func $~lib/rt/itcms/visitRoots (param $cookie i32) - (local $pn i32) - (local $iter i32) - local.get $cookie - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.set $pn - local.get $pn - call $~lib/rt/itcms/Object#get:next - local.set $iter - loop $while-continue|0 - local.get $iter - local.get $pn - i32.ne + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u if i32.const 1 - drop - local.get $iter - call $~lib/rt/itcms/Object#get:color + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $iter - i32.const 20 + local.get $value + i32.const 10000 + i32.ge_u i32.add - local.get $cookie - call $~lib/rt/__visit_members - local.get $iter - call $~lib/rt/itcms/Object#get:next - local.set $iter - br $while-continue|0 + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return end - end - ) - (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) - local.get $this - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $color - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) - local.get $this - i32.load offset=8 - ) - (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) - local.get $this - local.get $obj - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.and - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#unlink (param $this i32) - (local $next i32) - (local $prev i32) - local.get $this - call $~lib/rt/itcms/Object#get:next - local.set $next - local.get $next - i32.const 0 - i32.eq - if - i32.const 1 - drop - local.get $this - call $~lib/rt/itcms/Object#get:prev - i32.const 0 - i32.eq - if (result i32) - local.get $this - global.get $~lib/memory/__heap_base - i32.lt_u + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return else - i32.const 0 + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return end - i32.eqz + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u if - i32.const 0 - i32.const 128 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end - return end - local.get $this - call $~lib/rt/itcms/Object#get:prev - local.set $prev - i32.const 1 - drop - local.get $prev - i32.eqz + local.get $num + i32.const 100 + i32.ge_u if - i32.const 0 - i32.const 128 - i32.const 132 + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2064 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2064 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 2064 + i32.const 132 i32.const 16 call $~lib/builtins/abort unreachable @@ -417,8 +836,8 @@ i32.load i32.gt_u if - i32.const 256 - i32.const 320 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -486,7 +905,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 128 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -638,7 +1057,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -658,7 +1077,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -721,7 +1140,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -874,7 +1293,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -891,7 +1310,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -980,7 +1399,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -1023,7 +1442,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -1041,7 +1460,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -1109,7 +1528,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1226,7 +1645,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1272,7 +1691,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1304,7 +1723,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1548,7 +1967,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1768,7 +2187,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1876,8 +2295,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 64 - i32.const 400 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1979,7 +2398,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -2050,7 +2469,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2207,7 +2626,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2322,7 +2741,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2342,7 +2761,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2390,8 +2809,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 64 - i32.const 128 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2476,8 +2895,8 @@ i32.const 3 i32.rem_u local.set $y - i32.const 1420 - i32.const 1420 + i32.const 3356 + i32.const 3356 local.get $b i32.add i32.load8_u @@ -2489,7 +2908,7 @@ i32.load8_u local.set $v local.get $v - i32.const 4088 + i32.const 6024 local.get $y i32.const 2 i32.shl @@ -2501,8 +2920,8 @@ i32.const 6 i32.rem_u local.set $v - i32.const 4100 - i32.const 5060 + i32.const 6036 + i32.const 6996 local.get $b i32.add i32.load8_u @@ -2551,7 +2970,7 @@ i32.const 1 i32.shr_u local.set $h - i32.const 5572 + i32.const 7508 local.get $xb local.get $h i32.add @@ -2564,8 +2983,8 @@ local.get $c i32.eq if - i32.const 4100 - i32.const 5572 + i32.const 6036 + i32.const 7508 local.get $xb local.get $h i32.add @@ -2753,260 +3172,65 @@ loop $while-continue|1 local.get $len local.tee $7 - i32.const 1 - i32.sub - local.set $len - local.get $7 - if - local.get $ptr1 - i32.load16_u - local.set $a - local.get $ptr2 - i32.load16_u - local.set $b - local.get $a - local.get $b - i32.ne - if - local.get $a - local.get $b - i32.sub - return - end - local.get $ptr1 - i32.const 2 - i32.add - local.set $ptr1 - local.get $ptr2 - i32.const 2 - i32.add - local.set $ptr2 - br $while-continue|1 - end - end - i32.const 0 - return - ) - (func $~lib/util/string/stagedBinaryLookup (param $table i32) (param $c i32) (result i32) - local.get $table - local.get $table - local.get $c - i32.const 8 - i32.shr_u - i32.add - i32.load8_u - i32.const 5 - i32.shl - i32.add - local.get $c - i32.const 255 - i32.and - i32.const 3 - i32.shr_u - i32.add - i32.load8_u - local.get $c - i32.const 7 - i32.and - i32.shr_u - i32.const 1 - i32.and - return - ) - (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) - local.get $value - i32.const 100000 - i32.lt_u - if - local.get $value - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $value - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $value - i32.const 10000 - i32.ge_u - i32.add - local.get $value - i32.const 1000 - i32.ge_u - i32.add - return - end - unreachable - else - local.get $value - i32.const 10000000 - i32.lt_u - if - i32.const 6 - local.get $value - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $value - i32.const 1000000000 - i32.ge_u - i32.add - local.get $value - i32.const 100000000 - i32.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) - (local $t i32) - (local $r i32) - (local $d1 i32) - (local $d2 i32) - (local $digits1 i64) - (local $digits2 i64) - (local $t|9 i32) - (local $d1|10 i32) - (local $digits i32) - (local $digits|12 i32) - (local $digit i32) - loop $while-continue|0 - local.get $num - i32.const 10000 - i32.ge_u - if - local.get $num - i32.const 10000 - i32.div_u - local.set $t - local.get $num - i32.const 10000 - i32.rem_u - local.set $r - local.get $t - local.set $num - local.get $r - i32.const 100 - i32.div_u - local.set $d1 - local.get $r - i32.const 100 - i32.rem_u - local.set $d2 - i32.const 18188 - local.get $d1 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits1 - i32.const 18188 - local.get $d2 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits2 - local.get $offset - i32.const 4 - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits1 - local.get $digits2 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $num - i32.const 100 - i32.ge_u - if - local.get $num - i32.const 100 - i32.div_u - local.set $t|9 - local.get $num - i32.const 100 - i32.rem_u - local.set $d1|10 - local.get $t|9 - local.set $num - local.get $offset - i32.const 2 - i32.sub - local.set $offset - i32.const 18188 - local.get $d1|10 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $digits - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits - i32.store - end - local.get $num - i32.const 10 - i32.ge_u - if - local.get $offset - i32.const 2 - i32.sub - local.set $offset - i32.const 18188 - local.get $num - i32.const 2 - i32.shl - i32.add - i32.load - local.set $digits|12 - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits|12 - i32.store - else - local.get $offset - i32.const 1 - i32.sub - local.set $offset - i32.const 48 - local.get $num - i32.add - local.set $digit - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digit - i32.store16 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end end + i32.const 0 + return + ) + (func $~lib/util/string/stagedBinaryLookup (param $table i32) (param $c i32) (result i32) + local.get $table + local.get $table + local.get $c + i32.const 8 + i32.shr_u + i32.add + i32.load8_u + i32.const 5 + i32.shl + i32.add + local.get $c + i32.const 255 + i32.and + i32.const 3 + i32.shr_u + i32.add + i32.load8_u + local.get $c + i32.const 7 + i32.and + i32.shr_u + i32.const 1 + i32.and + return ) (func $~lib/util/number/decimalCount64High (param $value i64) (result i32) local.get $value @@ -3058,288 +3282,84 @@ i64.ge_u i32.add local.get $value - i64.const 1000000000000000000 - i64.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa64_dec_lut (param $buffer i32) (param $num i64) (param $offset i32) - (local $t i64) - (local $r i32) - (local $b i32) - (local $c i32) - (local $b1 i32) - (local $b2 i32) - (local $c1 i32) - (local $c2 i32) - (local $digits1 i64) - (local $digits2 i64) - loop $while-continue|0 - local.get $num - i64.const 100000000 - i64.ge_u - if - local.get $num - i64.const 100000000 - i64.div_u - local.set $t - local.get $num - local.get $t - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 - local.set $r - local.get $t - local.set $num - local.get $r - i32.const 10000 - i32.div_u - local.set $b - local.get $r - i32.const 10000 - i32.rem_u - local.set $c - local.get $b - i32.const 100 - i32.div_u - local.set $b1 - local.get $b - i32.const 100 - i32.rem_u - local.set $b2 - local.get $c - i32.const 100 - i32.div_u - local.set $c1 - local.get $c - i32.const 100 - i32.rem_u - local.set $c2 - i32.const 18188 - local.get $c1 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits1 - i32.const 18188 - local.get $c2 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits2 - local.get $offset - i32.const 4 - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits1 - local.get $digits2 - i64.const 32 - i64.shl - i64.or - i64.store - i32.const 18188 - local.get $b1 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits1 - i32.const 18188 - local.get $b2 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits2 - local.get $offset - i32.const 4 - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits1 - local.get $digits2 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $buffer - local.get $num - i32.wrap_i64 - local.get $offset - call $~lib/util/number/utoa32_dec_lut - ) - (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) - loop $while-continue|0 - local.get $offset - i32.const 2 - i32.ge_u - if - local.get $offset - i32.const 2 - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - i32.const 18608 - local.get $num - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $num - i64.const 8 - i64.shr_u - local.set $num - br $while-continue|0 - end - end - local.get $offset - i32.const 1 - i32.and - if - local.get $buffer - i32.const 18608 - local.get $num - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 - end - ) - (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) - (local $value i32) - (local $b64 i64) - (local $b i64) - (local $e i32) - block $~lib/util/number/isPowerOf2|inlined.0 (result i32) - local.get $base - local.set $value - local.get $value - i32.popcnt - i32.const 1 - i32.eq - br $~lib/util/number/isPowerOf2|inlined.0 - end - if - i32.const 63 - local.get $num - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $base - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - return + i64.const 1000000000000000000 + i64.ge_u + i32.add + return + end + unreachable end - local.get $base - i64.extend_i32_s - local.set $b64 - local.get $b64 - local.set $b - i32.const 1 - local.set $e + unreachable + ) + (func $~lib/util/number/utoa64_dec_lut (param $buffer i32) (param $num i64) (param $offset i32) + (local $t i64) + (local $r i32) + (local $b i32) + (local $c i32) + (local $b1 i32) + (local $b2 i32) + (local $c1 i32) + (local $c2 i32) + (local $digits1 i64) + (local $digits2 i64) loop $while-continue|0 local.get $num - local.get $b + i64.const 100000000 i64.ge_u if local.get $num - local.get $b + i64.const 100000000 i64.div_u + local.set $t + local.get $num + local.get $t + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.set $r + local.get $t local.set $num + local.get $r + i32.const 10000 + i32.div_u + local.set $b + local.get $r + i32.const 10000 + i32.rem_u + local.set $c local.get $b + i32.const 100 + i32.div_u + local.set $b1 local.get $b - i64.mul - local.set $b - local.get $e - i32.const 1 + i32.const 100 + i32.rem_u + local.set $b2 + local.get $c + i32.const 100 + i32.div_u + local.set $c1 + local.get $c + i32.const 100 + i32.rem_u + local.set $c2 + i32.const 364 + local.get $c1 + i32.const 2 i32.shl - local.set $e - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $num - i64.const 1 - i64.ge_u - if - local.get $num - local.get $b64 - i64.div_u - local.set $num - local.get $e - i32.const 1 i32.add - local.set $e - br $while-continue|1 - end - end - local.get $e - i32.const 1 - i32.sub - return - ) - (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) - (local $base i64) - (local $shift i64) - (local $mask i64) - (local $q i64) - local.get $radix - i64.extend_i32_s - local.set $base - local.get $radix - local.get $radix - i32.const 1 - i32.sub - i32.and - i32.const 0 - i32.eq - if - local.get $radix - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s - local.set $shift - local.get $base - i64.const 1 - i64.sub - local.set $mask - loop $do-loop|0 + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $c2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 local.get $offset - i32.const 1 + i32.const 4 i32.sub local.set $offset local.get $buffer @@ -3347,128 +3367,55 @@ i32.const 1 i32.shl i32.add - i32.const 19664 - local.get $num - local.get $mask - i64.and - i32.wrap_i64 - i32.const 1 + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + i32.const 364 + local.get $b1 + i32.const 2 i32.shl i32.add - i32.load16_u - i32.store16 - local.get $num - local.get $shift - i64.shr_u - local.set $num - local.get $num - i64.const 0 - i64.ne - br_if $do-loop|0 - end - else - loop $do-loop|1 + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $b2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 local.get $offset - i32.const 1 + i32.const 4 i32.sub local.set $offset - local.get $num - local.get $base - i64.div_u - local.set $q local.get $buffer local.get $offset i32.const 1 i32.shl i32.add - i32.const 19664 - local.get $num - local.get $q - local.get $base - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $q - local.set $num - local.get $num - i64.const 0 - i64.ne - br_if $do-loop|1 - end - end - ) - (func $~lib/number/I64#toString (param $this i64) (param $radix i32) (result i32) - local.get $this - local.get $radix - call $~lib/util/number/itoa64 - return - ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 256 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 64 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 18608 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 19664 - local.get $0 - call $~lib/rt/itcms/__visit - global.get $~lib/util/casemap/SPECIALS_UPPER - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/staticarray/StaticArray - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end - return end - unreachable + local.get $buffer + local.get $num + i32.wrap_i64 + local.get $offset + call $~lib/util/number/utoa32_dec_lut + ) + (func $~lib/number/I64#toString (param $this i64) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/itoa64 + return ) (func $~start call $start:std/string-casemapping @@ -3478,14 +3425,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 52848 - i32.const 52896 + i32.const 53008 + i32.const 53056 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 32 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/string/String#toUpperCase (param $this i32) (result i32) (local $len i32) (local $codes i32) @@ -3598,7 +3750,7 @@ i32.const 0 i32.gt_s drop - i32.const 1292 + i32.const 3228 local.get $c|9 i32.add i32.load8_u @@ -4097,7 +4249,7 @@ i32.const 0 i32.gt_s drop - i32.const 6060 + i32.const 7996 local.get $c|7 i32.add i32.load8_u @@ -4317,7 +4469,7 @@ i32.const 918000 i32.lt_u if (result i32) - i32.const 6188 + i32.const 8124 local.get $c|24 call $~lib/util/string/stagedBinaryLookup else @@ -4334,7 +4486,7 @@ i32.const 127370 i32.lt_u if (result i32) - i32.const 9196 + i32.const 11132 local.get $c|25 call $~lib/util/string/stagedBinaryLookup else @@ -4440,7 +4592,7 @@ i32.const 918000 i32.lt_u if (result i32) - i32.const 6188 + i32.const 8124 local.get $c|31 call $~lib/util/string/stagedBinaryLookup else @@ -4457,7 +4609,7 @@ i32.const 127370 i32.lt_u if (result i32) - i32.const 9196 + i32.const 11132 local.get $c|32 call $~lib/util/string/stagedBinaryLookup else @@ -4673,138 +4825,31 @@ i32.ne if local.get $first - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - return - end - local.get $first - i32.const 55296 - i32.sub - i32.const 10 - i32.shl - local.get $second - i32.const 56320 - i32.sub - i32.add - i32.const 65536 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - return - ) - (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) - (local $thisSize i32) - (local $otherSize i32) - (local $outSize i32) - (local $out i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $thisSize - local.get $other - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $otherSize - local.get $thisSize - local.get $otherSize - i32.add - local.set $outSize - local.get $outSize - i32.const 0 - i32.eq - if - i32.const 32 - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $5 return end - global.get $~lib/memory/__stack_pointer - local.get $outSize - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store offset=4 - local.get $out - local.get $this - local.get $thisSize - memory.copy - local.get $out - local.get $thisSize + local.get $first + i32.const 55296 + i32.sub + i32.const 10 + i32.shl + local.get $second + i32.const 56320 + i32.sub i32.add - local.get $other - local.get $otherSize - memory.copy - local.get $out - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 65536 i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - ) - (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $left - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $right - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/string/String#concat - local.set $2 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $5 return ) (func $start:std/string-casemapping @@ -4836,13 +4881,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 176 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 208 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 352 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 32 @@ -4857,7 +4902,7 @@ i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -4875,427 +4920,427 @@ i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 9 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10784 + i32.const 12720 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 10832 + i32.const 12768 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10880 + i32.const 12816 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 10928 + i32.const 12864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10976 + i32.const 12912 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 11072 + i32.const 13008 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 12 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11072 + i32.const 13008 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 11168 + i32.const 13104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11264 + i32.const 13200 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 11328 + i32.const 13264 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11328 + i32.const 13264 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 11392 + i32.const 13328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11456 + i32.const 13392 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 11552 + i32.const 13488 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11552 + i32.const 13488 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 11648 + i32.const 13584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11744 + i32.const 13680 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 11840 + i32.const 13776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11840 + i32.const 13776 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 11936 + i32.const 13872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12032 + i32.const 13968 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 12112 + i32.const 14048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 20 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12192 + i32.const 14128 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 12272 + i32.const 14208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12352 + i32.const 14288 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 12416 + i32.const 14352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12480 + i32.const 14416 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 12560 + i32.const 14496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 23 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12640 + i32.const 14576 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 12720 + i32.const 14656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12800 + i32.const 14736 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 12864 + i32.const 14800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 25 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12928 + i32.const 14864 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 13008 + i32.const 14944 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 26 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13088 + i32.const 15024 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 13168 + i32.const 15104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 27 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13248 + i32.const 15184 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 13408 + i32.const 15344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 28 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13248 + i32.const 15184 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 13568 + i32.const 15504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 32 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13728 + i32.const 15664 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 13760 + i32.const 15696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 36 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13792 + i32.const 15728 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 13824 + i32.const 15760 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 37 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13856 + i32.const 15792 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 14064 + i32.const 16000 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 38 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13728 + i32.const 15664 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer @@ -5308,18 +5353,18 @@ local.get $10 i32.store local.get $10 - i32.const 14272 + i32.const 16208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 42 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14304 + i32.const 16240 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer @@ -5332,18 +5377,18 @@ local.get $10 i32.store local.get $10 - i32.const 14336 + i32.const 16272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 43 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14368 + i32.const 16304 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer @@ -5356,12 +5401,12 @@ local.get $10 i32.store local.get $10 - i32.const 14368 + i32.const 16304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -5380,12 +5425,12 @@ local.get $10 i32.store local.get $10 - i32.const 14624 + i32.const 16560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 50 i32.const 1 call $~lib/builtins/abort @@ -5404,930 +5449,930 @@ local.get $10 i32.store local.get $10 - i32.const 14624 + i32.const 16560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 51 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14656 + i32.const 16592 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 14688 + i32.const 16624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 54 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14720 + i32.const 16656 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 14752 + i32.const 16688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 55 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14784 + i32.const 16720 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 14816 + i32.const 16752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 56 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14848 + i32.const 16784 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 14880 + i32.const 16816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 59 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14912 + i32.const 16848 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 14944 + i32.const 16880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 60 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14976 + i32.const 16912 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 15008 + i32.const 16944 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 61 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15040 + i32.const 16976 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 15072 + i32.const 17008 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 62 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15104 + i32.const 17040 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 15136 + i32.const 17072 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 63 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15168 + i32.const 17104 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 15200 + i32.const 17136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 64 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15232 + i32.const 17168 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 15264 + i32.const 17200 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 65 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15296 + i32.const 17232 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 15328 + i32.const 17264 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 66 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15360 + i32.const 17296 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 15392 + i32.const 17328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 67 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15424 + i32.const 17360 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 15456 + i32.const 17392 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 68 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15488 + i32.const 17424 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 15520 + i32.const 17456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 69 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15552 + i32.const 17488 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 15584 + i32.const 17520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 70 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15616 + i32.const 17552 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 15648 + i32.const 17584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 72 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15680 + i32.const 17616 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 15712 + i32.const 17648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 73 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15744 + i32.const 17680 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 15776 + i32.const 17712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 74 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15808 + i32.const 17744 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 15840 + i32.const 17776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 75 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15872 + i32.const 17808 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 15904 + i32.const 17840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 78 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15936 + i32.const 17872 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 15968 + i32.const 17904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 79 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16000 + i32.const 17936 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 16032 + i32.const 17968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 80 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16064 + i32.const 18000 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 16096 + i32.const 18032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 81 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16128 + i32.const 18064 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 16160 + i32.const 18096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 82 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16192 + i32.const 18128 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 16224 + i32.const 18160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 83 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16256 + i32.const 18192 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 15328 + i32.const 17264 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 84 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16288 + i32.const 18224 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 16320 + i32.const 18256 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 85 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16352 + i32.const 18288 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 16384 + i32.const 18320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 86 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16416 + i32.const 18352 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 16448 + i32.const 18384 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 87 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16480 + i32.const 18416 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 16512 + i32.const 18448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 88 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16544 + i32.const 18480 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 16576 + i32.const 18512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 89 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16608 + i32.const 18544 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 16640 + i32.const 18576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 90 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16672 + i32.const 18608 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 16704 + i32.const 18640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16736 + i32.const 18672 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 16768 + i32.const 18704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 92 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16800 + i32.const 18736 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 16832 + i32.const 18768 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 93 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16864 + i32.const 18800 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 16896 + i32.const 18832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 94 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16928 + i32.const 18864 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 16960 + i32.const 18896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 95 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16992 + i32.const 18928 call $~lib/string/String#toLowerCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 17024 + i32.const 18960 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 96 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17056 + i32.const 18992 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 17088 + i32.const 19024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 99 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14304 + i32.const 16240 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 17120 + i32.const 19056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 100 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17152 + i32.const 19088 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 17184 + i32.const 19120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 101 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17216 + i32.const 19152 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 17248 + i32.const 19184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 102 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17280 + i32.const 19216 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 17312 + i32.const 19248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 103 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17344 + i32.const 19280 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 17376 + i32.const 19312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 104 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17408 + i32.const 19344 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 17376 + i32.const 19312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 105 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17440 + i32.const 19376 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 17472 + i32.const 19408 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 106 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17504 + i32.const 19440 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 17536 + i32.const 19472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 107 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17568 + i32.const 19504 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 17600 + i32.const 19536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 108 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17632 + i32.const 19568 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 17664 + i32.const 19600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 109 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17696 + i32.const 19632 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 17728 + i32.const 19664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 110 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17760 + i32.const 19696 call $~lib/string/String#toUpperCase local.set $10 global.get $~lib/memory/__stack_pointer local.get $10 i32.store local.get $10 - i32.const 17792 + i32.const 19728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6000 + i32.const 7936 i32.const 111 i32.const 1 call $~lib/builtins/abort @@ -6539,7 +6584,7 @@ local.get $8 i64.ne if - i32.const 17824 + i32.const 19760 i32.const 1 local.get $0 f64.convert_i32_s @@ -6548,7 +6593,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 17920 + i32.const 19856 local.get $6 i32.const 10 call $~lib/number/I64#toString @@ -6570,7 +6615,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 19760 + i32.const 19920 local.get $8 i32.const 10 call $~lib/number/I64#toString @@ -6597,7 +6642,7 @@ local.get $9 i64.ne if - i32.const 19824 + i32.const 19984 i32.const 1 local.get $0 f64.convert_i32_s @@ -6606,7 +6651,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 19920 + i32.const 20080 local.get $7 i32.const 10 call $~lib/number/I64#toString @@ -6628,7 +6673,7 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 19984 + i32.const 20144 local.get $9 i32.const 10 call $~lib/number/I64#toString @@ -6663,6 +6708,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/string/String.fromCodePoint (param $code i32) (result i32) (local $hasSur i32) (local $out i32) @@ -6702,7 +6894,7 @@ i32.eqz if i32.const 0 - i32.const 14576 + i32.const 16512 i32.const 39 i32.const 7 call $~lib/builtins/abort @@ -6778,8 +6970,8 @@ i32.gt_s end if - i32.const 17984 - i32.const 18112 + i32.const 160 + i32.const 288 i32.const 431 i32.const 5 call $~lib/builtins/abort @@ -6790,7 +6982,7 @@ i64.ne i32.eqz if - i32.const 18176 + i32.const 352 local.set $18 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -6965,4 +7157,66 @@ local.get $18 return ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + global.get $~lib/util/casemap/SPECIALS_UPPER + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/staticarray/StaticArray + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/std/string-casemapping.release.wat b/tests/compiler/std/string-casemapping.release.wat index e8270d424d..296614d343 100644 --- a/tests/compiler/std/string-casemapping.release.wat +++ b/tests/compiler/std/string-casemapping.release.wat @@ -1,16 +1,15 @@ (module (type $0 (func (param i32 i32) (result i32))) - (type $1 (func)) - (type $2 (func (param i32) (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func)) (type $3 (func (param i32))) (type $4 (func (param i32 i32))) - (type $5 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i32))) (type $6 (func (param i32 i32 i64))) (type $7 (func (result i32))) (type $8 (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $9 (func (param i32 i32 i32))) + (type $9 (func (param i32 i32 i32 i32))) (type $10 (func (param i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "string_casemapping" "toLowerCaseFromIndex" (func $std/string-casemapping/toLowerCaseFromIndex (param i32 i32) (result i32))) (import "string_casemapping" "toUpperCaseFromIndex" (func $std/string-casemapping/toUpperCaseFromIndex (param i32 i32) (result i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) @@ -24,476 +23,686 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 53848)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 54008)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02") - (data $1 (i32.const 1068) "<") - (data $1.1 (i32.const 1080) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $2 (i32.const 1132) "<") - (data $2.1 (i32.const 1144) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $5 (i32.const 1260) "<") - (data $5.1 (i32.const 1272) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $6 (i32.const 1324) ",") - (data $6.1 (i32.const 1336) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $8 (i32.const 1404) "<") - (data $8.1 (i32.const 1416) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $9 (i32.const 1468) "L\03") - (data $9.1 (i32.const 1480) "\04\00\00\000\03\00\00\df\00S\00S\00\00\00I\01\bc\02N\00\00\00\f0\01J\00\0c\03\00\00\90\03\99\03\08\03\01\03\b0\03\a5\03\08\03\01\03\87\055\05R\05\00\00\96\1eH\001\03\00\00\97\1eT\00\08\03\00\00\98\1eW\00\n\03\00\00\99\1eY\00\n\03\00\00\9a\1eA\00\be\02\00\00P\1f\a5\03\13\03\00\00R\1f\a5\03\13\03\00\03T\1f\a5\03\13\03\01\03V\1f\a5\03\13\03B\03\80\1f\08\1f\99\03\00\00\81\1f\t\1f\99\03\00\00\82\1f\n\1f\99\03\00\00\83\1f\0b\1f\99\03\00\00\84\1f\0c\1f\99\03\00\00\85\1f\r\1f\99\03\00\00\86\1f\0e\1f\99\03\00\00\87\1f\0f\1f\99\03\00\00\88\1f\08\1f\99\03\00\00\89\1f\t\1f\99\03\00\00\8a\1f\n\1f\99\03\00\00\8b\1f\0b\1f\99\03\00\00\8c\1f\0c\1f\99\03\00\00\8d\1f\r\1f\99\03\00\00\8e\1f\0e\1f\99\03\00\00\8f\1f\0f\1f\99\03\00\00\90\1f(\1f\99\03\00\00\91\1f)\1f\99\03\00\00\92\1f*\1f\99\03\00\00\93\1f+\1f\99\03\00\00\94\1f,\1f\99\03\00\00\95\1f-\1f\99\03\00\00\96\1f.\1f\99\03\00\00\97\1f/\1f\99\03\00\00\98\1f(\1f\99\03\00\00\99\1f)\1f\99\03\00\00\9a\1f*\1f\99\03\00\00\9b\1f+\1f\99\03\00\00\9c\1f,\1f\99\03\00\00\9d\1f-\1f\99\03\00\00\9e\1f.\1f\99\03\00\00\9f\1f/\1f\99\03\00\00\a0\1fh\1f\99\03\00\00\a1\1fi\1f\99\03\00\00\a2\1fj\1f\99\03\00\00\a3\1fk\1f\99\03\00\00\a4\1fl\1f\99\03\00\00\a5\1fm\1f\99\03\00\00\a6\1fn\1f\99\03\00\00\a7\1fo\1f\99\03\00\00\a8\1fh\1f\99\03\00\00\a9\1fi\1f\99\03\00\00\aa\1fj\1f\99\03\00\00\ab\1fk\1f\99\03\00\00\ac\1fl\1f\99\03\00\00\ad\1fm\1f\99\03\00\00\ae\1fn\1f\99\03\00\00\af\1fo\1f\99\03\00\00\b2\1f\ba\1f\99\03\00\00\b3\1f\91\03\99\03\00\00\b4\1f\86\03\99\03\00\00\b6\1f\91\03B\03\00\00\b7\1f\91\03B\03\99\03\bc\1f\91\03\99\03\00\00\c2\1f\ca\1f\99\03\00\00\c3\1f\97\03\99\03\00\00\c4\1f\89\03\99\03\00\00\c6\1f\97\03B\03\00\00\c7\1f\97\03B\03\99\03\cc\1f\97\03\99\03\00\00\d2\1f\99\03\08\03\00\03\d3\1f\99\03\08\03\01\03\d6\1f\99\03B\03\00\00\d7\1f\99\03\08\03B\03\e2\1f\a5\03\08\03\00\03\e3\1f\a5\03\08\03\01\03\e4\1f\a1\03\13\03\00\00\e6\1f\a5\03B\03\00\00\e7\1f\a5\03\08\03B\03\f2\1f\fa\1f\99\03\00\00\f3\1f\a9\03\99\03\00\00\f4\1f\8f\03\99\03\00\00\f6\1f\a9\03B\03\00\00\f7\1f\a9\03B\03\99\03\fc\1f\a9\03\99\03\00\00\00\fbF\00F\00\00\00\01\fbF\00I\00\00\00\02\fbF\00L\00\00\00\03\fbF\00F\00I\00\04\fbF\00F\00L\00\05\fbS\00T\00\00\00\06\fbS\00T\00\00\00\13\fbD\05F\05\00\00\14\fbD\055\05\00\00\15\fbD\05;\05\00\00\16\fbN\05F\05\00\00\17\fbD\05=\05") - (data $10 (i32.const 2317) "\01\02\03\04\05\06\07\08\t\n\0b\0c\r\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\7f") - (data $11 (i32.const 2444) "\07\08\t\n\0b\0c\06\06\06\06\06\06\06\06\06\06\r\06\06\0e\06\06\06\06\06\06\06\06\0f\10\11\12\06\13\06\06\06\06\06\06\06\06\06\06\14\15\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\16\17\06\06\06\18\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\19\06\06\06\06\1a\06\06\06\06\06\06\06\1b\06\06\06\06\06\06\06\06\06\06\06\1c\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1d\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1e\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06") - (data $11.1 (i32.const 3067) "$++++++++\01\00TVVVVVVVV") - (data $11.2 (i32.const 3106) "\18\00\00\00+++++++\07++[VVVVVVVJVV\051P1P1P1P1P1P1P1P$Py1P1P18P1P1P1P1P1P1P1PN1\02N\r\rN\03N\00$n\00N1&nQN$PN9\14\81\1b\1d\1dS1P1P\r1P1P1P\1bS$P1\02\\{\\{\\{\\{\\{\14y\\{\\{\\-+I\03H\03x\\{\14\00\96\n\01+(\06\06\00*\06**+\07\bb\b5+\1e\00+\07+++\01++++++++++++++++++++++++++++++++\01+++++++++++++++++++++++*+++++++++++++\cdF\cd+\00%+\07\01\06\01UVVVVVUVV\02$\81\81\81\81\81\15\81\81\81\00\00+\00\b2\d1\b2\d1\b2\d1\b2\d1\00\00\cd\cc\01\00\d7\d7\d7\d7\d7\83\81\81\81\81\81\81\81\81\81\81\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\1c\00\00\00\00\001P1P1P1P1P1\02\00\001P1P1P1P1P1P1P1P1PN1P1PN1P1P1P1P1P1P1P1\02\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6*++++++++++++\00\00\00TVVVVVVVVVVVV") - (data $11.3 (i32.const 3615) "TVVVVVVVVVVVV\0c\00\0c*+++++++++++++\07*\01") - (data $11.4 (i32.const 3701) "*++++++++++++++++++++++++++VVl\81\15\00++++++++++++++++++++++++++++++++++++++++++\07l\03A++VVVVVVVVVVVVVV,V+++++++++++++++++++++\01") - (data $11.5 (i32.const 3860) "\0cl\00\00\00\00\00\06") - (data $11.6 (i32.const 3906) "\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%Vz\9e&\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06\01++OVV,+\7fVV9++UVV++OVV,+\7fVV\817u[{\\++OVV\02\ac\04\00\009++UVV++OVV,++VV2\13\81W\00o\81~\c9\d7~-\81\81\0e~9\7foW\00\81\81~\15\00~\03++++++++++++\07+$+\97+++++++++*+++++VVVVV\80\81\81\81\819\bb*++++++++++++++++++++++++++++++++++++++++\01\81\81\81\81\81\81\81\81\81\81\81\81\81\81\81\c9\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\d0\r\00N1\02\b4\c1\c1\d7\d7$P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P\d7\d7S\c1G\d4\d7\d7\d7\05++++++++++++\07\01\00\01") - (data $11.7 (i32.const 4357) "N1P1P1P1P1P1P1P\r\00\00\00\00\00$P1P1P1P1P") - (data $11.8 (i32.const 4422) "+++++++++++y\\{\\{O{\\{\\{\\{\\{\\{\\{\\{\\{\\{\\-++y\14\\{\\-y*\\\'\\{\\{\\{\a4\00\n\b4\\{\\{O\03x8+++++++++++++O-++\01") - (data $11.9 (i32.const 4535) "H") - (data $11.10 (i32.const 4545) "*++++++++++++++++++++++++++") - (data $11.11 (i32.const 4605) "++++++++\07\00HVVVVVVVV\02") - (data $11.12 (i32.const 4680) "+++++++++++++UVVVVVVVVVVVV\0e") - (data $11.13 (i32.const 4738) "$+++++++++++\07\00VVVVVVVVVVVV") - (data $11.14 (i32.const 4808) "$++++++++++++++++\07\00\00\00\00VVVVVVVVVVVVVVVVV") - (data $11.15 (i32.const 4905) "*++++++++++VVVVVVVVVV\0e") - (data $11.16 (i32.const 4959) "*++++++++++VVVVVVVVVV\0e") - (data $11.17 (i32.const 5024) "+++++++++++UVVVVVVVVVV\0e") - (data $12 (i32.const 5113) "\08\00\00V\01\00\009") - (data $13 (i32.const 5128) "\01 \00\00\00\e0\ff\ff\00\bf\1d\00\00\e7\02\00\00y\00\00\02$\00\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\01\02\00\00\00\fe\ff\ff\019\ff\ff\00\18\ff\ff\01\87\ff\ff\00\d4\fe\ff\00\c3\00\00\01\d2\00\00\01\ce\00\00\01\cd\00\00\01O\00\00\01\ca\00\00\01\cb\00\00\01\cf\00\00\00a\00\00\01\d3\00\00\01\d1\00\00\00\a3\00\00\01\d5\00\00\00\82\00\00\01\d6\00\00\01\da\00\00\01\d9\00\00\01\db\00\00\008\00\00\03\00\00\00\00\b1\ff\ff\01\9f\ff\ff\01\c8\ff\ff\02($\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\003\ff\ff\00&\ff\ff\01~\ff\ff\01+*\00\01]\ff\ff\01(*\00\00?*\00\01=\ff\ff\01E\00\00\01G\00\00\00\1f*\00\00\1c*\00\00\1e*\00\00.\ff\ff\002\ff\ff\006\ff\ff\005\ff\ff\00O\a5\00\00K\a5\00\001\ff\ff\00(\a5\00\00D\a5\00\00/\ff\ff\00-\ff\ff\00\f7)\00\00A\a5\00\00\fd)\00\00+\ff\ff\00*\ff\ff\00\e7)\00\00C\a5\00\00*\a5\00\00\bb\ff\ff\00\'\ff\ff\00\b9\ff\ff\00%\ff\ff\00\15\a5\00\00\12\a5\00\02$L\00\00\00\00\00\01 \00\00\00\e0\ff\ff\01\01\00\00\00\ff\ff\ff\00T\00\00\01t\00\00\01&\00\00\01%\00\00\01@\00\00\01?\00\00\00\da\ff\ff\00\db\ff\ff\00\e1\ff\ff\00\c0\ff\ff\00\c1\ff\ff\01\08\00\00\00\c2\ff\ff\00\c7\ff\ff\00\d1\ff\ff\00\ca\ff\ff\00\f8\ff\ff\00\aa\ff\ff\00\b0\ff\ff\00\07\00\00\00\8c\ff\ff\01\c4\ff\ff\00\a0\ff\ff\01\f9\ff\ff\02\1ap\00\01\01\00\00\00\ff\ff\ff\01 \00\00\00\e0\ff\ff\01P\00\00\01\0f\00\00\00\f1\ff\ff\00\00\00\00\010\00\00\00\d0\ff\ff\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c0\0b\00\01`\1c\00\00\00\00\00\01\d0\97\00\01\08\00\00\00\f8\ff\ff\02\05\8a\00\00\00\00\00\01@\f4\ff\00\9e\e7\ff\00\c2\89\00\00\db\e7\ff\00\92\e7\ff\00\93\e7\ff\00\9c\e7\ff\00\9d\e7\ff\00\a4\e7\ff\00\00\00\00\008\8a\00\00\04\8a\00\00\e6\0e\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c5\ff\ff\01A\e2\ff\02\1d\8f\00\00\08\00\00\01\f8\ff\ff\00\00\00\00\00V\00\00\01\aa\ff\ff\00J\00\00\00d\00\00\00\80\00\00\00p\00\00\00~\00\00\00\t\00\00\01\b6\ff\ff\01\f7\ff\ff\00\db\e3\ff\01\9c\ff\ff\01\90\ff\ff\01\80\ff\ff\01\82\ff\ff\02\05\ac\00\00\00\00\00\01\10\00\00\00\f0\ff\ff\01\1c\00\00\01\01\00\00\01\a3\e2\ff\01A\df\ff\01\ba\df\ff\00\e4\ff\ff\02\0b\b1\00\01\01\00\00\00\ff\ff\ff\010\00\00\00\d0\ff\ff\00\00\00\00\01\t\d6\ff\01\1a\f1\ff\01\19\d6\ff\00\d5\d5\ff\00\d8\d5\ff\01\e4\d5\ff\01\03\d6\ff\01\e1\d5\ff\01\e2\d5\ff\01\c1\d5\ff\00\00\00\00\00\a0\e3\ff\00\00\00\00\01\01\00\00\00\ff\ff\ff\02\0c\bc\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\01\bcZ\ff\01\a0\03\00\01\fcu\ff\01\d8Z\ff\000\00\00\01\b1Z\ff\01\b5Z\ff\01\bfZ\ff\01\eeZ\ff\01\d6Z\ff\01\ebZ\ff\01\d0\ff\ff\01\bdZ\ff\01\c8u\ff\00\00\00\00\000h\ff\00`\fc\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01(\00\00\00\d8\ff\ff\00\00\00\00\01@\00\00\00\c0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01\"\00\00\00\de\ff\ff") - (data $14 (i32.const 6085) "\06\'Qow") - (data $14.1 (i32.const 6100) "|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa") - (data $14.2 (i32.const 6128) "\b4\c4") - (data $14.3 (i32.const 6250) "\c6\c9\00\00\00\db") - (data $14.4 (i32.const 6339) "\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4") - (data $14.5 (i32.const 6364) "\e7") - (data $14.6 (i32.const 6450) "\ea") - (data $14.7 (i32.const 6573) "\ed") - (data $15 (i32.const 6596) "0\0c1\rx\0e\7f\0f\80\10\81\11\86\12\89\13\8a\13\8e\14\8f\15\90\16\93\13\94\17\95\18\96\19\97\1a\9a\1b\9c\19\9d\1c\9e\1d\9f\1e\a6\1f\a9\1f\ae\1f\b1 \b2 \b7!\bf\"\c5#\c8#\cb#\dd$\f2#\f6%\f7& -:.=/>0?1@1C2D3E4P5Q6R7S8T9Y:[;\\e?f@hAiBj@kClDoBqErFuG}H\82I\87J\89K\8aL\8bL\8cM\92N\9dO\9ePEW{\1d|\1d}\1d\7fX\86Y\88Z\89Z\8aZ\8c[\8e\\\8f\\\ac]\ad^\ae^\af^\c2_\cc`\cda\cea\cfb\d0c\d1d\d5e\d6f\d7g\f0h\f1i\f2j\f3k\f4l\f5m\f9n\fd-\fe-\ff-PiQiRiSiTiUiViWiXiYiZi[i\\i]i^i_i\82\00\83\00\84\00\85\00\86\00\87\00\88\00\89\00\c0u\cfv\80\89\81\8a\82\8b\85\8c\86\8dp\9dq\9dv\9ew\9ex\9fy\9fz\a0{\a0|\a1}\a1\b3\a2\ba\a3\bb\a3\bc\a4\be\a5\c3\a2\cc\a4\da\a6\db\a6\e5j\ea\a7\eb\a7\ecn\f3\a2\f8\a8\f9\a8\fa\a9\fb\a9\fc\a4&\b0*\b1+\b2N\b3\84\08b\bac\bbd\bce\bdf\bem\bfn\c0o\c1p\c2~\c3\7f\c3}\cf\8d\d0\94\d1\ab\d2\ac\d3\ad\d4\b0\d5\b1\d6\b2\d7\c4\d8\c5\d9\c6\da") - (data $16 (i32.const 7004) "L") - (data $16.1 (i32.const 7016) "\02\00\00\002\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00c\00a\00s\00e\00m\00a\00p\00p\00i\00n\00g\00.\00t\00s") - (data $17 (i32.const 7085) "\01\02\03\04\05\06\07\08\t\n\0b\0c\r\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\7f") - (data $18 (i32.const 7212) "\12\10\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\10\10\"\10\10\10#$%&\'()\10*+\10\10\10\10\10\10\10\10\10\10\10,-.\10/\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\100\10\10\101\10234567\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\108\10\109:\10;<=\10\10\10\10\10\10>\10\10?@ABCDEFGHIJKL\10MNO\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10P\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10QR\10\10\10S\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10T\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10UV\10\10\10\10\10\10\10W\10\10\10\10\10XYZ\10\10\10\10\10[\\\10\10\10\10\10\10\10\10\10]\10\10\10\10\10\10\10\10\10\10\10\10") - (data $18.1 (i32.const 7756) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\80@\00\04\00\00\00@\01\00\00\00\00\00\00\00\00\a1\90\01") - (data $18.2 (i32.const 7842) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff0\04\b0") - (data $18.3 (i32.const 7900) "\f8\03") - (data $18.4 (i32.const 7927) "\82\00\00\00\00\00\00\fe\ff\ff\ff\ff\bf\b6\00\00\00\00\00\10\00?\00\ff\17\00\00\00\00\01\f8\ff\ff\00\00\01") - (data $18.5 (i32.const 7974) "\c0\bf\ff=\00\00\00\80\02\00\00\00\ff\ff\ff\07") - (data $18.6 (i32.const 8000) "\c0\ff\01\00\00\00\00\00\00\f8?$\00\00\c0\ff\ff?\00\00\00\00\00\0e") - (data $18.7 (i32.const 8038) "\f8\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\14\fe!\fe\00\0c\00\02\00\02\00\00\00\00\00\00\10\1e \00\00\0c\00\00@\06\00\00\00\00\00\00\10\869\02\00\00\00#\00\06\00\00\00\00\00\00\10\be!\00\00\0c\00\00\fc\02\00\00\00\00\00\00\90\1e `\00\0c\00\00\00\04\00\00\00\00\00\00\00\01 \00\00\00\00\00\00\11\00\00\00\00\00\00\c0\c1=`\00\0c\00\00\00\02\00\00\00\00\00\00\90@0\00\00\0c\00\00\00\03\00\00\00\00\00\00\18\1e \00\00\0c\00\00\00\02\00\00\00\00\00\00\00\00\04\\") - (data $18.8 (i32.const 8210) "\f2\07\c0\7f") - (data $18.9 (i32.const 8226) "\f2\1f@?") - (data $18.10 (i32.const 8239) "\03\00\00\a0\02\00\00\00\00\00\00\fe\7f\df\e0\ff\fe\ff\ff\ff\1f@") - (data $18.11 (i32.const 8273) "\e0\fdf\00\00\00\c3\01\00\1e\00d \00 ") - (data $18.12 (i32.const 8299) "\10") - (data $18.13 (i32.const 8311) "\e0") - (data $18.14 (i32.const 8334) "\1c\00\00\00\1c\00\00\00\0c\00\00\00\0c\00\00\00\00\00\00\00\b0?@\fe\8f \00\00\00\00\00x\00\00\00\00\00\00\08\00\00\00\00\00\00\00`\00\00\00\00\02") - (data $18.15 (i32.const 8400) "\87\01\04\0e") - (data $18.16 (i32.const 8430) "\80\t\00\00\00\00\00\00@\7f\e5\1f\f8\9f\00\00\00\00\80\00\ff\ff\01\00\00\00\00\00\00\00\0f\00\00\00\00\00\d0\17\04\00\00\00\00\f8\0f\00\03\00\00\00<;\00\00\00\00\00\00@\a3\03\00\00\00\00\00\00\f0\cf\00\00\00\00\00\00\00\00?") - (data $18.17 (i32.const 8518) "\f7\ff\fd!\10\03\00\00\00\00\00\f0\ff\ff\ff\ff\ff\ff\ff\07\00\01\00\00\00\f8\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fb") - (data $18.18 (i32.const 8579) "\a0\03\e0\00\e0\00\e0\00`\00\f8\00\03\90|\00\00\00\00\00\00\df\ff\02\80\00\00\ff\1f\00\00\00\00\00\00\ff\ff\ff\ff\01") - (data $18.19 (i32.const 8635) "0") - (data $18.20 (i32.const 8649) "\80\03") - (data $18.21 (i32.const 8665) "\80\00\80") - (data $18.22 (i32.const 8680) "\ff\ff\ff\ff\00\00\00\00\00\80") - (data $18.23 (i32.const 8716) " \00\00\00\00<>\08") - (data $18.24 (i32.const 8735) "~") - (data $18.25 (i32.const 8747) "p\00\00 ") - (data $18.26 (i32.const 8811) "?\00\10") - (data $18.27 (i32.const 8825) "\80\f7\bf\00\00\00\f0") - (data $18.28 (i32.const 8842) "\03\00\ff\ff\ff\ff\03") - (data $18.29 (i32.const 8858) "\01\00\00\07") - (data $18.30 (i32.const 8875) "\03D\08\00\00`\10") - (data $18.31 (i32.const 8900) "0\00\00\00\ff\ff\03\80\00\00\00\00\c0?\00\00\80\ff\03\00\00\00\00\00\07\00\00\00\00\00\c83\00\80\00\00`\00\00\00\00\00\00\00\00~f\00\08\10\00\00\00\00\01\10\00\00\00\00\00\00\9d\c1\02\00\00 \000X") - (data $18.32 (i32.const 8983) "\f8\00\0e") - (data $18.33 (i32.const 9000) " !\00\00\00\00\00@") - (data $18.34 (i32.const 9026) "\fc\ff\03\00\00\00\00\00\00\00\ff\ff\08\00\ff\ff\00\00\00\00$") - (data $18.35 (i32.const 9067) "\80\80@\00\04\00\00\00@\01\00\00\00\00\00\01\00\00\00\00\c0\00\00\00\00\00\00\00\00\08\00\00\0e") - (data $18.36 (i32.const 9131) " ") - (data $18.37 (i32.const 9160) "\01") - (data $18.38 (i32.const 9178) "\c0\07") - (data $18.39 (i32.const 9196) "n\f0\00\00\00\00\00\87") - (data $18.40 (i32.const 9224) "`\00\00\00\00\00\00\00\f0") - (data $18.41 (i32.const 9281) "\18") - (data $18.42 (i32.const 9300) "\c0\ff\01") - (data $18.43 (i32.const 9324) "\02\00\00\00\00\00\00\ff\7f\00\00\00\00\00\00\80\03\00\00\00\00\00x&\00 \00\00\00\00\00\00\07\00\00\00\80\ef\1f\00\00\00\00\00\00\00\08\00\03\00\00\00\00\00\c0\7f\00\9e") - (data $18.44 (i32.const 9393) "\80\d3@") - (data $18.45 (i32.const 9415) "\80\f8\07\00\00\03\00\00\00\00\00\00\18\01\00\00\00\c0\1f\1f") - (data $18.46 (i32.const 9459) "\ff\\\00\00@") - (data $18.47 (i32.const 9474) "\f8\85\r") - (data $18.48 (i32.const 9506) "<\b0\01\00\000") - (data $18.49 (i32.const 9522) "\f8\a7\01") - (data $18.50 (i32.const 9537) "(\bf") - (data $18.51 (i32.const 9551) "\e0\bc\0f") - (data $18.52 (i32.const 9585) "\80\ff\06") - (data $18.53 (i32.const 9619) "X\08") - (data $18.54 (i32.const 9638) "\f0\0c\01\00\00\00\fe\07\00\00\00\00\f8y\80\00~\0e\00\00\00\00\00\fc\7f\03") - (data $18.55 (i32.const 9682) "\7f\bf") - (data $18.56 (i32.const 9694) "\fc\ff\ff\fcm") - (data $18.57 (i32.const 9714) "~\b4\bf") - (data $18.58 (i32.const 9726) "\a3") - (data $18.59 (i32.const 9770) "\18\00\00\00\00\00\00\00\ff\01") - (data $18.60 (i32.const 9834) "\1f\00\00\00\00\00\00\00\7f\00\0f") - (data $18.61 (i32.const 9877) "\80\00\00\00\00\00\00\00\80\ff\ff\00\00\00\00\00\00\00\00\1b") - (data $18.62 (i32.const 9919) "`\0f") - (data $18.63 (i32.const 9944) "\80\03\f8\ff\e7\0f\00\00\00<") - (data $18.64 (i32.const 9972) "\1c") - (data $18.65 (i32.const 9996) "\ff\ff\ff\ff\ff\ff\7f\f8\ff\ff\ff\ff\ff\1f \00\10\00\00\f8\fe\ff") - (data $18.66 (i32.const 10028) "\7f\ff\ff\f9\db\07") - (data $18.67 (i32.const 10066) "\ff?") - (data $18.68 (i32.const 10121) "\f0") - (data $18.69 (i32.const 10150) "\7f") - (data $18.70 (i32.const 10164) "\f0\0f") - (data $18.71 (i32.const 10219) "\f8") - (data $19 (i32.const 10220) "\12\13\14\15\16\17\10\10\10\10\10\10\10\10\10\10\18\10\10\19\10\10\10\10\10\10\10\10\1a\1b\11\1c\1d\1e\10\10\1f\10\10\10\10\10\10\10 !\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\"#\10\10\10$\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10%\10\10\10&\10\10\10\10\'\10\10\10\10\10\10\10(\10\10\10\10\10\10\10\10\10\10\10)\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10*\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10+,-.\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/\10\10\10\10\10\10\100\10\10\10\10\10\10\10\10\10\10\10\10\10\10") - (data $19.1 (i32.const 10764) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\04 \04\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\f7\f0\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ef\ff\ff\ff\ff\01\03\00\00\00\1f") - (data $19.2 (i32.const 10900) " \00\00\00\00\00\cf\bc@\d7\ff\ff\fb\ff\ff\ff\ff\ff\ff\ff\ff\ff\bf\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\03\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fe\ff\ff\ff\7f\00\ff\ff\ff\ff\ff\01") - (data $19.3 (i32.const 11008) "\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7") - (data $19.4 (i32.const 11040) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??") - (data $19.5 (i32.const 11068) "\ff\01\ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\ff\ff??\ff\ff\ff\ff??\ff\aa\ff\ff\ff?\ff\ff\ff\ff\ff\ff\df_\dc\1f\cf\0f\ff\1f\dc\1f") - (data $19.6 (i32.const 11162) "\02\80\00\00\ff\1f") - (data $19.7 (i32.const 11180) "\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18") - (data $19.8 (i32.const 11234) "\c0\ff\ff\ff\ff\ff\ff\03\00\00\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\1fx\0c\00\ff\ff\ff\ff\bf ") - (data $19.9 (i32.const 11316) "\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?") - (data $19.10 (i32.const 11344) "\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ffx\ff\ff\ff\ff\ff\ff\fc\07\00\00\00\00`\07\00\00\00\00\00\00\ff\ff\ff\ff\ff\f7\ff\01\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\7f\00\f8") - (data $19.11 (i32.const 11440) "\fe\ff\ff\07\fe\ff\ff\07") - (data $19.12 (i32.const 11468) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff") - (data $19.13 (i32.const 11490) "\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f") - (data $19.14 (i32.const 11516) "\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07") - (data $19.15 (i32.const 11552) "\ff\ff\ff\ff\ff\ff\ff\ff") - (data $19.16 (i32.const 11572) "\ff\ff\ff\ff\ff\ff\ff\ff") - (data $19.17 (i32.const 11596) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\df\ff\ff\ff\ff\ff\ff\ff\ff\dfd\de\ff\eb\ef\ff\ff\ff\ff\ff\ff\ff\bf\e7\df\df\ff\ff\ff{_\fc\fd\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff?\ff\ff\ff\fd\ff\ff\f7\ff\ff\ff\f7\ff\ff\df\ff\ff\ff\df\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\fd\ff\ff\ff\fd\ff\ff\f7\0f\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\0f") - (data $19.18 (i32.const 11762) "\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03") - (data $20 (i32.const 11788) ",") - (data $20.1 (i32.const 11800) "\02\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\n") - (data $21 (i32.const 11836) ",") - (data $21.1 (i32.const 11848) "\02\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00A\00Z\00.\00!\00\n") - (data $22 (i32.const 11884) ",") - (data $22.1 (i32.const 11896) "\02\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\t") - (data $23 (i32.const 11932) ",") - (data $23.1 (i32.const 11944) "\02\00\00\00\16\00\00\000\009\00_\00a\00z\00 \00a\00z\00.\00!\00\t") - (data $24 (i32.const 11980) "\\") - (data $24.1 (i32.const 11992) "\02\00\00\00J\00\00\00D\00e\00r\00 \00W\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00B\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") - (data $25 (i32.const 12076) "\\") - (data $25.1 (i32.const 12088) "\02\00\00\00J\00\00\00D\00E\00R\00 \00W\00E\00C\00H\00S\00E\00L\00 \00A\00L\00L\00E\00I\00N\00 \00I\00S\00T\00 \00D\00A\00S\00 \00B\00E\00S\00T\00\c4\00N\00D\00I\00G\00E") - (data $26 (i32.const 12172) "\\") - (data $26.1 (i32.const 12184) "\02\00\00\00J\00\00\00d\00e\00r\00 \00w\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00b\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") - (data $27 (i32.const 12268) "<") - (data $27.1 (i32.const 12280) "\02\00\00\00$\00\00\00@\00 \00\14 \00\14\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") - (data $28 (i32.const 12332) "<") - (data $28.1 (i32.const 12344) "\02\00\00\00$\00\00\00@\00 \00\14 \00\14\04 \04#\04\13\04 \00\'\04\15\04\1b\04\1e\04\12\04\15\04\1a\04\10\04!") - (data $29 (i32.const 12396) "<") - (data $29.1 (i32.const 12408) "\02\00\00\00$\00\00\00@\00 \00\14 \004\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") - (data $30 (i32.const 12460) "\\") - (data $30.1 (i32.const 12472) "\02\00\00\00D\00\00\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") - (data $31 (i32.const 12556) "\\") - (data $31.1 (i32.const 12568) "\02\00\00\00D\00\00\00.\" \00E\00\c5\"D\00A\00 \00=\00 \00Q\00,\00 \00N\00 \00\92! \00\1e\",\00 \00\11\" \00F\00(\00I\00)\00 \00=\00 \00\0f\" \00G\00(\00I\00)") - (data $32 (i32.const 12652) "\\") - (data $32.1 (i32.const 12664) "\02\00\00\00D\00\00\00.\" \00e\00\c5\"d\00a\00 \00=\00 \00q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") - (data $33 (i32.const 12748) "\\") - (data $33.1 (i32.const 12760) "\02\00\00\00H\00\00\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n") - (data $34 (i32.const 12844) "\\") - (data $34.1 (i32.const 12856) "\02\00\00\00H\00\00\00\d0\00I\00 \00I\00N\00T\00\8f\01\c8\02N\00\c6\00\a9\01\8f\01N\00\8f\01L\00 \00F\00\8f\01\c8\02N\00\90\01T\00I\00K\00 \00\8f\01S\00O\00\b1\01S\00I\00\c8\02E\00I\00\a9\01N") - (data $35 (i32.const 12940) "\\") - (data $35.1 (i32.const 12952) "\02\00\00\00H\00\00\00\f0\00i\00 \00i\00n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\00i\00k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\00i\00\83\02n") - (data $36 (i32.const 13036) "L") - (data $36.1 (i32.const 13048) "\02\00\00\00.\00\00\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03\cc\03\c8\03\b7\03") - (data $37 (i32.const 13116) "L") - (data $37.1 (i32.const 13128) "\02\00\00\00.\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00\9a\03\8c\03\a8\03\97\03") - (data $38 (i32.const 13196) "L") - (data $38.1 (i32.const 13208) "\02\00\00\000\00\00\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03\ae\03,") - (data $39 (i32.const 13276) "L") - (data $39.1 (i32.const 13288) "\02\00\00\004\00\00\00\a4\03\9f\03\a5\03B\03 \00\a3\03\a0\03\91\03\98\03\99\03\9f\03\a5\03B\03 \00\a4\03\ca\1f\9d\03 \00\a4\03\a1\03\9f\03\9c\03\95\03\a1\03\89\03,") - (data $40 (i32.const 13356) "<") - (data $40.1 (i32.const 13368) "\02\00\00\00,\00\00\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03") - (data $41 (i32.const 13420) "<") - (data $41.1 (i32.const 13432) "\02\00\00\00,\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00L\1f\a8\03\97\03") - (data $42 (i32.const 13484) "L") - (data $42.1 (i32.const 13496) "\02\00\00\002\00\00\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03\af\03\b1\03 \00\bc\03\b5\03\c4\03\c1\03\ac\03\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.") - (data $43 (i32.const 13564) "L") - (data $43.1 (i32.const 13576) "\02\00\00\004\00\00\00\a0\03\9f\03\ea\1f \00\9c\03\c8\1f \00\92\03\8a\03\91\03 \00\9c\03\95\03\a4\03\a1\03\86\03\95\03\99\03 \00\a4\03\ca\1f \00\93\03\97\03B\03.") - (data $44 (i32.const 13644) "L") - (data $44.1 (i32.const 13656) "\02\00\00\00.\00\00\00\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03\cc\03\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03\ad\03\bd\03\b7\03") - (data $45 (i32.const 13724) "L") - (data $45.1 (i32.const 13736) "\02\00\00\00.\00\00\00\91\03\a0\03\bf\1f \00\a4\03\ba\1f \00\9a\03\8c\03\9a\03\9a\03\91\03\9b\03\91\03 \00\92\03\93\03\91\03\9b\03\9c\03\88\03\9d\03\97\03") - (data $46 (i32.const 13804) "<") - (data $46.1 (i32.const 13816) "\02\00\00\00(\00\00\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03\ae\03\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03\ac\03") - (data $47 (i32.const 13868) "<") - (data $47.1 (i32.const 13880) "\02\00\00\00*\00\00\00\a4\03\a9\03B\03\9d\03 \00\fe\1f\95\03\9b\03\9b\03\89\03\9d\03\a9\03\9d\03 \00\a4\03\ba\1f \009\1f\95\03\a1\03\86\03") - (data $48 (i32.const 13932) "L") - (data $48.1 (i32.const 13944) "\02\00\00\002\00\00\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03\ad\03\bd\03\b7\03") - (data $49 (i32.const 14012) "L") - (data $49.1 (i32.const 14024) "\02\00\00\004\00\00\00\9a\03\91\03\da\1f \00\a3\03\ba\1f\9d\03 \00\a0\03\a1\03\a9\03B\03\a4\03\91\03 \00\08\1f\9d\03\94\03\a1\03\95\03\99\03\a9\03\9c\03\88\03\9d\03\97\03") - (data $50 (i32.const 14092) "L") - (data $50.1 (i32.const 14104) "\02\00\00\006\00\00\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03\ac\03!") - (data $51 (i32.const 14172) "L") - (data $51.1 (i32.const 14184) "\02\00\00\00:\00\00\00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00n\1f \00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00\bf\1f\95\03\9b\03\95\03\a5\03\98\03\95\03\a1\03\99\03\86\03!") - (data $52 (i32.const 14252) "\9c") - (data $52.1 (i32.const 14264) "\02\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data $53 (i32.const 14412) "\9c") - (data $53.1 (i32.const 14424) "\02\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z") - (data $54 (i32.const 14572) "\9c") - (data $54.1 (i32.const 14584) "\02\00\00\00\80\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data $55 (i32.const 14732) "\1c") - (data $55.1 (i32.const 14744) "\02\00\00\00\02\00\00\00\df") - (data $56 (i32.const 14764) "\1c") - (data $56.1 (i32.const 14776) "\02\00\00\00\04\00\00\00S\00S") - (data $57 (i32.const 14796) "\1c") - (data $57.1 (i32.const 14808) "\02\00\00\00\02\00\00\000\01") - (data $58 (i32.const 14828) "\1c") - (data $58.1 (i32.const 14840) "\02\00\00\00\04\00\00\00i\00\07\03") - (data $59 (i32.const 14860) "\cc") - (data $59.1 (i32.const 14872) "\02\00\00\00\ae\00\00\00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10") - (data $60 (i32.const 15068) "\cc") - (data $60.1 (i32.const 15080) "\02\00\00\00\b2\00\00\00\a3\00\a9\00\9c\03\c0\00\c6\00\d6\00\de\00S\00S\00\c9\00\d6\00x\01\13 \14 \18 \1c \1d \1e \" & 0 \"!R\01`\01x\01}\01\ac \00\91\03\92\03\93\03\94\03\a9\03\91\03\92\03\93\03\94\03\a9\03 \00\10\04\11\04\12\04\13\04\14\04\10\04\11\04\12\04\13\04\14\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00F\00I\00\fd\ff@$\82 (\1f\02\1e\e4\04\84\1eo,\d0\02N#\d0\051\05\90\1c") - (data $61 (i32.const 15276) "\1c") - (data $61.1 (i32.const 15288) "\02\00\00\00\04\00\00\00s\00s") - (data $62 (i32.const 15308) "\1c") - (data $62.1 (i32.const 15320) "\02\00\00\00\02\00\00\00\01\fb") - (data $63 (i32.const 15340) "\1c") - (data $63.1 (i32.const 15352) "\02\00\00\00\04\00\00\00f\00i") - (data $64 (i32.const 15372) "\cc") - (data $64.1 (i32.const 15384) "\02\00\00\00\b8\00\00\00A\d8\0e\df \00A\d81\df \00A\d8y\df \00C\d8S\dc \00C\d8x\dc \00C\d8\96\dc \00C\d8\cf\dc \00C\d8\d5\dc \00C\d8\15\dd \00C\d8|\dd \00C\d8\7f\dd \00C\d8\0e\de \00C\d8\0f\de \00C\d8w\de \00C\d8\9d\de \00C\d8\a2\de \00C\d8\d7\de \00C\d8\f9\de \00C\d8\fa\de \00C\d8-\df \00C\d8.\df \00C\d8L\df \00C\d8\b4\df \00C\d8\bc\df \00C\d8\ea\df \00D\d8\\\dc \00D\d8o\dc \00D\d8u\dc \00D\d8v\dc \00D\d8{\dc \00D\d8\c1\dc") - (data $65 (i32.const 15580) ",") - (data $65.1 (i32.const 15592) "\02\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data $66 (i32.const 15628) "\1c") - (data $66.1 (i32.const 15640) "\02\00\00\00\04\00\00\00\00\d8\00\dc") - (data $67 (i32.const 15660) "\1c") - (data $67.1 (i32.const 15672) "\02\00\00\00\02\00\00\00\88\1f") - (data $68 (i32.const 15692) "\1c") - (data $68.1 (i32.const 15704) "\02\00\00\00\02\00\00\00\80\1f") - (data $69 (i32.const 15724) "\1c") - (data $69.1 (i32.const 15736) "\02\00\00\00\02\00\00\00\8f\1f") - (data $70 (i32.const 15756) "\1c") - (data $70.1 (i32.const 15768) "\02\00\00\00\02\00\00\00\87\1f") - (data $71 (i32.const 15788) "\1c") - (data $71.1 (i32.const 15800) "\02\00\00\00\02\00\00\00\fc\1f") - (data $72 (i32.const 15820) "\1c") - (data $72.1 (i32.const 15832) "\02\00\00\00\02\00\00\00\f3\1f") - (data $73 (i32.const 15852) "\1c") - (data $73.1 (i32.const 15864) "\02\00\00\00\02\00\00\00\a3\03") - (data $74 (i32.const 15884) "\1c") - (data $74.1 (i32.const 15896) "\02\00\00\00\02\00\00\00\c3\03") - (data $75 (i32.const 15916) "\1c") - (data $75.1 (i32.const 15928) "\02\00\00\00\04\00\00\00 \00\a3\03") - (data $76 (i32.const 15948) "\1c") - (data $76.1 (i32.const 15960) "\02\00\00\00\04\00\00\00 \00\c3\03") - (data $77 (i32.const 15980) "\1c") - (data $77.1 (i32.const 15992) "\02\00\00\00\04\00\00\00\a3\03 ") - (data $78 (i32.const 16012) "\1c") - (data $78.1 (i32.const 16024) "\02\00\00\00\04\00\00\00\c3\03 ") - (data $79 (i32.const 16044) "\1c") - (data $79.1 (i32.const 16056) "\02\00\00\00\06\00\00\00 \00\a3\03 ") - (data $80 (i32.const 16076) "\1c") - (data $80.1 (i32.const 16088) "\02\00\00\00\06\00\00\00 \00\c3\03 ") - (data $81 (i32.const 16108) "\1c") - (data $81.1 (i32.const 16120) "\02\00\00\00\06\00\00\00a\00\a3\03 ") - (data $82 (i32.const 16140) "\1c") - (data $82.1 (i32.const 16152) "\02\00\00\00\06\00\00\00a\00\c2\03 ") - (data $83 (i32.const 16172) "\1c") - (data $83.1 (i32.const 16184) "\02\00\00\00\06\00\00\00a\00\a3\03\n") - (data $84 (i32.const 16204) "\1c") - (data $84.1 (i32.const 16216) "\02\00\00\00\06\00\00\00a\00\c2\03\n") - (data $85 (i32.const 16236) "\1c") - (data $85.1 (i32.const 16248) "\02\00\00\00\04\00\00\00a\00\a3\03") - (data $86 (i32.const 16268) "\1c") - (data $86.1 (i32.const 16280) "\02\00\00\00\04\00\00\00a\00\c2\03") - (data $87 (i32.const 16300) "\1c") - (data $87.1 (i32.const 16312) "\02\00\00\00\06\00\00\00a\00\a3\03b") - (data $88 (i32.const 16332) "\1c") - (data $88.1 (i32.const 16344) "\02\00\00\00\06\00\00\00a\00\c3\03b") - (data $89 (i32.const 16364) "\1c") - (data $89.1 (i32.const 16376) "\02\00\00\00\06\00\00\00\a3\03\a3\03 ") - (data $90 (i32.const 16396) "\1c") - (data $90.1 (i32.const 16408) "\02\00\00\00\06\00\00\00\c3\03\c2\03 ") - (data $91 (i32.const 16428) "\1c") - (data $91.1 (i32.const 16440) "\02\00\00\00\06\00\00\001\00\a3\03 ") - (data $92 (i32.const 16460) "\1c") - (data $92.1 (i32.const 16472) "\02\00\00\00\06\00\00\001\00\c3\03 ") - (data $93 (i32.const 16492) "\1c") - (data $93.1 (i32.const 16504) "\02\00\00\00\06\00\00\00;\00\a3\03 ") - (data $94 (i32.const 16524) "\1c") - (data $94.1 (i32.const 16536) "\02\00\00\00\06\00\00\00;\00\c3\03 ") - (data $95 (i32.const 16556) "\1c") - (data $95.1 (i32.const 16568) "\02\00\00\00\06\00\00\00\01\03\a3\03 ") - (data $96 (i32.const 16588) "\1c") - (data $96.1 (i32.const 16600) "\02\00\00\00\06\00\00\00\01\03\c3\03 ") - (data $97 (i32.const 16620) "\1c") - (data $97.1 (i32.const 16632) "\02\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03 ") - (data $98 (i32.const 16652) "\1c") - (data $98.1 (i32.const 16664) "\02\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03 ") - (data $99 (i32.const 16684) "\1c") - (data $99.1 (i32.const 16696) "\02\00\00\00\06\00\00\00\a3\03\a3\03-") - (data $100 (i32.const 16716) "\1c") - (data $100.1 (i32.const 16728) "\02\00\00\00\06\00\00\00\c3\03\c2\03-") - (data $101 (i32.const 16748) "\1c") - (data $101.1 (i32.const 16760) "\02\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03-") - (data $102 (i32.const 16780) "\1c") - (data $102.1 (i32.const 16792) "\02\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03-") - (data $103 (i32.const 16812) "\1c") - (data $103.1 (i32.const 16824) "\02\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03*s") - (data $104 (i32.const 16844) "\1c") - (data $104.1 (i32.const 16856) "\02\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03*s") - (data $105 (i32.const 16876) "\1c") - (data $105.1 (i32.const 16888) "\02\00\00\00\06\00\00\005\d8\a2\dc\a3\03") - (data $106 (i32.const 16908) "\1c") - (data $106.1 (i32.const 16920) "\02\00\00\00\06\00\00\005\d8\a2\dc\c2\03") - (data $107 (i32.const 16940) "\1c") - (data $107.1 (i32.const 16952) "\02\00\00\00\06\00\00\00A\00.\00\a3\03") - (data $108 (i32.const 16972) "\1c") - (data $108.1 (i32.const 16984) "\02\00\00\00\06\00\00\00a\00.\00\c2\03") - (data $109 (i32.const 17004) "\1c") - (data $109.1 (i32.const 17016) "\02\00\00\00\06\00\00\00A\00\ad\00\a3\03") - (data $110 (i32.const 17036) "\1c") - (data $110.1 (i32.const 17048) "\02\00\00\00\06\00\00\00a\00\ad\00\c2\03") - (data $111 (i32.const 17068) "\1c") - (data $111.1 (i32.const 17080) "\02\00\00\00\08\00\00\00A\004\d8B\de\a3\03") - (data $112 (i32.const 17100) "\1c") - (data $112.1 (i32.const 17112) "\02\00\00\00\08\00\00\00a\004\d8B\de\c2\03") - (data $113 (i32.const 17132) "\1c") - (data $113.1 (i32.const 17144) "\02\00\00\00\04\00\00\00E\03\a3\03") - (data $114 (i32.const 17164) "\1c") - (data $114.1 (i32.const 17176) "\02\00\00\00\04\00\00\00E\03\c3\03") - (data $115 (i32.const 17196) "\1c") - (data $115.1 (i32.const 17208) "\02\00\00\00\06\00\00\00\91\03E\03\a3\03") - (data $116 (i32.const 17228) "\1c") - (data $116.1 (i32.const 17240) "\02\00\00\00\06\00\00\00\b1\03E\03\c2\03") - (data $117 (i32.const 17260) "\1c") - (data $117.1 (i32.const 17272) "\02\00\00\00\06\00\00\00A\00\a3\03B") - (data $118 (i32.const 17292) "\1c") - (data $118.1 (i32.const 17304) "\02\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc") - (data $119 (i32.const 17324) "\1c") - (data $119.1 (i32.const 17336) "\02\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc") - (data $120 (i32.const 17356) "\1c") - (data $120.1 (i32.const 17368) "\02\00\00\00\08\00\00\00A\00\a3\03.\00b") - (data $121 (i32.const 17388) "\1c") - (data $121.1 (i32.const 17400) "\02\00\00\00\08\00\00\00a\00\c3\03.\00b") - (data $122 (i32.const 17420) "\1c") - (data $122.1 (i32.const 17432) "\02\00\00\00\08\00\00\00A\00\a3\03\ad\00B") - (data $123 (i32.const 17452) "\1c") - (data $123.1 (i32.const 17464) "\02\00\00\00\08\00\00\00a\00\c3\03\ad\00b") - (data $124 (i32.const 17484) "\1c") - (data $124.1 (i32.const 17496) "\02\00\00\00\n\00\00\00A\00\a3\034\d8B\deB") - (data $125 (i32.const 17516) "\1c") - (data $125.1 (i32.const 17528) "\02\00\00\00\n\00\00\00a\00\c3\034\d8B\deb") - (data $126 (i32.const 17548) "\1c") - (data $126.1 (i32.const 17560) "\02\00\00\00\06\00\00\00A\00\a3\03E\03") - (data $127 (i32.const 17580) "\1c") - (data $127.1 (i32.const 17592) "\02\00\00\00\06\00\00\00a\00\c2\03E\03") - (data $128 (i32.const 17612) "\1c") - (data $128.1 (i32.const 17624) "\02\00\00\00\08\00\00\00A\00\a3\03E\03\91\03") - (data $129 (i32.const 17644) "\1c") - (data $129.1 (i32.const 17656) "\02\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03") - (data $130 (i32.const 17676) "\1c") - (data $130.1 (i32.const 17688) "\02\00\00\00\06\00\00\00A\00\0e\18\a3\03") - (data $131 (i32.const 17708) "\1c") - (data $131.1 (i32.const 17720) "\02\00\00\00\06\00\00\00a\00\0e\18\c2\03") - (data $132 (i32.const 17740) "\1c") - (data $132.1 (i32.const 17752) "\02\00\00\00\08\00\00\00A\00\0e\18\a3\03B") - (data $133 (i32.const 17772) "\1c") - (data $133.1 (i32.const 17784) "\02\00\00\00\08\00\00\00a\00\0e\18\c3\03b") - (data $134 (i32.const 17804) "\1c") - (data $134.1 (i32.const 17816) "\02\00\00\00\06\00\00\00A\00\a3\03\0e\18") - (data $135 (i32.const 17836) "\1c") - (data $135.1 (i32.const 17848) "\02\00\00\00\06\00\00\00a\00\c2\03\0e\18") - (data $136 (i32.const 17868) "\1c") - (data $136.1 (i32.const 17880) "\02\00\00\00\08\00\00\00A\00\a3\03\0e\18B") - (data $137 (i32.const 17900) "\1c") - (data $137.1 (i32.const 17912) "\02\00\00\00\08\00\00\00a\00\c3\03\0e\18b") - (data $138 (i32.const 17932) "\1c") - (data $138.1 (i32.const 17944) "\02\00\00\00\08\00\00\00A\00\0e\18\a3\03\0e\18") - (data $139 (i32.const 17964) "\1c") - (data $139.1 (i32.const 17976) "\02\00\00\00\08\00\00\00a\00\0e\18\c2\03\0e\18") - (data $140 (i32.const 17996) "\1c") - (data $140.1 (i32.const 18008) "\02\00\00\00\n\00\00\00A\00\0e\18\a3\03\0e\18B") - (data $141 (i32.const 18028) "\1c") - (data $141.1 (i32.const 18040) "\02\00\00\00\n\00\00\00a\00\0e\18\c3\03\0e\18b") - (data $142 (i32.const 18060) "\1c") - (data $142.1 (i32.const 18072) "\02\00\00\00\02\00\00\00\00\fb") - (data $143 (i32.const 18092) "\1c") - (data $143.1 (i32.const 18104) "\02\00\00\00\04\00\00\00F\00F") - (data $144 (i32.const 18124) "\1c") - (data $144.1 (i32.const 18136) "\02\00\00\00\04\00\00\00F\00I") - (data $145 (i32.const 18156) "\1c") - (data $145.1 (i32.const 18168) "\02\00\00\00\02\00\00\00\02\fb") - (data $146 (i32.const 18188) "\1c") - (data $146.1 (i32.const 18200) "\02\00\00\00\04\00\00\00F\00L") - (data $147 (i32.const 18220) "\1c") - (data $147.1 (i32.const 18232) "\02\00\00\00\02\00\00\00\03\fb") - (data $148 (i32.const 18252) "\1c") - (data $148.1 (i32.const 18264) "\02\00\00\00\06\00\00\00F\00F\00I") - (data $149 (i32.const 18284) "\1c") - (data $149.1 (i32.const 18296) "\02\00\00\00\02\00\00\00\04\fb") - (data $150 (i32.const 18316) "\1c") - (data $150.1 (i32.const 18328) "\02\00\00\00\06\00\00\00F\00F\00L") - (data $151 (i32.const 18348) "\1c") - (data $151.1 (i32.const 18360) "\02\00\00\00\02\00\00\00\05\fb") - (data $152 (i32.const 18380) "\1c") - (data $152.1 (i32.const 18392) "\02\00\00\00\04\00\00\00S\00T") - (data $153 (i32.const 18412) "\1c") - (data $153.1 (i32.const 18424) "\02\00\00\00\02\00\00\00\06\fb") - (data $154 (i32.const 18444) "\1c") - (data $154.1 (i32.const 18456) "\02\00\00\00\02\00\00\00\f0\01") - (data $155 (i32.const 18476) "\1c") - (data $155.1 (i32.const 18488) "\02\00\00\00\04\00\00\00J\00\0c\03") - (data $156 (i32.const 18508) "\1c") - (data $156.1 (i32.const 18520) "\02\00\00\00\02\00\00\00\96\1e") - (data $157 (i32.const 18540) "\1c") - (data $157.1 (i32.const 18552) "\02\00\00\00\04\00\00\00H\001\03") - (data $158 (i32.const 18572) "\1c") - (data $158.1 (i32.const 18584) "\02\00\00\00\02\00\00\00\97\1e") - (data $159 (i32.const 18604) "\1c") - (data $159.1 (i32.const 18616) "\02\00\00\00\04\00\00\00T\00\08\03") - (data $160 (i32.const 18636) "\1c") - (data $160.1 (i32.const 18648) "\02\00\00\00\02\00\00\00\98\1e") - (data $161 (i32.const 18668) "\1c") - (data $161.1 (i32.const 18680) "\02\00\00\00\04\00\00\00W\00\n\03") - (data $162 (i32.const 18700) "\1c") - (data $162.1 (i32.const 18712) "\02\00\00\00\02\00\00\00\99\1e") - (data $163 (i32.const 18732) "\1c") - (data $163.1 (i32.const 18744) "\02\00\00\00\04\00\00\00Y\00\n\03") - (data $164 (i32.const 18764) "\1c") - (data $164.1 (i32.const 18776) "\02\00\00\00\02\00\00\00\9a\1e") - (data $165 (i32.const 18796) "\1c") - (data $165.1 (i32.const 18808) "\02\00\00\00\04\00\00\00A\00\be\02") - (data $166 (i32.const 18828) "\\") - (data $166.1 (i32.const 18840) "\02\00\00\00@\00\00\00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e") - (data $167 (i32.const 18924) "<") - (data $167.1 (i32.const 18936) "\02\00\00\00\"\00\00\00 \00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (data $168 (i32.const 18988) "|") - (data $168.1 (i32.const 19000) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data $169 (i32.const 19116) "<") - (data $169.1 (i32.const 19128) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data $170 (i32.const 19180) "\1c") - (data $170.1 (i32.const 19192) "\02\00\00\00\02\00\00\000") - (data $171 (i32.const 19212) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data $172 (i32.const 19612) "\1c\04") - (data $172.1 (i32.const 19624) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data $173 (i32.const 20668) "\\") - (data $173.1 (i32.const 20680) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data $174 (i32.const 20764) "<") - (data $174.1 (i32.const 20776) "\02\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (data $175 (i32.const 20828) "\\") - (data $175.1 (i32.const 20840) "\02\00\00\00@\00\00\00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e") - (data $176 (i32.const 20924) "<") - (data $176.1 (i32.const 20936) "\02\00\00\00\"\00\00\00 \00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (data $177 (i32.const 20988) "<") - (data $177.1 (i32.const 21000) "\02\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (data $178 (i32.const 21056) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\a4") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3404) "L\03") + (data $19.1 (i32.const 3416) "\04\00\00\000\03\00\00\df\00S\00S\00\00\00I\01\bc\02N\00\00\00\f0\01J\00\0c\03\00\00\90\03\99\03\08\03\01\03\b0\03\a5\03\08\03\01\03\87\055\05R\05\00\00\96\1eH\001\03\00\00\97\1eT\00\08\03\00\00\98\1eW\00\n\03\00\00\99\1eY\00\n\03\00\00\9a\1eA\00\be\02\00\00P\1f\a5\03\13\03\00\00R\1f\a5\03\13\03\00\03T\1f\a5\03\13\03\01\03V\1f\a5\03\13\03B\03\80\1f\08\1f\99\03\00\00\81\1f\t\1f\99\03\00\00\82\1f\n\1f\99\03\00\00\83\1f\0b\1f\99\03\00\00\84\1f\0c\1f\99\03\00\00\85\1f\r\1f\99\03\00\00\86\1f\0e\1f\99\03\00\00\87\1f\0f\1f\99\03\00\00\88\1f\08\1f\99\03\00\00\89\1f\t\1f\99\03\00\00\8a\1f\n\1f\99\03\00\00\8b\1f\0b\1f\99\03\00\00\8c\1f\0c\1f\99\03\00\00\8d\1f\r\1f\99\03\00\00\8e\1f\0e\1f\99\03\00\00\8f\1f\0f\1f\99\03\00\00\90\1f(\1f\99\03\00\00\91\1f)\1f\99\03\00\00\92\1f*\1f\99\03\00\00\93\1f+\1f\99\03\00\00\94\1f,\1f\99\03\00\00\95\1f-\1f\99\03\00\00\96\1f.\1f\99\03\00\00\97\1f/\1f\99\03\00\00\98\1f(\1f\99\03\00\00\99\1f)\1f\99\03\00\00\9a\1f*\1f\99\03\00\00\9b\1f+\1f\99\03\00\00\9c\1f,\1f\99\03\00\00\9d\1f-\1f\99\03\00\00\9e\1f.\1f\99\03\00\00\9f\1f/\1f\99\03\00\00\a0\1fh\1f\99\03\00\00\a1\1fi\1f\99\03\00\00\a2\1fj\1f\99\03\00\00\a3\1fk\1f\99\03\00\00\a4\1fl\1f\99\03\00\00\a5\1fm\1f\99\03\00\00\a6\1fn\1f\99\03\00\00\a7\1fo\1f\99\03\00\00\a8\1fh\1f\99\03\00\00\a9\1fi\1f\99\03\00\00\aa\1fj\1f\99\03\00\00\ab\1fk\1f\99\03\00\00\ac\1fl\1f\99\03\00\00\ad\1fm\1f\99\03\00\00\ae\1fn\1f\99\03\00\00\af\1fo\1f\99\03\00\00\b2\1f\ba\1f\99\03\00\00\b3\1f\91\03\99\03\00\00\b4\1f\86\03\99\03\00\00\b6\1f\91\03B\03\00\00\b7\1f\91\03B\03\99\03\bc\1f\91\03\99\03\00\00\c2\1f\ca\1f\99\03\00\00\c3\1f\97\03\99\03\00\00\c4\1f\89\03\99\03\00\00\c6\1f\97\03B\03\00\00\c7\1f\97\03B\03\99\03\cc\1f\97\03\99\03\00\00\d2\1f\99\03\08\03\00\03\d3\1f\99\03\08\03\01\03\d6\1f\99\03B\03\00\00\d7\1f\99\03\08\03B\03\e2\1f\a5\03\08\03\00\03\e3\1f\a5\03\08\03\01\03\e4\1f\a1\03\13\03\00\00\e6\1f\a5\03B\03\00\00\e7\1f\a5\03\08\03B\03\f2\1f\fa\1f\99\03\00\00\f3\1f\a9\03\99\03\00\00\f4\1f\8f\03\99\03\00\00\f6\1f\a9\03B\03\00\00\f7\1f\a9\03B\03\99\03\fc\1f\a9\03\99\03\00\00\00\fbF\00F\00\00\00\01\fbF\00I\00\00\00\02\fbF\00L\00\00\00\03\fbF\00F\00I\00\04\fbF\00F\00L\00\05\fbS\00T\00\00\00\06\fbS\00T\00\00\00\13\fbD\05F\05\00\00\14\fbD\055\05\00\00\15\fbD\05;\05\00\00\16\fbN\05F\05\00\00\17\fbD\05=\05") + (data $20 (i32.const 4253) "\01\02\03\04\05\06\07\08\t\n\0b\0c\r\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\7f") + (data $21 (i32.const 4380) "\07\08\t\n\0b\0c\06\06\06\06\06\06\06\06\06\06\r\06\06\0e\06\06\06\06\06\06\06\06\0f\10\11\12\06\13\06\06\06\06\06\06\06\06\06\06\14\15\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\16\17\06\06\06\18\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\19\06\06\06\06\1a\06\06\06\06\06\06\06\1b\06\06\06\06\06\06\06\06\06\06\06\1c\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1d\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1e\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06") + (data $21.1 (i32.const 5003) "$++++++++\01\00TVVVVVVVV") + (data $21.2 (i32.const 5042) "\18\00\00\00+++++++\07++[VVVVVVVJVV\051P1P1P1P1P1P1P1P$Py1P1P18P1P1P1P1P1P1P1PN1\02N\r\rN\03N\00$n\00N1&nQN$PN9\14\81\1b\1d\1dS1P1P\r1P1P1P\1bS$P1\02\\{\\{\\{\\{\\{\14y\\{\\{\\-+I\03H\03x\\{\14\00\96\n\01+(\06\06\00*\06**+\07\bb\b5+\1e\00+\07+++\01++++++++++++++++++++++++++++++++\01+++++++++++++++++++++++*+++++++++++++\cdF\cd+\00%+\07\01\06\01UVVVVVUVV\02$\81\81\81\81\81\15\81\81\81\00\00+\00\b2\d1\b2\d1\b2\d1\b2\d1\00\00\cd\cc\01\00\d7\d7\d7\d7\d7\83\81\81\81\81\81\81\81\81\81\81\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\1c\00\00\00\00\001P1P1P1P1P1\02\00\001P1P1P1P1P1P1P1P1PN1P1PN1P1P1P1P1P1P1P1\02\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6*++++++++++++\00\00\00TVVVVVVVVVVVV") + (data $21.3 (i32.const 5551) "TVVVVVVVVVVVV\0c\00\0c*+++++++++++++\07*\01") + (data $21.4 (i32.const 5637) "*++++++++++++++++++++++++++VVl\81\15\00++++++++++++++++++++++++++++++++++++++++++\07l\03A++VVVVVVVVVVVVVV,V+++++++++++++++++++++\01") + (data $21.5 (i32.const 5796) "\0cl\00\00\00\00\00\06") + (data $21.6 (i32.const 5842) "\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%Vz\9e&\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06\01++OVV,+\7fVV9++UVV++OVV,+\7fVV\817u[{\\++OVV\02\ac\04\00\009++UVV++OVV,++VV2\13\81W\00o\81~\c9\d7~-\81\81\0e~9\7foW\00\81\81~\15\00~\03++++++++++++\07+$+\97+++++++++*+++++VVVVV\80\81\81\81\819\bb*++++++++++++++++++++++++++++++++++++++++\01\81\81\81\81\81\81\81\81\81\81\81\81\81\81\81\c9\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\d0\r\00N1\02\b4\c1\c1\d7\d7$P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P\d7\d7S\c1G\d4\d7\d7\d7\05++++++++++++\07\01\00\01") + (data $21.7 (i32.const 6293) "N1P1P1P1P1P1P1P\r\00\00\00\00\00$P1P1P1P1P") + (data $21.8 (i32.const 6358) "+++++++++++y\\{\\{O{\\{\\{\\{\\{\\{\\{\\{\\{\\{\\-++y\14\\{\\-y*\\\'\\{\\{\\{\a4\00\n\b4\\{\\{O\03x8+++++++++++++O-++\01") + (data $21.9 (i32.const 6471) "H") + (data $21.10 (i32.const 6481) "*++++++++++++++++++++++++++") + (data $21.11 (i32.const 6541) "++++++++\07\00HVVVVVVVV\02") + (data $21.12 (i32.const 6616) "+++++++++++++UVVVVVVVVVVVV\0e") + (data $21.13 (i32.const 6674) "$+++++++++++\07\00VVVVVVVVVVVV") + (data $21.14 (i32.const 6744) "$++++++++++++++++\07\00\00\00\00VVVVVVVVVVVVVVVVV") + (data $21.15 (i32.const 6841) "*++++++++++VVVVVVVVVV\0e") + (data $21.16 (i32.const 6895) "*++++++++++VVVVVVVVVV\0e") + (data $21.17 (i32.const 6960) "+++++++++++UVVVVVVVVVV\0e") + (data $22 (i32.const 7049) "\08\00\00V\01\00\009") + (data $23 (i32.const 7064) "\01 \00\00\00\e0\ff\ff\00\bf\1d\00\00\e7\02\00\00y\00\00\02$\00\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\01\02\00\00\00\fe\ff\ff\019\ff\ff\00\18\ff\ff\01\87\ff\ff\00\d4\fe\ff\00\c3\00\00\01\d2\00\00\01\ce\00\00\01\cd\00\00\01O\00\00\01\ca\00\00\01\cb\00\00\01\cf\00\00\00a\00\00\01\d3\00\00\01\d1\00\00\00\a3\00\00\01\d5\00\00\00\82\00\00\01\d6\00\00\01\da\00\00\01\d9\00\00\01\db\00\00\008\00\00\03\00\00\00\00\b1\ff\ff\01\9f\ff\ff\01\c8\ff\ff\02($\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\003\ff\ff\00&\ff\ff\01~\ff\ff\01+*\00\01]\ff\ff\01(*\00\00?*\00\01=\ff\ff\01E\00\00\01G\00\00\00\1f*\00\00\1c*\00\00\1e*\00\00.\ff\ff\002\ff\ff\006\ff\ff\005\ff\ff\00O\a5\00\00K\a5\00\001\ff\ff\00(\a5\00\00D\a5\00\00/\ff\ff\00-\ff\ff\00\f7)\00\00A\a5\00\00\fd)\00\00+\ff\ff\00*\ff\ff\00\e7)\00\00C\a5\00\00*\a5\00\00\bb\ff\ff\00\'\ff\ff\00\b9\ff\ff\00%\ff\ff\00\15\a5\00\00\12\a5\00\02$L\00\00\00\00\00\01 \00\00\00\e0\ff\ff\01\01\00\00\00\ff\ff\ff\00T\00\00\01t\00\00\01&\00\00\01%\00\00\01@\00\00\01?\00\00\00\da\ff\ff\00\db\ff\ff\00\e1\ff\ff\00\c0\ff\ff\00\c1\ff\ff\01\08\00\00\00\c2\ff\ff\00\c7\ff\ff\00\d1\ff\ff\00\ca\ff\ff\00\f8\ff\ff\00\aa\ff\ff\00\b0\ff\ff\00\07\00\00\00\8c\ff\ff\01\c4\ff\ff\00\a0\ff\ff\01\f9\ff\ff\02\1ap\00\01\01\00\00\00\ff\ff\ff\01 \00\00\00\e0\ff\ff\01P\00\00\01\0f\00\00\00\f1\ff\ff\00\00\00\00\010\00\00\00\d0\ff\ff\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c0\0b\00\01`\1c\00\00\00\00\00\01\d0\97\00\01\08\00\00\00\f8\ff\ff\02\05\8a\00\00\00\00\00\01@\f4\ff\00\9e\e7\ff\00\c2\89\00\00\db\e7\ff\00\92\e7\ff\00\93\e7\ff\00\9c\e7\ff\00\9d\e7\ff\00\a4\e7\ff\00\00\00\00\008\8a\00\00\04\8a\00\00\e6\0e\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c5\ff\ff\01A\e2\ff\02\1d\8f\00\00\08\00\00\01\f8\ff\ff\00\00\00\00\00V\00\00\01\aa\ff\ff\00J\00\00\00d\00\00\00\80\00\00\00p\00\00\00~\00\00\00\t\00\00\01\b6\ff\ff\01\f7\ff\ff\00\db\e3\ff\01\9c\ff\ff\01\90\ff\ff\01\80\ff\ff\01\82\ff\ff\02\05\ac\00\00\00\00\00\01\10\00\00\00\f0\ff\ff\01\1c\00\00\01\01\00\00\01\a3\e2\ff\01A\df\ff\01\ba\df\ff\00\e4\ff\ff\02\0b\b1\00\01\01\00\00\00\ff\ff\ff\010\00\00\00\d0\ff\ff\00\00\00\00\01\t\d6\ff\01\1a\f1\ff\01\19\d6\ff\00\d5\d5\ff\00\d8\d5\ff\01\e4\d5\ff\01\03\d6\ff\01\e1\d5\ff\01\e2\d5\ff\01\c1\d5\ff\00\00\00\00\00\a0\e3\ff\00\00\00\00\01\01\00\00\00\ff\ff\ff\02\0c\bc\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\01\bcZ\ff\01\a0\03\00\01\fcu\ff\01\d8Z\ff\000\00\00\01\b1Z\ff\01\b5Z\ff\01\bfZ\ff\01\eeZ\ff\01\d6Z\ff\01\ebZ\ff\01\d0\ff\ff\01\bdZ\ff\01\c8u\ff\00\00\00\00\000h\ff\00`\fc\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01(\00\00\00\d8\ff\ff\00\00\00\00\01@\00\00\00\c0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01\"\00\00\00\de\ff\ff") + (data $24 (i32.const 8021) "\06\'Qow") + (data $24.1 (i32.const 8036) "|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa") + (data $24.2 (i32.const 8064) "\b4\c4") + (data $24.3 (i32.const 8186) "\c6\c9\00\00\00\db") + (data $24.4 (i32.const 8275) "\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4") + (data $24.5 (i32.const 8300) "\e7") + (data $24.6 (i32.const 8386) "\ea") + (data $24.7 (i32.const 8509) "\ed") + (data $25 (i32.const 8532) "0\0c1\rx\0e\7f\0f\80\10\81\11\86\12\89\13\8a\13\8e\14\8f\15\90\16\93\13\94\17\95\18\96\19\97\1a\9a\1b\9c\19\9d\1c\9e\1d\9f\1e\a6\1f\a9\1f\ae\1f\b1 \b2 \b7!\bf\"\c5#\c8#\cb#\dd$\f2#\f6%\f7& -:.=/>0?1@1C2D3E4P5Q6R7S8T9Y:[;\\e?f@hAiBj@kClDoBqErFuG}H\82I\87J\89K\8aL\8bL\8cM\92N\9dO\9ePEW{\1d|\1d}\1d\7fX\86Y\88Z\89Z\8aZ\8c[\8e\\\8f\\\ac]\ad^\ae^\af^\c2_\cc`\cda\cea\cfb\d0c\d1d\d5e\d6f\d7g\f0h\f1i\f2j\f3k\f4l\f5m\f9n\fd-\fe-\ff-PiQiRiSiTiUiViWiXiYiZi[i\\i]i^i_i\82\00\83\00\84\00\85\00\86\00\87\00\88\00\89\00\c0u\cfv\80\89\81\8a\82\8b\85\8c\86\8dp\9dq\9dv\9ew\9ex\9fy\9fz\a0{\a0|\a1}\a1\b3\a2\ba\a3\bb\a3\bc\a4\be\a5\c3\a2\cc\a4\da\a6\db\a6\e5j\ea\a7\eb\a7\ecn\f3\a2\f8\a8\f9\a8\fa\a9\fb\a9\fc\a4&\b0*\b1+\b2N\b3\84\08b\bac\bbd\bce\bdf\bem\bfn\c0o\c1p\c2~\c3\7f\c3}\cf\8d\d0\94\d1\ab\d2\ac\d3\ad\d4\b0\d5\b1\d6\b2\d7\c4\d8\c5\d9\c6\da") + (data $26 (i32.const 8940) "L") + (data $26.1 (i32.const 8952) "\02\00\00\002\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00c\00a\00s\00e\00m\00a\00p\00p\00i\00n\00g\00.\00t\00s") + (data $27 (i32.const 9021) "\01\02\03\04\05\06\07\08\t\n\0b\0c\r\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\7f") + (data $28 (i32.const 9148) "\12\10\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\10\10\"\10\10\10#$%&\'()\10*+\10\10\10\10\10\10\10\10\10\10\10,-.\10/\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\100\10\10\101\10234567\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\108\10\109:\10;<=\10\10\10\10\10\10>\10\10?@ABCDEFGHIJKL\10MNO\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10P\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10QR\10\10\10S\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10T\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10UV\10\10\10\10\10\10\10W\10\10\10\10\10XYZ\10\10\10\10\10[\\\10\10\10\10\10\10\10\10\10]\10\10\10\10\10\10\10\10\10\10\10\10") + (data $28.1 (i32.const 9692) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\80@\00\04\00\00\00@\01\00\00\00\00\00\00\00\00\a1\90\01") + (data $28.2 (i32.const 9778) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff0\04\b0") + (data $28.3 (i32.const 9836) "\f8\03") + (data $28.4 (i32.const 9863) "\82\00\00\00\00\00\00\fe\ff\ff\ff\ff\bf\b6\00\00\00\00\00\10\00?\00\ff\17\00\00\00\00\01\f8\ff\ff\00\00\01") + (data $28.5 (i32.const 9910) "\c0\bf\ff=\00\00\00\80\02\00\00\00\ff\ff\ff\07") + (data $28.6 (i32.const 9936) "\c0\ff\01\00\00\00\00\00\00\f8?$\00\00\c0\ff\ff?\00\00\00\00\00\0e") + (data $28.7 (i32.const 9974) "\f8\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\14\fe!\fe\00\0c\00\02\00\02\00\00\00\00\00\00\10\1e \00\00\0c\00\00@\06\00\00\00\00\00\00\10\869\02\00\00\00#\00\06\00\00\00\00\00\00\10\be!\00\00\0c\00\00\fc\02\00\00\00\00\00\00\90\1e `\00\0c\00\00\00\04\00\00\00\00\00\00\00\01 \00\00\00\00\00\00\11\00\00\00\00\00\00\c0\c1=`\00\0c\00\00\00\02\00\00\00\00\00\00\90@0\00\00\0c\00\00\00\03\00\00\00\00\00\00\18\1e \00\00\0c\00\00\00\02\00\00\00\00\00\00\00\00\04\\") + (data $28.8 (i32.const 10146) "\f2\07\c0\7f") + (data $28.9 (i32.const 10162) "\f2\1f@?") + (data $28.10 (i32.const 10175) "\03\00\00\a0\02\00\00\00\00\00\00\fe\7f\df\e0\ff\fe\ff\ff\ff\1f@") + (data $28.11 (i32.const 10209) "\e0\fdf\00\00\00\c3\01\00\1e\00d \00 ") + (data $28.12 (i32.const 10235) "\10") + (data $28.13 (i32.const 10247) "\e0") + (data $28.14 (i32.const 10270) "\1c\00\00\00\1c\00\00\00\0c\00\00\00\0c\00\00\00\00\00\00\00\b0?@\fe\8f \00\00\00\00\00x\00\00\00\00\00\00\08\00\00\00\00\00\00\00`\00\00\00\00\02") + (data $28.15 (i32.const 10336) "\87\01\04\0e") + (data $28.16 (i32.const 10366) "\80\t\00\00\00\00\00\00@\7f\e5\1f\f8\9f\00\00\00\00\80\00\ff\ff\01\00\00\00\00\00\00\00\0f\00\00\00\00\00\d0\17\04\00\00\00\00\f8\0f\00\03\00\00\00<;\00\00\00\00\00\00@\a3\03\00\00\00\00\00\00\f0\cf\00\00\00\00\00\00\00\00?") + (data $28.17 (i32.const 10454) "\f7\ff\fd!\10\03\00\00\00\00\00\f0\ff\ff\ff\ff\ff\ff\ff\07\00\01\00\00\00\f8\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fb") + (data $28.18 (i32.const 10515) "\a0\03\e0\00\e0\00\e0\00`\00\f8\00\03\90|\00\00\00\00\00\00\df\ff\02\80\00\00\ff\1f\00\00\00\00\00\00\ff\ff\ff\ff\01") + (data $28.19 (i32.const 10571) "0") + (data $28.20 (i32.const 10585) "\80\03") + (data $28.21 (i32.const 10601) "\80\00\80") + (data $28.22 (i32.const 10616) "\ff\ff\ff\ff\00\00\00\00\00\80") + (data $28.23 (i32.const 10652) " \00\00\00\00<>\08") + (data $28.24 (i32.const 10671) "~") + (data $28.25 (i32.const 10683) "p\00\00 ") + (data $28.26 (i32.const 10747) "?\00\10") + (data $28.27 (i32.const 10761) "\80\f7\bf\00\00\00\f0") + (data $28.28 (i32.const 10778) "\03\00\ff\ff\ff\ff\03") + (data $28.29 (i32.const 10794) "\01\00\00\07") + (data $28.30 (i32.const 10811) "\03D\08\00\00`\10") + (data $28.31 (i32.const 10836) "0\00\00\00\ff\ff\03\80\00\00\00\00\c0?\00\00\80\ff\03\00\00\00\00\00\07\00\00\00\00\00\c83\00\80\00\00`\00\00\00\00\00\00\00\00~f\00\08\10\00\00\00\00\01\10\00\00\00\00\00\00\9d\c1\02\00\00 \000X") + (data $28.32 (i32.const 10919) "\f8\00\0e") + (data $28.33 (i32.const 10936) " !\00\00\00\00\00@") + (data $28.34 (i32.const 10962) "\fc\ff\03\00\00\00\00\00\00\00\ff\ff\08\00\ff\ff\00\00\00\00$") + (data $28.35 (i32.const 11003) "\80\80@\00\04\00\00\00@\01\00\00\00\00\00\01\00\00\00\00\c0\00\00\00\00\00\00\00\00\08\00\00\0e") + (data $28.36 (i32.const 11067) " ") + (data $28.37 (i32.const 11096) "\01") + (data $28.38 (i32.const 11114) "\c0\07") + (data $28.39 (i32.const 11132) "n\f0\00\00\00\00\00\87") + (data $28.40 (i32.const 11160) "`\00\00\00\00\00\00\00\f0") + (data $28.41 (i32.const 11217) "\18") + (data $28.42 (i32.const 11236) "\c0\ff\01") + (data $28.43 (i32.const 11260) "\02\00\00\00\00\00\00\ff\7f\00\00\00\00\00\00\80\03\00\00\00\00\00x&\00 \00\00\00\00\00\00\07\00\00\00\80\ef\1f\00\00\00\00\00\00\00\08\00\03\00\00\00\00\00\c0\7f\00\9e") + (data $28.44 (i32.const 11329) "\80\d3@") + (data $28.45 (i32.const 11351) "\80\f8\07\00\00\03\00\00\00\00\00\00\18\01\00\00\00\c0\1f\1f") + (data $28.46 (i32.const 11395) "\ff\\\00\00@") + (data $28.47 (i32.const 11410) "\f8\85\r") + (data $28.48 (i32.const 11442) "<\b0\01\00\000") + (data $28.49 (i32.const 11458) "\f8\a7\01") + (data $28.50 (i32.const 11473) "(\bf") + (data $28.51 (i32.const 11487) "\e0\bc\0f") + (data $28.52 (i32.const 11521) "\80\ff\06") + (data $28.53 (i32.const 11555) "X\08") + (data $28.54 (i32.const 11574) "\f0\0c\01\00\00\00\fe\07\00\00\00\00\f8y\80\00~\0e\00\00\00\00\00\fc\7f\03") + (data $28.55 (i32.const 11618) "\7f\bf") + (data $28.56 (i32.const 11630) "\fc\ff\ff\fcm") + (data $28.57 (i32.const 11650) "~\b4\bf") + (data $28.58 (i32.const 11662) "\a3") + (data $28.59 (i32.const 11706) "\18\00\00\00\00\00\00\00\ff\01") + (data $28.60 (i32.const 11770) "\1f\00\00\00\00\00\00\00\7f\00\0f") + (data $28.61 (i32.const 11813) "\80\00\00\00\00\00\00\00\80\ff\ff\00\00\00\00\00\00\00\00\1b") + (data $28.62 (i32.const 11855) "`\0f") + (data $28.63 (i32.const 11880) "\80\03\f8\ff\e7\0f\00\00\00<") + (data $28.64 (i32.const 11908) "\1c") + (data $28.65 (i32.const 11932) "\ff\ff\ff\ff\ff\ff\7f\f8\ff\ff\ff\ff\ff\1f \00\10\00\00\f8\fe\ff") + (data $28.66 (i32.const 11964) "\7f\ff\ff\f9\db\07") + (data $28.67 (i32.const 12002) "\ff?") + (data $28.68 (i32.const 12057) "\f0") + (data $28.69 (i32.const 12086) "\7f") + (data $28.70 (i32.const 12100) "\f0\0f") + (data $28.71 (i32.const 12155) "\f8") + (data $29 (i32.const 12156) "\12\13\14\15\16\17\10\10\10\10\10\10\10\10\10\10\18\10\10\19\10\10\10\10\10\10\10\10\1a\1b\11\1c\1d\1e\10\10\1f\10\10\10\10\10\10\10 !\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\"#\10\10\10$\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10%\10\10\10&\10\10\10\10\'\10\10\10\10\10\10\10(\10\10\10\10\10\10\10\10\10\10\10)\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10*\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10+,-.\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/\10\10\10\10\10\10\100\10\10\10\10\10\10\10\10\10\10\10\10\10\10") + (data $29.1 (i32.const 12700) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\04 \04\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\f7\f0\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ef\ff\ff\ff\ff\01\03\00\00\00\1f") + (data $29.2 (i32.const 12836) " \00\00\00\00\00\cf\bc@\d7\ff\ff\fb\ff\ff\ff\ff\ff\ff\ff\ff\ff\bf\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\03\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fe\ff\ff\ff\7f\00\ff\ff\ff\ff\ff\01") + (data $29.3 (i32.const 12944) "\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7") + (data $29.4 (i32.const 12976) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??") + (data $29.5 (i32.const 13004) "\ff\01\ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\ff\ff??\ff\ff\ff\ff??\ff\aa\ff\ff\ff?\ff\ff\ff\ff\ff\ff\df_\dc\1f\cf\0f\ff\1f\dc\1f") + (data $29.6 (i32.const 13098) "\02\80\00\00\ff\1f") + (data $29.7 (i32.const 13116) "\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18") + (data $29.8 (i32.const 13170) "\c0\ff\ff\ff\ff\ff\ff\03\00\00\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\1fx\0c\00\ff\ff\ff\ff\bf ") + (data $29.9 (i32.const 13252) "\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?") + (data $29.10 (i32.const 13280) "\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ffx\ff\ff\ff\ff\ff\ff\fc\07\00\00\00\00`\07\00\00\00\00\00\00\ff\ff\ff\ff\ff\f7\ff\01\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\7f\00\f8") + (data $29.11 (i32.const 13376) "\fe\ff\ff\07\fe\ff\ff\07") + (data $29.12 (i32.const 13404) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff") + (data $29.13 (i32.const 13426) "\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f") + (data $29.14 (i32.const 13452) "\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07") + (data $29.15 (i32.const 13488) "\ff\ff\ff\ff\ff\ff\ff\ff") + (data $29.16 (i32.const 13508) "\ff\ff\ff\ff\ff\ff\ff\ff") + (data $29.17 (i32.const 13532) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\df\ff\ff\ff\ff\ff\ff\ff\ff\dfd\de\ff\eb\ef\ff\ff\ff\ff\ff\ff\ff\bf\e7\df\df\ff\ff\ff{_\fc\fd\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff?\ff\ff\ff\fd\ff\ff\f7\ff\ff\ff\f7\ff\ff\df\ff\ff\ff\df\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\fd\ff\ff\ff\fd\ff\ff\f7\0f\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\0f") + (data $29.18 (i32.const 13698) "\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03") + (data $30 (i32.const 13724) ",") + (data $30.1 (i32.const 13736) "\02\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\n") + (data $31 (i32.const 13772) ",") + (data $31.1 (i32.const 13784) "\02\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00A\00Z\00.\00!\00\n") + (data $32 (i32.const 13820) ",") + (data $32.1 (i32.const 13832) "\02\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\t") + (data $33 (i32.const 13868) ",") + (data $33.1 (i32.const 13880) "\02\00\00\00\16\00\00\000\009\00_\00a\00z\00 \00a\00z\00.\00!\00\t") + (data $34 (i32.const 13916) "\\") + (data $34.1 (i32.const 13928) "\02\00\00\00J\00\00\00D\00e\00r\00 \00W\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00B\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") + (data $35 (i32.const 14012) "\\") + (data $35.1 (i32.const 14024) "\02\00\00\00J\00\00\00D\00E\00R\00 \00W\00E\00C\00H\00S\00E\00L\00 \00A\00L\00L\00E\00I\00N\00 \00I\00S\00T\00 \00D\00A\00S\00 \00B\00E\00S\00T\00\c4\00N\00D\00I\00G\00E") + (data $36 (i32.const 14108) "\\") + (data $36.1 (i32.const 14120) "\02\00\00\00J\00\00\00d\00e\00r\00 \00w\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00b\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") + (data $37 (i32.const 14204) "<") + (data $37.1 (i32.const 14216) "\02\00\00\00$\00\00\00@\00 \00\14 \00\14\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") + (data $38 (i32.const 14268) "<") + (data $38.1 (i32.const 14280) "\02\00\00\00$\00\00\00@\00 \00\14 \00\14\04 \04#\04\13\04 \00\'\04\15\04\1b\04\1e\04\12\04\15\04\1a\04\10\04!") + (data $39 (i32.const 14332) "<") + (data $39.1 (i32.const 14344) "\02\00\00\00$\00\00\00@\00 \00\14 \004\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") + (data $40 (i32.const 14396) "\\") + (data $40.1 (i32.const 14408) "\02\00\00\00D\00\00\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") + (data $41 (i32.const 14492) "\\") + (data $41.1 (i32.const 14504) "\02\00\00\00D\00\00\00.\" \00E\00\c5\"D\00A\00 \00=\00 \00Q\00,\00 \00N\00 \00\92! \00\1e\",\00 \00\11\" \00F\00(\00I\00)\00 \00=\00 \00\0f\" \00G\00(\00I\00)") + (data $42 (i32.const 14588) "\\") + (data $42.1 (i32.const 14600) "\02\00\00\00D\00\00\00.\" \00e\00\c5\"d\00a\00 \00=\00 \00q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") + (data $43 (i32.const 14684) "\\") + (data $43.1 (i32.const 14696) "\02\00\00\00H\00\00\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n") + (data $44 (i32.const 14780) "\\") + (data $44.1 (i32.const 14792) "\02\00\00\00H\00\00\00\d0\00I\00 \00I\00N\00T\00\8f\01\c8\02N\00\c6\00\a9\01\8f\01N\00\8f\01L\00 \00F\00\8f\01\c8\02N\00\90\01T\00I\00K\00 \00\8f\01S\00O\00\b1\01S\00I\00\c8\02E\00I\00\a9\01N") + (data $45 (i32.const 14876) "\\") + (data $45.1 (i32.const 14888) "\02\00\00\00H\00\00\00\f0\00i\00 \00i\00n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\00i\00k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\00i\00\83\02n") + (data $46 (i32.const 14972) "L") + (data $46.1 (i32.const 14984) "\02\00\00\00.\00\00\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03\cc\03\c8\03\b7\03") + (data $47 (i32.const 15052) "L") + (data $47.1 (i32.const 15064) "\02\00\00\00.\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00\9a\03\8c\03\a8\03\97\03") + (data $48 (i32.const 15132) "L") + (data $48.1 (i32.const 15144) "\02\00\00\000\00\00\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03\ae\03,") + (data $49 (i32.const 15212) "L") + (data $49.1 (i32.const 15224) "\02\00\00\004\00\00\00\a4\03\9f\03\a5\03B\03 \00\a3\03\a0\03\91\03\98\03\99\03\9f\03\a5\03B\03 \00\a4\03\ca\1f\9d\03 \00\a4\03\a1\03\9f\03\9c\03\95\03\a1\03\89\03,") + (data $50 (i32.const 15292) "<") + (data $50.1 (i32.const 15304) "\02\00\00\00,\00\00\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03") + (data $51 (i32.const 15356) "<") + (data $51.1 (i32.const 15368) "\02\00\00\00,\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00L\1f\a8\03\97\03") + (data $52 (i32.const 15420) "L") + (data $52.1 (i32.const 15432) "\02\00\00\002\00\00\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03\af\03\b1\03 \00\bc\03\b5\03\c4\03\c1\03\ac\03\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.") + (data $53 (i32.const 15500) "L") + (data $53.1 (i32.const 15512) "\02\00\00\004\00\00\00\a0\03\9f\03\ea\1f \00\9c\03\c8\1f \00\92\03\8a\03\91\03 \00\9c\03\95\03\a4\03\a1\03\86\03\95\03\99\03 \00\a4\03\ca\1f \00\93\03\97\03B\03.") + (data $54 (i32.const 15580) "L") + (data $54.1 (i32.const 15592) "\02\00\00\00.\00\00\00\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03\cc\03\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03\ad\03\bd\03\b7\03") + (data $55 (i32.const 15660) "L") + (data $55.1 (i32.const 15672) "\02\00\00\00.\00\00\00\91\03\a0\03\bf\1f \00\a4\03\ba\1f \00\9a\03\8c\03\9a\03\9a\03\91\03\9b\03\91\03 \00\92\03\93\03\91\03\9b\03\9c\03\88\03\9d\03\97\03") + (data $56 (i32.const 15740) "<") + (data $56.1 (i32.const 15752) "\02\00\00\00(\00\00\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03\ae\03\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03\ac\03") + (data $57 (i32.const 15804) "<") + (data $57.1 (i32.const 15816) "\02\00\00\00*\00\00\00\a4\03\a9\03B\03\9d\03 \00\fe\1f\95\03\9b\03\9b\03\89\03\9d\03\a9\03\9d\03 \00\a4\03\ba\1f \009\1f\95\03\a1\03\86\03") + (data $58 (i32.const 15868) "L") + (data $58.1 (i32.const 15880) "\02\00\00\002\00\00\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03\ad\03\bd\03\b7\03") + (data $59 (i32.const 15948) "L") + (data $59.1 (i32.const 15960) "\02\00\00\004\00\00\00\9a\03\91\03\da\1f \00\a3\03\ba\1f\9d\03 \00\a0\03\a1\03\a9\03B\03\a4\03\91\03 \00\08\1f\9d\03\94\03\a1\03\95\03\99\03\a9\03\9c\03\88\03\9d\03\97\03") + (data $60 (i32.const 16028) "L") + (data $60.1 (i32.const 16040) "\02\00\00\006\00\00\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03\ac\03!") + (data $61 (i32.const 16108) "L") + (data $61.1 (i32.const 16120) "\02\00\00\00:\00\00\00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00n\1f \00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00\bf\1f\95\03\9b\03\95\03\a5\03\98\03\95\03\a1\03\99\03\86\03!") + (data $62 (i32.const 16188) "\9c") + (data $62.1 (i32.const 16200) "\02\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $63 (i32.const 16348) "\9c") + (data $63.1 (i32.const 16360) "\02\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z") + (data $64 (i32.const 16508) "\9c") + (data $64.1 (i32.const 16520) "\02\00\00\00\80\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $65 (i32.const 16668) "\1c") + (data $65.1 (i32.const 16680) "\02\00\00\00\02\00\00\00\df") + (data $66 (i32.const 16700) "\1c") + (data $66.1 (i32.const 16712) "\02\00\00\00\04\00\00\00S\00S") + (data $67 (i32.const 16732) "\1c") + (data $67.1 (i32.const 16744) "\02\00\00\00\02\00\00\000\01") + (data $68 (i32.const 16764) "\1c") + (data $68.1 (i32.const 16776) "\02\00\00\00\04\00\00\00i\00\07\03") + (data $69 (i32.const 16796) "\cc") + (data $69.1 (i32.const 16808) "\02\00\00\00\ae\00\00\00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10") + (data $70 (i32.const 17004) "\cc") + (data $70.1 (i32.const 17016) "\02\00\00\00\b2\00\00\00\a3\00\a9\00\9c\03\c0\00\c6\00\d6\00\de\00S\00S\00\c9\00\d6\00x\01\13 \14 \18 \1c \1d \1e \" & 0 \"!R\01`\01x\01}\01\ac \00\91\03\92\03\93\03\94\03\a9\03\91\03\92\03\93\03\94\03\a9\03 \00\10\04\11\04\12\04\13\04\14\04\10\04\11\04\12\04\13\04\14\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00F\00I\00\fd\ff@$\82 (\1f\02\1e\e4\04\84\1eo,\d0\02N#\d0\051\05\90\1c") + (data $71 (i32.const 17212) "\1c") + (data $71.1 (i32.const 17224) "\02\00\00\00\04\00\00\00s\00s") + (data $72 (i32.const 17244) "\1c") + (data $72.1 (i32.const 17256) "\02\00\00\00\02\00\00\00\01\fb") + (data $73 (i32.const 17276) "\1c") + (data $73.1 (i32.const 17288) "\02\00\00\00\04\00\00\00f\00i") + (data $74 (i32.const 17308) "\cc") + (data $74.1 (i32.const 17320) "\02\00\00\00\b8\00\00\00A\d8\0e\df \00A\d81\df \00A\d8y\df \00C\d8S\dc \00C\d8x\dc \00C\d8\96\dc \00C\d8\cf\dc \00C\d8\d5\dc \00C\d8\15\dd \00C\d8|\dd \00C\d8\7f\dd \00C\d8\0e\de \00C\d8\0f\de \00C\d8w\de \00C\d8\9d\de \00C\d8\a2\de \00C\d8\d7\de \00C\d8\f9\de \00C\d8\fa\de \00C\d8-\df \00C\d8.\df \00C\d8L\df \00C\d8\b4\df \00C\d8\bc\df \00C\d8\ea\df \00D\d8\\\dc \00D\d8o\dc \00D\d8u\dc \00D\d8v\dc \00D\d8{\dc \00D\d8\c1\dc") + (data $75 (i32.const 17516) ",") + (data $75.1 (i32.const 17528) "\02\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data $76 (i32.const 17564) "\1c") + (data $76.1 (i32.const 17576) "\02\00\00\00\04\00\00\00\00\d8\00\dc") + (data $77 (i32.const 17596) "\1c") + (data $77.1 (i32.const 17608) "\02\00\00\00\02\00\00\00\88\1f") + (data $78 (i32.const 17628) "\1c") + (data $78.1 (i32.const 17640) "\02\00\00\00\02\00\00\00\80\1f") + (data $79 (i32.const 17660) "\1c") + (data $79.1 (i32.const 17672) "\02\00\00\00\02\00\00\00\8f\1f") + (data $80 (i32.const 17692) "\1c") + (data $80.1 (i32.const 17704) "\02\00\00\00\02\00\00\00\87\1f") + (data $81 (i32.const 17724) "\1c") + (data $81.1 (i32.const 17736) "\02\00\00\00\02\00\00\00\fc\1f") + (data $82 (i32.const 17756) "\1c") + (data $82.1 (i32.const 17768) "\02\00\00\00\02\00\00\00\f3\1f") + (data $83 (i32.const 17788) "\1c") + (data $83.1 (i32.const 17800) "\02\00\00\00\02\00\00\00\a3\03") + (data $84 (i32.const 17820) "\1c") + (data $84.1 (i32.const 17832) "\02\00\00\00\02\00\00\00\c3\03") + (data $85 (i32.const 17852) "\1c") + (data $85.1 (i32.const 17864) "\02\00\00\00\04\00\00\00 \00\a3\03") + (data $86 (i32.const 17884) "\1c") + (data $86.1 (i32.const 17896) "\02\00\00\00\04\00\00\00 \00\c3\03") + (data $87 (i32.const 17916) "\1c") + (data $87.1 (i32.const 17928) "\02\00\00\00\04\00\00\00\a3\03 ") + (data $88 (i32.const 17948) "\1c") + (data $88.1 (i32.const 17960) "\02\00\00\00\04\00\00\00\c3\03 ") + (data $89 (i32.const 17980) "\1c") + (data $89.1 (i32.const 17992) "\02\00\00\00\06\00\00\00 \00\a3\03 ") + (data $90 (i32.const 18012) "\1c") + (data $90.1 (i32.const 18024) "\02\00\00\00\06\00\00\00 \00\c3\03 ") + (data $91 (i32.const 18044) "\1c") + (data $91.1 (i32.const 18056) "\02\00\00\00\06\00\00\00a\00\a3\03 ") + (data $92 (i32.const 18076) "\1c") + (data $92.1 (i32.const 18088) "\02\00\00\00\06\00\00\00a\00\c2\03 ") + (data $93 (i32.const 18108) "\1c") + (data $93.1 (i32.const 18120) "\02\00\00\00\06\00\00\00a\00\a3\03\n") + (data $94 (i32.const 18140) "\1c") + (data $94.1 (i32.const 18152) "\02\00\00\00\06\00\00\00a\00\c2\03\n") + (data $95 (i32.const 18172) "\1c") + (data $95.1 (i32.const 18184) "\02\00\00\00\04\00\00\00a\00\a3\03") + (data $96 (i32.const 18204) "\1c") + (data $96.1 (i32.const 18216) "\02\00\00\00\04\00\00\00a\00\c2\03") + (data $97 (i32.const 18236) "\1c") + (data $97.1 (i32.const 18248) "\02\00\00\00\06\00\00\00a\00\a3\03b") + (data $98 (i32.const 18268) "\1c") + (data $98.1 (i32.const 18280) "\02\00\00\00\06\00\00\00a\00\c3\03b") + (data $99 (i32.const 18300) "\1c") + (data $99.1 (i32.const 18312) "\02\00\00\00\06\00\00\00\a3\03\a3\03 ") + (data $100 (i32.const 18332) "\1c") + (data $100.1 (i32.const 18344) "\02\00\00\00\06\00\00\00\c3\03\c2\03 ") + (data $101 (i32.const 18364) "\1c") + (data $101.1 (i32.const 18376) "\02\00\00\00\06\00\00\001\00\a3\03 ") + (data $102 (i32.const 18396) "\1c") + (data $102.1 (i32.const 18408) "\02\00\00\00\06\00\00\001\00\c3\03 ") + (data $103 (i32.const 18428) "\1c") + (data $103.1 (i32.const 18440) "\02\00\00\00\06\00\00\00;\00\a3\03 ") + (data $104 (i32.const 18460) "\1c") + (data $104.1 (i32.const 18472) "\02\00\00\00\06\00\00\00;\00\c3\03 ") + (data $105 (i32.const 18492) "\1c") + (data $105.1 (i32.const 18504) "\02\00\00\00\06\00\00\00\01\03\a3\03 ") + (data $106 (i32.const 18524) "\1c") + (data $106.1 (i32.const 18536) "\02\00\00\00\06\00\00\00\01\03\c3\03 ") + (data $107 (i32.const 18556) "\1c") + (data $107.1 (i32.const 18568) "\02\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03 ") + (data $108 (i32.const 18588) "\1c") + (data $108.1 (i32.const 18600) "\02\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03 ") + (data $109 (i32.const 18620) "\1c") + (data $109.1 (i32.const 18632) "\02\00\00\00\06\00\00\00\a3\03\a3\03-") + (data $110 (i32.const 18652) "\1c") + (data $110.1 (i32.const 18664) "\02\00\00\00\06\00\00\00\c3\03\c2\03-") + (data $111 (i32.const 18684) "\1c") + (data $111.1 (i32.const 18696) "\02\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03-") + (data $112 (i32.const 18716) "\1c") + (data $112.1 (i32.const 18728) "\02\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03-") + (data $113 (i32.const 18748) "\1c") + (data $113.1 (i32.const 18760) "\02\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03*s") + (data $114 (i32.const 18780) "\1c") + (data $114.1 (i32.const 18792) "\02\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03*s") + (data $115 (i32.const 18812) "\1c") + (data $115.1 (i32.const 18824) "\02\00\00\00\06\00\00\005\d8\a2\dc\a3\03") + (data $116 (i32.const 18844) "\1c") + (data $116.1 (i32.const 18856) "\02\00\00\00\06\00\00\005\d8\a2\dc\c2\03") + (data $117 (i32.const 18876) "\1c") + (data $117.1 (i32.const 18888) "\02\00\00\00\06\00\00\00A\00.\00\a3\03") + (data $118 (i32.const 18908) "\1c") + (data $118.1 (i32.const 18920) "\02\00\00\00\06\00\00\00a\00.\00\c2\03") + (data $119 (i32.const 18940) "\1c") + (data $119.1 (i32.const 18952) "\02\00\00\00\06\00\00\00A\00\ad\00\a3\03") + (data $120 (i32.const 18972) "\1c") + (data $120.1 (i32.const 18984) "\02\00\00\00\06\00\00\00a\00\ad\00\c2\03") + (data $121 (i32.const 19004) "\1c") + (data $121.1 (i32.const 19016) "\02\00\00\00\08\00\00\00A\004\d8B\de\a3\03") + (data $122 (i32.const 19036) "\1c") + (data $122.1 (i32.const 19048) "\02\00\00\00\08\00\00\00a\004\d8B\de\c2\03") + (data $123 (i32.const 19068) "\1c") + (data $123.1 (i32.const 19080) "\02\00\00\00\04\00\00\00E\03\a3\03") + (data $124 (i32.const 19100) "\1c") + (data $124.1 (i32.const 19112) "\02\00\00\00\04\00\00\00E\03\c3\03") + (data $125 (i32.const 19132) "\1c") + (data $125.1 (i32.const 19144) "\02\00\00\00\06\00\00\00\91\03E\03\a3\03") + (data $126 (i32.const 19164) "\1c") + (data $126.1 (i32.const 19176) "\02\00\00\00\06\00\00\00\b1\03E\03\c2\03") + (data $127 (i32.const 19196) "\1c") + (data $127.1 (i32.const 19208) "\02\00\00\00\06\00\00\00A\00\a3\03B") + (data $128 (i32.const 19228) "\1c") + (data $128.1 (i32.const 19240) "\02\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc") + (data $129 (i32.const 19260) "\1c") + (data $129.1 (i32.const 19272) "\02\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc") + (data $130 (i32.const 19292) "\1c") + (data $130.1 (i32.const 19304) "\02\00\00\00\08\00\00\00A\00\a3\03.\00b") + (data $131 (i32.const 19324) "\1c") + (data $131.1 (i32.const 19336) "\02\00\00\00\08\00\00\00a\00\c3\03.\00b") + (data $132 (i32.const 19356) "\1c") + (data $132.1 (i32.const 19368) "\02\00\00\00\08\00\00\00A\00\a3\03\ad\00B") + (data $133 (i32.const 19388) "\1c") + (data $133.1 (i32.const 19400) "\02\00\00\00\08\00\00\00a\00\c3\03\ad\00b") + (data $134 (i32.const 19420) "\1c") + (data $134.1 (i32.const 19432) "\02\00\00\00\n\00\00\00A\00\a3\034\d8B\deB") + (data $135 (i32.const 19452) "\1c") + (data $135.1 (i32.const 19464) "\02\00\00\00\n\00\00\00a\00\c3\034\d8B\deb") + (data $136 (i32.const 19484) "\1c") + (data $136.1 (i32.const 19496) "\02\00\00\00\06\00\00\00A\00\a3\03E\03") + (data $137 (i32.const 19516) "\1c") + (data $137.1 (i32.const 19528) "\02\00\00\00\06\00\00\00a\00\c2\03E\03") + (data $138 (i32.const 19548) "\1c") + (data $138.1 (i32.const 19560) "\02\00\00\00\08\00\00\00A\00\a3\03E\03\91\03") + (data $139 (i32.const 19580) "\1c") + (data $139.1 (i32.const 19592) "\02\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03") + (data $140 (i32.const 19612) "\1c") + (data $140.1 (i32.const 19624) "\02\00\00\00\06\00\00\00A\00\0e\18\a3\03") + (data $141 (i32.const 19644) "\1c") + (data $141.1 (i32.const 19656) "\02\00\00\00\06\00\00\00a\00\0e\18\c2\03") + (data $142 (i32.const 19676) "\1c") + (data $142.1 (i32.const 19688) "\02\00\00\00\08\00\00\00A\00\0e\18\a3\03B") + (data $143 (i32.const 19708) "\1c") + (data $143.1 (i32.const 19720) "\02\00\00\00\08\00\00\00a\00\0e\18\c3\03b") + (data $144 (i32.const 19740) "\1c") + (data $144.1 (i32.const 19752) "\02\00\00\00\06\00\00\00A\00\a3\03\0e\18") + (data $145 (i32.const 19772) "\1c") + (data $145.1 (i32.const 19784) "\02\00\00\00\06\00\00\00a\00\c2\03\0e\18") + (data $146 (i32.const 19804) "\1c") + (data $146.1 (i32.const 19816) "\02\00\00\00\08\00\00\00A\00\a3\03\0e\18B") + (data $147 (i32.const 19836) "\1c") + (data $147.1 (i32.const 19848) "\02\00\00\00\08\00\00\00a\00\c3\03\0e\18b") + (data $148 (i32.const 19868) "\1c") + (data $148.1 (i32.const 19880) "\02\00\00\00\08\00\00\00A\00\0e\18\a3\03\0e\18") + (data $149 (i32.const 19900) "\1c") + (data $149.1 (i32.const 19912) "\02\00\00\00\08\00\00\00a\00\0e\18\c2\03\0e\18") + (data $150 (i32.const 19932) "\1c") + (data $150.1 (i32.const 19944) "\02\00\00\00\n\00\00\00A\00\0e\18\a3\03\0e\18B") + (data $151 (i32.const 19964) "\1c") + (data $151.1 (i32.const 19976) "\02\00\00\00\n\00\00\00a\00\0e\18\c3\03\0e\18b") + (data $152 (i32.const 19996) "\1c") + (data $152.1 (i32.const 20008) "\02\00\00\00\02\00\00\00\00\fb") + (data $153 (i32.const 20028) "\1c") + (data $153.1 (i32.const 20040) "\02\00\00\00\04\00\00\00F\00F") + (data $154 (i32.const 20060) "\1c") + (data $154.1 (i32.const 20072) "\02\00\00\00\04\00\00\00F\00I") + (data $155 (i32.const 20092) "\1c") + (data $155.1 (i32.const 20104) "\02\00\00\00\02\00\00\00\02\fb") + (data $156 (i32.const 20124) "\1c") + (data $156.1 (i32.const 20136) "\02\00\00\00\04\00\00\00F\00L") + (data $157 (i32.const 20156) "\1c") + (data $157.1 (i32.const 20168) "\02\00\00\00\02\00\00\00\03\fb") + (data $158 (i32.const 20188) "\1c") + (data $158.1 (i32.const 20200) "\02\00\00\00\06\00\00\00F\00F\00I") + (data $159 (i32.const 20220) "\1c") + (data $159.1 (i32.const 20232) "\02\00\00\00\02\00\00\00\04\fb") + (data $160 (i32.const 20252) "\1c") + (data $160.1 (i32.const 20264) "\02\00\00\00\06\00\00\00F\00F\00L") + (data $161 (i32.const 20284) "\1c") + (data $161.1 (i32.const 20296) "\02\00\00\00\02\00\00\00\05\fb") + (data $162 (i32.const 20316) "\1c") + (data $162.1 (i32.const 20328) "\02\00\00\00\04\00\00\00S\00T") + (data $163 (i32.const 20348) "\1c") + (data $163.1 (i32.const 20360) "\02\00\00\00\02\00\00\00\06\fb") + (data $164 (i32.const 20380) "\1c") + (data $164.1 (i32.const 20392) "\02\00\00\00\02\00\00\00\f0\01") + (data $165 (i32.const 20412) "\1c") + (data $165.1 (i32.const 20424) "\02\00\00\00\04\00\00\00J\00\0c\03") + (data $166 (i32.const 20444) "\1c") + (data $166.1 (i32.const 20456) "\02\00\00\00\02\00\00\00\96\1e") + (data $167 (i32.const 20476) "\1c") + (data $167.1 (i32.const 20488) "\02\00\00\00\04\00\00\00H\001\03") + (data $168 (i32.const 20508) "\1c") + (data $168.1 (i32.const 20520) "\02\00\00\00\02\00\00\00\97\1e") + (data $169 (i32.const 20540) "\1c") + (data $169.1 (i32.const 20552) "\02\00\00\00\04\00\00\00T\00\08\03") + (data $170 (i32.const 20572) "\1c") + (data $170.1 (i32.const 20584) "\02\00\00\00\02\00\00\00\98\1e") + (data $171 (i32.const 20604) "\1c") + (data $171.1 (i32.const 20616) "\02\00\00\00\04\00\00\00W\00\n\03") + (data $172 (i32.const 20636) "\1c") + (data $172.1 (i32.const 20648) "\02\00\00\00\02\00\00\00\99\1e") + (data $173 (i32.const 20668) "\1c") + (data $173.1 (i32.const 20680) "\02\00\00\00\04\00\00\00Y\00\n\03") + (data $174 (i32.const 20700) "\1c") + (data $174.1 (i32.const 20712) "\02\00\00\00\02\00\00\00\9a\1e") + (data $175 (i32.const 20732) "\1c") + (data $175.1 (i32.const 20744) "\02\00\00\00\04\00\00\00A\00\be\02") + (data $176 (i32.const 20764) "\\") + (data $176.1 (i32.const 20776) "\02\00\00\00@\00\00\00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e") + (data $177 (i32.const 20860) "<") + (data $177.1 (i32.const 20872) "\02\00\00\00\"\00\00\00 \00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data $178 (i32.const 20924) "<") + (data $178.1 (i32.const 20936) "\02\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data $179 (i32.const 20988) "\\") + (data $179.1 (i32.const 21000) "\02\00\00\00@\00\00\00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e") + (data $180 (i32.const 21084) "<") + (data $180.1 (i32.const 21096) "\02\00\00\00\"\00\00\00 \00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data $181 (i32.const 21148) "<") + (data $181.1 (i32.const 21160) "\02\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data $182 (i32.const 21216) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\a4") (export "memory" (memory $0)) (start $~start) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21240 + i32.lt_s + if + i32.const 54032 + i32.const 54080 + 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$1 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $1 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $1 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1280 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1088 + i32.const 3024 call $~lib/rt/itcms/__visit - i32.const 19632 + i32.const 1808 call $~lib/rt/itcms/__visit - i32.const 20688 + i32.const 2864 call $~lib/rt/itcms/__visit - i32.const 1488 + i32.const 3424 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -514,7 +723,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -562,7 +771,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -571,7 +780,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$143 + block $__inlined_func$~lib/rt/itcms/Object#unlink$148 local.get $1 i32.load offset=4 i32.const -4 @@ -583,19 +792,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 53848 + i32.const 54008 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$143 + br $__inlined_func$~lib/rt/itcms/Object#unlink$148 end local.get $1 i32.load offset=8 @@ -603,7 +812,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -632,12 +841,12 @@ i32.const 1 else local.get $0 - i32.const 21056 + i32.const 21216 i32.load i32.gt_u if - i32.const 1280 - i32.const 1344 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -646,7 +855,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 21060 + i32.const 21220 i32.add i32.load i32.const 32 @@ -698,7 +907,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -712,7 +921,7 @@ i32.lt_u if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -758,7 +967,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -841,7 +1050,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -855,7 +1064,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -916,7 +1125,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -949,7 +1158,7 @@ i32.lt_u if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -964,7 +1173,7 @@ i32.ne if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -1015,7 +1224,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1087,7 +1296,7 @@ i64.lt_u if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1112,7 +1321,7 @@ i32.gt_u if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1139,7 +1348,7 @@ i32.gt_u if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1211,10 +1420,10 @@ if unreachable end - i32.const 53856 + i32.const 54016 i32.const 0 i32.store - i32.const 55424 + i32.const 55584 i32.const 0 i32.store loop $for-loop|0 @@ -1225,7 +1434,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 53856 + i32.const 54016 i32.add i32.const 0 i32.store offset=4 @@ -1243,7 +1452,7 @@ i32.add i32.const 2 i32.shl - i32.const 53856 + i32.const 54016 i32.add i32.const 0 i32.store offset=96 @@ -1261,14 +1470,14 @@ br $for-loop|0 end end - i32.const 53856 - i32.const 55428 + i32.const 54016 + i32.const 55588 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 53856 + i32.const 54016 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -1353,7 +1562,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 53848 + i32.const 54008 i32.lt_u if local.get $0 @@ -1442,14 +1651,14 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 53848 + i32.const 54008 i32.lt_u if local.get $0 @@ -1472,7 +1681,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 53848 + i32.const 54008 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1501,7 +1710,7 @@ end if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1585,7 +1794,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1637,7 +1846,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1669,8 +1878,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1088 - i32.const 1152 + i32.const 3024 + i32.const 3088 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1680,7 +1889,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$70 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1701,7 +1910,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1734,8 +1943,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1088 - i32.const 1424 + i32.const 3024 + i32.const 3360 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1837,7 +2046,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1852,7 +2061,7 @@ i32.gt_u if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1871,7 +2080,7 @@ i32.and if i32.const 0 - i32.const 1424 + i32.const 3360 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1987,16 +2196,16 @@ i32.const 8 i32.shr_u local.tee $2 - i32.const 6084 + i32.const 8020 i32.add i32.load8_u local.get $2 - i32.const 2444 + i32.const 4380 i32.add i32.load8_u i32.const 86 i32.mul - i32.const 2444 + i32.const 4380 i32.add local.get $0 i32.const 255 @@ -2011,7 +2220,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 5112 + i32.const 7048 i32.add i32.load i32.mul @@ -2022,7 +2231,7 @@ i32.add i32.const 2 i32.shl - i32.const 5124 + i32.const 7060 i32.add i32.load local.tee $2 @@ -2057,7 +2266,7 @@ i32.add i32.const 1 i32.shl - i32.const 6596 + i32.const 8532 i32.add local.tee $5 i32.load8_u @@ -2069,7 +2278,7 @@ i32.load8_u offset=1 i32.const 2 i32.shl - i32.const 5124 + i32.const 7060 i32.add i32.load local.tee $2 @@ -2163,141 +2372,209 @@ memory.copy local.get $2 ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (func $~start + call $start:std/string-casemapping + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - loop $while-continue|0 + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 21240 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21240 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$153 local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 4 + i32.const 20 i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 19212 i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1056 + local.set $0 + br $__inlined_func$~lib/string/String#concat$153 + end + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2 - i32.shl - i32.const 19212 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 54032 + i32.const 54080 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21240 + i32.lt_s + if + i32.const 54032 + i32.const 54080 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1088 + local.get $0 + select + local.tee $0 + i32.store local.get $1 - i32.const 100 - i32.ge_u if + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1120 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 19212 - i32.add - i32.load - i32.store + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 100 - i32.div_u + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add + i32.store offset=16 local.get $1 - i32.const 2 - i32.shl - i32.const 19212 - i32.add - i32.load - i32.store - else - local.get $0 local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 48 - i32.add - i32.store16 - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/staticarray/StaticArray - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort unreachable ) - (func $~start - call $start:std/string-casemapping - ) (func $~lib/string/String#toUpperCase (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -2314,11 +2591,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 21080 + i32.const 21240 i32.lt_s if - i32.const 53872 - i32.const 53920 + i32.const 54032 + i32.const 54080 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2355,9 +2632,9 @@ local.tee $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 1488 + i32.const 3424 i32.store - i32.const 1484 + i32.const 3420 i32.load i32.const 1 i32.shr_u @@ -2480,7 +2757,7 @@ local.tee $4 i32.const 1 i32.shl - i32.const 1488 + i32.const 3424 i32.add i32.load16_u local.get $2 @@ -2519,7 +2796,7 @@ local.get $1 i32.const 1 i32.shl - i32.const 1488 + i32.const 3424 i32.add local.tee $1 i32.load16_u offset=6 @@ -2599,7 +2876,7 @@ i32.shl i32.add local.get $2 - i32.const 2316 + i32.const 4252 i32.add i32.load8_u i32.store16 @@ -2635,11 +2912,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 21080 + i32.const 21240 i32.lt_s if - i32.const 53872 - i32.const 53920 + i32.const 54032 + i32.const 54080 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2738,7 +3015,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$81 + block $__inlined_func$~lib/util/string/compareImpl$84 loop $while-continue|1 local.get $0 local.tee $3 @@ -2758,7 +3035,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$81 + br_if $__inlined_func$~lib/util/string/compareImpl$84 local.get $2 i32.const 2 i32.add @@ -2803,11 +3080,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 21080 + i32.const 21240 i32.lt_s if - i32.const 53872 - i32.const 53920 + i32.const 54032 + i32.const 54080 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3039,12 +3316,12 @@ local.get $4 i32.const 8 i32.shr_u - i32.const 7212 + i32.const 9148 i32.add i32.load8_u i32.const 5 i32.shl - i32.const 7212 + i32.const 9148 i32.add local.get $4 i32.const 255 @@ -3072,12 +3349,12 @@ local.get $4 i32.const 8 i32.shr_u - i32.const 10220 + i32.const 12156 i32.add i32.load8_u i32.const 5 i32.shl - i32.const 10220 + i32.const 12156 i32.add local.get $4 i32.const 255 @@ -3179,12 +3456,12 @@ local.get $1 i32.const 8 i32.shr_u - i32.const 7212 + i32.const 9148 i32.add i32.load8_u i32.const 5 i32.shl - i32.const 7212 + i32.const 9148 i32.add local.get $1 i32.const 255 @@ -3211,12 +3488,12 @@ local.get $1 i32.const 8 i32.shr_u - i32.const 10220 + i32.const 12156 i32.add i32.load8_u i32.const 5 i32.shl - i32.const 10220 + i32.const 12156 i32.add local.get $1 i32.const 255 @@ -3327,7 +3604,7 @@ i32.shl i32.add local.get $4 - i32.const 7084 + i32.const 9020 i32.add i32.load8_u i32.store16 @@ -3360,11 +3637,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 21080 + i32.const 21240 i32.lt_s if - i32.const 53872 - i32.const 53920 + i32.const 54032 + i32.const 54080 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3440,109 +3717,6 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 21080 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 21080 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.tee $2 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $__inlined_func$~lib/string/String#concat$148 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $4 - local.get $3 - i32.add - local.tee $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1056 - local.set $0 - br $__inlined_func$~lib/string/String#concat$148 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $3 - memory.copy - local.get $0 - local.get $3 - i32.add - local.get $1 - local.get $4 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 53872 - i32.const 53920 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) (func $start:std/string-casemapping (local $0 i64) (local $1 i64) @@ -3557,11 +3731,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 21080 + i32.const 21240 i32.lt_s if - i32.const 53872 - i32.const 53920 + i32.const 54032 + i32.const 54080 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3574,34 +3748,34 @@ memory.size i32.const 16 i32.shl - i32.const 53848 + i32.const 54008 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1204 - i32.const 1200 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1200 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1236 - i32.const 1232 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1240 - i32.const 1232 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1232 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1380 - i32.const 1376 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1384 - i32.const 1376 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1376 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace i32.const 1056 call $~lib/string/String#toUpperCase @@ -3615,7 +3789,7 @@ i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -3633,427 +3807,427 @@ i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 9 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11808 + i32.const 13744 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 11856 + i32.const 13792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11904 + i32.const 13840 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 11952 + i32.const 13888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12000 + i32.const 13936 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 12096 + i32.const 14032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 12 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12096 + i32.const 14032 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 12192 + i32.const 14128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12288 + i32.const 14224 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 12352 + i32.const 14288 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12352 + i32.const 14288 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 12416 + i32.const 14352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12480 + i32.const 14416 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 12576 + i32.const 14512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12576 + i32.const 14512 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 12672 + i32.const 14608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12768 + i32.const 14704 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 12864 + i32.const 14800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12864 + i32.const 14800 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 12960 + i32.const 14896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13056 + i32.const 14992 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 13136 + i32.const 15072 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 20 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13216 + i32.const 15152 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 13296 + i32.const 15232 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13376 + i32.const 15312 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 13440 + i32.const 15376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13504 + i32.const 15440 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 13584 + i32.const 15520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 23 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13664 + i32.const 15600 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 13744 + i32.const 15680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13824 + i32.const 15760 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 13888 + i32.const 15824 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 25 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13952 + i32.const 15888 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 14032 + i32.const 15968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 26 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14112 + i32.const 16048 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 14192 + i32.const 16128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 27 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14272 + i32.const 16208 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 14432 + i32.const 16368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 28 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14272 + i32.const 16208 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 14592 + i32.const 16528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 32 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14752 + i32.const 16688 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 14784 + i32.const 16720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 36 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14816 + i32.const 16752 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 14848 + i32.const 16784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 37 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14880 + i32.const 16816 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 15088 + i32.const 17024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 38 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14752 + i32.const 16688 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer @@ -4066,18 +4240,18 @@ local.get $5 i32.store local.get $5 - i32.const 15296 + i32.const 17232 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 42 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15328 + i32.const 17264 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer @@ -4090,18 +4264,18 @@ local.get $5 i32.store local.get $5 - i32.const 15360 + i32.const 17296 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 43 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15392 + i32.const 17328 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer @@ -4114,12 +4288,12 @@ local.get $5 i32.store local.get $5 - i32.const 15392 + i32.const 17328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -4138,12 +4312,12 @@ local.get $5 i32.store local.get $5 - i32.const 15648 + i32.const 17584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 50 i32.const 1 call $~lib/builtins/abort @@ -4162,930 +4336,930 @@ local.get $5 i32.store local.get $5 - i32.const 15648 + i32.const 17584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 51 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15680 + i32.const 17616 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 15712 + i32.const 17648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 54 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15744 + i32.const 17680 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 15776 + i32.const 17712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 55 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15808 + i32.const 17744 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 15840 + i32.const 17776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 56 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15872 + i32.const 17808 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 15904 + i32.const 17840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 59 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15936 + i32.const 17872 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 15968 + i32.const 17904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 60 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16000 + i32.const 17936 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 16032 + i32.const 17968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 61 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16064 + i32.const 18000 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 16096 + i32.const 18032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 62 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16128 + i32.const 18064 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 16160 + i32.const 18096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 63 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16192 + i32.const 18128 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 16224 + i32.const 18160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 64 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16256 + i32.const 18192 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 16288 + i32.const 18224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 65 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16320 + i32.const 18256 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 16352 + i32.const 18288 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 66 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16384 + i32.const 18320 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 16416 + i32.const 18352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 67 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16448 + i32.const 18384 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 16480 + i32.const 18416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 68 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16512 + i32.const 18448 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 16544 + i32.const 18480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 69 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16576 + i32.const 18512 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 16608 + i32.const 18544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 70 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16640 + i32.const 18576 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 16672 + i32.const 18608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 72 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16704 + i32.const 18640 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 16736 + i32.const 18672 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 73 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16768 + i32.const 18704 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 16800 + i32.const 18736 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 74 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16832 + i32.const 18768 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 16864 + i32.const 18800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 75 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16896 + i32.const 18832 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 16928 + i32.const 18864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 78 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16960 + i32.const 18896 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 16992 + i32.const 18928 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 79 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17024 + i32.const 18960 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 17056 + i32.const 18992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 80 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17088 + i32.const 19024 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 17120 + i32.const 19056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 81 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17152 + i32.const 19088 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 17184 + i32.const 19120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 82 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17216 + i32.const 19152 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 17248 + i32.const 19184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 83 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17280 + i32.const 19216 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 16352 + i32.const 18288 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 84 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17312 + i32.const 19248 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 17344 + i32.const 19280 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 85 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17376 + i32.const 19312 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 17408 + i32.const 19344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 86 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17440 + i32.const 19376 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 17472 + i32.const 19408 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 87 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17504 + i32.const 19440 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 17536 + i32.const 19472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 88 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17568 + i32.const 19504 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 17600 + i32.const 19536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 89 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17632 + i32.const 19568 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 17664 + i32.const 19600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 90 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17696 + i32.const 19632 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 17728 + i32.const 19664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17760 + i32.const 19696 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 17792 + i32.const 19728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 92 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17824 + i32.const 19760 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 17856 + i32.const 19792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 93 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17888 + i32.const 19824 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 17920 + i32.const 19856 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 94 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17952 + i32.const 19888 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 17984 + i32.const 19920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 95 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18016 + i32.const 19952 call $~lib/string/String#toLowerCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 18048 + i32.const 19984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 96 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18080 + i32.const 20016 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 18112 + i32.const 20048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 99 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15328 + i32.const 17264 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 18144 + i32.const 20080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 100 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18176 + i32.const 20112 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 18208 + i32.const 20144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 101 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18240 + i32.const 20176 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 18272 + i32.const 20208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 102 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18304 + i32.const 20240 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 18336 + i32.const 20272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 103 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18368 + i32.const 20304 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 18400 + i32.const 20336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 104 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18432 + i32.const 20368 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 18400 + i32.const 20336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 105 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18464 + i32.const 20400 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 18496 + i32.const 20432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 106 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18528 + i32.const 20464 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 18560 + i32.const 20496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 107 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18592 + i32.const 20528 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 18624 + i32.const 20560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 108 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18656 + i32.const 20592 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 18688 + i32.const 20624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 109 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18720 + i32.const 20656 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 18752 + i32.const 20688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 110 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18784 + i32.const 20720 call $~lib/string/String#toUpperCase local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - i32.const 18816 + i32.const 20752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 7024 + i32.const 8960 i32.const 111 i32.const 1 call $~lib/builtins/abort @@ -5285,7 +5459,7 @@ local.get $3 i64.ne if - i32.const 18848 + i32.const 20784 i32.const 1 local.get $4 f64.convert_i32_s @@ -5300,7 +5474,7 @@ global.get $~lib/memory/__stack_pointer local.get $5 i32.store offset=4 - i32.const 18944 + i32.const 20880 local.get $5 call $~lib/string/String.__concat local.set $5 @@ -5321,7 +5495,7 @@ global.get $~lib/memory/__stack_pointer local.get $5 i32.store offset=4 - i32.const 20784 + i32.const 20944 local.get $5 call $~lib/string/String.__concat local.set $5 @@ -5341,7 +5515,7 @@ local.get $2 i64.ne if - i32.const 20848 + i32.const 21008 i32.const 1 local.get $4 f64.convert_i32_s @@ -5356,7 +5530,7 @@ global.get $~lib/memory/__stack_pointer local.get $5 i32.store offset=4 - i32.const 20944 + i32.const 21104 local.get $5 call $~lib/string/String.__concat local.set $5 @@ -5377,7 +5551,7 @@ global.get $~lib/memory/__stack_pointer local.get $5 i32.store offset=4 - i32.const 21008 + i32.const 21168 local.get $5 call $~lib/string/String.__concat local.set $5 @@ -5413,11 +5587,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 21080 + i32.const 21240 i32.lt_s if - i32.const 53872 - i32.const 53920 + i32.const 54032 + i32.const 54080 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5444,7 +5618,7 @@ i32.gt_u if i32.const 0 - i32.const 15600 + i32.const 17536 i32.const 39 i32.const 7 call $~lib/builtins/abort @@ -5491,11 +5665,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 21080 + i32.const 21240 i32.lt_s if - i32.const 53872 - i32.const 53920 + i32.const 54032 + i32.const 54080 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5511,7 +5685,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 19200 + i32.const 1376 return end i64.const 0 @@ -5689,7 +5863,7 @@ i32.div_u i32.const 2 i32.shl - i32.const 19212 + i32.const 1388 i32.add i64.load32_u local.get $6 @@ -5697,7 +5871,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 19212 + i32.const 1388 i32.add i64.load32_u i64.const 32 @@ -5720,7 +5894,7 @@ i32.div_u i32.const 2 i32.shl - i32.const 19212 + i32.const 1388 i32.add i64.load32_u local.get $4 @@ -5728,7 +5902,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 19212 + i32.const 1388 i32.add i64.load32_u i64.const 32 @@ -5756,4 +5930,32 @@ global.set $~lib/memory/__stack_pointer local.get $3 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/staticarray/StaticArray + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/std/string-encoding.debug.wat b/tests/compiler/std/string-encoding.debug.wat index 4f3eae1809..be176c7d20 100644 --- a/tests/compiler/std/string-encoding.debug.wat +++ b/tests/compiler/std/string-encoding.debug.wat @@ -2,15 +2,17 @@ (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) (type $2 (func)) - (type $3 (func (param i32))) - (type $4 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32))) (type $5 (func (param i32 i32 i32) (result i32))) (type $6 (func (param i32 i32 i32))) (type $7 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $8 (func (param i32 i32 i32 i32))) - (type $9 (func (param i32 i32 i64) (result i32))) - (type $10 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (result i32))) + (type $10 (func (param i32 i64 i32))) + (type $11 (func (param i64 i32) (result i32))) + (type $12 (func (param i32 i64 i32 i32))) + (type $13 (func (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)) @@ -28,38 +30,48 @@ (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 21760)) - (global $~lib/memory/__data_end i32 (i32.const 21780)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 54548)) - (global $~lib/memory/__heap_base i32 (i32.const 54548)) + (global $~lib/rt/__rtti_base i32 (i32.const 23696)) + (global $~lib/memory/__data_end i32 (i32.const 23716)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 56484)) + (global $~lib/memory/__heap_base i32 (i32.const 56484)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00\01\d87\dch\00i\00R\d8b\df") - (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00e\00n\00c\00o\00d\00i\00n\00g\00.\00t\00s\00") - (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $3 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\01\d87\dc\00\00\00\00\00\00\00\00") - (data $12 (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00h\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00h\00i\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00R\d8b\df\00\00\00\00\00\00\00\00") - (data $15 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00U\00n\00p\00a\00i\00r\00e\00d\00 \00s\00u\00r\00r\00o\00g\00a\00t\00e\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 732) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data $17 (i32.const 780) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\008\00\00\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00\00\00\00\00\00\00") - (data $18 (i32.const 860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\004\d8\00\00\00\00\00\00\00\00\00\00") - (data $19 (i32.const 892) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\fd\ff\00\00\00\00\00\00\00\00\00\00") - (data $20 (i32.const 924) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\1e\dd\00\00\00\00\00\00\00\00\00\00") - (data $21 (i32.const 956) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\002\003\00\00\004\005\006\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $22 (i32.const 1004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\002\003\00\00\00\00\00\00\00") - (data $23 (i32.const 1036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00h\00i\00R\d8b\df\00\00\00\00") - (data $24 (i32.const 1068) "<3\00\00\00\00\00\00\00\00\00\00\02\00\00\00*3\00\00M\00a\00t\00h\00e\00m\00a\00t\00i\00c\00s\00 \00a\00n\00d\00 \00S\00c\00i\00e\00n\00c\00e\00s\00:\00\n\00\n\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00,\00 \00\00\"x\00\08\"\1d!:\00 \00\08#x\00\t# \00=\00 \00\12\"\n#\12\"x\00\0b#,\00 \00\b1\03 \00\'\" \00\ac\00\b2\03 \00=\00 \00\ac\00(\00\ac\00\b1\03 \00(\" \00\b2\03)\00,\00\n\00\n\00\15! \00\86\" \00\15!\80 \00\82\" \00$! \00\82\" \00\1a! \00\82\" \00\1d! \00\82\" \00\02!,\00 \00\a5\" \00<\00 \00a\00 \00`\" \00b\00 \00a\" \00c\00 \00d\" \00d\00 \00j\" \00\a4\" \00\d2! \00(\00A\00 \00\d4! \00B\00)\00,\00\n\00\n\002\00H\00\82 \00+\00 \00O\00\82 \00\cc! \002\00H\00\82 O\00,\00 \00R\00 \00=\00 \004\00.\007\00 \00k\00\a9\03,\00 \00\00# \002\000\000\00 \00m\00m\00\n\00\n\00L\00i\00n\00g\00u\00i\00s\00t\00i\00c\00s\00 \00a\00n\00d\00 \00d\00i\00c\00t\00i\00o\00n\00a\00r\00i\00e\00s\00:\00\n\00\n\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\n\00Y\00 \00[\00\c8\02\8f\02p\00s\00i\00l\00T\02n\00]\00,\00 \00Y\00e\00n\00 \00[\00j\00[\02n\00]\00,\00 \00Y\00o\00g\00a\00 \00[\00\c8\02j\00o\00\d0\02g\00Q\02]\00\n\00\n\00A\00P\00L\00:\00\n\00\n\00(\00(\00V\00s#V\00)\00=\00s#t#V\00)\00/\00V\00\90!,\00V\00 \00 \00 \00 \007#\90!s#\92!t#\06\"\07\"\83\"> N#U#\08#\n\00\n\00N\00i\00c\00e\00r\00 \00t\00y\00p\00o\00g\00r\00a\00p\00h\00y\00 \00i\00n\00 \00p\00l\00a\00i\00n\00 \00t\00e\00x\00t\00 \00f\00i\00l\00e\00s\00:\00\n\00\n\00T%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%W%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\18 s\00i\00n\00g\00l\00e\00\19 \00a\00n\00d\00 \00\1c d\00o\00u\00b\00l\00e\00\1d \00q\00u\00o\00t\00e\00s\00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00C\00u\00r\00l\00y\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00s\00:\00 \00\1c W\00e\00\19 v\00e\00 \00b\00e\00e\00n\00 \00h\00e\00r\00e\00\1d \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00L\00a\00t\00i\00n\00-\001\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00 \00a\00n\00d\00 \00a\00c\00c\00e\00n\00t\00s\00:\00 \00\'\00\b4\00`\00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\1a d\00e\00u\00t\00s\00c\00h\00e\00\18 \00\1e A\00n\00f\00\fc\00h\00r\00u\00n\00g\00s\00z\00e\00i\00c\00h\00e\00n\00\1c \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00 ,\00 \00! ,\00 \000 ,\00 \00\" ,\00 \003\00\13 4\00,\00 \00\14 ,\00 \00\12\"5\00/\00+\005\00,\00 \00\"!,\00 \00& \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00A\00S\00C\00I\00I\00 \00s\00a\00f\00e\00t\00y\00 \00t\00e\00s\00t\00:\00 \001\00l\00I\00|\00,\00 \000\00O\00D\00,\00 \008\00B\00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00m%\00%\00%\00%\00%\00%\00%\00%\00%\00%n% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00t\00h\00e\00 \00e\00u\00r\00o\00 \00s\00y\00m\00b\00o\00l\00:\00 \00\02% \001\004\00.\009\005\00 \00\ac \00\02% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00p%\00%\00%\00%\00%\00%\00%\00%\00%\00%o% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Z%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%]%\n\00\n\00G\00r\00e\00e\00k\00 \00(\00i\00n\00 \00P\00o\00l\00y\00t\00o\00n\00i\00c\00)\00:\00\n\00\n\00T\00h\00e\00 \00G\00r\00e\00e\00k\00 \00a\00n\00t\00h\00e\00m\00:\00\n\00\n\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03y\1f\c8\03\b7\03\n\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03u\1f,\00\n\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03\n\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03w\1f\b1\03 \00\bc\03\b5\03\c4\03\c1\03q\1f\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\n\00\n\00\bf\1f\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03y\1f\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03s\1f\bd\03\b7\03\n\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03u\1f\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03q\1f\n\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03s\1f\bd\03\b7\03\n\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03q\1f!\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00s\00p\00e\00e\00c\00h\00 \00o\00f\00 \00D\00e\00m\00o\00s\00t\00h\00e\00n\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \004\00t\00h\00 \00c\00e\00n\00t\00u\00r\00y\00 \00B\00C\00:\00\n\00\n\00\9f\03P\1f\c7\03v\1f \00\c4\03\b1\03P\1f\c4\03p\1f \00\c0\03\b1\03\c1\03w\1f\c3\03\c4\03\b1\03\c4\03\b1\03w\1f \00\bc\03\bf\03\b9\03 \00\b3\03\b9\03\b3\03\bd\03}\1f\c3\03\ba\03\b5\03\b9\03\bd\03,\00 \00f\1f \00\04\1f\bd\03\b4\03\c1\03\b5\03\c2\03 \00\bf\1f\91\03\b8\03\b7\03\bd\03\b1\03\d6\1f\bf\03\b9\03,\00\n\00E\1f\c4\03\b1\03\bd\03 \00\c4\03\bf\1f \00\b5\030\1f\c2\03 \00\c4\03p\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\b1\03 \00\00\1f\c0\03\bf\03\b2\03\bb\03s\1f\c8\03\c9\03 \00\ba\03\b1\03v\1f \00E\1f\c4\03\b1\03\bd\03 \00\c0\03\c1\03x\1f\c2\03 \00\c4\03\bf\03z\1f\c2\03\n\00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\bf\03S\1f\c2\03 \00\00\1f\ba\03\bf\03{\1f\c9\03\87\03 \00\c4\03\bf\03z\1f\c2\03 \00\bc\03r\1f\bd\03 \00\b3\03p\1f\c1\03 \00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03 \00A\1f\c1\03\f6\1f \00\b3\03\b9\03\b3\03\bd\03\bf\03\bc\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\c4\03p\1f \00\b4\03r\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\bf\1f\n\00\b5\030\1f\c2\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\c0\03\c1\03\bf\03u\1f\ba\03\bf\03\bd\03\c4\03\b1\03,\00 \00 \00e\1f\c3\03\b8\03\bf\1f \00E\1f\c0\03\c9\03\c2\03 \00\bc\03t\1f \00\c0\03\b5\03\b9\03\c3\03y\1f\bc\03\b5\03\b8\03\bf\1f \00\b1\03P\1f\c4\03\bf\03v\1f\n\00\c0\03\c1\03y\1f\c4\03\b5\03\c1\03\bf\03\bd\03 \00\ba\03\b1\03\ba\03\f6\1f\c2\03 \00\c3\03\ba\03s\1f\c8\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\b4\03s\1f\bf\03\bd\03.\00 \00\bf\03P\1f\b4\03s\1f\bd\03 \00\bf\03V\1f\bd\03 \00\04\1f\bb\03\bb\03\bf\03 \00\bc\03\bf\03\b9\03 \00\b4\03\bf\03\ba\03\bf\03\e6\1f\c3\03\b9\03\bd\03\n\00\bf\031\1f \00\c4\03p\1f \00\c4\03\bf\03\b9\03\b1\03\e6\1f\c4\03\b1\03 \00\bb\03s\1f\b3\03\bf\03\bd\03\c4\03\b5\03\c2\03 \00\"\1f \00\c4\03t\1f\bd\03 \00Q\1f\c0\03y\1f\b8\03\b5\03\c3\03\b9\03\bd\03,\00 \00\c0\03\b5\03\c1\03v\1f \00\'\1f\c2\03 \00\b2\03\bf\03\c5\03\bb\03\b5\03{\1f\b5\03\c3\03\b8\03\b1\03\b9\03,\00\n\00\bf\03P\1f\c7\03v\1f \00\c4\03t\1f\bd\03 \00\bf\03V\1f\c3\03\b1\03\bd\03 \00\c0\03\b1\03\c1\03\b9\03\c3\03\c4\03q\1f\bd\03\c4\03\b5\03\c2\03 \00Q\1f\bc\03\d6\1f\bd\03 \00\01\1f\bc\03\b1\03\c1\03\c4\03q\1f\bd\03\b5\03\b9\03\bd\03.\00 \00\10\1f\b3\03|\1f \00\b4\03s\1f,\00 \00E\1f\c4\03\b9\03 \00\bc\03s\1f\bd\03\n\00\c0\03\bf\03\c4\03\bf\1f \00\10\1f\be\03\c6\1f\bd\03 \00\c4\03\c7\1f \00\c0\03y\1f\bb\03\b5\03\b9\03 \00\ba\03\b1\03v\1f \00\c4\03p\1f \00\b1\03Q\1f\c4\03\c6\1f\c2\03 \00\14\1f\c7\03\b5\03\b9\03\bd\03 \00\00\1f\c3\03\c6\03\b1\03\bb\03\f6\1f\c2\03 \00\ba\03\b1\03v\1f \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03,\00 \00\ba\03\b1\03v\1f \00\bc\03q\1f\bb\03\bf\1f \00\00\1f\ba\03\c1\03\b9\03\b2\03\f6\1f\c2\03 \00\bf\036\1f\b4\03\b1\03\87\03 \00\10\1f\c0\03\bf\1f \00\10\1f\bc\03\bf\03\e6\1f \00\b3\03q\1f\c1\03,\00 \00\bf\03P\1f \00\c0\03q\1f\bb\03\b1\03\b9\03\n\00\b3\03s\1f\b3\03\bf\03\bd\03\b5\03\bd\03 \00\c4\03\b1\03\e6\1f\c4\03\bf\1f \00\00\1f\bc\03\c6\03y\1f\c4\03\b5\03\c1\03\b1\03\87\03 \00\bd\03\e6\1f\bd\03 \00\bc\03s\1f\bd\03\c4\03\bf\03\b9\03 \00\c0\03s\1f\c0\03\b5\03\b9\03\c3\03\bc\03\b1\03\b9\03 \00\c4\03\bf\03\e6\1f\b8\03\bf\1f \001\1f\ba\03\b1\03\bd\03x\1f\bd\03\n\00\c0\03\c1\03\bf\03\bb\03\b1\03\b2\03\b5\03\d6\1f\bd\03 \00!\1f\bc\03\d6\1f\bd\03 \00\b5\036\1f\bd\03\b1\03\b9\03 \00\c4\03t\1f\bd\03 \00\c0\03\c1\03}\1f\c4\03\b7\03\bd\03,\00 \00E\1f\c0\03\c9\03\c2\03 \00\c4\03\bf\03z\1f\c2\03 \00\c3\03\c5\03\bc\03\bc\03q\1f\c7\03\bf\03\c5\03\c2\03\n\00\c3\03}\1f\c3\03\bf\03\bc\03\b5\03\bd\03.\00 \00\10\1fp\1f\bd\03 \00\b3\03p\1f\c1\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\b2\03\b5\03\b2\03\b1\03w\1f\c9\03\c2\03 \00Q\1f\c0\03q\1f\c1\03\be\03\c3\1f,\00 \00\c4\03y\1f\c4\03\b5\03 \00\ba\03\b1\03v\1f \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03w\1f\bd\03\b1\03 \00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b5\03\c4\03\b1\03w\1f \00\c4\03\b9\03\c2\03 \00\ba\03\b1\03v\1f \00C\1f\bd\03 \00\c4\03\c1\03y\1f\c0\03\bf\03\bd\03 \00\10\1f\be\03s\1f\c3\03\c4\03\b1\03\b9\03 \00\c3\03\ba\03\bf\03\c0\03\b5\03\d6\1f\bd\03\87\03 \00\c0\03\c1\03v\1f\bd\03 \00\b4\03r\1f\n\00\c4\03t\1f\bd\03 \00\00\1f\c1\03\c7\03t\1f\bd\03 \00@\1f\c1\03\b8\03\f6\1f\c2\03 \00Q\1f\c0\03\bf\03\b8\03s\1f\c3\03\b8\03\b1\03\b9\03,\00 \00\bc\03q\1f\c4\03\b1\03\b9\03\bf\03\bd\03 \00!\1f\b3\03\bf\03\e6\1f\bc\03\b1\03\b9\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\c6\1f\c2\03\n\00\c4\03\b5\03\bb\03\b5\03\c5\03\c4\03\c6\1f\c2\03 \00A\1f\bd\03\c4\03\b9\03\bd\03\bf\03\e6\1f\bd\03 \00\c0\03\bf\03\b9\03\b5\03\d6\1f\c3\03\b8\03\b1\03\b9\03 \00\bb\03y\1f\b3\03\bf\03\bd\03.\00\n\00\n\00\94\03\b7\03\bc\03\bf\03\c3\03\b8\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\93\03\fd\1f \00\bf\1f\9f\03\bb\03\c5\03\bd\03\b8\03\b9\03\b1\03\ba\03x\1f\c2\03\n\00\n\00G\00e\00o\00r\00g\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\d2\10\d7\10\ee\10\dd\10\d5\10\d7\10 \00\d0\10\ee\10\da\10\d0\10\d5\10\d4\10 \00\d2\10\d0\10\d8\10\d0\10\e0\10\dd\10\d7\10 \00\e0\10\d4\10\d2\10\d8\10\e1\10\e2\10\e0\10\d0\10\ea\10\d8\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\db\10\d4\10\d0\10\d7\10\d4\10 \00\e1\10\d0\10\d4\10\e0\10\d7\10\d0\10\e8\10\dd\10\e0\10\d8\10\e1\10\dd\10\n\00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10\d6\10\d4\10 \00\d3\10\d0\10\e1\10\d0\10\e1\10\ec\10\e0\10\d4\10\d1\10\d0\10\d3\10,\00 \00\e0\10\dd\10\db\10\d4\10\da\10\d8\10\ea\10 \00\d2\10\d0\10\d8\10\db\10\d0\10\e0\10\d7\10\d4\10\d1\10\d0\10 \001\000\00-\001\002\00 \00\db\10\d0\10\e0\10\e2\10\e1\10,\00\n\00\e5\10.\00 \00\db\10\d0\10\d8\10\dc\10\ea\10\e8\10\d8\10,\00 \00\d2\10\d4\10\e0\10\db\10\d0\10\dc\10\d8\10\d0\10\e8\10\d8\10.\00 \00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10 \00\e8\10\d4\10\f0\10\d9\10\e0\10\d4\10\d1\10\e1\10 \00\d4\10\e0\10\d7\10\d0\10\d3\10 \00\db\10\e1\10\dd\10\e4\10\da\10\d8\10\dd\10\e1\10\n\00\d4\10\e5\10\e1\10\de\10\d4\10\e0\10\e2\10\d4\10\d1\10\e1\10 \00\d8\10\e1\10\d4\10\d7\10 \00\d3\10\d0\10\e0\10\d2\10\d4\10\d1\10\e8\10\d8\10 \00\e0\10\dd\10\d2\10\dd\10\e0\10\d8\10\ea\10\d0\10\d0\10 \00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d4\10\e2\10\d8\10 \00\d3\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10,\00\n\00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d0\10\ea\10\d8\10\dd\10\dc\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10 \00\d3\10\d0\10 \00\da\10\dd\10\d9\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10,\00 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d0\10\n\00\dd\10\de\10\d4\10\e0\10\d0\10\ea\10\d8\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e1\10\d0\10,\00 \00\d3\10\d0\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d8\10\d7\10 \00\de\10\e0\10\dd\10\d2\10\e0\10\d0\10\db\10\d4\10\d1\10\e8\10\d8\10,\00 \00\e8\10\e0\10\d8\10\e4\10\e2\10\d4\10\d1\10\e8\10\d8\10,\00\n\00\e2\10\d4\10\e5\10\e1\10\e2\10\d4\10\d1\10\d8\10\e1\10 \00\d3\10\d0\10\db\10\e3\10\e8\10\d0\10\d5\10\d4\10\d1\10\d0\10\e1\10\d0\10 \00\d3\10\d0\10 \00\db\10\e0\10\d0\10\d5\10\d0\10\da\10\d4\10\dc\10\dd\10\d5\10\d0\10\dc\10 \00\d9\10\dd\10\db\10\de\10\d8\10\e3\10\e2\10\d4\10\e0\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e8\10\d8\10.\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\17\040\04@\045\043\048\04A\04B\04@\048\04@\04C\049\04B\045\04A\04L\04 \00A\045\049\04G\040\04A\04 \00=\040\04 \00\14\045\04A\04O\04B\04C\04N\04 \00\1c\045\046\044\04C\04=\040\04@\04>\044\04=\04C\04N\04 \00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04N\04 \00?\04>\04\n\00U\00n\00i\00c\00o\00d\00e\00,\00 \00:\04>\04B\04>\04@\040\04O\04 \00A\04>\04A\04B\04>\048\04B\04A\04O\04 \001\000\00-\001\002\00 \00<\040\04@\04B\040\04 \001\009\009\007\00 \003\04>\044\040\04 \002\04 \00\1c\040\049\04=\04F\045\04 \002\04 \00\13\045\04@\04<\040\04=\048\048\04.\00\n\00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04O\04 \00A\04>\041\045\04@\045\04B\04 \00H\048\04@\04>\04:\048\049\04 \00:\04@\04C\043\04 \00M\04:\04A\04?\045\04@\04B\04>\042\04 \00?\04>\04 \00 \002\04>\04?\04@\04>\04A\040\04<\04 \003\04;\04>\041\040\04;\04L\04=\04>\043\04>\04\n\00\18\04=\04B\045\04@\04=\045\04B\040\04 \008\04 \00U\00n\00i\00c\00o\00d\00e\00,\00 \00;\04>\04:\040\04;\048\047\040\04F\048\048\04 \008\04 \008\04=\04B\045\04@\04=\040\04F\048\04>\04=\040\04;\048\047\040\04F\048\048\04,\00 \002\04>\04?\04;\04>\04I\045\04=\048\04N\04 \008\04\n\00?\04@\048\04<\045\04=\045\04=\048\04N\04 \00U\00n\00i\00c\00o\00d\00e\00 \002\04 \00@\040\047\04;\048\04G\04=\04K\04E\04 \00>\04?\045\04@\040\04F\048\04>\04=\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04 \008\04 \00?\04@\04>\043\04@\040\04<\04<\04=\04K\04E\04\n\00?\04@\048\04;\04>\046\045\04=\048\04O\04E\04,\00 \00H\04@\048\04D\04B\040\04E\04,\00 \002\045\04@\04A\04B\04:\045\04 \008\04 \00<\04=\04>\043\04>\04O\047\04K\04G\04=\04K\04E\04 \00:\04>\04<\04?\04L\04N\04B\045\04@\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04.\00\n\00\n\00T\00h\00a\00i\00 \00(\00U\00C\00S\00 \00L\00e\00v\00e\00l\00 \002\00)\00:\00\n\00\n\00E\00x\00c\00e\00r\00p\00t\00 \00f\00r\00o\00m\00 \00a\00 \00p\00o\00e\00t\00r\00y\00 \00o\00n\00 \00T\00h\00e\00 \00R\00o\00m\00a\00n\00c\00e\00 \00o\00f\00 \00T\00h\00e\00 \00T\00h\00r\00e\00e\00 \00K\00i\00n\00g\00d\00o\00m\00s\00 \00(\00a\00 \00C\00h\00i\00n\00e\00s\00e\00\n\00c\00l\00a\00s\00s\00i\00c\00 \00\'\00S\00a\00n\00 \00G\00u\00a\00\'\00)\00:\00\n\00\n\00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00A\0e\1c\0eH\0e\19\0e\14\0e4\0e\19\0e.\0e1\0eH\0e\19\0e@\0e*\0e7\0eH\0e-\0e!\0eB\0e\17\0e#\0e!\0eA\0e*\0e\19\0e*\0e1\0e\07\0e@\0e\'\0e\n\0e \00 \00\1e\0e#\0e0\0e\1b\0e\01\0e@\0e\01\0e(\0e\01\0e-\0e\07\0e\1a\0e9\0eJ\0e\01\0e9\0eI\0e\02\0e6\0eI\0e\19\0eC\0e+\0e!\0eH\0e\n\00*\0e4\0e\1a\0e*\0e-\0e\07\0e\01\0e)\0e1\0e\15\0e#\0e4\0e\"\0eL\0e\01\0eH\0e-\0e\19\0e+\0e\19\0eI\0e2\0eA\0e%\0e\16\0e1\0e\14\0eD\0e\1b\0e \00 \00 \00 \00 \00 \00 \00*\0e-\0e\07\0e-\0e\07\0e\04\0eL\0eD\0e\0b\0e#\0eI\0eB\0e\07\0eH\0e@\0e\02\0e%\0e2\0e@\0e\1a\0e2\0e\1b\0e1\0e\r\0e\r\0e2\0e\n\00 \00 \00\17\0e#\0e\07\0e\19\0e1\0e\1a\0e\16\0e7\0e-\0e\02\0e1\0e\19\0e\17\0e5\0e@\0e\1b\0eG\0e\19\0e\17\0e5\0eH\0e\1e\0e6\0eH\0e\07\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\1a\0eI\0e2\0e\19\0e@\0e!\0e7\0e-\0e\07\0e\08\0e6\0e\07\0e\'\0e4\0e\1b\0e#\0e4\0e\15\0e@\0e\1b\0eG\0e\19\0e\19\0e1\0e\01\0e+\0e\19\0e2\0e\n\00B\0e.\0e\08\0e4\0eK\0e\19\0e@\0e#\0e5\0e\"\0e\01\0e\17\0e1\0e\1e\0e\17\0e1\0eH\0e\'\0e+\0e1\0e\'\0e@\0e!\0e7\0e-\0e\07\0e!\0e2\0e \00 \00 \00 \00 \00 \00 \00 \00 \00+\0e!\0e2\0e\"\0e\08\0e0\0e\06\0eH\0e2\0e!\0e\14\0e\n\0e1\0eH\0e\'\0e\15\0e1\0e\'\0e*\0e3\0e\04\0e1\0e\r\0e\n\00 \00 \00@\0e+\0e!\0e7\0e-\0e\19\0e\02\0e1\0e\1a\0eD\0e*\0eD\0e%\0eH\0e@\0e*\0e7\0e-\0e\08\0e2\0e\01\0e@\0e\04\0e+\0e2\0e \00 \00 \00 \00 \00 \00#\0e1\0e\1a\0e+\0e!\0e2\0e\1b\0eH\0e2\0e@\0e\02\0eI\0e2\0e!\0e2\0e@\0e%\0e\"\0e-\0e2\0e*\0e1\0e\r\0e\n\00\1d\0eH\0e2\0e\"\0e-\0eI\0e-\0e\07\0e-\0e8\0eI\0e\19\0e\"\0e8\0eA\0e\"\0e\01\0eC\0e+\0eI\0eA\0e\15\0e\01\0e\01\0e1\0e\19\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00C\0e\n\0eI\0e*\0e2\0e\'\0e\19\0e1\0eI\0e\19\0e@\0e\1b\0eG\0e\19\0e\n\0e\19\0e\'\0e\19\0e\n\0e7\0eH\0e\19\0e\n\0e\'\0e\19\0eC\0e\08\0e\n\00 \00 \00\1e\0e%\0e1\0e\19\0e%\0e4\0e\t\0e8\0e\"\0e\01\0e8\0e\"\0e\01\0e5\0e\01\0e%\0e1\0e\1a\0e\01\0eH\0e-\0e@\0e+\0e\15\0e8\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\n\0eH\0e2\0e\07\0e-\0e2\0e@\0e\1e\0e(\0e\08\0e#\0e4\0e\07\0e+\0e\19\0e2\0e\1f\0eI\0e2\0e#\0eI\0e-\0e\07\0eD\0e+\0eI\0e\n\00\15\0eI\0e-\0e\07\0e#\0e\1a\0e#\0e2\0e\06\0eH\0e2\0e\1f\0e1\0e\19\0e\08\0e\19\0e\1a\0e#\0e#\0e%\0e1\0e\"\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00$\0eE\0e+\0e2\0eC\0e\04\0e#\0e\04\0eI\0e3\0e\n\0e9\0e\01\0e9\0eI\0e\1a\0e#\0e#\0e%\0e1\0e\07\0e\01\0eL\0e \00/\0e\n\00\n\00(\00T\00h\00e\00 \00a\00b\00o\00v\00e\00 \00i\00s\00 \00a\00 \00t\00w\00o\00-\00c\00o\00l\00u\00m\00n\00 \00t\00e\00x\00t\00.\00 \00I\00f\00 \00c\00o\00m\00b\00i\00n\00i\00n\00g\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00s\00 \00a\00r\00e\00 \00h\00a\00n\00d\00l\00e\00d\00\n\00c\00o\00r\00r\00e\00c\00t\00l\00y\00,\00 \00t\00h\00e\00 \00l\00i\00n\00e\00s\00 \00o\00f\00 \00t\00h\00e\00 \00s\00e\00c\00o\00n\00d\00 \00c\00o\00l\00u\00m\00n\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00a\00l\00i\00g\00n\00e\00d\00 \00w\00i\00t\00h\00 \00t\00h\00e\00\n\00|\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00a\00b\00o\00v\00e\00.\00)\00\n\00\n\00E\00t\00h\00i\00o\00p\00i\00a\00n\00:\00\n\00\n\00P\00r\00o\00v\00e\00r\00b\00s\00 \00i\00n\00 \00t\00h\00e\00 \00A\00m\00h\00a\00r\00i\00c\00 \00l\00a\00n\00g\00u\00a\00g\00e\00:\00\n\00\n\000\12\1b\12\ed\12 \00\a0\12\ed\12s\12(\125\12 \00\95\12\t\13%\12 \00\a0\12\ed\12\a8\120\125\12b\13\n\00e\12\0b\12 \00\ab\12\08\12\9d\12 \00\a5\12\95\12\f0\12\a0\12c\12t\12 \00`\12F\12\18\12 \13\9d\12b\13\n\00\0c\13%\13 \00\eb\12\08\12d\12q\12 \00A\12\1d\12%\13\93\12 \00\90\12\cd\12b\13\n\00\f0\12\00\12 \00`\12\15\12\r\12\19\12 \00E\12d\12 \00c\12\ed\12 \13#\13 \00\95\12#\13u\12 \00`\12\08\13\f0\12\08\12\cd\12b\13\n\00\e8\12\a0\12M\13 \00\c8\12\08\12\1d\12s\12 \00`\12E\12d\12 \00\a0\12\ed\12s\12=\12\1d\12b\13\n\00\a0\12\ed\12%\13 \00`\12`\12\0b\12 \00\f3\12\cb\12 \00p\12\18\12s\12b\13\n\002\12p\12(\12\t\13\19\12 \00\ed\12\f0\12(\12\r\13\19\12b\13\n\00@\125\12 \00`\12@\125\12e\13 \00\d5\12\95\12A\12\0b\12\r\12 \00`\12\a5\12\r\13)\12 \00\ed\12\04\12\f3\12\r\12b\13\n\00\f5\12-\12 \00b\12\eb\12e\12-\12 \00\a0\12\95\12`\123\12 \00\eb\125\12-\12b\13\n\000\12\cd\12 \00\a5\12\95\12\f0\12d\12q\12 \00\a5\12\95\12\05\13 \00\a5\12\95\12\f0\12 \00\t\13(\12d\12q\12 \00\a0\12\ed\12p\12\f3\12\f0\12-\12\1d\12b\13\n\00\a5\12\r\13\dc\12-\12 \00\e8\12\a8\12H\13p\12\cd\12\95\12 \00\t\13.\12.\12 \003\12\ed\12\d8\12\0b\13\cd\12 \00\a0\12\ed\12\f5\12-\12\1d\12b\13\n\00\e8\12\0e\13(\12d\12u\12 \00\0c\12c\12e\13 \00b\12\eb\12\e9\12u\12 \00\ed\125\12E\12 \00c\12\eb\12\e9\12u\12 \00\eb\12 \13\r\12E\12b\13\n\00%\12+\12 \00\a8\12\18\12M\13s\12u\12 \00\r\12\04\13\95\12 \00\0b\12K\13s\12u\12b\13\n\00\d3\12c\12\ed\12 \00\1b\12\f0\12*\12\eb\12 \00\e8\12\08\12\cd\12e\13 \00\r\13\95\12\f5\12 \00\ed\12\de\12 \00\ed\12\de\12+\12\r\12b\13\n\00\e8\12\a5\125\12\0b\12\1d\12 \00\a0\12\08\13)\12 \00\18\12\ab\12 \00\e8\12\a0\12\1e\12+\12 \00\a0\12\08\13)\12 \00\cb\12-\12\ab\12b\13\n\00p\12\95\12\0b\13\0e\12 \00b\12p\12I\13 \00p\12\18\12\r\126\12 \00c\12I\13b\13\n\00\c8\12\f3\12\05\13\05\12 \00\1b\12-\12 \00b\12\06\12\95\12 \00(\13-\125\12\05\12 \00\a0\12u\12\0b\120\12\cd\12b\13\n\00\a5\12\r\13-\12\05\12\95\12 \00`\12M\13+\12=\12\05\12 \00\r\12\ad\12 \00\d8\12-\12\0b\13b\13\n\00\n\00R\00u\00n\00e\00s\00:\00\n\00\n\00\bb\16\d6\16 \00\b3\16\b9\16\ab\16\a6\16 \00\a6\16\ab\16\cf\16 \00\bb\16\d6\16 \00\d2\16\a2\16\de\16\d6\16 \00\a9\16\be\16 \00\a6\16\ab\16\d7\16 \00\da\16\aa\16\be\16\de\16\d6\16 \00\be\16\a9\16\b1\16\a6\16\b9\16\d6\16\aa\16\b1\16\de\16\a2\16\d7\16 \00\b9\16\c1\16\a6\16 \00\a6\16\aa\16 \00\b9\16\d6\16\e5\16\ab\16\n\00\n\00(\00O\00l\00d\00 \00E\00n\00g\00l\00i\00s\00h\00,\00 \00w\00h\00i\00c\00h\00 \00t\00r\00a\00n\00s\00c\00r\00i\00b\00e\00d\00 \00i\00n\00t\00o\00 \00L\00a\00t\00i\00n\00 \00r\00e\00a\00d\00s\00 \00\'\00H\00e\00 \00c\00w\00a\00e\00t\00h\00 \00t\00h\00a\00t\00 \00h\00e\00\n\00b\00u\00d\00e\00 \00t\00h\00a\00e\00m\00 \00l\00a\00n\00d\00e\00 \00n\00o\00r\00t\00h\00w\00e\00a\00r\00d\00u\00m\00 \00w\00i\00t\00h\00 \00t\00h\00a\00 \00W\00e\00s\00t\00s\00a\00e\00.\00\'\00 \00a\00n\00d\00 \00m\00e\00a\00n\00s\00 \00\'\00H\00e\00 \00s\00a\00i\00d\00\n\00t\00h\00a\00t\00 \00h\00e\00 \00l\00i\00v\00e\00d\00 \00i\00n\00 \00t\00h\00e\00 \00n\00o\00r\00t\00h\00e\00r\00n\00 \00l\00a\00n\00d\00 \00n\00e\00a\00r\00 \00t\00h\00e\00 \00W\00e\00s\00t\00e\00r\00n\00 \00S\00e\00a\00.\00\'\00)\00\n\00\n\00B\00r\00a\00i\00l\00l\00e\00:\00\n\00\n\00L(\01(\'(\11( \00<(\01(\12( \00 \00M(\1c(\07(\11(9(0(\0e( \00c(\15(\0c(\n\00\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\19(\11(\01(\19(\12( \00\1e(\15( \00\03(\11(\1b(\14( \00:(\n(9(2( \00y(;(\11( \00\n(\0e( \00\1d(\15( \00\19(3(\03(\1e(\n\001(\01(\1e(\11(\'(;( \00\01(\03(3(\1e( \009(\01(\1e(2( \00y(\11( \00\17(\11(\1b(\n(\0c(;( \00\15(\0b( \00\19(\n(\0e( \00\03(%(\17(\n(\01(\07( \00:(\01(\0e(\n\00\0e(\n(\1b(\1d(+( \00\03(9( \009(\11( \00\n(\07(;(\1b(9(\r(\01(\1d(\02( \009(\11( \00\n(\07(;(\05(\02( \009(\11( \00%(\1d(\19(;(\1e(\01(\05(;(\02(\n\00\01(\1d(\19( \009(\11( \00!(\n(\11(\0b( \00\r(3(\17(\1d(;(2( \00N(\n(\17(\15(\15(\1b(\11( \00\0e(\n(\1b(\1d(+( \00\n(\1e(2( \00A(\1d(\19(\n\00N(\n(\17(\15(\15(\1b(\11(0(\0e( \00\1d(\01(\r(\11( \00:(\01(\0e( \00\1b(\15(\15(\19( \00%(\0f(\15(\1d( \000(a(\01(\1d(\1b(\11(\02( \00\0b(\15(\17( \00\01(\1d(9(9(\14(\1b( \00\19(\11(\n\00!(\15(\0e(\11( \00\1e(\15( \00\0f(%(\1e( \00\19(\n(\0e( \00\19(\01(\1d(\19( \00\1e(\15(2(\n\00\n\00U(\07(\19( \00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00M(\14(\19(\16( \00J( \00\19(\15(\1d(0(\1e( \00\r(\11(\01(\1d( \00\1e(\15( \00\0e(\01(9( \009(\01(\1e( \00J( \00\05(\1d(*(\02( \00\15(\0b( \00\r(9(\n\00*(\1d( \00\05(\1d(*(\07(+(\1b(\11(\02( \001(\01(\1e( \009(;(\11( \00\n(\0e( \00\0f(\1c(\1e(\n(\n(%(\07(\1c(\07(9( \00\19(\11(\01(\19( \00\01(\03(3(\1e(\n\00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2( \00J( \00\r(\n(#(\1e( \00\19(\01(\'(\11( \00\03(\11(2( \00\14(\n(\07(\14(+(\02( \00\r(9(\0e(\11(\07(\0b(\02( \00\1e(\15(\n\00\17(\11(\1b(\1c(\19( \00\01( \00\n(\15(\0b(\0b(\14($(\1d(\01(\n(\07( \00\01(\0e( \009(\11( \00\19(\11(\01(\19(\11(\0c( \00\0f(\n(\11(\n(\11( \00\15(\0b( \00\n(\17(\15(\1d(\r(\15(\1d(\1b(;(9(\n\00\14( \009(\11( \00\1e(\17(\01(\19(\11(2( \00C(%(\1e( \009(\11( \00:(\n(\0e(\19(\15(\r( \00\15(\0b( \003(\17( \00\01(\1d(\n(\11(\0c(\15(\17(\0e(\n\00\n(\0e( \00\14( \009(\11( \00\0e(\n(\r(\n(\07(\11(\06( \00\01(\1d(\19( \00\r(9( \00%(\1d(\19(\01(\07(\07(*(+( \00\19(\01(\1d(\19(\0e(\n\00)(\01(\07(\07( \00\1d(\15(\1e( \00\19(\n(\0c(%(\17(\03( \00\n(\1e(\02( \00\15(\17( \009(\11( \00J(3(\1d(\1e(\17(9(0(\0e( \00\19(\15(\1d(\11( \00\0b(\15(\17(2( \00y(3(\n\00:(\n(\07(\07( \009(;(\11(\0b(\15(\17(\11( \00\0f(;(\r(\n(\1e( \00\r(\11( \00\1e(\15( \00\17(\11(\0f(\11(\01(\1e(\02( \00\11(\r(\0f(\19(\01(\1e(\n(\n(\01(\07(\07(9(\02( \009(\01(\1e(\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00(\00T\00h\00e\00 \00f\00i\00r\00s\00t\00 \00c\00o\00u\00p\00l\00e\00 \00o\00f\00 \00p\00a\00r\00a\00g\00r\00a\00p\00h\00s\00 \00o\00f\00 \00\"\00A\00 \00C\00h\00r\00i\00s\00t\00m\00a\00s\00 \00C\00a\00r\00o\00l\00\"\00 \00b\00y\00 \00D\00i\00c\00k\00e\00n\00s\00)\00\n\00\n\00C\00o\00m\00p\00a\00c\00t\00 \00f\00o\00n\00t\00 \00s\00e\00l\00e\00c\00t\00i\00o\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00t\00e\00x\00t\00:\00\n\00\n\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00\n\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\n\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\n\00\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\n\00\n\00G\00r\00e\00e\00t\00i\00n\00g\00s\00 \00i\00n\00 \00v\00a\00r\00i\00o\00u\00s\00 \00l\00a\00n\00g\00u\00a\00g\00e\00s\00:\00\n\00\n\00H\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00,\00 \00\9a\03\b1\03\bb\03\b7\03\bc\03s\1f\c1\03\b1\03 \00\ba\03y\1f\c3\03\bc\03\b5\03,\00 \00\b30\f30\cb0\c10\cf0\n\00\n\00B\00o\00x\00 \00d\00r\00a\00w\00i\00n\00g\00 \00a\00l\00i\00g\00n\00m\00e\00n\00t\00 \00t\00e\00s\00t\00s\00:\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\88%\n\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\89%\n\00T%P%P%f%P%P%W% \00 \00\0c%\00%\00%,%\00%\00%\10% \00 \00m%\00%\00%,%\00%\00%n% \00 \00m%\00%\00%,%\00%\00%n% \00 \00\0f%\01%\01%3%\01%\01%\13% \00 \00\0e%\12%\0f%\11% \00 \00 \00w% \00 \00{% \00\0f%/%\13% \00\0c%0%\10% \00 \00 \00 \00\8a% \00q%r%q%r%s%s%s%\n\00Q%\0c%\00%h%\00%\10%Q% \00 \00\02%T%P%g%P%W%\02% \00 \00\02%R%P%j%P%U%\02% \00 \00\02%S%\00%A%\00%V%\02% \00 \00\03%\0c%\00%B%\00%\10%\03% \00 \00\17%C%D%\19% \00 \00v%<%t%z%K%x% %<%(% \00\1d%K%%% \00 \00 \00 \00\8b% \00r%q%r%q%s%s%s%\n\00Q%\02%r% \00q%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00\7f% \00\02%\03% \00 \00\r%E%F%\13% \00 \00 \00u% \00 \00y% \00\17%7%\1b% \00\14%8%\18% \00 \00 \00 \00\8c% \00q%r%q%r%s%s%s%\n\00`%a% \00s% \00^%c% \00 \00\1c%b% \00 \00 \00_%$% \00 \00\1c%<%\00%<%\00%<%$% \00 \00\1c%k%\00%B%\00%k%$% \00 \00#%?%~%<%|%?%+% \00 \00\15%\1b%\16%\1a% \00 \00 \00 \00 \00\0c%\04%\04%\10% \00N% \00\0f%\05%\05%\13% \00\0b% \00\8d% \00r%q%r%q%s%s%s%\n\00Q%\02%q% \00r%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00}% \00\02%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8e%\n\00Q%\14%\00%e%\00%\18%Q% \00 \00\02%Z%P%d%P%]%\02% \00 \00\02%X%P%j%P%[%\02% \00 \00\02%Y%\00%@%\00%\\%\02% \00 \00\03%\14%\00%B%\00%\18%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8f%\n\00Z%P%P%i%P%P%]% \00 \00\14%\00%\00%4%\00%\00%\18% \00 \00p%\00%\00%4%\00%\00%o% \00 \00p%\00%\00%4%\00%\00%o% \00 \00\17%\01%\01%;%\01%\01%\1b% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\14%L%L%\18% \00N% \00\17%M%M%\1b% \00\0b% \00 \00\81%\82%\83%\84%\85%\86%\87%\88%\n\00\00\00") - (data $25 (i32.const 14188) "\8c\1d\00\00\00\00\00\00\00\00\00\00\02\00\00\00p\1d\00\00S\00e\00n\00t\00e\00n\00c\00e\00s\00 \00t\00h\00a\00t\00 \00c\00o\00n\00t\00a\00i\00n\00 \00a\00l\00l\00 \00l\00e\00t\00t\00e\00r\00s\00 \00c\00o\00m\00m\00o\00n\00l\00y\00 \00u\00s\00e\00d\00 \00i\00n\00 \00a\00 \00l\00a\00n\00g\00u\00a\00g\00e\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00M\00a\00r\00k\00u\00s\00 \00K\00u\00h\00n\00 \00<\00h\00t\00t\00p\00:\00/\00/\00w\00w\00w\00.\00c\00l\00.\00c\00a\00m\00.\00a\00c\00.\00u\00k\00/\00~\00m\00g\00k\002\005\00/\00>\00 \00-\00-\00 \002\000\001\002\00-\000\004\00-\001\001\00\n\00\n\00T\00h\00i\00s\00 \00i\00s\00 \00a\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00o\00f\00 \00a\00 \00p\00l\00a\00i\00n\00-\00t\00e\00x\00t\00 \00f\00i\00l\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00i\00n\00 \00U\00T\00F\00-\008\00.\00\n\00\n\00\n\00D\00a\00n\00i\00s\00h\00 \00(\00d\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00Q\00u\00i\00z\00d\00e\00l\00t\00a\00g\00e\00r\00n\00e\00 \00s\00p\00i\00s\00t\00e\00 \00j\00o\00r\00d\00b\00\e6\00r\00 \00m\00e\00d\00 \00f\00l\00\f8\00d\00e\00,\00 \00m\00e\00n\00s\00 \00c\00i\00r\00k\00u\00s\00k\00l\00o\00v\00n\00e\00n\00\n\00 \00 \00W\00o\00l\00t\00h\00e\00r\00 \00s\00p\00i\00l\00l\00e\00d\00e\00 \00p\00\e5\00 \00x\00y\00l\00o\00f\00o\00n\00.\00\n\00 \00 \00(\00=\00 \00Q\00u\00i\00z\00 \00c\00o\00n\00t\00e\00s\00t\00a\00n\00t\00s\00 \00w\00e\00r\00e\00 \00e\00a\00t\00i\00n\00g\00 \00s\00t\00r\00a\00w\00b\00e\00r\00y\00 \00w\00i\00t\00h\00 \00c\00r\00e\00a\00m\00 \00w\00h\00i\00l\00e\00 \00W\00o\00l\00t\00h\00e\00r\00\n\00 \00 \00t\00h\00e\00 \00c\00i\00r\00c\00u\00s\00 \00c\00l\00o\00w\00n\00 \00p\00l\00a\00y\00e\00d\00 \00o\00n\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00.\00)\00\n\00\n\00G\00e\00r\00m\00a\00n\00 \00(\00d\00e\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00F\00a\00l\00s\00c\00h\00e\00s\00 \00\dc\00b\00e\00n\00 \00v\00o\00n\00 \00X\00y\00l\00o\00p\00h\00o\00n\00m\00u\00s\00i\00k\00 \00q\00u\00\e4\00l\00t\00 \00j\00e\00d\00e\00n\00 \00g\00r\00\f6\00\df\00e\00r\00e\00n\00 \00Z\00w\00e\00r\00g\00\n\00 \00 \00(\00=\00 \00W\00r\00o\00n\00g\00f\00u\00l\00 \00p\00r\00a\00c\00t\00i\00c\00i\00n\00g\00 \00o\00f\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00 \00m\00u\00s\00i\00c\00 \00t\00o\00r\00t\00u\00r\00e\00s\00 \00e\00v\00e\00r\00y\00 \00l\00a\00r\00g\00e\00r\00 \00d\00w\00a\00r\00f\00)\00\n\00\n\00 \00 \00Z\00w\00\f6\00l\00f\00 \00B\00o\00x\00k\00\e4\00m\00p\00f\00e\00r\00 \00j\00a\00g\00t\00e\00n\00 \00E\00v\00a\00 \00q\00u\00e\00r\00 \00\fc\00b\00e\00r\00 \00d\00e\00n\00 \00S\00y\00l\00t\00e\00r\00 \00D\00e\00i\00c\00h\00\n\00 \00 \00(\00=\00 \00T\00w\00e\00l\00v\00e\00 \00b\00o\00x\00i\00n\00g\00 \00f\00i\00g\00h\00t\00e\00r\00s\00 \00h\00u\00n\00t\00e\00d\00 \00E\00v\00a\00 \00a\00c\00r\00o\00s\00s\00 \00t\00h\00e\00 \00d\00i\00k\00e\00 \00o\00f\00 \00S\00y\00l\00t\00)\00\n\00\n\00 \00 \00H\00e\00i\00z\00\f6\00l\00r\00\fc\00c\00k\00s\00t\00o\00\df\00a\00b\00d\00\e4\00m\00p\00f\00u\00n\00g\00\n\00 \00 \00(\00=\00 \00f\00u\00e\00l\00 \00o\00i\00l\00 \00r\00e\00c\00o\00i\00l\00 \00a\00b\00s\00o\00r\00b\00e\00r\00)\00\n\00 \00 \00(\00j\00q\00v\00w\00x\00y\00 \00m\00i\00s\00s\00i\00n\00g\00,\00 \00b\00u\00t\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00i\00n\00 \00o\00n\00e\00 \00w\00o\00r\00d\00)\00\n\00\n\00G\00r\00e\00e\00k\00 \00(\00e\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\93\03\b1\03\b6\03\ad\03\b5\03\c2\03 \00\ba\03\b1\03v\1f \00\bc\03\c5\03\c1\03\c4\03\b9\03r\1f\c2\03 \00\b4\03r\1f\bd\03 \00\b8\03p\1f \00\b2\03\c1\03\f6\1f \00\c0\03\b9\03p\1f \00\c3\03\c4\03x\1f \00\c7\03\c1\03\c5\03\c3\03\b1\03\c6\03v\1f \00\be\03\ad\03\c6\03\c9\03\c4\03\bf\03\n\00 \00 \00(\00=\00 \00N\00o\00 \00m\00o\00r\00e\00 \00s\00h\00a\00l\00l\00 \00I\00 \00s\00e\00e\00 \00a\00c\00a\00c\00i\00a\00s\00 \00o\00r\00 \00m\00y\00r\00t\00l\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \00g\00o\00l\00d\00e\00n\00 \00c\00l\00e\00a\00r\00i\00n\00g\00)\00\n\00\n\00 \00 \00\9e\03\b5\03\c3\03\ba\03\b5\03\c0\03\ac\03\b6\03\c9\03 \00\c4\03t\1f\bd\03 \00\c8\03\c5\03\c7\03\bf\03\c6\03\b8\03\cc\03\c1\03\b1\03 \00\b2\03\b4\03\b5\03\bb\03\c5\03\b3\03\bc\03\af\03\b1\03\n\00 \00 \00(\00=\00 \00I\00 \00u\00n\00c\00o\00v\00e\00r\00 \00t\00h\00e\00 \00s\00o\00u\00l\00-\00d\00e\00s\00t\00r\00o\00y\00i\00n\00g\00 \00a\00b\00h\00o\00r\00r\00e\00n\00c\00e\00)\00\n\00\n\00E\00n\00g\00l\00i\00s\00h\00 \00(\00e\00n\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00T\00h\00e\00 \00q\00u\00i\00c\00k\00 \00b\00r\00o\00w\00n\00 \00f\00o\00x\00 \00j\00u\00m\00p\00s\00 \00o\00v\00e\00r\00 \00t\00h\00e\00 \00l\00a\00z\00y\00 \00d\00o\00g\00\n\00\n\00S\00p\00a\00n\00i\00s\00h\00 \00(\00e\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00E\00l\00 \00p\00i\00n\00g\00\fc\00i\00n\00o\00 \00W\00e\00n\00c\00e\00s\00l\00a\00o\00 \00h\00i\00z\00o\00 \00k\00i\00l\00\f3\00m\00e\00t\00r\00o\00s\00 \00b\00a\00j\00o\00 \00e\00x\00h\00a\00u\00s\00t\00i\00v\00a\00 \00l\00l\00u\00v\00i\00a\00 \00y\00\n\00 \00 \00f\00r\00\ed\00o\00,\00 \00a\00\f1\00o\00r\00a\00b\00a\00 \00a\00 \00s\00u\00 \00q\00u\00e\00r\00i\00d\00o\00 \00c\00a\00c\00h\00o\00r\00r\00o\00.\00\n\00 \00 \00(\00C\00o\00n\00t\00a\00i\00n\00s\00 \00e\00v\00e\00r\00y\00 \00l\00e\00t\00t\00e\00r\00 \00a\00n\00d\00 \00e\00v\00e\00r\00y\00 \00a\00c\00c\00e\00n\00t\00,\00 \00b\00u\00t\00 \00n\00o\00t\00 \00e\00v\00e\00r\00y\00 \00c\00o\00m\00b\00i\00n\00a\00t\00i\00o\00n\00\n\00 \00 \00o\00f\00 \00v\00o\00w\00e\00l\00 \00+\00 \00a\00c\00u\00t\00e\00.\00)\00\n\00\n\00F\00r\00e\00n\00c\00h\00 \00(\00f\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00o\00r\00t\00e\00z\00 \00c\00e\00 \00v\00i\00e\00u\00x\00 \00w\00h\00i\00s\00k\00y\00 \00a\00u\00 \00j\00u\00g\00e\00 \00b\00l\00o\00n\00d\00 \00q\00u\00i\00 \00f\00u\00m\00e\00 \00s\00u\00r\00 \00s\00o\00n\00 \00\ee\00l\00e\00 \00i\00n\00t\00\e9\00r\00i\00e\00u\00r\00e\00,\00 \00\e0\00\n\00 \00 \00c\00\f4\00t\00\e9\00 \00d\00e\00 \00l\00\'\00a\00l\00c\00\f4\00v\00e\00 \00o\00v\00o\00\ef\00d\00e\00,\00 \00o\00\f9\00 \00l\00e\00s\00 \00b\00\fb\00c\00h\00e\00s\00 \00s\00e\00 \00c\00o\00n\00s\00u\00m\00e\00n\00t\00 \00d\00a\00n\00s\00 \00l\00\'\00\e2\00t\00r\00e\00,\00 \00c\00e\00\n\00 \00 \00q\00u\00i\00 \00l\00u\00i\00 \00p\00e\00r\00m\00e\00t\00 \00d\00e\00 \00p\00e\00n\00s\00e\00r\00 \00\e0\00 \00l\00a\00 \00c\00\e6\00n\00o\00g\00e\00n\00\e8\00s\00e\00 \00d\00e\00 \00l\00\'\00\ea\00t\00r\00e\00 \00d\00o\00n\00t\00 \00i\00l\00 \00e\00s\00t\00 \00q\00u\00e\00s\00t\00i\00o\00n\00\n\00 \00 \00d\00a\00n\00s\00 \00l\00a\00 \00c\00a\00u\00s\00e\00 \00a\00m\00b\00i\00g\00u\00\eb\00 \00e\00n\00t\00e\00n\00d\00u\00e\00 \00\e0\00 \00M\00o\00\ff\00,\00 \00d\00a\00n\00s\00 \00u\00n\00 \00c\00a\00p\00h\00a\00r\00n\00a\00\fc\00m\00 \00q\00u\00i\00,\00\n\00 \00 \00p\00e\00n\00s\00e\00-\00t\00-\00i\00l\00,\00 \00d\00i\00m\00i\00n\00u\00e\00 \00\e7\00\e0\00 \00e\00t\00 \00l\00\e0\00 \00l\00a\00 \00q\00u\00a\00l\00i\00t\00\e9\00 \00d\00e\00 \00s\00o\00n\00 \00S\01u\00v\00r\00e\00.\00\n\00\n\00 \00 \00l\00\'\00\ee\00l\00e\00 \00e\00x\00i\00g\00u\00\eb\00\n\00 \00 \00O\00\f9\00 \00l\00\'\00o\00b\00\e8\00s\00e\00 \00j\00u\00r\00y\00 \00m\00\fb\00r\00\n\00 \00 \00F\00\ea\00t\00e\00 \00l\00\'\00h\00a\00\ef\00 \00v\00o\00l\00a\00p\00\fc\00k\00,\00\n\00 \00 \00\c2\00n\00e\00 \00e\00x\00 \00a\00\e9\00q\00u\00o\00 \00a\00u\00 \00w\00h\00i\00s\00t\00,\00\n\00 \00 \00\d4\00t\00e\00z\00 \00c\00e\00 \00v\00S\01u\00 \00d\00\e9\00\e7\00u\00.\00\n\00\n\00 \00 \00L\00e\00 \00c\00S\01u\00r\00 \00d\00\e9\00\e7\00u\00 \00m\00a\00i\00s\00 \00l\00\'\00\e2\00m\00e\00 \00p\00l\00u\00t\00\f4\00t\00 \00n\00a\00\ef\00v\00e\00,\00 \00L\00o\00u\00\ff\00s\00 \00r\00\ea\00v\00a\00 \00d\00e\00 \00c\00r\00a\00p\00a\00\fc\00t\00e\00r\00 \00e\00n\00\n\00 \00 \00c\00a\00n\00o\00\eb\00 \00a\00u\00 \00d\00e\00l\00\e0\00 \00d\00e\00s\00 \00\ee\00l\00e\00s\00,\00 \00p\00r\00\e8\00s\00 \00d\00u\00 \00m\00\e4\00l\00s\00t\00r\00\f6\00m\00 \00o\00\f9\00 \00b\00r\00\fb\00l\00e\00n\00t\00 \00l\00e\00s\00 \00n\00o\00v\00\e6\00.\00\n\00\n\00I\00r\00i\00s\00h\00 \00G\00a\00e\00l\00i\00c\00 \00(\00g\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00D\00\'\00f\00h\00u\00a\00s\00c\00a\00i\00l\00 \00\cd\00o\00s\00a\00,\00 \00\da\00r\00m\00h\00a\00c\00 \00n\00a\00 \00h\00\d3\00i\00g\00h\00e\00 \00B\00e\00a\00n\00n\00a\00i\00t\00h\00e\00,\00 \00p\00\f3\00r\00 \00\c9\00a\00v\00a\00 \00a\00g\00u\00s\00 \00\c1\00d\00h\00a\00i\00m\00h\00\n\00\n\00H\00u\00n\00g\00a\00r\00i\00a\00n\00 \00(\00h\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c1\00r\00v\00\ed\00z\00t\00q\01r\00Q\01 \00t\00\fc\00k\00\f6\00r\00f\00\fa\00r\00\f3\00g\00\e9\00p\00\n\00 \00 \00(\00=\00 \00f\00l\00o\00o\00d\00-\00p\00r\00o\00o\00f\00 \00m\00i\00r\00r\00o\00r\00-\00d\00r\00i\00l\00l\00i\00n\00g\00 \00m\00a\00c\00h\00i\00n\00e\00,\00 \00o\00n\00l\00y\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00)\00\n\00\n\00I\00c\00e\00l\00a\00n\00d\00i\00c\00 \00(\00i\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00K\00\e6\00m\00i\00 \00n\00\fd\00 \00\f6\00x\00i\00 \00h\00\e9\00r\00 \00y\00k\00i\00s\00t\00 \00\fe\00j\00\f3\00f\00u\00m\00 \00n\00\fa\00 \00b\00\e6\00\f0\00i\00 \00v\00\ed\00l\00 \00o\00g\00 \00\e1\00d\00r\00e\00p\00a\00\n\00\n\00 \00 \00S\00\e6\00v\00\f6\00r\00 \00g\00r\00\e9\00t\00 \00\e1\00\f0\00a\00n\00 \00\fe\00v\00\ed\00 \00\fa\00l\00p\00a\00n\00 \00v\00a\00r\00 \00\f3\00n\00\fd\00t\00\n\00 \00 \00(\00s\00o\00m\00e\00 \00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00m\00i\00s\00s\00i\00n\00g\00)\00\n\00\n\00J\00a\00p\00a\00n\00e\00s\00e\00 \00(\00j\00p\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00H\00i\00r\00a\00g\00a\00n\00a\00:\00 \00(\00I\00r\00o\00h\00a\00)\00\n\00\n\00 \00 \00D0\8d0o0k0{0x0h0a0\8a0l0\8b0\920\n\00 \00 \00\8f0K0\880_0\8c0]0d0m0j0\890\800\n\00 \00 \00F0\900n0J0O0\840~0Q0u0S0H0f0\n\00 \00 \00B0U0M0\860\810\7f0W0\910r0\820[0Y0\n\00\n\00 \00 \00K\00a\00t\00a\00k\00a\00n\00a\00:\00\n\00\n\00 \00 \00\a40\ed0\cf0\cb0\db0\d80\c80 \00\c10\ea0\cc0\eb0\f20 \00\ef0\ab0\e80\bf0\ec0\bd0 \00\c40\cd0\ca0\e90\e00\n\00 \00 \00\a60\f00\ce0\aa0\af0\e40\de0 \00\b10\d50\b30\a80\c60 \00\a20\b50\ad0\e60\e10\df0\b70 \00\f10\d20\e20\bb0\b90\f30\n\00\n\00H\00e\00b\00r\00e\00w\00 \00(\00i\00w\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00?\00 \00\d3\05\d2\05 \00\e1\05\e7\05\e8\05\df\05 \00\e9\05\d8\05 \00\d1\05\d9\05\dd\05 \00\de\05\d0\05\d5\05\db\05\d6\05\d1\05 \00\d5\05\dc\05\e4\05\ea\05\e2\05 \00\de\05\e6\05\d0\05 \00\dc\05\d5\05 \00\d7\05\d1\05\e8\05\d4\05 \00\d0\05\d9\05\da\05 \00\d4\05\e7\05\dc\05\d9\05\d8\05\d4\05\n\00\n\00P\00o\00l\00i\00s\00h\00 \00(\00p\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00c\00h\00n\00\05\01\07\01 \00w\00 \00t\00\19\01 \00B\01\f3\00d\00z\01 \00j\00e\00|\01a\00 \00l\00u\00b\00 \00o\00[\01m\00 \00s\00k\00r\00z\00y\00D\01 \00f\00i\00g\00\n\00 \00 \00(\00=\00 \00T\00o\00 \00p\00u\00s\00h\00 \00a\00 \00h\00e\00d\00g\00e\00h\00o\00g\00 \00o\00r\00 \00e\00i\00g\00h\00t\00 \00b\00i\00n\00s\00 \00o\00f\00 \00f\00i\00g\00s\00 \00i\00n\00 \00t\00h\00i\00s\00 \00b\00o\00a\00t\00)\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00 \00(\00r\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\12\04 \00G\040\04I\040\04E\04 \00N\043\040\04 \006\048\04;\04 \001\04K\04 \00F\048\04B\04@\04C\04A\04?\00 \00\14\040\04,\00 \00=\04>\04 \00D\040\04;\04L\04H\048\042\04K\049\04 \00M\04:\047\045\04<\04?\04;\04O\04@\04!\00\n\00 \00 \00(\00=\00 \00W\00o\00u\00l\00d\00 \00a\00 \00c\00i\00t\00r\00u\00s\00 \00l\00i\00v\00e\00 \00i\00n\00 \00t\00h\00e\00 \00b\00u\00s\00h\00e\00s\00 \00o\00f\00 \00s\00o\00u\00t\00h\00?\00 \00Y\00e\00s\00,\00 \00b\00u\00t\00 \00o\00n\00l\00y\00 \00a\00 \00f\00a\00k\00e\00 \00o\00n\00e\00!\00)\00\n\00\n\00 \00 \00!\04J\045\04H\04L\04 \006\045\04 \005\04I\04Q\04 \00M\04B\048\04E\04 \00<\04O\043\04:\048\04E\04 \00D\04@\040\04=\04F\04C\047\04A\04:\048\04E\04 \001\04C\04;\04>\04:\04 \004\040\04 \002\04K\04?\045\049\04 \00G\040\04N\04\n\00 \00 \00(\00=\00 \00E\00a\00t\00 \00s\00o\00m\00e\00 \00m\00o\00r\00e\00 \00o\00f\00 \00t\00h\00e\00s\00e\00 \00f\00r\00e\00s\00h\00 \00F\00r\00e\00n\00c\00h\00 \00l\00o\00a\00f\00s\00 \00a\00n\00d\00 \00h\00a\00v\00e\00 \00s\00o\00m\00e\00 \00t\00e\00a\00)\00\n\00\n\00T\00h\00a\00i\00 \00(\00t\00h\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00@\0e\1b\0eG\0e\19\0e!\0e\19\0e8\0e)\0e\"\0eL\0e*\0e8\0e\14\0e\1b\0e#\0e0\0e@\0e*\0e#\0e4\0e\10\0e@\0e%\0e4\0e(\0e\04\0e8\0e\13\0e\04\0eH\0e2\0e \00 \00\01\0e\'\0eH\0e2\0e\1a\0e#\0e#\0e\14\0e2\0e\1d\0e9\0e\07\0e*\0e1\0e\15\0e\'\0eL\0e@\0e\14\0e#\0e1\0e\08\0e\t\0e2\0e\19\0e\n\00 \00 \00\08\0e\07\0e\1d\0eH\0e2\0e\1f\0e1\0e\19\0e\1e\0e1\0e\12\0e\19\0e2\0e\'\0e4\0e\n\0e2\0e\01\0e2\0e#\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00-\0e\"\0eH\0e2\0e%\0eI\0e2\0e\07\0e\1c\0e%\0e2\0e\r\0e$\0eE\0e@\0e\02\0eH\0e\19\0e\06\0eH\0e2\0e\1a\0e5\0e\11\0e2\0eC\0e\04\0e#\0e\n\00 \00 \00D\0e!\0eH\0e\16\0e7\0e-\0eB\0e\17\0e)\0eB\0e\01\0e#\0e\18\0eA\0e\n\0eH\0e\07\0e\0b\0e1\0e\14\0e.\0e6\0e\14\0e.\0e1\0e\14\0e\14\0eH\0e2\0e \00 \00 \00 \00 \00+\0e1\0e\14\0e-\0e \0e1\0e\"\0e@\0e+\0e!\0e7\0e-\0e\19\0e\01\0e5\0e,\0e2\0e-\0e1\0e\n\0e\0c\0e2\0e*\0e1\0e\"\0e\n\00 \00 \00\1b\0e\0f\0e4\0e\1a\0e1\0e\15\0e4\0e\1b\0e#\0e0\0e\1e\0e$\0e\15\0e4\0e\01\0e\0e\0e\01\0e3\0e+\0e\19\0e\14\0eC\0e\08\0e \00 \00 \00 \00 \00 \00 \00 \00\1e\0e9\0e\14\0e\08\0e2\0eC\0e+\0eI\0e\08\0eJ\0e0\0eF\0e \00\08\0eK\0e2\0eF\0e \00\19\0eH\0e2\0e\1f\0e1\0e\07\0e@\0e-\0e\"\0e \00/\0e\n\00\n\00 \00 \00[\00T\00h\00e\00 \00c\00o\00p\00y\00r\00i\00g\00h\00t\00 \00f\00o\00r\00 \00t\00h\00e\00 \00T\00h\00a\00i\00 \00e\00x\00a\00m\00p\00l\00e\00 \00i\00s\00 \00o\00w\00n\00e\00d\00 \00b\00y\00 \00T\00h\00e\00 \00C\00o\00m\00p\00u\00t\00e\00r\00\n\00 \00 \00A\00s\00s\00o\00c\00i\00a\00t\00i\00o\00n\00 \00o\00f\00 \00T\00h\00a\00i\00l\00a\00n\00d\00 \00u\00n\00d\00e\00r\00 \00t\00h\00e\00 \00R\00o\00y\00a\00l\00 \00P\00a\00t\00r\00o\00n\00a\00g\00e\00 \00o\00f\00 \00H\00i\00s\00 \00M\00a\00j\00e\00s\00t\00y\00 \00t\00h\00e\00\n\00 \00 \00K\00i\00n\00g\00.\00]\00\n\00\n\00T\00u\00r\00k\00i\00s\00h\00 \00(\00t\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00i\00j\00a\00m\00a\00l\001\01 \00h\00a\00s\00t\00a\00,\00 \00y\00a\00\1f\011\01z\00 \00_\01o\00f\00\f6\00r\00e\00 \00\e7\00a\00b\00u\00c\00a\00k\00 \00g\00\fc\00v\00e\00n\00d\00i\00.\00\n\00 \00 \00(\00=\00P\00a\00t\00i\00e\00n\00t\00 \00w\00i\00t\00h\00 \00p\00a\00j\00a\00m\00a\00s\00,\00 \00t\00r\00u\00s\00t\00e\00d\00 \00s\00w\00a\00r\00t\00h\00y\00 \00d\00r\00i\00v\00e\00r\00 \00q\00u\00i\00c\00k\00l\00y\00)\00\n\00\n\00O\00t\00h\00e\00r\00\n\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c0\00\c8\00 \00/\00 \00c\003\00_\008\000\00 \00c\003\00_\008\008\00\n\00 \00 \00\d8S\cf\91 \00/\00 \00e\005\00_\008\00f\00_\009\008\00 \00e\009\00_\008\007\00_\008\00f\00\n\00 \00 \00A\d8\0e\dfA\d81\df \00/\00 \00f\000\00_\00a\000\00_\009\00c\00_\008\00e\00 \00f\000\00_\00a\000\00_\009\00c\00_\00b\001\00\n\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $26 (i32.const 21760) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $5 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 572) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 796) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $17 (i32.const 1196) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2252) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $19 (i32.const 2348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00e\00n\00c\00o\00d\00i\00n\00g\00.\00t\00s\00") + (data $21 (i32.const 2476) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\01\d87\dc\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00h\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00h\00i\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00R\d8b\df\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2604) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00U\00n\00p\00a\00i\00r\00e\00d\00 \00s\00u\00r\00r\00o\00g\00a\00t\00e\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 2668) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data $27 (i32.const 2716) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\008\00\00\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00\00\00\00\00\00\00") + (data $28 (i32.const 2796) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\004\d8\00\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 2828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\fd\ff\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 2860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\1e\dd\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 2892) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\002\003\00\00\004\005\006\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 2940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\002\003\00\00\00\00\00\00\00") + (data $33 (i32.const 2972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00h\00i\00R\d8b\df\00\00\00\00") + (data $34 (i32.const 3004) "<3\00\00\00\00\00\00\00\00\00\00\02\00\00\00*3\00\00M\00a\00t\00h\00e\00m\00a\00t\00i\00c\00s\00 \00a\00n\00d\00 \00S\00c\00i\00e\00n\00c\00e\00s\00:\00\n\00\n\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00,\00 \00\00\"x\00\08\"\1d!:\00 \00\08#x\00\t# \00=\00 \00\12\"\n#\12\"x\00\0b#,\00 \00\b1\03 \00\'\" \00\ac\00\b2\03 \00=\00 \00\ac\00(\00\ac\00\b1\03 \00(\" \00\b2\03)\00,\00\n\00\n\00\15! \00\86\" \00\15!\80 \00\82\" \00$! \00\82\" \00\1a! \00\82\" \00\1d! \00\82\" \00\02!,\00 \00\a5\" \00<\00 \00a\00 \00`\" \00b\00 \00a\" \00c\00 \00d\" \00d\00 \00j\" \00\a4\" \00\d2! \00(\00A\00 \00\d4! \00B\00)\00,\00\n\00\n\002\00H\00\82 \00+\00 \00O\00\82 \00\cc! \002\00H\00\82 O\00,\00 \00R\00 \00=\00 \004\00.\007\00 \00k\00\a9\03,\00 \00\00# \002\000\000\00 \00m\00m\00\n\00\n\00L\00i\00n\00g\00u\00i\00s\00t\00i\00c\00s\00 \00a\00n\00d\00 \00d\00i\00c\00t\00i\00o\00n\00a\00r\00i\00e\00s\00:\00\n\00\n\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\n\00Y\00 \00[\00\c8\02\8f\02p\00s\00i\00l\00T\02n\00]\00,\00 \00Y\00e\00n\00 \00[\00j\00[\02n\00]\00,\00 \00Y\00o\00g\00a\00 \00[\00\c8\02j\00o\00\d0\02g\00Q\02]\00\n\00\n\00A\00P\00L\00:\00\n\00\n\00(\00(\00V\00s#V\00)\00=\00s#t#V\00)\00/\00V\00\90!,\00V\00 \00 \00 \00 \007#\90!s#\92!t#\06\"\07\"\83\"> N#U#\08#\n\00\n\00N\00i\00c\00e\00r\00 \00t\00y\00p\00o\00g\00r\00a\00p\00h\00y\00 \00i\00n\00 \00p\00l\00a\00i\00n\00 \00t\00e\00x\00t\00 \00f\00i\00l\00e\00s\00:\00\n\00\n\00T%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%W%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\18 s\00i\00n\00g\00l\00e\00\19 \00a\00n\00d\00 \00\1c d\00o\00u\00b\00l\00e\00\1d \00q\00u\00o\00t\00e\00s\00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00C\00u\00r\00l\00y\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00s\00:\00 \00\1c W\00e\00\19 v\00e\00 \00b\00e\00e\00n\00 \00h\00e\00r\00e\00\1d \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00L\00a\00t\00i\00n\00-\001\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00 \00a\00n\00d\00 \00a\00c\00c\00e\00n\00t\00s\00:\00 \00\'\00\b4\00`\00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\1a d\00e\00u\00t\00s\00c\00h\00e\00\18 \00\1e A\00n\00f\00\fc\00h\00r\00u\00n\00g\00s\00z\00e\00i\00c\00h\00e\00n\00\1c \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00 ,\00 \00! ,\00 \000 ,\00 \00\" ,\00 \003\00\13 4\00,\00 \00\14 ,\00 \00\12\"5\00/\00+\005\00,\00 \00\"!,\00 \00& \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00A\00S\00C\00I\00I\00 \00s\00a\00f\00e\00t\00y\00 \00t\00e\00s\00t\00:\00 \001\00l\00I\00|\00,\00 \000\00O\00D\00,\00 \008\00B\00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00m%\00%\00%\00%\00%\00%\00%\00%\00%\00%n% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00t\00h\00e\00 \00e\00u\00r\00o\00 \00s\00y\00m\00b\00o\00l\00:\00 \00\02% \001\004\00.\009\005\00 \00\ac \00\02% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00p%\00%\00%\00%\00%\00%\00%\00%\00%\00%o% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Z%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%]%\n\00\n\00G\00r\00e\00e\00k\00 \00(\00i\00n\00 \00P\00o\00l\00y\00t\00o\00n\00i\00c\00)\00:\00\n\00\n\00T\00h\00e\00 \00G\00r\00e\00e\00k\00 \00a\00n\00t\00h\00e\00m\00:\00\n\00\n\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03y\1f\c8\03\b7\03\n\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03u\1f,\00\n\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03\n\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03w\1f\b1\03 \00\bc\03\b5\03\c4\03\c1\03q\1f\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\n\00\n\00\bf\1f\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03y\1f\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03s\1f\bd\03\b7\03\n\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03u\1f\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03q\1f\n\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03s\1f\bd\03\b7\03\n\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03q\1f!\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00s\00p\00e\00e\00c\00h\00 \00o\00f\00 \00D\00e\00m\00o\00s\00t\00h\00e\00n\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \004\00t\00h\00 \00c\00e\00n\00t\00u\00r\00y\00 \00B\00C\00:\00\n\00\n\00\9f\03P\1f\c7\03v\1f \00\c4\03\b1\03P\1f\c4\03p\1f \00\c0\03\b1\03\c1\03w\1f\c3\03\c4\03\b1\03\c4\03\b1\03w\1f \00\bc\03\bf\03\b9\03 \00\b3\03\b9\03\b3\03\bd\03}\1f\c3\03\ba\03\b5\03\b9\03\bd\03,\00 \00f\1f \00\04\1f\bd\03\b4\03\c1\03\b5\03\c2\03 \00\bf\1f\91\03\b8\03\b7\03\bd\03\b1\03\d6\1f\bf\03\b9\03,\00\n\00E\1f\c4\03\b1\03\bd\03 \00\c4\03\bf\1f \00\b5\030\1f\c2\03 \00\c4\03p\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\b1\03 \00\00\1f\c0\03\bf\03\b2\03\bb\03s\1f\c8\03\c9\03 \00\ba\03\b1\03v\1f \00E\1f\c4\03\b1\03\bd\03 \00\c0\03\c1\03x\1f\c2\03 \00\c4\03\bf\03z\1f\c2\03\n\00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\bf\03S\1f\c2\03 \00\00\1f\ba\03\bf\03{\1f\c9\03\87\03 \00\c4\03\bf\03z\1f\c2\03 \00\bc\03r\1f\bd\03 \00\b3\03p\1f\c1\03 \00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03 \00A\1f\c1\03\f6\1f \00\b3\03\b9\03\b3\03\bd\03\bf\03\bc\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\c4\03p\1f \00\b4\03r\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\bf\1f\n\00\b5\030\1f\c2\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\c0\03\c1\03\bf\03u\1f\ba\03\bf\03\bd\03\c4\03\b1\03,\00 \00 \00e\1f\c3\03\b8\03\bf\1f \00E\1f\c0\03\c9\03\c2\03 \00\bc\03t\1f \00\c0\03\b5\03\b9\03\c3\03y\1f\bc\03\b5\03\b8\03\bf\1f \00\b1\03P\1f\c4\03\bf\03v\1f\n\00\c0\03\c1\03y\1f\c4\03\b5\03\c1\03\bf\03\bd\03 \00\ba\03\b1\03\ba\03\f6\1f\c2\03 \00\c3\03\ba\03s\1f\c8\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\b4\03s\1f\bf\03\bd\03.\00 \00\bf\03P\1f\b4\03s\1f\bd\03 \00\bf\03V\1f\bd\03 \00\04\1f\bb\03\bb\03\bf\03 \00\bc\03\bf\03\b9\03 \00\b4\03\bf\03\ba\03\bf\03\e6\1f\c3\03\b9\03\bd\03\n\00\bf\031\1f \00\c4\03p\1f \00\c4\03\bf\03\b9\03\b1\03\e6\1f\c4\03\b1\03 \00\bb\03s\1f\b3\03\bf\03\bd\03\c4\03\b5\03\c2\03 \00\"\1f \00\c4\03t\1f\bd\03 \00Q\1f\c0\03y\1f\b8\03\b5\03\c3\03\b9\03\bd\03,\00 \00\c0\03\b5\03\c1\03v\1f \00\'\1f\c2\03 \00\b2\03\bf\03\c5\03\bb\03\b5\03{\1f\b5\03\c3\03\b8\03\b1\03\b9\03,\00\n\00\bf\03P\1f\c7\03v\1f \00\c4\03t\1f\bd\03 \00\bf\03V\1f\c3\03\b1\03\bd\03 \00\c0\03\b1\03\c1\03\b9\03\c3\03\c4\03q\1f\bd\03\c4\03\b5\03\c2\03 \00Q\1f\bc\03\d6\1f\bd\03 \00\01\1f\bc\03\b1\03\c1\03\c4\03q\1f\bd\03\b5\03\b9\03\bd\03.\00 \00\10\1f\b3\03|\1f \00\b4\03s\1f,\00 \00E\1f\c4\03\b9\03 \00\bc\03s\1f\bd\03\n\00\c0\03\bf\03\c4\03\bf\1f \00\10\1f\be\03\c6\1f\bd\03 \00\c4\03\c7\1f \00\c0\03y\1f\bb\03\b5\03\b9\03 \00\ba\03\b1\03v\1f \00\c4\03p\1f \00\b1\03Q\1f\c4\03\c6\1f\c2\03 \00\14\1f\c7\03\b5\03\b9\03\bd\03 \00\00\1f\c3\03\c6\03\b1\03\bb\03\f6\1f\c2\03 \00\ba\03\b1\03v\1f \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03,\00 \00\ba\03\b1\03v\1f \00\bc\03q\1f\bb\03\bf\1f \00\00\1f\ba\03\c1\03\b9\03\b2\03\f6\1f\c2\03 \00\bf\036\1f\b4\03\b1\03\87\03 \00\10\1f\c0\03\bf\1f \00\10\1f\bc\03\bf\03\e6\1f \00\b3\03q\1f\c1\03,\00 \00\bf\03P\1f \00\c0\03q\1f\bb\03\b1\03\b9\03\n\00\b3\03s\1f\b3\03\bf\03\bd\03\b5\03\bd\03 \00\c4\03\b1\03\e6\1f\c4\03\bf\1f \00\00\1f\bc\03\c6\03y\1f\c4\03\b5\03\c1\03\b1\03\87\03 \00\bd\03\e6\1f\bd\03 \00\bc\03s\1f\bd\03\c4\03\bf\03\b9\03 \00\c0\03s\1f\c0\03\b5\03\b9\03\c3\03\bc\03\b1\03\b9\03 \00\c4\03\bf\03\e6\1f\b8\03\bf\1f \001\1f\ba\03\b1\03\bd\03x\1f\bd\03\n\00\c0\03\c1\03\bf\03\bb\03\b1\03\b2\03\b5\03\d6\1f\bd\03 \00!\1f\bc\03\d6\1f\bd\03 \00\b5\036\1f\bd\03\b1\03\b9\03 \00\c4\03t\1f\bd\03 \00\c0\03\c1\03}\1f\c4\03\b7\03\bd\03,\00 \00E\1f\c0\03\c9\03\c2\03 \00\c4\03\bf\03z\1f\c2\03 \00\c3\03\c5\03\bc\03\bc\03q\1f\c7\03\bf\03\c5\03\c2\03\n\00\c3\03}\1f\c3\03\bf\03\bc\03\b5\03\bd\03.\00 \00\10\1fp\1f\bd\03 \00\b3\03p\1f\c1\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\b2\03\b5\03\b2\03\b1\03w\1f\c9\03\c2\03 \00Q\1f\c0\03q\1f\c1\03\be\03\c3\1f,\00 \00\c4\03y\1f\c4\03\b5\03 \00\ba\03\b1\03v\1f \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03w\1f\bd\03\b1\03 \00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b5\03\c4\03\b1\03w\1f \00\c4\03\b9\03\c2\03 \00\ba\03\b1\03v\1f \00C\1f\bd\03 \00\c4\03\c1\03y\1f\c0\03\bf\03\bd\03 \00\10\1f\be\03s\1f\c3\03\c4\03\b1\03\b9\03 \00\c3\03\ba\03\bf\03\c0\03\b5\03\d6\1f\bd\03\87\03 \00\c0\03\c1\03v\1f\bd\03 \00\b4\03r\1f\n\00\c4\03t\1f\bd\03 \00\00\1f\c1\03\c7\03t\1f\bd\03 \00@\1f\c1\03\b8\03\f6\1f\c2\03 \00Q\1f\c0\03\bf\03\b8\03s\1f\c3\03\b8\03\b1\03\b9\03,\00 \00\bc\03q\1f\c4\03\b1\03\b9\03\bf\03\bd\03 \00!\1f\b3\03\bf\03\e6\1f\bc\03\b1\03\b9\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\c6\1f\c2\03\n\00\c4\03\b5\03\bb\03\b5\03\c5\03\c4\03\c6\1f\c2\03 \00A\1f\bd\03\c4\03\b9\03\bd\03\bf\03\e6\1f\bd\03 \00\c0\03\bf\03\b9\03\b5\03\d6\1f\c3\03\b8\03\b1\03\b9\03 \00\bb\03y\1f\b3\03\bf\03\bd\03.\00\n\00\n\00\94\03\b7\03\bc\03\bf\03\c3\03\b8\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\93\03\fd\1f \00\bf\1f\9f\03\bb\03\c5\03\bd\03\b8\03\b9\03\b1\03\ba\03x\1f\c2\03\n\00\n\00G\00e\00o\00r\00g\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\d2\10\d7\10\ee\10\dd\10\d5\10\d7\10 \00\d0\10\ee\10\da\10\d0\10\d5\10\d4\10 \00\d2\10\d0\10\d8\10\d0\10\e0\10\dd\10\d7\10 \00\e0\10\d4\10\d2\10\d8\10\e1\10\e2\10\e0\10\d0\10\ea\10\d8\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\db\10\d4\10\d0\10\d7\10\d4\10 \00\e1\10\d0\10\d4\10\e0\10\d7\10\d0\10\e8\10\dd\10\e0\10\d8\10\e1\10\dd\10\n\00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10\d6\10\d4\10 \00\d3\10\d0\10\e1\10\d0\10\e1\10\ec\10\e0\10\d4\10\d1\10\d0\10\d3\10,\00 \00\e0\10\dd\10\db\10\d4\10\da\10\d8\10\ea\10 \00\d2\10\d0\10\d8\10\db\10\d0\10\e0\10\d7\10\d4\10\d1\10\d0\10 \001\000\00-\001\002\00 \00\db\10\d0\10\e0\10\e2\10\e1\10,\00\n\00\e5\10.\00 \00\db\10\d0\10\d8\10\dc\10\ea\10\e8\10\d8\10,\00 \00\d2\10\d4\10\e0\10\db\10\d0\10\dc\10\d8\10\d0\10\e8\10\d8\10.\00 \00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10 \00\e8\10\d4\10\f0\10\d9\10\e0\10\d4\10\d1\10\e1\10 \00\d4\10\e0\10\d7\10\d0\10\d3\10 \00\db\10\e1\10\dd\10\e4\10\da\10\d8\10\dd\10\e1\10\n\00\d4\10\e5\10\e1\10\de\10\d4\10\e0\10\e2\10\d4\10\d1\10\e1\10 \00\d8\10\e1\10\d4\10\d7\10 \00\d3\10\d0\10\e0\10\d2\10\d4\10\d1\10\e8\10\d8\10 \00\e0\10\dd\10\d2\10\dd\10\e0\10\d8\10\ea\10\d0\10\d0\10 \00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d4\10\e2\10\d8\10 \00\d3\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10,\00\n\00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d0\10\ea\10\d8\10\dd\10\dc\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10 \00\d3\10\d0\10 \00\da\10\dd\10\d9\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10,\00 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d0\10\n\00\dd\10\de\10\d4\10\e0\10\d0\10\ea\10\d8\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e1\10\d0\10,\00 \00\d3\10\d0\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d8\10\d7\10 \00\de\10\e0\10\dd\10\d2\10\e0\10\d0\10\db\10\d4\10\d1\10\e8\10\d8\10,\00 \00\e8\10\e0\10\d8\10\e4\10\e2\10\d4\10\d1\10\e8\10\d8\10,\00\n\00\e2\10\d4\10\e5\10\e1\10\e2\10\d4\10\d1\10\d8\10\e1\10 \00\d3\10\d0\10\db\10\e3\10\e8\10\d0\10\d5\10\d4\10\d1\10\d0\10\e1\10\d0\10 \00\d3\10\d0\10 \00\db\10\e0\10\d0\10\d5\10\d0\10\da\10\d4\10\dc\10\dd\10\d5\10\d0\10\dc\10 \00\d9\10\dd\10\db\10\de\10\d8\10\e3\10\e2\10\d4\10\e0\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e8\10\d8\10.\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\17\040\04@\045\043\048\04A\04B\04@\048\04@\04C\049\04B\045\04A\04L\04 \00A\045\049\04G\040\04A\04 \00=\040\04 \00\14\045\04A\04O\04B\04C\04N\04 \00\1c\045\046\044\04C\04=\040\04@\04>\044\04=\04C\04N\04 \00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04N\04 \00?\04>\04\n\00U\00n\00i\00c\00o\00d\00e\00,\00 \00:\04>\04B\04>\04@\040\04O\04 \00A\04>\04A\04B\04>\048\04B\04A\04O\04 \001\000\00-\001\002\00 \00<\040\04@\04B\040\04 \001\009\009\007\00 \003\04>\044\040\04 \002\04 \00\1c\040\049\04=\04F\045\04 \002\04 \00\13\045\04@\04<\040\04=\048\048\04.\00\n\00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04O\04 \00A\04>\041\045\04@\045\04B\04 \00H\048\04@\04>\04:\048\049\04 \00:\04@\04C\043\04 \00M\04:\04A\04?\045\04@\04B\04>\042\04 \00?\04>\04 \00 \002\04>\04?\04@\04>\04A\040\04<\04 \003\04;\04>\041\040\04;\04L\04=\04>\043\04>\04\n\00\18\04=\04B\045\04@\04=\045\04B\040\04 \008\04 \00U\00n\00i\00c\00o\00d\00e\00,\00 \00;\04>\04:\040\04;\048\047\040\04F\048\048\04 \008\04 \008\04=\04B\045\04@\04=\040\04F\048\04>\04=\040\04;\048\047\040\04F\048\048\04,\00 \002\04>\04?\04;\04>\04I\045\04=\048\04N\04 \008\04\n\00?\04@\048\04<\045\04=\045\04=\048\04N\04 \00U\00n\00i\00c\00o\00d\00e\00 \002\04 \00@\040\047\04;\048\04G\04=\04K\04E\04 \00>\04?\045\04@\040\04F\048\04>\04=\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04 \008\04 \00?\04@\04>\043\04@\040\04<\04<\04=\04K\04E\04\n\00?\04@\048\04;\04>\046\045\04=\048\04O\04E\04,\00 \00H\04@\048\04D\04B\040\04E\04,\00 \002\045\04@\04A\04B\04:\045\04 \008\04 \00<\04=\04>\043\04>\04O\047\04K\04G\04=\04K\04E\04 \00:\04>\04<\04?\04L\04N\04B\045\04@\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04.\00\n\00\n\00T\00h\00a\00i\00 \00(\00U\00C\00S\00 \00L\00e\00v\00e\00l\00 \002\00)\00:\00\n\00\n\00E\00x\00c\00e\00r\00p\00t\00 \00f\00r\00o\00m\00 \00a\00 \00p\00o\00e\00t\00r\00y\00 \00o\00n\00 \00T\00h\00e\00 \00R\00o\00m\00a\00n\00c\00e\00 \00o\00f\00 \00T\00h\00e\00 \00T\00h\00r\00e\00e\00 \00K\00i\00n\00g\00d\00o\00m\00s\00 \00(\00a\00 \00C\00h\00i\00n\00e\00s\00e\00\n\00c\00l\00a\00s\00s\00i\00c\00 \00\'\00S\00a\00n\00 \00G\00u\00a\00\'\00)\00:\00\n\00\n\00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00A\0e\1c\0eH\0e\19\0e\14\0e4\0e\19\0e.\0e1\0eH\0e\19\0e@\0e*\0e7\0eH\0e-\0e!\0eB\0e\17\0e#\0e!\0eA\0e*\0e\19\0e*\0e1\0e\07\0e@\0e\'\0e\n\0e \00 \00\1e\0e#\0e0\0e\1b\0e\01\0e@\0e\01\0e(\0e\01\0e-\0e\07\0e\1a\0e9\0eJ\0e\01\0e9\0eI\0e\02\0e6\0eI\0e\19\0eC\0e+\0e!\0eH\0e\n\00*\0e4\0e\1a\0e*\0e-\0e\07\0e\01\0e)\0e1\0e\15\0e#\0e4\0e\"\0eL\0e\01\0eH\0e-\0e\19\0e+\0e\19\0eI\0e2\0eA\0e%\0e\16\0e1\0e\14\0eD\0e\1b\0e \00 \00 \00 \00 \00 \00 \00*\0e-\0e\07\0e-\0e\07\0e\04\0eL\0eD\0e\0b\0e#\0eI\0eB\0e\07\0eH\0e@\0e\02\0e%\0e2\0e@\0e\1a\0e2\0e\1b\0e1\0e\r\0e\r\0e2\0e\n\00 \00 \00\17\0e#\0e\07\0e\19\0e1\0e\1a\0e\16\0e7\0e-\0e\02\0e1\0e\19\0e\17\0e5\0e@\0e\1b\0eG\0e\19\0e\17\0e5\0eH\0e\1e\0e6\0eH\0e\07\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\1a\0eI\0e2\0e\19\0e@\0e!\0e7\0e-\0e\07\0e\08\0e6\0e\07\0e\'\0e4\0e\1b\0e#\0e4\0e\15\0e@\0e\1b\0eG\0e\19\0e\19\0e1\0e\01\0e+\0e\19\0e2\0e\n\00B\0e.\0e\08\0e4\0eK\0e\19\0e@\0e#\0e5\0e\"\0e\01\0e\17\0e1\0e\1e\0e\17\0e1\0eH\0e\'\0e+\0e1\0e\'\0e@\0e!\0e7\0e-\0e\07\0e!\0e2\0e \00 \00 \00 \00 \00 \00 \00 \00 \00+\0e!\0e2\0e\"\0e\08\0e0\0e\06\0eH\0e2\0e!\0e\14\0e\n\0e1\0eH\0e\'\0e\15\0e1\0e\'\0e*\0e3\0e\04\0e1\0e\r\0e\n\00 \00 \00@\0e+\0e!\0e7\0e-\0e\19\0e\02\0e1\0e\1a\0eD\0e*\0eD\0e%\0eH\0e@\0e*\0e7\0e-\0e\08\0e2\0e\01\0e@\0e\04\0e+\0e2\0e \00 \00 \00 \00 \00 \00#\0e1\0e\1a\0e+\0e!\0e2\0e\1b\0eH\0e2\0e@\0e\02\0eI\0e2\0e!\0e2\0e@\0e%\0e\"\0e-\0e2\0e*\0e1\0e\r\0e\n\00\1d\0eH\0e2\0e\"\0e-\0eI\0e-\0e\07\0e-\0e8\0eI\0e\19\0e\"\0e8\0eA\0e\"\0e\01\0eC\0e+\0eI\0eA\0e\15\0e\01\0e\01\0e1\0e\19\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00C\0e\n\0eI\0e*\0e2\0e\'\0e\19\0e1\0eI\0e\19\0e@\0e\1b\0eG\0e\19\0e\n\0e\19\0e\'\0e\19\0e\n\0e7\0eH\0e\19\0e\n\0e\'\0e\19\0eC\0e\08\0e\n\00 \00 \00\1e\0e%\0e1\0e\19\0e%\0e4\0e\t\0e8\0e\"\0e\01\0e8\0e\"\0e\01\0e5\0e\01\0e%\0e1\0e\1a\0e\01\0eH\0e-\0e@\0e+\0e\15\0e8\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\n\0eH\0e2\0e\07\0e-\0e2\0e@\0e\1e\0e(\0e\08\0e#\0e4\0e\07\0e+\0e\19\0e2\0e\1f\0eI\0e2\0e#\0eI\0e-\0e\07\0eD\0e+\0eI\0e\n\00\15\0eI\0e-\0e\07\0e#\0e\1a\0e#\0e2\0e\06\0eH\0e2\0e\1f\0e1\0e\19\0e\08\0e\19\0e\1a\0e#\0e#\0e%\0e1\0e\"\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00$\0eE\0e+\0e2\0eC\0e\04\0e#\0e\04\0eI\0e3\0e\n\0e9\0e\01\0e9\0eI\0e\1a\0e#\0e#\0e%\0e1\0e\07\0e\01\0eL\0e \00/\0e\n\00\n\00(\00T\00h\00e\00 \00a\00b\00o\00v\00e\00 \00i\00s\00 \00a\00 \00t\00w\00o\00-\00c\00o\00l\00u\00m\00n\00 \00t\00e\00x\00t\00.\00 \00I\00f\00 \00c\00o\00m\00b\00i\00n\00i\00n\00g\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00s\00 \00a\00r\00e\00 \00h\00a\00n\00d\00l\00e\00d\00\n\00c\00o\00r\00r\00e\00c\00t\00l\00y\00,\00 \00t\00h\00e\00 \00l\00i\00n\00e\00s\00 \00o\00f\00 \00t\00h\00e\00 \00s\00e\00c\00o\00n\00d\00 \00c\00o\00l\00u\00m\00n\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00a\00l\00i\00g\00n\00e\00d\00 \00w\00i\00t\00h\00 \00t\00h\00e\00\n\00|\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00a\00b\00o\00v\00e\00.\00)\00\n\00\n\00E\00t\00h\00i\00o\00p\00i\00a\00n\00:\00\n\00\n\00P\00r\00o\00v\00e\00r\00b\00s\00 \00i\00n\00 \00t\00h\00e\00 \00A\00m\00h\00a\00r\00i\00c\00 \00l\00a\00n\00g\00u\00a\00g\00e\00:\00\n\00\n\000\12\1b\12\ed\12 \00\a0\12\ed\12s\12(\125\12 \00\95\12\t\13%\12 \00\a0\12\ed\12\a8\120\125\12b\13\n\00e\12\0b\12 \00\ab\12\08\12\9d\12 \00\a5\12\95\12\f0\12\a0\12c\12t\12 \00`\12F\12\18\12 \13\9d\12b\13\n\00\0c\13%\13 \00\eb\12\08\12d\12q\12 \00A\12\1d\12%\13\93\12 \00\90\12\cd\12b\13\n\00\f0\12\00\12 \00`\12\15\12\r\12\19\12 \00E\12d\12 \00c\12\ed\12 \13#\13 \00\95\12#\13u\12 \00`\12\08\13\f0\12\08\12\cd\12b\13\n\00\e8\12\a0\12M\13 \00\c8\12\08\12\1d\12s\12 \00`\12E\12d\12 \00\a0\12\ed\12s\12=\12\1d\12b\13\n\00\a0\12\ed\12%\13 \00`\12`\12\0b\12 \00\f3\12\cb\12 \00p\12\18\12s\12b\13\n\002\12p\12(\12\t\13\19\12 \00\ed\12\f0\12(\12\r\13\19\12b\13\n\00@\125\12 \00`\12@\125\12e\13 \00\d5\12\95\12A\12\0b\12\r\12 \00`\12\a5\12\r\13)\12 \00\ed\12\04\12\f3\12\r\12b\13\n\00\f5\12-\12 \00b\12\eb\12e\12-\12 \00\a0\12\95\12`\123\12 \00\eb\125\12-\12b\13\n\000\12\cd\12 \00\a5\12\95\12\f0\12d\12q\12 \00\a5\12\95\12\05\13 \00\a5\12\95\12\f0\12 \00\t\13(\12d\12q\12 \00\a0\12\ed\12p\12\f3\12\f0\12-\12\1d\12b\13\n\00\a5\12\r\13\dc\12-\12 \00\e8\12\a8\12H\13p\12\cd\12\95\12 \00\t\13.\12.\12 \003\12\ed\12\d8\12\0b\13\cd\12 \00\a0\12\ed\12\f5\12-\12\1d\12b\13\n\00\e8\12\0e\13(\12d\12u\12 \00\0c\12c\12e\13 \00b\12\eb\12\e9\12u\12 \00\ed\125\12E\12 \00c\12\eb\12\e9\12u\12 \00\eb\12 \13\r\12E\12b\13\n\00%\12+\12 \00\a8\12\18\12M\13s\12u\12 \00\r\12\04\13\95\12 \00\0b\12K\13s\12u\12b\13\n\00\d3\12c\12\ed\12 \00\1b\12\f0\12*\12\eb\12 \00\e8\12\08\12\cd\12e\13 \00\r\13\95\12\f5\12 \00\ed\12\de\12 \00\ed\12\de\12+\12\r\12b\13\n\00\e8\12\a5\125\12\0b\12\1d\12 \00\a0\12\08\13)\12 \00\18\12\ab\12 \00\e8\12\a0\12\1e\12+\12 \00\a0\12\08\13)\12 \00\cb\12-\12\ab\12b\13\n\00p\12\95\12\0b\13\0e\12 \00b\12p\12I\13 \00p\12\18\12\r\126\12 \00c\12I\13b\13\n\00\c8\12\f3\12\05\13\05\12 \00\1b\12-\12 \00b\12\06\12\95\12 \00(\13-\125\12\05\12 \00\a0\12u\12\0b\120\12\cd\12b\13\n\00\a5\12\r\13-\12\05\12\95\12 \00`\12M\13+\12=\12\05\12 \00\r\12\ad\12 \00\d8\12-\12\0b\13b\13\n\00\n\00R\00u\00n\00e\00s\00:\00\n\00\n\00\bb\16\d6\16 \00\b3\16\b9\16\ab\16\a6\16 \00\a6\16\ab\16\cf\16 \00\bb\16\d6\16 \00\d2\16\a2\16\de\16\d6\16 \00\a9\16\be\16 \00\a6\16\ab\16\d7\16 \00\da\16\aa\16\be\16\de\16\d6\16 \00\be\16\a9\16\b1\16\a6\16\b9\16\d6\16\aa\16\b1\16\de\16\a2\16\d7\16 \00\b9\16\c1\16\a6\16 \00\a6\16\aa\16 \00\b9\16\d6\16\e5\16\ab\16\n\00\n\00(\00O\00l\00d\00 \00E\00n\00g\00l\00i\00s\00h\00,\00 \00w\00h\00i\00c\00h\00 \00t\00r\00a\00n\00s\00c\00r\00i\00b\00e\00d\00 \00i\00n\00t\00o\00 \00L\00a\00t\00i\00n\00 \00r\00e\00a\00d\00s\00 \00\'\00H\00e\00 \00c\00w\00a\00e\00t\00h\00 \00t\00h\00a\00t\00 \00h\00e\00\n\00b\00u\00d\00e\00 \00t\00h\00a\00e\00m\00 \00l\00a\00n\00d\00e\00 \00n\00o\00r\00t\00h\00w\00e\00a\00r\00d\00u\00m\00 \00w\00i\00t\00h\00 \00t\00h\00a\00 \00W\00e\00s\00t\00s\00a\00e\00.\00\'\00 \00a\00n\00d\00 \00m\00e\00a\00n\00s\00 \00\'\00H\00e\00 \00s\00a\00i\00d\00\n\00t\00h\00a\00t\00 \00h\00e\00 \00l\00i\00v\00e\00d\00 \00i\00n\00 \00t\00h\00e\00 \00n\00o\00r\00t\00h\00e\00r\00n\00 \00l\00a\00n\00d\00 \00n\00e\00a\00r\00 \00t\00h\00e\00 \00W\00e\00s\00t\00e\00r\00n\00 \00S\00e\00a\00.\00\'\00)\00\n\00\n\00B\00r\00a\00i\00l\00l\00e\00:\00\n\00\n\00L(\01(\'(\11( \00<(\01(\12( \00 \00M(\1c(\07(\11(9(0(\0e( \00c(\15(\0c(\n\00\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\19(\11(\01(\19(\12( \00\1e(\15( \00\03(\11(\1b(\14( \00:(\n(9(2( \00y(;(\11( \00\n(\0e( \00\1d(\15( \00\19(3(\03(\1e(\n\001(\01(\1e(\11(\'(;( \00\01(\03(3(\1e( \009(\01(\1e(2( \00y(\11( \00\17(\11(\1b(\n(\0c(;( \00\15(\0b( \00\19(\n(\0e( \00\03(%(\17(\n(\01(\07( \00:(\01(\0e(\n\00\0e(\n(\1b(\1d(+( \00\03(9( \009(\11( \00\n(\07(;(\1b(9(\r(\01(\1d(\02( \009(\11( \00\n(\07(;(\05(\02( \009(\11( \00%(\1d(\19(;(\1e(\01(\05(;(\02(\n\00\01(\1d(\19( \009(\11( \00!(\n(\11(\0b( \00\r(3(\17(\1d(;(2( \00N(\n(\17(\15(\15(\1b(\11( \00\0e(\n(\1b(\1d(+( \00\n(\1e(2( \00A(\1d(\19(\n\00N(\n(\17(\15(\15(\1b(\11(0(\0e( \00\1d(\01(\r(\11( \00:(\01(\0e( \00\1b(\15(\15(\19( \00%(\0f(\15(\1d( \000(a(\01(\1d(\1b(\11(\02( \00\0b(\15(\17( \00\01(\1d(9(9(\14(\1b( \00\19(\11(\n\00!(\15(\0e(\11( \00\1e(\15( \00\0f(%(\1e( \00\19(\n(\0e( \00\19(\01(\1d(\19( \00\1e(\15(2(\n\00\n\00U(\07(\19( \00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00M(\14(\19(\16( \00J( \00\19(\15(\1d(0(\1e( \00\r(\11(\01(\1d( \00\1e(\15( \00\0e(\01(9( \009(\01(\1e( \00J( \00\05(\1d(*(\02( \00\15(\0b( \00\r(9(\n\00*(\1d( \00\05(\1d(*(\07(+(\1b(\11(\02( \001(\01(\1e( \009(;(\11( \00\n(\0e( \00\0f(\1c(\1e(\n(\n(%(\07(\1c(\07(9( \00\19(\11(\01(\19( \00\01(\03(3(\1e(\n\00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2( \00J( \00\r(\n(#(\1e( \00\19(\01(\'(\11( \00\03(\11(2( \00\14(\n(\07(\14(+(\02( \00\r(9(\0e(\11(\07(\0b(\02( \00\1e(\15(\n\00\17(\11(\1b(\1c(\19( \00\01( \00\n(\15(\0b(\0b(\14($(\1d(\01(\n(\07( \00\01(\0e( \009(\11( \00\19(\11(\01(\19(\11(\0c( \00\0f(\n(\11(\n(\11( \00\15(\0b( \00\n(\17(\15(\1d(\r(\15(\1d(\1b(;(9(\n\00\14( \009(\11( \00\1e(\17(\01(\19(\11(2( \00C(%(\1e( \009(\11( \00:(\n(\0e(\19(\15(\r( \00\15(\0b( \003(\17( \00\01(\1d(\n(\11(\0c(\15(\17(\0e(\n\00\n(\0e( \00\14( \009(\11( \00\0e(\n(\r(\n(\07(\11(\06( \00\01(\1d(\19( \00\r(9( \00%(\1d(\19(\01(\07(\07(*(+( \00\19(\01(\1d(\19(\0e(\n\00)(\01(\07(\07( \00\1d(\15(\1e( \00\19(\n(\0c(%(\17(\03( \00\n(\1e(\02( \00\15(\17( \009(\11( \00J(3(\1d(\1e(\17(9(0(\0e( \00\19(\15(\1d(\11( \00\0b(\15(\17(2( \00y(3(\n\00:(\n(\07(\07( \009(;(\11(\0b(\15(\17(\11( \00\0f(;(\r(\n(\1e( \00\r(\11( \00\1e(\15( \00\17(\11(\0f(\11(\01(\1e(\02( \00\11(\r(\0f(\19(\01(\1e(\n(\n(\01(\07(\07(9(\02( \009(\01(\1e(\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00(\00T\00h\00e\00 \00f\00i\00r\00s\00t\00 \00c\00o\00u\00p\00l\00e\00 \00o\00f\00 \00p\00a\00r\00a\00g\00r\00a\00p\00h\00s\00 \00o\00f\00 \00\"\00A\00 \00C\00h\00r\00i\00s\00t\00m\00a\00s\00 \00C\00a\00r\00o\00l\00\"\00 \00b\00y\00 \00D\00i\00c\00k\00e\00n\00s\00)\00\n\00\n\00C\00o\00m\00p\00a\00c\00t\00 \00f\00o\00n\00t\00 \00s\00e\00l\00e\00c\00t\00i\00o\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00t\00e\00x\00t\00:\00\n\00\n\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00\n\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\n\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\n\00\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\n\00\n\00G\00r\00e\00e\00t\00i\00n\00g\00s\00 \00i\00n\00 \00v\00a\00r\00i\00o\00u\00s\00 \00l\00a\00n\00g\00u\00a\00g\00e\00s\00:\00\n\00\n\00H\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00,\00 \00\9a\03\b1\03\bb\03\b7\03\bc\03s\1f\c1\03\b1\03 \00\ba\03y\1f\c3\03\bc\03\b5\03,\00 \00\b30\f30\cb0\c10\cf0\n\00\n\00B\00o\00x\00 \00d\00r\00a\00w\00i\00n\00g\00 \00a\00l\00i\00g\00n\00m\00e\00n\00t\00 \00t\00e\00s\00t\00s\00:\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\88%\n\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\89%\n\00T%P%P%f%P%P%W% \00 \00\0c%\00%\00%,%\00%\00%\10% \00 \00m%\00%\00%,%\00%\00%n% \00 \00m%\00%\00%,%\00%\00%n% \00 \00\0f%\01%\01%3%\01%\01%\13% \00 \00\0e%\12%\0f%\11% \00 \00 \00w% \00 \00{% \00\0f%/%\13% \00\0c%0%\10% \00 \00 \00 \00\8a% \00q%r%q%r%s%s%s%\n\00Q%\0c%\00%h%\00%\10%Q% \00 \00\02%T%P%g%P%W%\02% \00 \00\02%R%P%j%P%U%\02% \00 \00\02%S%\00%A%\00%V%\02% \00 \00\03%\0c%\00%B%\00%\10%\03% \00 \00\17%C%D%\19% \00 \00v%<%t%z%K%x% %<%(% \00\1d%K%%% \00 \00 \00 \00\8b% \00r%q%r%q%s%s%s%\n\00Q%\02%r% \00q%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00\7f% \00\02%\03% \00 \00\r%E%F%\13% \00 \00 \00u% \00 \00y% \00\17%7%\1b% \00\14%8%\18% \00 \00 \00 \00\8c% \00q%r%q%r%s%s%s%\n\00`%a% \00s% \00^%c% \00 \00\1c%b% \00 \00 \00_%$% \00 \00\1c%<%\00%<%\00%<%$% \00 \00\1c%k%\00%B%\00%k%$% \00 \00#%?%~%<%|%?%+% \00 \00\15%\1b%\16%\1a% \00 \00 \00 \00 \00\0c%\04%\04%\10% \00N% \00\0f%\05%\05%\13% \00\0b% \00\8d% \00r%q%r%q%s%s%s%\n\00Q%\02%q% \00r%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00}% \00\02%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8e%\n\00Q%\14%\00%e%\00%\18%Q% \00 \00\02%Z%P%d%P%]%\02% \00 \00\02%X%P%j%P%[%\02% \00 \00\02%Y%\00%@%\00%\\%\02% \00 \00\03%\14%\00%B%\00%\18%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8f%\n\00Z%P%P%i%P%P%]% \00 \00\14%\00%\00%4%\00%\00%\18% \00 \00p%\00%\00%4%\00%\00%o% \00 \00p%\00%\00%4%\00%\00%o% \00 \00\17%\01%\01%;%\01%\01%\1b% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\14%L%L%\18% \00N% \00\17%M%M%\1b% \00\0b% \00 \00\81%\82%\83%\84%\85%\86%\87%\88%\n\00\00\00") + (data $35 (i32.const 16124) "\8c\1d\00\00\00\00\00\00\00\00\00\00\02\00\00\00p\1d\00\00S\00e\00n\00t\00e\00n\00c\00e\00s\00 \00t\00h\00a\00t\00 \00c\00o\00n\00t\00a\00i\00n\00 \00a\00l\00l\00 \00l\00e\00t\00t\00e\00r\00s\00 \00c\00o\00m\00m\00o\00n\00l\00y\00 \00u\00s\00e\00d\00 \00i\00n\00 \00a\00 \00l\00a\00n\00g\00u\00a\00g\00e\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00M\00a\00r\00k\00u\00s\00 \00K\00u\00h\00n\00 \00<\00h\00t\00t\00p\00:\00/\00/\00w\00w\00w\00.\00c\00l\00.\00c\00a\00m\00.\00a\00c\00.\00u\00k\00/\00~\00m\00g\00k\002\005\00/\00>\00 \00-\00-\00 \002\000\001\002\00-\000\004\00-\001\001\00\n\00\n\00T\00h\00i\00s\00 \00i\00s\00 \00a\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00o\00f\00 \00a\00 \00p\00l\00a\00i\00n\00-\00t\00e\00x\00t\00 \00f\00i\00l\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00i\00n\00 \00U\00T\00F\00-\008\00.\00\n\00\n\00\n\00D\00a\00n\00i\00s\00h\00 \00(\00d\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00Q\00u\00i\00z\00d\00e\00l\00t\00a\00g\00e\00r\00n\00e\00 \00s\00p\00i\00s\00t\00e\00 \00j\00o\00r\00d\00b\00\e6\00r\00 \00m\00e\00d\00 \00f\00l\00\f8\00d\00e\00,\00 \00m\00e\00n\00s\00 \00c\00i\00r\00k\00u\00s\00k\00l\00o\00v\00n\00e\00n\00\n\00 \00 \00W\00o\00l\00t\00h\00e\00r\00 \00s\00p\00i\00l\00l\00e\00d\00e\00 \00p\00\e5\00 \00x\00y\00l\00o\00f\00o\00n\00.\00\n\00 \00 \00(\00=\00 \00Q\00u\00i\00z\00 \00c\00o\00n\00t\00e\00s\00t\00a\00n\00t\00s\00 \00w\00e\00r\00e\00 \00e\00a\00t\00i\00n\00g\00 \00s\00t\00r\00a\00w\00b\00e\00r\00y\00 \00w\00i\00t\00h\00 \00c\00r\00e\00a\00m\00 \00w\00h\00i\00l\00e\00 \00W\00o\00l\00t\00h\00e\00r\00\n\00 \00 \00t\00h\00e\00 \00c\00i\00r\00c\00u\00s\00 \00c\00l\00o\00w\00n\00 \00p\00l\00a\00y\00e\00d\00 \00o\00n\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00.\00)\00\n\00\n\00G\00e\00r\00m\00a\00n\00 \00(\00d\00e\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00F\00a\00l\00s\00c\00h\00e\00s\00 \00\dc\00b\00e\00n\00 \00v\00o\00n\00 \00X\00y\00l\00o\00p\00h\00o\00n\00m\00u\00s\00i\00k\00 \00q\00u\00\e4\00l\00t\00 \00j\00e\00d\00e\00n\00 \00g\00r\00\f6\00\df\00e\00r\00e\00n\00 \00Z\00w\00e\00r\00g\00\n\00 \00 \00(\00=\00 \00W\00r\00o\00n\00g\00f\00u\00l\00 \00p\00r\00a\00c\00t\00i\00c\00i\00n\00g\00 \00o\00f\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00 \00m\00u\00s\00i\00c\00 \00t\00o\00r\00t\00u\00r\00e\00s\00 \00e\00v\00e\00r\00y\00 \00l\00a\00r\00g\00e\00r\00 \00d\00w\00a\00r\00f\00)\00\n\00\n\00 \00 \00Z\00w\00\f6\00l\00f\00 \00B\00o\00x\00k\00\e4\00m\00p\00f\00e\00r\00 \00j\00a\00g\00t\00e\00n\00 \00E\00v\00a\00 \00q\00u\00e\00r\00 \00\fc\00b\00e\00r\00 \00d\00e\00n\00 \00S\00y\00l\00t\00e\00r\00 \00D\00e\00i\00c\00h\00\n\00 \00 \00(\00=\00 \00T\00w\00e\00l\00v\00e\00 \00b\00o\00x\00i\00n\00g\00 \00f\00i\00g\00h\00t\00e\00r\00s\00 \00h\00u\00n\00t\00e\00d\00 \00E\00v\00a\00 \00a\00c\00r\00o\00s\00s\00 \00t\00h\00e\00 \00d\00i\00k\00e\00 \00o\00f\00 \00S\00y\00l\00t\00)\00\n\00\n\00 \00 \00H\00e\00i\00z\00\f6\00l\00r\00\fc\00c\00k\00s\00t\00o\00\df\00a\00b\00d\00\e4\00m\00p\00f\00u\00n\00g\00\n\00 \00 \00(\00=\00 \00f\00u\00e\00l\00 \00o\00i\00l\00 \00r\00e\00c\00o\00i\00l\00 \00a\00b\00s\00o\00r\00b\00e\00r\00)\00\n\00 \00 \00(\00j\00q\00v\00w\00x\00y\00 \00m\00i\00s\00s\00i\00n\00g\00,\00 \00b\00u\00t\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00i\00n\00 \00o\00n\00e\00 \00w\00o\00r\00d\00)\00\n\00\n\00G\00r\00e\00e\00k\00 \00(\00e\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\93\03\b1\03\b6\03\ad\03\b5\03\c2\03 \00\ba\03\b1\03v\1f \00\bc\03\c5\03\c1\03\c4\03\b9\03r\1f\c2\03 \00\b4\03r\1f\bd\03 \00\b8\03p\1f \00\b2\03\c1\03\f6\1f \00\c0\03\b9\03p\1f \00\c3\03\c4\03x\1f \00\c7\03\c1\03\c5\03\c3\03\b1\03\c6\03v\1f \00\be\03\ad\03\c6\03\c9\03\c4\03\bf\03\n\00 \00 \00(\00=\00 \00N\00o\00 \00m\00o\00r\00e\00 \00s\00h\00a\00l\00l\00 \00I\00 \00s\00e\00e\00 \00a\00c\00a\00c\00i\00a\00s\00 \00o\00r\00 \00m\00y\00r\00t\00l\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \00g\00o\00l\00d\00e\00n\00 \00c\00l\00e\00a\00r\00i\00n\00g\00)\00\n\00\n\00 \00 \00\9e\03\b5\03\c3\03\ba\03\b5\03\c0\03\ac\03\b6\03\c9\03 \00\c4\03t\1f\bd\03 \00\c8\03\c5\03\c7\03\bf\03\c6\03\b8\03\cc\03\c1\03\b1\03 \00\b2\03\b4\03\b5\03\bb\03\c5\03\b3\03\bc\03\af\03\b1\03\n\00 \00 \00(\00=\00 \00I\00 \00u\00n\00c\00o\00v\00e\00r\00 \00t\00h\00e\00 \00s\00o\00u\00l\00-\00d\00e\00s\00t\00r\00o\00y\00i\00n\00g\00 \00a\00b\00h\00o\00r\00r\00e\00n\00c\00e\00)\00\n\00\n\00E\00n\00g\00l\00i\00s\00h\00 \00(\00e\00n\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00T\00h\00e\00 \00q\00u\00i\00c\00k\00 \00b\00r\00o\00w\00n\00 \00f\00o\00x\00 \00j\00u\00m\00p\00s\00 \00o\00v\00e\00r\00 \00t\00h\00e\00 \00l\00a\00z\00y\00 \00d\00o\00g\00\n\00\n\00S\00p\00a\00n\00i\00s\00h\00 \00(\00e\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00E\00l\00 \00p\00i\00n\00g\00\fc\00i\00n\00o\00 \00W\00e\00n\00c\00e\00s\00l\00a\00o\00 \00h\00i\00z\00o\00 \00k\00i\00l\00\f3\00m\00e\00t\00r\00o\00s\00 \00b\00a\00j\00o\00 \00e\00x\00h\00a\00u\00s\00t\00i\00v\00a\00 \00l\00l\00u\00v\00i\00a\00 \00y\00\n\00 \00 \00f\00r\00\ed\00o\00,\00 \00a\00\f1\00o\00r\00a\00b\00a\00 \00a\00 \00s\00u\00 \00q\00u\00e\00r\00i\00d\00o\00 \00c\00a\00c\00h\00o\00r\00r\00o\00.\00\n\00 \00 \00(\00C\00o\00n\00t\00a\00i\00n\00s\00 \00e\00v\00e\00r\00y\00 \00l\00e\00t\00t\00e\00r\00 \00a\00n\00d\00 \00e\00v\00e\00r\00y\00 \00a\00c\00c\00e\00n\00t\00,\00 \00b\00u\00t\00 \00n\00o\00t\00 \00e\00v\00e\00r\00y\00 \00c\00o\00m\00b\00i\00n\00a\00t\00i\00o\00n\00\n\00 \00 \00o\00f\00 \00v\00o\00w\00e\00l\00 \00+\00 \00a\00c\00u\00t\00e\00.\00)\00\n\00\n\00F\00r\00e\00n\00c\00h\00 \00(\00f\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00o\00r\00t\00e\00z\00 \00c\00e\00 \00v\00i\00e\00u\00x\00 \00w\00h\00i\00s\00k\00y\00 \00a\00u\00 \00j\00u\00g\00e\00 \00b\00l\00o\00n\00d\00 \00q\00u\00i\00 \00f\00u\00m\00e\00 \00s\00u\00r\00 \00s\00o\00n\00 \00\ee\00l\00e\00 \00i\00n\00t\00\e9\00r\00i\00e\00u\00r\00e\00,\00 \00\e0\00\n\00 \00 \00c\00\f4\00t\00\e9\00 \00d\00e\00 \00l\00\'\00a\00l\00c\00\f4\00v\00e\00 \00o\00v\00o\00\ef\00d\00e\00,\00 \00o\00\f9\00 \00l\00e\00s\00 \00b\00\fb\00c\00h\00e\00s\00 \00s\00e\00 \00c\00o\00n\00s\00u\00m\00e\00n\00t\00 \00d\00a\00n\00s\00 \00l\00\'\00\e2\00t\00r\00e\00,\00 \00c\00e\00\n\00 \00 \00q\00u\00i\00 \00l\00u\00i\00 \00p\00e\00r\00m\00e\00t\00 \00d\00e\00 \00p\00e\00n\00s\00e\00r\00 \00\e0\00 \00l\00a\00 \00c\00\e6\00n\00o\00g\00e\00n\00\e8\00s\00e\00 \00d\00e\00 \00l\00\'\00\ea\00t\00r\00e\00 \00d\00o\00n\00t\00 \00i\00l\00 \00e\00s\00t\00 \00q\00u\00e\00s\00t\00i\00o\00n\00\n\00 \00 \00d\00a\00n\00s\00 \00l\00a\00 \00c\00a\00u\00s\00e\00 \00a\00m\00b\00i\00g\00u\00\eb\00 \00e\00n\00t\00e\00n\00d\00u\00e\00 \00\e0\00 \00M\00o\00\ff\00,\00 \00d\00a\00n\00s\00 \00u\00n\00 \00c\00a\00p\00h\00a\00r\00n\00a\00\fc\00m\00 \00q\00u\00i\00,\00\n\00 \00 \00p\00e\00n\00s\00e\00-\00t\00-\00i\00l\00,\00 \00d\00i\00m\00i\00n\00u\00e\00 \00\e7\00\e0\00 \00e\00t\00 \00l\00\e0\00 \00l\00a\00 \00q\00u\00a\00l\00i\00t\00\e9\00 \00d\00e\00 \00s\00o\00n\00 \00S\01u\00v\00r\00e\00.\00\n\00\n\00 \00 \00l\00\'\00\ee\00l\00e\00 \00e\00x\00i\00g\00u\00\eb\00\n\00 \00 \00O\00\f9\00 \00l\00\'\00o\00b\00\e8\00s\00e\00 \00j\00u\00r\00y\00 \00m\00\fb\00r\00\n\00 \00 \00F\00\ea\00t\00e\00 \00l\00\'\00h\00a\00\ef\00 \00v\00o\00l\00a\00p\00\fc\00k\00,\00\n\00 \00 \00\c2\00n\00e\00 \00e\00x\00 \00a\00\e9\00q\00u\00o\00 \00a\00u\00 \00w\00h\00i\00s\00t\00,\00\n\00 \00 \00\d4\00t\00e\00z\00 \00c\00e\00 \00v\00S\01u\00 \00d\00\e9\00\e7\00u\00.\00\n\00\n\00 \00 \00L\00e\00 \00c\00S\01u\00r\00 \00d\00\e9\00\e7\00u\00 \00m\00a\00i\00s\00 \00l\00\'\00\e2\00m\00e\00 \00p\00l\00u\00t\00\f4\00t\00 \00n\00a\00\ef\00v\00e\00,\00 \00L\00o\00u\00\ff\00s\00 \00r\00\ea\00v\00a\00 \00d\00e\00 \00c\00r\00a\00p\00a\00\fc\00t\00e\00r\00 \00e\00n\00\n\00 \00 \00c\00a\00n\00o\00\eb\00 \00a\00u\00 \00d\00e\00l\00\e0\00 \00d\00e\00s\00 \00\ee\00l\00e\00s\00,\00 \00p\00r\00\e8\00s\00 \00d\00u\00 \00m\00\e4\00l\00s\00t\00r\00\f6\00m\00 \00o\00\f9\00 \00b\00r\00\fb\00l\00e\00n\00t\00 \00l\00e\00s\00 \00n\00o\00v\00\e6\00.\00\n\00\n\00I\00r\00i\00s\00h\00 \00G\00a\00e\00l\00i\00c\00 \00(\00g\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00D\00\'\00f\00h\00u\00a\00s\00c\00a\00i\00l\00 \00\cd\00o\00s\00a\00,\00 \00\da\00r\00m\00h\00a\00c\00 \00n\00a\00 \00h\00\d3\00i\00g\00h\00e\00 \00B\00e\00a\00n\00n\00a\00i\00t\00h\00e\00,\00 \00p\00\f3\00r\00 \00\c9\00a\00v\00a\00 \00a\00g\00u\00s\00 \00\c1\00d\00h\00a\00i\00m\00h\00\n\00\n\00H\00u\00n\00g\00a\00r\00i\00a\00n\00 \00(\00h\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c1\00r\00v\00\ed\00z\00t\00q\01r\00Q\01 \00t\00\fc\00k\00\f6\00r\00f\00\fa\00r\00\f3\00g\00\e9\00p\00\n\00 \00 \00(\00=\00 \00f\00l\00o\00o\00d\00-\00p\00r\00o\00o\00f\00 \00m\00i\00r\00r\00o\00r\00-\00d\00r\00i\00l\00l\00i\00n\00g\00 \00m\00a\00c\00h\00i\00n\00e\00,\00 \00o\00n\00l\00y\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00)\00\n\00\n\00I\00c\00e\00l\00a\00n\00d\00i\00c\00 \00(\00i\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00K\00\e6\00m\00i\00 \00n\00\fd\00 \00\f6\00x\00i\00 \00h\00\e9\00r\00 \00y\00k\00i\00s\00t\00 \00\fe\00j\00\f3\00f\00u\00m\00 \00n\00\fa\00 \00b\00\e6\00\f0\00i\00 \00v\00\ed\00l\00 \00o\00g\00 \00\e1\00d\00r\00e\00p\00a\00\n\00\n\00 \00 \00S\00\e6\00v\00\f6\00r\00 \00g\00r\00\e9\00t\00 \00\e1\00\f0\00a\00n\00 \00\fe\00v\00\ed\00 \00\fa\00l\00p\00a\00n\00 \00v\00a\00r\00 \00\f3\00n\00\fd\00t\00\n\00 \00 \00(\00s\00o\00m\00e\00 \00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00m\00i\00s\00s\00i\00n\00g\00)\00\n\00\n\00J\00a\00p\00a\00n\00e\00s\00e\00 \00(\00j\00p\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00H\00i\00r\00a\00g\00a\00n\00a\00:\00 \00(\00I\00r\00o\00h\00a\00)\00\n\00\n\00 \00 \00D0\8d0o0k0{0x0h0a0\8a0l0\8b0\920\n\00 \00 \00\8f0K0\880_0\8c0]0d0m0j0\890\800\n\00 \00 \00F0\900n0J0O0\840~0Q0u0S0H0f0\n\00 \00 \00B0U0M0\860\810\7f0W0\910r0\820[0Y0\n\00\n\00 \00 \00K\00a\00t\00a\00k\00a\00n\00a\00:\00\n\00\n\00 \00 \00\a40\ed0\cf0\cb0\db0\d80\c80 \00\c10\ea0\cc0\eb0\f20 \00\ef0\ab0\e80\bf0\ec0\bd0 \00\c40\cd0\ca0\e90\e00\n\00 \00 \00\a60\f00\ce0\aa0\af0\e40\de0 \00\b10\d50\b30\a80\c60 \00\a20\b50\ad0\e60\e10\df0\b70 \00\f10\d20\e20\bb0\b90\f30\n\00\n\00H\00e\00b\00r\00e\00w\00 \00(\00i\00w\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00?\00 \00\d3\05\d2\05 \00\e1\05\e7\05\e8\05\df\05 \00\e9\05\d8\05 \00\d1\05\d9\05\dd\05 \00\de\05\d0\05\d5\05\db\05\d6\05\d1\05 \00\d5\05\dc\05\e4\05\ea\05\e2\05 \00\de\05\e6\05\d0\05 \00\dc\05\d5\05 \00\d7\05\d1\05\e8\05\d4\05 \00\d0\05\d9\05\da\05 \00\d4\05\e7\05\dc\05\d9\05\d8\05\d4\05\n\00\n\00P\00o\00l\00i\00s\00h\00 \00(\00p\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00c\00h\00n\00\05\01\07\01 \00w\00 \00t\00\19\01 \00B\01\f3\00d\00z\01 \00j\00e\00|\01a\00 \00l\00u\00b\00 \00o\00[\01m\00 \00s\00k\00r\00z\00y\00D\01 \00f\00i\00g\00\n\00 \00 \00(\00=\00 \00T\00o\00 \00p\00u\00s\00h\00 \00a\00 \00h\00e\00d\00g\00e\00h\00o\00g\00 \00o\00r\00 \00e\00i\00g\00h\00t\00 \00b\00i\00n\00s\00 \00o\00f\00 \00f\00i\00g\00s\00 \00i\00n\00 \00t\00h\00i\00s\00 \00b\00o\00a\00t\00)\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00 \00(\00r\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\12\04 \00G\040\04I\040\04E\04 \00N\043\040\04 \006\048\04;\04 \001\04K\04 \00F\048\04B\04@\04C\04A\04?\00 \00\14\040\04,\00 \00=\04>\04 \00D\040\04;\04L\04H\048\042\04K\049\04 \00M\04:\047\045\04<\04?\04;\04O\04@\04!\00\n\00 \00 \00(\00=\00 \00W\00o\00u\00l\00d\00 \00a\00 \00c\00i\00t\00r\00u\00s\00 \00l\00i\00v\00e\00 \00i\00n\00 \00t\00h\00e\00 \00b\00u\00s\00h\00e\00s\00 \00o\00f\00 \00s\00o\00u\00t\00h\00?\00 \00Y\00e\00s\00,\00 \00b\00u\00t\00 \00o\00n\00l\00y\00 \00a\00 \00f\00a\00k\00e\00 \00o\00n\00e\00!\00)\00\n\00\n\00 \00 \00!\04J\045\04H\04L\04 \006\045\04 \005\04I\04Q\04 \00M\04B\048\04E\04 \00<\04O\043\04:\048\04E\04 \00D\04@\040\04=\04F\04C\047\04A\04:\048\04E\04 \001\04C\04;\04>\04:\04 \004\040\04 \002\04K\04?\045\049\04 \00G\040\04N\04\n\00 \00 \00(\00=\00 \00E\00a\00t\00 \00s\00o\00m\00e\00 \00m\00o\00r\00e\00 \00o\00f\00 \00t\00h\00e\00s\00e\00 \00f\00r\00e\00s\00h\00 \00F\00r\00e\00n\00c\00h\00 \00l\00o\00a\00f\00s\00 \00a\00n\00d\00 \00h\00a\00v\00e\00 \00s\00o\00m\00e\00 \00t\00e\00a\00)\00\n\00\n\00T\00h\00a\00i\00 \00(\00t\00h\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00@\0e\1b\0eG\0e\19\0e!\0e\19\0e8\0e)\0e\"\0eL\0e*\0e8\0e\14\0e\1b\0e#\0e0\0e@\0e*\0e#\0e4\0e\10\0e@\0e%\0e4\0e(\0e\04\0e8\0e\13\0e\04\0eH\0e2\0e \00 \00\01\0e\'\0eH\0e2\0e\1a\0e#\0e#\0e\14\0e2\0e\1d\0e9\0e\07\0e*\0e1\0e\15\0e\'\0eL\0e@\0e\14\0e#\0e1\0e\08\0e\t\0e2\0e\19\0e\n\00 \00 \00\08\0e\07\0e\1d\0eH\0e2\0e\1f\0e1\0e\19\0e\1e\0e1\0e\12\0e\19\0e2\0e\'\0e4\0e\n\0e2\0e\01\0e2\0e#\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00-\0e\"\0eH\0e2\0e%\0eI\0e2\0e\07\0e\1c\0e%\0e2\0e\r\0e$\0eE\0e@\0e\02\0eH\0e\19\0e\06\0eH\0e2\0e\1a\0e5\0e\11\0e2\0eC\0e\04\0e#\0e\n\00 \00 \00D\0e!\0eH\0e\16\0e7\0e-\0eB\0e\17\0e)\0eB\0e\01\0e#\0e\18\0eA\0e\n\0eH\0e\07\0e\0b\0e1\0e\14\0e.\0e6\0e\14\0e.\0e1\0e\14\0e\14\0eH\0e2\0e \00 \00 \00 \00 \00+\0e1\0e\14\0e-\0e \0e1\0e\"\0e@\0e+\0e!\0e7\0e-\0e\19\0e\01\0e5\0e,\0e2\0e-\0e1\0e\n\0e\0c\0e2\0e*\0e1\0e\"\0e\n\00 \00 \00\1b\0e\0f\0e4\0e\1a\0e1\0e\15\0e4\0e\1b\0e#\0e0\0e\1e\0e$\0e\15\0e4\0e\01\0e\0e\0e\01\0e3\0e+\0e\19\0e\14\0eC\0e\08\0e \00 \00 \00 \00 \00 \00 \00 \00\1e\0e9\0e\14\0e\08\0e2\0eC\0e+\0eI\0e\08\0eJ\0e0\0eF\0e \00\08\0eK\0e2\0eF\0e \00\19\0eH\0e2\0e\1f\0e1\0e\07\0e@\0e-\0e\"\0e \00/\0e\n\00\n\00 \00 \00[\00T\00h\00e\00 \00c\00o\00p\00y\00r\00i\00g\00h\00t\00 \00f\00o\00r\00 \00t\00h\00e\00 \00T\00h\00a\00i\00 \00e\00x\00a\00m\00p\00l\00e\00 \00i\00s\00 \00o\00w\00n\00e\00d\00 \00b\00y\00 \00T\00h\00e\00 \00C\00o\00m\00p\00u\00t\00e\00r\00\n\00 \00 \00A\00s\00s\00o\00c\00i\00a\00t\00i\00o\00n\00 \00o\00f\00 \00T\00h\00a\00i\00l\00a\00n\00d\00 \00u\00n\00d\00e\00r\00 \00t\00h\00e\00 \00R\00o\00y\00a\00l\00 \00P\00a\00t\00r\00o\00n\00a\00g\00e\00 \00o\00f\00 \00H\00i\00s\00 \00M\00a\00j\00e\00s\00t\00y\00 \00t\00h\00e\00\n\00 \00 \00K\00i\00n\00g\00.\00]\00\n\00\n\00T\00u\00r\00k\00i\00s\00h\00 \00(\00t\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00i\00j\00a\00m\00a\00l\001\01 \00h\00a\00s\00t\00a\00,\00 \00y\00a\00\1f\011\01z\00 \00_\01o\00f\00\f6\00r\00e\00 \00\e7\00a\00b\00u\00c\00a\00k\00 \00g\00\fc\00v\00e\00n\00d\00i\00.\00\n\00 \00 \00(\00=\00P\00a\00t\00i\00e\00n\00t\00 \00w\00i\00t\00h\00 \00p\00a\00j\00a\00m\00a\00s\00,\00 \00t\00r\00u\00s\00t\00e\00d\00 \00s\00w\00a\00r\00t\00h\00y\00 \00d\00r\00i\00v\00e\00r\00 \00q\00u\00i\00c\00k\00l\00y\00)\00\n\00\n\00O\00t\00h\00e\00r\00\n\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c0\00\c8\00 \00/\00 \00c\003\00_\008\000\00 \00c\003\00_\008\008\00\n\00 \00 \00\d8S\cf\91 \00/\00 \00e\005\00_\008\00f\00_\009\008\00 \00e\009\00_\008\007\00_\008\00f\00\n\00 \00 \00A\d8\0e\dfA\d81\df \00/\00 \00f\000\00_\00a\000\00_\009\00c\00_\008\00e\00 \00f\000\00_\00a\000\00_\009\00c\00_\00b\001\00\n\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 23696) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -75,6 +87,15 @@ call $~lib/rt/common/OBJECT#get:rtSize return ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -139,7 +160,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 224 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -209,7 +230,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 224 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -226,7 +247,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 224 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -256,8 +277,8 @@ i32.load i32.gt_u if - i32.const 320 - i32.const 384 + i32.const 352 + i32.const 416 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -325,7 +346,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 192 + i32.const 224 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -477,7 +498,7 @@ i32.eqz if i32.const 0 - i32.const 464 + i32.const 496 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -497,7 +518,7 @@ i32.eqz if i32.const 0 - i32.const 464 + i32.const 496 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -560,7 +581,7 @@ i32.eqz if i32.const 0 - i32.const 464 + i32.const 496 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -713,7 +734,7 @@ i32.eqz if i32.const 0 - i32.const 464 + i32.const 496 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -730,7 +751,7 @@ i32.eqz if i32.const 0 - i32.const 464 + i32.const 496 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -819,7 +840,7 @@ i32.eqz if i32.const 0 - i32.const 464 + i32.const 496 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -862,7 +883,7 @@ i32.eqz if i32.const 0 - i32.const 464 + i32.const 496 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -880,7 +901,7 @@ i32.eqz if i32.const 0 - i32.const 464 + i32.const 496 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -948,7 +969,7 @@ i32.eqz if i32.const 0 - i32.const 464 + i32.const 496 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1065,7 +1086,7 @@ i32.eqz if i32.const 0 - i32.const 464 + i32.const 496 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1111,7 +1132,7 @@ i32.eqz if i32.const 0 - i32.const 464 + i32.const 496 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1143,7 +1164,7 @@ i32.eqz if i32.const 0 - i32.const 464 + i32.const 496 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1387,7 +1408,7 @@ i32.eqz if i32.const 0 - i32.const 464 + i32.const 496 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1607,7 +1628,7 @@ i32.eqz if i32.const 0 - i32.const 192 + i32.const 224 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1715,8 +1736,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 128 - i32.const 464 + i32.const 160 + i32.const 496 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1818,7 +1839,7 @@ i32.eqz if i32.const 0 - i32.const 464 + i32.const 496 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1889,7 +1910,7 @@ i32.eqz if i32.const 0 - i32.const 464 + i32.const 496 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2046,7 +2067,7 @@ i32.eqz if i32.const 0 - i32.const 464 + i32.const 496 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2161,7 +2182,7 @@ i32.eqz if i32.const 0 - i32.const 464 + i32.const 496 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2181,7 +2202,7 @@ i32.eqz if i32.const 0 - i32.const 464 + i32.const 496 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2229,8 +2250,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 128 - i32.const 192 + i32.const 160 + i32.const 224 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2275,13 +2296,420 @@ local.get $ptr return ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 796 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 796 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 i32.sub - call $~lib/rt/common/OBJECT#get:rtSize + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix i32.const 1 - i32.shr_u + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 return ) (func $~lib/string/String.UTF16.encodeUnsafe (param $str i32) (param $len i32) (param $buf i32) (result i32) @@ -2693,8 +3121,8 @@ i32.const 2 i32.eq if - i32.const 688 - i32.const 752 + i32.const 2624 + i32.const 2688 i32.const 742 i32.const 49 call $~lib/builtins/abort @@ -2860,7 +3288,6 @@ drop ) (func $start:std/string-encoding - call $std/string-encoding/testUTF16Length memory.size i32.const 16 i32.shl @@ -2869,15 +3296,16 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 240 + i32.const 272 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 272 + i32.const 304 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 416 + i32.const 448 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace + call $std/string-encoding/testUTF16Length call $std/string-encoding/testUTF16Encode call $std/string-encoding/testUTF16Decode call $std/string-encoding/testUTF16DecodeUnsafe @@ -2888,68 +3316,12 @@ call $std/string-encoding/testUTF8Decode call $std/string-encoding/testUTF8DecodeNullTerminated call $std/string-encoding/testUTF8DecodeUnsafe - i32.const 1088 + i32.const 3024 call $std/string-encoding/testRoundtrip - i32.const 14208 + i32.const 16144 call $std/string-encoding/testRoundtrip call $~lib/rt/itcms/__collect ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $std/string-encoding/str - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 320 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 128 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 688 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - unreachable - ) (func $~start call $start:std/string-encoding ) @@ -2958,16 +3330,221 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 54576 - i32.const 54624 + i32.const 56512 + i32.const 56560 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) - (func $std/string-encoding/testUTF16Length - (local $0 i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 128 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2368 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $std/string-encoding/testUTF16Length + (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2988,7 +3565,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 8 i32.const 3 call $~lib/builtins/abort @@ -3078,7 +3655,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 15 i32.const 3 call $~lib/builtins/abort @@ -3091,7 +3668,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 16 i32.const 3 call $~lib/builtins/abort @@ -3104,7 +3681,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 17 i32.const 3 call $~lib/builtins/abort @@ -3117,7 +3694,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -3130,7 +3707,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 19 i32.const 3 call $~lib/builtins/abort @@ -3143,7 +3720,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 20 i32.const 3 call $~lib/builtins/abort @@ -3156,7 +3733,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -3169,7 +3746,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 22 i32.const 3 call $~lib/builtins/abort @@ -3182,7 +3759,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 23 i32.const 3 call $~lib/builtins/abort @@ -3195,7 +3772,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 24 i32.const 3 call $~lib/builtins/abort @@ -3208,7 +3785,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 25 i32.const 3 call $~lib/builtins/abort @@ -3221,7 +3798,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 26 i32.const 3 call $~lib/builtins/abort @@ -3234,7 +3811,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -3414,7 +3991,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -3469,12 +4046,12 @@ local.get $3 i32.store local.get $3 - i32.const 528 + i32.const 128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -3498,7 +4075,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -3512,12 +4089,12 @@ local.get $3 i32.store local.get $3 - i32.const 560 + i32.const 2496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -3533,12 +4110,12 @@ local.get $3 i32.store local.get $3 - i32.const 592 + i32.const 2528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -3554,12 +4131,12 @@ local.get $3 i32.store local.get $3 - i32.const 624 + i32.const 2560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -3575,12 +4152,12 @@ local.get $3 i32.store local.get $3 - i32.const 656 + i32.const 2592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 47 i32.const 3 call $~lib/builtins/abort @@ -3596,12 +4173,12 @@ local.get $3 i32.store local.get $3 - i32.const 528 + i32.const 128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 48 i32.const 3 call $~lib/builtins/abort @@ -3635,7 +4212,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 55 i32.const 3 call $~lib/builtins/abort @@ -3654,7 +4231,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -3794,7 +4371,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -3807,7 +4384,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -3820,7 +4397,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -3833,7 +4410,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 66 i32.const 3 call $~lib/builtins/abort @@ -3846,7 +4423,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -3859,7 +4436,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -3872,7 +4449,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 69 i32.const 3 call $~lib/builtins/abort @@ -3885,7 +4462,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 70 i32.const 3 call $~lib/builtins/abort @@ -3898,7 +4475,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 71 i32.const 3 call $~lib/builtins/abort @@ -3911,7 +4488,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 72 i32.const 3 call $~lib/builtins/abort @@ -3924,7 +4501,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 73 i32.const 3 call $~lib/builtins/abort @@ -3980,7 +4557,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 80 i32.const 3 call $~lib/builtins/abort @@ -3993,7 +4570,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 81 i32.const 3 call $~lib/builtins/abort @@ -4006,7 +4583,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 82 i32.const 3 call $~lib/builtins/abort @@ -4019,7 +4596,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -4032,7 +4609,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -4045,7 +4622,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 85 i32.const 3 call $~lib/builtins/abort @@ -4058,7 +4635,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 86 i32.const 3 call $~lib/builtins/abort @@ -4071,7 +4648,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 87 i32.const 3 call $~lib/builtins/abort @@ -4084,7 +4661,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 88 i32.const 3 call $~lib/builtins/abort @@ -4097,7 +4674,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 89 i32.const 3 call $~lib/builtins/abort @@ -4110,7 +4687,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 90 i32.const 3 call $~lib/builtins/abort @@ -4123,14 +4700,14 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 91 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 800 + i32.const 2736 local.tee $str2 i32.store offset=8 global.get $~lib/memory/__stack_pointer @@ -4166,7 +4743,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 94 i32.const 3 call $~lib/builtins/abort @@ -4217,7 +4794,7 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 880 + i32.const 2816 i32.const 0 i32.const 0 call $~lib/string/String.UTF8.encode @@ -4236,19 +4813,19 @@ local.get $1 i32.store local.get $1 - i32.const 880 + i32.const 2816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 101 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 880 + i32.const 2816 i32.const 0 i32.const 1 call $~lib/string/String.UTF8.encode @@ -4267,19 +4844,19 @@ local.get $1 i32.store local.get $1 - i32.const 912 + i32.const 2848 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 103 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 944 + i32.const 2880 i32.const 0 i32.const 0 call $~lib/string/String.UTF8.encode @@ -4298,19 +4875,19 @@ local.get $1 i32.store local.get $1 - i32.const 944 + i32.const 2880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 106 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 944 + i32.const 2880 i32.const 0 i32.const 1 call $~lib/string/String.UTF8.encode @@ -4329,12 +4906,12 @@ local.get $1 i32.store local.get $1 - i32.const 912 + i32.const 2848 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -4396,7 +4973,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -4460,14 +5037,14 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 120 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 976 + i32.const 2912 local.tee $str2 i32.store offset=16 local.get $str2 @@ -4483,7 +5060,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 122 i32.const 3 call $~lib/builtins/abort @@ -4515,14 +5092,14 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 124 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1024 + i32.const 2960 local.tee $str3 i32.store offset=24 local.get $str3 @@ -4538,7 +5115,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 126 i32.const 3 call $~lib/builtins/abort @@ -4567,7 +5144,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 127 i32.const 3 call $~lib/builtins/abort @@ -4610,7 +5187,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 129 i32.const 3 call $~lib/builtins/abort @@ -4671,12 +5248,12 @@ local.get $3 i32.store local.get $3 - i32.const 528 + i32.const 128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 138 i32.const 3 call $~lib/builtins/abort @@ -4701,7 +5278,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 139 i32.const 3 call $~lib/builtins/abort @@ -4716,12 +5293,12 @@ local.get $3 i32.store local.get $3 - i32.const 560 + i32.const 2496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 140 i32.const 3 call $~lib/builtins/abort @@ -4738,12 +5315,12 @@ local.get $3 i32.store local.get $3 - i32.const 624 + i32.const 2560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 141 i32.const 3 call $~lib/builtins/abort @@ -4760,12 +5337,12 @@ local.get $3 i32.store local.get $3 - i32.const 656 + i32.const 2592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 142 i32.const 3 call $~lib/builtins/abort @@ -4782,12 +5359,12 @@ local.get $3 i32.store local.get $3 - i32.const 528 + i32.const 128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 143 i32.const 3 call $~lib/builtins/abort @@ -4804,12 +5381,12 @@ local.get $3 i32.store local.get $3 - i32.const 1056 + i32.const 2992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 145 i32.const 3 call $~lib/builtins/abort @@ -4826,12 +5403,12 @@ local.get $3 i32.store local.get $3 - i32.const 656 + i32.const 2592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 146 i32.const 3 call $~lib/builtins/abort @@ -4848,12 +5425,12 @@ local.get $3 i32.store local.get $3 - i32.const 528 + i32.const 128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 147 i32.const 3 call $~lib/builtins/abort @@ -4914,7 +5491,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 153 i32.const 3 call $~lib/builtins/abort @@ -4952,7 +5529,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 155 i32.const 3 call $~lib/builtins/abort @@ -4963,6 +5540,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 592 + i32.const 720 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 784 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/string/String.UTF16.decodeUnsafe (param $buf i32) (param $len i32) (result i32) (local $str i32) (local $3 i32) @@ -5029,7 +5753,7 @@ i32.eqz if i32.const 0 - i32.const 752 + i32.const 2688 i32.const 770 i32.const 7 call $~lib/builtins/abort @@ -5228,4 +5952,66 @@ local.get $12 return ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/string-encoding/str + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 352 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 160 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2624 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1216 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2272 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/std/string-encoding.release.wat b/tests/compiler/std/string-encoding.release.wat index ce82f5fe09..32d38a7ae9 100644 --- a/tests/compiler/std/string-encoding.release.wat +++ b/tests/compiler/std/string-encoding.release.wat @@ -2,13 +2,12 @@ (type $0 (func (param i32 i32) (result i32))) (type $1 (func)) (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32) (result i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32) (result i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (type $8 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -20,55 +19,74 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 55572)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 57508)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02\00\00\00\0c\00\00\00\01\d87\dch\00i\00R\d8b\df") - (data $1 (i32.const 1068) "<") - (data $1.1 (i32.const 1080) "\02\00\00\00,\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00e\00n\00c\00o\00d\00i\00n\00g\00.\00t\00s") - (data $2 (i32.const 1132) "<") - (data $2.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $3 (i32.const 1196) "<") - (data $3.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $6 (i32.const 1324) "<") - (data $6.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $7 (i32.const 1388) ",") - (data $7.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $9 (i32.const 1468) "<") - (data $9.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $10 (i32.const 1532) "\1c") - (data $10.1 (i32.const 1544) "\02") - (data $11 (i32.const 1564) "\1c") - (data $11.1 (i32.const 1576) "\02\00\00\00\04\00\00\00\01\d87\dc") - (data $12 (i32.const 1596) "\1c") - (data $12.1 (i32.const 1608) "\02\00\00\00\02\00\00\00h") - (data $13 (i32.const 1628) "\1c") - (data $13.1 (i32.const 1640) "\02\00\00\00\04\00\00\00h\00i") - (data $14 (i32.const 1660) "\1c") - (data $14.1 (i32.const 1672) "\02\00\00\00\04\00\00\00R\d8b\df") - (data $15 (i32.const 1692) "<") - (data $15.1 (i32.const 1704) "\02\00\00\00$\00\00\00U\00n\00p\00a\00i\00r\00e\00d\00 \00s\00u\00r\00r\00o\00g\00a\00t\00e") - (data $16 (i32.const 1756) ",") - (data $16.1 (i32.const 1768) "\02\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data $17 (i32.const 1804) "L") - (data $17.1 (i32.const 1816) "\02\00\00\008\00\00\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a") - (data $18 (i32.const 1884) "\1c") - (data $18.1 (i32.const 1896) "\02\00\00\00\02\00\00\004\d8") - (data $19 (i32.const 1916) "\1c") - (data $19.1 (i32.const 1928) "\02\00\00\00\02\00\00\00\fd\ff") - (data $20 (i32.const 1948) "\1c") - (data $20.1 (i32.const 1960) "\02\00\00\00\02\00\00\00\1e\dd") - (data $21 (i32.const 1980) ",") - (data $21.1 (i32.const 1992) "\02\00\00\00\0e\00\00\001\002\003\00\00\004\005\006") - (data $22 (i32.const 2028) "\1c") - (data $22.1 (i32.const 2040) "\02\00\00\00\06\00\00\001\002\003") - (data $23 (i32.const 2060) "\1c") - (data $23.1 (i32.const 2072) "\02\00\00\00\08\00\00\00h\00i\00R\d8b\df") - (data $24 (i32.const 2092) "<3") - (data $24.1 (i32.const 2104) "\02\00\00\00*3\00\00M\00a\00t\00h\00e\00m\00a\00t\00i\00c\00s\00 \00a\00n\00d\00 \00S\00c\00i\00e\00n\00c\00e\00s\00:\00\n\00\n\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00,\00 \00\00\"x\00\08\"\1d!:\00 \00\08#x\00\t# \00=\00 \00\12\"\n#\12\"x\00\0b#,\00 \00\b1\03 \00\'\" \00\ac\00\b2\03 \00=\00 \00\ac\00(\00\ac\00\b1\03 \00(\" \00\b2\03)\00,\00\n\00\n\00\15! \00\86\" \00\15!\80 \00\82\" \00$! \00\82\" \00\1a! \00\82\" \00\1d! \00\82\" \00\02!,\00 \00\a5\" \00<\00 \00a\00 \00`\" \00b\00 \00a\" \00c\00 \00d\" \00d\00 \00j\" \00\a4\" \00\d2! \00(\00A\00 \00\d4! \00B\00)\00,\00\n\00\n\002\00H\00\82 \00+\00 \00O\00\82 \00\cc! \002\00H\00\82 O\00,\00 \00R\00 \00=\00 \004\00.\007\00 \00k\00\a9\03,\00 \00\00# \002\000\000\00 \00m\00m\00\n\00\n\00L\00i\00n\00g\00u\00i\00s\00t\00i\00c\00s\00 \00a\00n\00d\00 \00d\00i\00c\00t\00i\00o\00n\00a\00r\00i\00e\00s\00:\00\n\00\n\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\n\00Y\00 \00[\00\c8\02\8f\02p\00s\00i\00l\00T\02n\00]\00,\00 \00Y\00e\00n\00 \00[\00j\00[\02n\00]\00,\00 \00Y\00o\00g\00a\00 \00[\00\c8\02j\00o\00\d0\02g\00Q\02]\00\n\00\n\00A\00P\00L\00:\00\n\00\n\00(\00(\00V\00s#V\00)\00=\00s#t#V\00)\00/\00V\00\90!,\00V\00 \00 \00 \00 \007#\90!s#\92!t#\06\"\07\"\83\"> N#U#\08#\n\00\n\00N\00i\00c\00e\00r\00 \00t\00y\00p\00o\00g\00r\00a\00p\00h\00y\00 \00i\00n\00 \00p\00l\00a\00i\00n\00 \00t\00e\00x\00t\00 \00f\00i\00l\00e\00s\00:\00\n\00\n\00T%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%W%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\18 s\00i\00n\00g\00l\00e\00\19 \00a\00n\00d\00 \00\1c d\00o\00u\00b\00l\00e\00\1d \00q\00u\00o\00t\00e\00s\00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00C\00u\00r\00l\00y\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00s\00:\00 \00\1c W\00e\00\19 v\00e\00 \00b\00e\00e\00n\00 \00h\00e\00r\00e\00\1d \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00L\00a\00t\00i\00n\00-\001\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00 \00a\00n\00d\00 \00a\00c\00c\00e\00n\00t\00s\00:\00 \00\'\00\b4\00`\00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\1a d\00e\00u\00t\00s\00c\00h\00e\00\18 \00\1e A\00n\00f\00\fc\00h\00r\00u\00n\00g\00s\00z\00e\00i\00c\00h\00e\00n\00\1c \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00 ,\00 \00! ,\00 \000 ,\00 \00\" ,\00 \003\00\13 4\00,\00 \00\14 ,\00 \00\12\"5\00/\00+\005\00,\00 \00\"!,\00 \00& \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00A\00S\00C\00I\00I\00 \00s\00a\00f\00e\00t\00y\00 \00t\00e\00s\00t\00:\00 \001\00l\00I\00|\00,\00 \000\00O\00D\00,\00 \008\00B\00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00m%\00%\00%\00%\00%\00%\00%\00%\00%\00%n% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00t\00h\00e\00 \00e\00u\00r\00o\00 \00s\00y\00m\00b\00o\00l\00:\00 \00\02% \001\004\00.\009\005\00 \00\ac \00\02% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00p%\00%\00%\00%\00%\00%\00%\00%\00%\00%o% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Z%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%]%\n\00\n\00G\00r\00e\00e\00k\00 \00(\00i\00n\00 \00P\00o\00l\00y\00t\00o\00n\00i\00c\00)\00:\00\n\00\n\00T\00h\00e\00 \00G\00r\00e\00e\00k\00 \00a\00n\00t\00h\00e\00m\00:\00\n\00\n\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03y\1f\c8\03\b7\03\n\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03u\1f,\00\n\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03\n\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03w\1f\b1\03 \00\bc\03\b5\03\c4\03\c1\03q\1f\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\n\00\n\00\bf\1f\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03y\1f\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03s\1f\bd\03\b7\03\n\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03u\1f\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03q\1f\n\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03s\1f\bd\03\b7\03\n\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03q\1f!\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00s\00p\00e\00e\00c\00h\00 \00o\00f\00 \00D\00e\00m\00o\00s\00t\00h\00e\00n\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \004\00t\00h\00 \00c\00e\00n\00t\00u\00r\00y\00 \00B\00C\00:\00\n\00\n\00\9f\03P\1f\c7\03v\1f \00\c4\03\b1\03P\1f\c4\03p\1f \00\c0\03\b1\03\c1\03w\1f\c3\03\c4\03\b1\03\c4\03\b1\03w\1f \00\bc\03\bf\03\b9\03 \00\b3\03\b9\03\b3\03\bd\03}\1f\c3\03\ba\03\b5\03\b9\03\bd\03,\00 \00f\1f \00\04\1f\bd\03\b4\03\c1\03\b5\03\c2\03 \00\bf\1f\91\03\b8\03\b7\03\bd\03\b1\03\d6\1f\bf\03\b9\03,\00\n\00E\1f\c4\03\b1\03\bd\03 \00\c4\03\bf\1f \00\b5\030\1f\c2\03 \00\c4\03p\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\b1\03 \00\00\1f\c0\03\bf\03\b2\03\bb\03s\1f\c8\03\c9\03 \00\ba\03\b1\03v\1f \00E\1f\c4\03\b1\03\bd\03 \00\c0\03\c1\03x\1f\c2\03 \00\c4\03\bf\03z\1f\c2\03\n\00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\bf\03S\1f\c2\03 \00\00\1f\ba\03\bf\03{\1f\c9\03\87\03 \00\c4\03\bf\03z\1f\c2\03 \00\bc\03r\1f\bd\03 \00\b3\03p\1f\c1\03 \00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03 \00A\1f\c1\03\f6\1f \00\b3\03\b9\03\b3\03\bd\03\bf\03\bc\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\c4\03p\1f \00\b4\03r\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\bf\1f\n\00\b5\030\1f\c2\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\c0\03\c1\03\bf\03u\1f\ba\03\bf\03\bd\03\c4\03\b1\03,\00 \00 \00e\1f\c3\03\b8\03\bf\1f \00E\1f\c0\03\c9\03\c2\03 \00\bc\03t\1f \00\c0\03\b5\03\b9\03\c3\03y\1f\bc\03\b5\03\b8\03\bf\1f \00\b1\03P\1f\c4\03\bf\03v\1f\n\00\c0\03\c1\03y\1f\c4\03\b5\03\c1\03\bf\03\bd\03 \00\ba\03\b1\03\ba\03\f6\1f\c2\03 \00\c3\03\ba\03s\1f\c8\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\b4\03s\1f\bf\03\bd\03.\00 \00\bf\03P\1f\b4\03s\1f\bd\03 \00\bf\03V\1f\bd\03 \00\04\1f\bb\03\bb\03\bf\03 \00\bc\03\bf\03\b9\03 \00\b4\03\bf\03\ba\03\bf\03\e6\1f\c3\03\b9\03\bd\03\n\00\bf\031\1f \00\c4\03p\1f \00\c4\03\bf\03\b9\03\b1\03\e6\1f\c4\03\b1\03 \00\bb\03s\1f\b3\03\bf\03\bd\03\c4\03\b5\03\c2\03 \00\"\1f \00\c4\03t\1f\bd\03 \00Q\1f\c0\03y\1f\b8\03\b5\03\c3\03\b9\03\bd\03,\00 \00\c0\03\b5\03\c1\03v\1f \00\'\1f\c2\03 \00\b2\03\bf\03\c5\03\bb\03\b5\03{\1f\b5\03\c3\03\b8\03\b1\03\b9\03,\00\n\00\bf\03P\1f\c7\03v\1f \00\c4\03t\1f\bd\03 \00\bf\03V\1f\c3\03\b1\03\bd\03 \00\c0\03\b1\03\c1\03\b9\03\c3\03\c4\03q\1f\bd\03\c4\03\b5\03\c2\03 \00Q\1f\bc\03\d6\1f\bd\03 \00\01\1f\bc\03\b1\03\c1\03\c4\03q\1f\bd\03\b5\03\b9\03\bd\03.\00 \00\10\1f\b3\03|\1f \00\b4\03s\1f,\00 \00E\1f\c4\03\b9\03 \00\bc\03s\1f\bd\03\n\00\c0\03\bf\03\c4\03\bf\1f \00\10\1f\be\03\c6\1f\bd\03 \00\c4\03\c7\1f \00\c0\03y\1f\bb\03\b5\03\b9\03 \00\ba\03\b1\03v\1f \00\c4\03p\1f \00\b1\03Q\1f\c4\03\c6\1f\c2\03 \00\14\1f\c7\03\b5\03\b9\03\bd\03 \00\00\1f\c3\03\c6\03\b1\03\bb\03\f6\1f\c2\03 \00\ba\03\b1\03v\1f \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03,\00 \00\ba\03\b1\03v\1f \00\bc\03q\1f\bb\03\bf\1f \00\00\1f\ba\03\c1\03\b9\03\b2\03\f6\1f\c2\03 \00\bf\036\1f\b4\03\b1\03\87\03 \00\10\1f\c0\03\bf\1f \00\10\1f\bc\03\bf\03\e6\1f \00\b3\03q\1f\c1\03,\00 \00\bf\03P\1f \00\c0\03q\1f\bb\03\b1\03\b9\03\n\00\b3\03s\1f\b3\03\bf\03\bd\03\b5\03\bd\03 \00\c4\03\b1\03\e6\1f\c4\03\bf\1f \00\00\1f\bc\03\c6\03y\1f\c4\03\b5\03\c1\03\b1\03\87\03 \00\bd\03\e6\1f\bd\03 \00\bc\03s\1f\bd\03\c4\03\bf\03\b9\03 \00\c0\03s\1f\c0\03\b5\03\b9\03\c3\03\bc\03\b1\03\b9\03 \00\c4\03\bf\03\e6\1f\b8\03\bf\1f \001\1f\ba\03\b1\03\bd\03x\1f\bd\03\n\00\c0\03\c1\03\bf\03\bb\03\b1\03\b2\03\b5\03\d6\1f\bd\03 \00!\1f\bc\03\d6\1f\bd\03 \00\b5\036\1f\bd\03\b1\03\b9\03 \00\c4\03t\1f\bd\03 \00\c0\03\c1\03}\1f\c4\03\b7\03\bd\03,\00 \00E\1f\c0\03\c9\03\c2\03 \00\c4\03\bf\03z\1f\c2\03 \00\c3\03\c5\03\bc\03\bc\03q\1f\c7\03\bf\03\c5\03\c2\03\n\00\c3\03}\1f\c3\03\bf\03\bc\03\b5\03\bd\03.\00 \00\10\1fp\1f\bd\03 \00\b3\03p\1f\c1\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\b2\03\b5\03\b2\03\b1\03w\1f\c9\03\c2\03 \00Q\1f\c0\03q\1f\c1\03\be\03\c3\1f,\00 \00\c4\03y\1f\c4\03\b5\03 \00\ba\03\b1\03v\1f \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03w\1f\bd\03\b1\03 \00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b5\03\c4\03\b1\03w\1f \00\c4\03\b9\03\c2\03 \00\ba\03\b1\03v\1f \00C\1f\bd\03 \00\c4\03\c1\03y\1f\c0\03\bf\03\bd\03 \00\10\1f\be\03s\1f\c3\03\c4\03\b1\03\b9\03 \00\c3\03\ba\03\bf\03\c0\03\b5\03\d6\1f\bd\03\87\03 \00\c0\03\c1\03v\1f\bd\03 \00\b4\03r\1f\n\00\c4\03t\1f\bd\03 \00\00\1f\c1\03\c7\03t\1f\bd\03 \00@\1f\c1\03\b8\03\f6\1f\c2\03 \00Q\1f\c0\03\bf\03\b8\03s\1f\c3\03\b8\03\b1\03\b9\03,\00 \00\bc\03q\1f\c4\03\b1\03\b9\03\bf\03\bd\03 \00!\1f\b3\03\bf\03\e6\1f\bc\03\b1\03\b9\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\c6\1f\c2\03\n\00\c4\03\b5\03\bb\03\b5\03\c5\03\c4\03\c6\1f\c2\03 \00A\1f\bd\03\c4\03\b9\03\bd\03\bf\03\e6\1f\bd\03 \00\c0\03\bf\03\b9\03\b5\03\d6\1f\c3\03\b8\03\b1\03\b9\03 \00\bb\03y\1f\b3\03\bf\03\bd\03.\00\n\00\n\00\94\03\b7\03\bc\03\bf\03\c3\03\b8\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\93\03\fd\1f \00\bf\1f\9f\03\bb\03\c5\03\bd\03\b8\03\b9\03\b1\03\ba\03x\1f\c2\03\n\00\n\00G\00e\00o\00r\00g\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\d2\10\d7\10\ee\10\dd\10\d5\10\d7\10 \00\d0\10\ee\10\da\10\d0\10\d5\10\d4\10 \00\d2\10\d0\10\d8\10\d0\10\e0\10\dd\10\d7\10 \00\e0\10\d4\10\d2\10\d8\10\e1\10\e2\10\e0\10\d0\10\ea\10\d8\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\db\10\d4\10\d0\10\d7\10\d4\10 \00\e1\10\d0\10\d4\10\e0\10\d7\10\d0\10\e8\10\dd\10\e0\10\d8\10\e1\10\dd\10\n\00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10\d6\10\d4\10 \00\d3\10\d0\10\e1\10\d0\10\e1\10\ec\10\e0\10\d4\10\d1\10\d0\10\d3\10,\00 \00\e0\10\dd\10\db\10\d4\10\da\10\d8\10\ea\10 \00\d2\10\d0\10\d8\10\db\10\d0\10\e0\10\d7\10\d4\10\d1\10\d0\10 \001\000\00-\001\002\00 \00\db\10\d0\10\e0\10\e2\10\e1\10,\00\n\00\e5\10.\00 \00\db\10\d0\10\d8\10\dc\10\ea\10\e8\10\d8\10,\00 \00\d2\10\d4\10\e0\10\db\10\d0\10\dc\10\d8\10\d0\10\e8\10\d8\10.\00 \00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10 \00\e8\10\d4\10\f0\10\d9\10\e0\10\d4\10\d1\10\e1\10 \00\d4\10\e0\10\d7\10\d0\10\d3\10 \00\db\10\e1\10\dd\10\e4\10\da\10\d8\10\dd\10\e1\10\n\00\d4\10\e5\10\e1\10\de\10\d4\10\e0\10\e2\10\d4\10\d1\10\e1\10 \00\d8\10\e1\10\d4\10\d7\10 \00\d3\10\d0\10\e0\10\d2\10\d4\10\d1\10\e8\10\d8\10 \00\e0\10\dd\10\d2\10\dd\10\e0\10\d8\10\ea\10\d0\10\d0\10 \00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d4\10\e2\10\d8\10 \00\d3\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10,\00\n\00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d0\10\ea\10\d8\10\dd\10\dc\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10 \00\d3\10\d0\10 \00\da\10\dd\10\d9\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10,\00 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d0\10\n\00\dd\10\de\10\d4\10\e0\10\d0\10\ea\10\d8\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e1\10\d0\10,\00 \00\d3\10\d0\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d8\10\d7\10 \00\de\10\e0\10\dd\10\d2\10\e0\10\d0\10\db\10\d4\10\d1\10\e8\10\d8\10,\00 \00\e8\10\e0\10\d8\10\e4\10\e2\10\d4\10\d1\10\e8\10\d8\10,\00\n\00\e2\10\d4\10\e5\10\e1\10\e2\10\d4\10\d1\10\d8\10\e1\10 \00\d3\10\d0\10\db\10\e3\10\e8\10\d0\10\d5\10\d4\10\d1\10\d0\10\e1\10\d0\10 \00\d3\10\d0\10 \00\db\10\e0\10\d0\10\d5\10\d0\10\da\10\d4\10\dc\10\dd\10\d5\10\d0\10\dc\10 \00\d9\10\dd\10\db\10\de\10\d8\10\e3\10\e2\10\d4\10\e0\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e8\10\d8\10.\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\17\040\04@\045\043\048\04A\04B\04@\048\04@\04C\049\04B\045\04A\04L\04 \00A\045\049\04G\040\04A\04 \00=\040\04 \00\14\045\04A\04O\04B\04C\04N\04 \00\1c\045\046\044\04C\04=\040\04@\04>\044\04=\04C\04N\04 \00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04N\04 \00?\04>\04\n\00U\00n\00i\00c\00o\00d\00e\00,\00 \00:\04>\04B\04>\04@\040\04O\04 \00A\04>\04A\04B\04>\048\04B\04A\04O\04 \001\000\00-\001\002\00 \00<\040\04@\04B\040\04 \001\009\009\007\00 \003\04>\044\040\04 \002\04 \00\1c\040\049\04=\04F\045\04 \002\04 \00\13\045\04@\04<\040\04=\048\048\04.\00\n\00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04O\04 \00A\04>\041\045\04@\045\04B\04 \00H\048\04@\04>\04:\048\049\04 \00:\04@\04C\043\04 \00M\04:\04A\04?\045\04@\04B\04>\042\04 \00?\04>\04 \00 \002\04>\04?\04@\04>\04A\040\04<\04 \003\04;\04>\041\040\04;\04L\04=\04>\043\04>\04\n\00\18\04=\04B\045\04@\04=\045\04B\040\04 \008\04 \00U\00n\00i\00c\00o\00d\00e\00,\00 \00;\04>\04:\040\04;\048\047\040\04F\048\048\04 \008\04 \008\04=\04B\045\04@\04=\040\04F\048\04>\04=\040\04;\048\047\040\04F\048\048\04,\00 \002\04>\04?\04;\04>\04I\045\04=\048\04N\04 \008\04\n\00?\04@\048\04<\045\04=\045\04=\048\04N\04 \00U\00n\00i\00c\00o\00d\00e\00 \002\04 \00@\040\047\04;\048\04G\04=\04K\04E\04 \00>\04?\045\04@\040\04F\048\04>\04=\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04 \008\04 \00?\04@\04>\043\04@\040\04<\04<\04=\04K\04E\04\n\00?\04@\048\04;\04>\046\045\04=\048\04O\04E\04,\00 \00H\04@\048\04D\04B\040\04E\04,\00 \002\045\04@\04A\04B\04:\045\04 \008\04 \00<\04=\04>\043\04>\04O\047\04K\04G\04=\04K\04E\04 \00:\04>\04<\04?\04L\04N\04B\045\04@\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04.\00\n\00\n\00T\00h\00a\00i\00 \00(\00U\00C\00S\00 \00L\00e\00v\00e\00l\00 \002\00)\00:\00\n\00\n\00E\00x\00c\00e\00r\00p\00t\00 \00f\00r\00o\00m\00 \00a\00 \00p\00o\00e\00t\00r\00y\00 \00o\00n\00 \00T\00h\00e\00 \00R\00o\00m\00a\00n\00c\00e\00 \00o\00f\00 \00T\00h\00e\00 \00T\00h\00r\00e\00e\00 \00K\00i\00n\00g\00d\00o\00m\00s\00 \00(\00a\00 \00C\00h\00i\00n\00e\00s\00e\00\n\00c\00l\00a\00s\00s\00i\00c\00 \00\'\00S\00a\00n\00 \00G\00u\00a\00\'\00)\00:\00\n\00\n\00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00A\0e\1c\0eH\0e\19\0e\14\0e4\0e\19\0e.\0e1\0eH\0e\19\0e@\0e*\0e7\0eH\0e-\0e!\0eB\0e\17\0e#\0e!\0eA\0e*\0e\19\0e*\0e1\0e\07\0e@\0e\'\0e\n\0e \00 \00\1e\0e#\0e0\0e\1b\0e\01\0e@\0e\01\0e(\0e\01\0e-\0e\07\0e\1a\0e9\0eJ\0e\01\0e9\0eI\0e\02\0e6\0eI\0e\19\0eC\0e+\0e!\0eH\0e\n\00*\0e4\0e\1a\0e*\0e-\0e\07\0e\01\0e)\0e1\0e\15\0e#\0e4\0e\"\0eL\0e\01\0eH\0e-\0e\19\0e+\0e\19\0eI\0e2\0eA\0e%\0e\16\0e1\0e\14\0eD\0e\1b\0e \00 \00 \00 \00 \00 \00 \00*\0e-\0e\07\0e-\0e\07\0e\04\0eL\0eD\0e\0b\0e#\0eI\0eB\0e\07\0eH\0e@\0e\02\0e%\0e2\0e@\0e\1a\0e2\0e\1b\0e1\0e\r\0e\r\0e2\0e\n\00 \00 \00\17\0e#\0e\07\0e\19\0e1\0e\1a\0e\16\0e7\0e-\0e\02\0e1\0e\19\0e\17\0e5\0e@\0e\1b\0eG\0e\19\0e\17\0e5\0eH\0e\1e\0e6\0eH\0e\07\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\1a\0eI\0e2\0e\19\0e@\0e!\0e7\0e-\0e\07\0e\08\0e6\0e\07\0e\'\0e4\0e\1b\0e#\0e4\0e\15\0e@\0e\1b\0eG\0e\19\0e\19\0e1\0e\01\0e+\0e\19\0e2\0e\n\00B\0e.\0e\08\0e4\0eK\0e\19\0e@\0e#\0e5\0e\"\0e\01\0e\17\0e1\0e\1e\0e\17\0e1\0eH\0e\'\0e+\0e1\0e\'\0e@\0e!\0e7\0e-\0e\07\0e!\0e2\0e \00 \00 \00 \00 \00 \00 \00 \00 \00+\0e!\0e2\0e\"\0e\08\0e0\0e\06\0eH\0e2\0e!\0e\14\0e\n\0e1\0eH\0e\'\0e\15\0e1\0e\'\0e*\0e3\0e\04\0e1\0e\r\0e\n\00 \00 \00@\0e+\0e!\0e7\0e-\0e\19\0e\02\0e1\0e\1a\0eD\0e*\0eD\0e%\0eH\0e@\0e*\0e7\0e-\0e\08\0e2\0e\01\0e@\0e\04\0e+\0e2\0e \00 \00 \00 \00 \00 \00#\0e1\0e\1a\0e+\0e!\0e2\0e\1b\0eH\0e2\0e@\0e\02\0eI\0e2\0e!\0e2\0e@\0e%\0e\"\0e-\0e2\0e*\0e1\0e\r\0e\n\00\1d\0eH\0e2\0e\"\0e-\0eI\0e-\0e\07\0e-\0e8\0eI\0e\19\0e\"\0e8\0eA\0e\"\0e\01\0eC\0e+\0eI\0eA\0e\15\0e\01\0e\01\0e1\0e\19\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00C\0e\n\0eI\0e*\0e2\0e\'\0e\19\0e1\0eI\0e\19\0e@\0e\1b\0eG\0e\19\0e\n\0e\19\0e\'\0e\19\0e\n\0e7\0eH\0e\19\0e\n\0e\'\0e\19\0eC\0e\08\0e\n\00 \00 \00\1e\0e%\0e1\0e\19\0e%\0e4\0e\t\0e8\0e\"\0e\01\0e8\0e\"\0e\01\0e5\0e\01\0e%\0e1\0e\1a\0e\01\0eH\0e-\0e@\0e+\0e\15\0e8\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\n\0eH\0e2\0e\07\0e-\0e2\0e@\0e\1e\0e(\0e\08\0e#\0e4\0e\07\0e+\0e\19\0e2\0e\1f\0eI\0e2\0e#\0eI\0e-\0e\07\0eD\0e+\0eI\0e\n\00\15\0eI\0e-\0e\07\0e#\0e\1a\0e#\0e2\0e\06\0eH\0e2\0e\1f\0e1\0e\19\0e\08\0e\19\0e\1a\0e#\0e#\0e%\0e1\0e\"\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00$\0eE\0e+\0e2\0eC\0e\04\0e#\0e\04\0eI\0e3\0e\n\0e9\0e\01\0e9\0eI\0e\1a\0e#\0e#\0e%\0e1\0e\07\0e\01\0eL\0e \00/\0e\n\00\n\00(\00T\00h\00e\00 \00a\00b\00o\00v\00e\00 \00i\00s\00 \00a\00 \00t\00w\00o\00-\00c\00o\00l\00u\00m\00n\00 \00t\00e\00x\00t\00.\00 \00I\00f\00 \00c\00o\00m\00b\00i\00n\00i\00n\00g\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00s\00 \00a\00r\00e\00 \00h\00a\00n\00d\00l\00e\00d\00\n\00c\00o\00r\00r\00e\00c\00t\00l\00y\00,\00 \00t\00h\00e\00 \00l\00i\00n\00e\00s\00 \00o\00f\00 \00t\00h\00e\00 \00s\00e\00c\00o\00n\00d\00 \00c\00o\00l\00u\00m\00n\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00a\00l\00i\00g\00n\00e\00d\00 \00w\00i\00t\00h\00 \00t\00h\00e\00\n\00|\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00a\00b\00o\00v\00e\00.\00)\00\n\00\n\00E\00t\00h\00i\00o\00p\00i\00a\00n\00:\00\n\00\n\00P\00r\00o\00v\00e\00r\00b\00s\00 \00i\00n\00 \00t\00h\00e\00 \00A\00m\00h\00a\00r\00i\00c\00 \00l\00a\00n\00g\00u\00a\00g\00e\00:\00\n\00\n\000\12\1b\12\ed\12 \00\a0\12\ed\12s\12(\125\12 \00\95\12\t\13%\12 \00\a0\12\ed\12\a8\120\125\12b\13\n\00e\12\0b\12 \00\ab\12\08\12\9d\12 \00\a5\12\95\12\f0\12\a0\12c\12t\12 \00`\12F\12\18\12 \13\9d\12b\13\n\00\0c\13%\13 \00\eb\12\08\12d\12q\12 \00A\12\1d\12%\13\93\12 \00\90\12\cd\12b\13\n\00\f0\12\00\12 \00`\12\15\12\r\12\19\12 \00E\12d\12 \00c\12\ed\12 \13#\13 \00\95\12#\13u\12 \00`\12\08\13\f0\12\08\12\cd\12b\13\n\00\e8\12\a0\12M\13 \00\c8\12\08\12\1d\12s\12 \00`\12E\12d\12 \00\a0\12\ed\12s\12=\12\1d\12b\13\n\00\a0\12\ed\12%\13 \00`\12`\12\0b\12 \00\f3\12\cb\12 \00p\12\18\12s\12b\13\n\002\12p\12(\12\t\13\19\12 \00\ed\12\f0\12(\12\r\13\19\12b\13\n\00@\125\12 \00`\12@\125\12e\13 \00\d5\12\95\12A\12\0b\12\r\12 \00`\12\a5\12\r\13)\12 \00\ed\12\04\12\f3\12\r\12b\13\n\00\f5\12-\12 \00b\12\eb\12e\12-\12 \00\a0\12\95\12`\123\12 \00\eb\125\12-\12b\13\n\000\12\cd\12 \00\a5\12\95\12\f0\12d\12q\12 \00\a5\12\95\12\05\13 \00\a5\12\95\12\f0\12 \00\t\13(\12d\12q\12 \00\a0\12\ed\12p\12\f3\12\f0\12-\12\1d\12b\13\n\00\a5\12\r\13\dc\12-\12 \00\e8\12\a8\12H\13p\12\cd\12\95\12 \00\t\13.\12.\12 \003\12\ed\12\d8\12\0b\13\cd\12 \00\a0\12\ed\12\f5\12-\12\1d\12b\13\n\00\e8\12\0e\13(\12d\12u\12 \00\0c\12c\12e\13 \00b\12\eb\12\e9\12u\12 \00\ed\125\12E\12 \00c\12\eb\12\e9\12u\12 \00\eb\12 \13\r\12E\12b\13\n\00%\12+\12 \00\a8\12\18\12M\13s\12u\12 \00\r\12\04\13\95\12 \00\0b\12K\13s\12u\12b\13\n\00\d3\12c\12\ed\12 \00\1b\12\f0\12*\12\eb\12 \00\e8\12\08\12\cd\12e\13 \00\r\13\95\12\f5\12 \00\ed\12\de\12 \00\ed\12\de\12+\12\r\12b\13\n\00\e8\12\a5\125\12\0b\12\1d\12 \00\a0\12\08\13)\12 \00\18\12\ab\12 \00\e8\12\a0\12\1e\12+\12 \00\a0\12\08\13)\12 \00\cb\12-\12\ab\12b\13\n\00p\12\95\12\0b\13\0e\12 \00b\12p\12I\13 \00p\12\18\12\r\126\12 \00c\12I\13b\13\n\00\c8\12\f3\12\05\13\05\12 \00\1b\12-\12 \00b\12\06\12\95\12 \00(\13-\125\12\05\12 \00\a0\12u\12\0b\120\12\cd\12b\13\n\00\a5\12\r\13-\12\05\12\95\12 \00`\12M\13+\12=\12\05\12 \00\r\12\ad\12 \00\d8\12-\12\0b\13b\13\n\00\n\00R\00u\00n\00e\00s\00:\00\n\00\n\00\bb\16\d6\16 \00\b3\16\b9\16\ab\16\a6\16 \00\a6\16\ab\16\cf\16 \00\bb\16\d6\16 \00\d2\16\a2\16\de\16\d6\16 \00\a9\16\be\16 \00\a6\16\ab\16\d7\16 \00\da\16\aa\16\be\16\de\16\d6\16 \00\be\16\a9\16\b1\16\a6\16\b9\16\d6\16\aa\16\b1\16\de\16\a2\16\d7\16 \00\b9\16\c1\16\a6\16 \00\a6\16\aa\16 \00\b9\16\d6\16\e5\16\ab\16\n\00\n\00(\00O\00l\00d\00 \00E\00n\00g\00l\00i\00s\00h\00,\00 \00w\00h\00i\00c\00h\00 \00t\00r\00a\00n\00s\00c\00r\00i\00b\00e\00d\00 \00i\00n\00t\00o\00 \00L\00a\00t\00i\00n\00 \00r\00e\00a\00d\00s\00 \00\'\00H\00e\00 \00c\00w\00a\00e\00t\00h\00 \00t\00h\00a\00t\00 \00h\00e\00\n\00b\00u\00d\00e\00 \00t\00h\00a\00e\00m\00 \00l\00a\00n\00d\00e\00 \00n\00o\00r\00t\00h\00w\00e\00a\00r\00d\00u\00m\00 \00w\00i\00t\00h\00 \00t\00h\00a\00 \00W\00e\00s\00t\00s\00a\00e\00.\00\'\00 \00a\00n\00d\00 \00m\00e\00a\00n\00s\00 \00\'\00H\00e\00 \00s\00a\00i\00d\00\n\00t\00h\00a\00t\00 \00h\00e\00 \00l\00i\00v\00e\00d\00 \00i\00n\00 \00t\00h\00e\00 \00n\00o\00r\00t\00h\00e\00r\00n\00 \00l\00a\00n\00d\00 \00n\00e\00a\00r\00 \00t\00h\00e\00 \00W\00e\00s\00t\00e\00r\00n\00 \00S\00e\00a\00.\00\'\00)\00\n\00\n\00B\00r\00a\00i\00l\00l\00e\00:\00\n\00\n\00L(\01(\'(\11( \00<(\01(\12( \00 \00M(\1c(\07(\11(9(0(\0e( \00c(\15(\0c(\n\00\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\19(\11(\01(\19(\12( \00\1e(\15( \00\03(\11(\1b(\14( \00:(\n(9(2( \00y(;(\11( \00\n(\0e( \00\1d(\15( \00\19(3(\03(\1e(\n\001(\01(\1e(\11(\'(;( \00\01(\03(3(\1e( \009(\01(\1e(2( \00y(\11( \00\17(\11(\1b(\n(\0c(;( \00\15(\0b( \00\19(\n(\0e( \00\03(%(\17(\n(\01(\07( \00:(\01(\0e(\n\00\0e(\n(\1b(\1d(+( \00\03(9( \009(\11( \00\n(\07(;(\1b(9(\r(\01(\1d(\02( \009(\11( \00\n(\07(;(\05(\02( \009(\11( \00%(\1d(\19(;(\1e(\01(\05(;(\02(\n\00\01(\1d(\19( \009(\11( \00!(\n(\11(\0b( \00\r(3(\17(\1d(;(2( \00N(\n(\17(\15(\15(\1b(\11( \00\0e(\n(\1b(\1d(+( \00\n(\1e(2( \00A(\1d(\19(\n\00N(\n(\17(\15(\15(\1b(\11(0(\0e( \00\1d(\01(\r(\11( \00:(\01(\0e( \00\1b(\15(\15(\19( \00%(\0f(\15(\1d( \000(a(\01(\1d(\1b(\11(\02( \00\0b(\15(\17( \00\01(\1d(9(9(\14(\1b( \00\19(\11(\n\00!(\15(\0e(\11( \00\1e(\15( \00\0f(%(\1e( \00\19(\n(\0e( \00\19(\01(\1d(\19( \00\1e(\15(2(\n\00\n\00U(\07(\19( \00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00M(\14(\19(\16( \00J( \00\19(\15(\1d(0(\1e( \00\r(\11(\01(\1d( \00\1e(\15( \00\0e(\01(9( \009(\01(\1e( \00J( \00\05(\1d(*(\02( \00\15(\0b( \00\r(9(\n\00*(\1d( \00\05(\1d(*(\07(+(\1b(\11(\02( \001(\01(\1e( \009(;(\11( \00\n(\0e( \00\0f(\1c(\1e(\n(\n(%(\07(\1c(\07(9( \00\19(\11(\01(\19( \00\01(\03(3(\1e(\n\00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2( \00J( \00\r(\n(#(\1e( \00\19(\01(\'(\11( \00\03(\11(2( \00\14(\n(\07(\14(+(\02( \00\r(9(\0e(\11(\07(\0b(\02( \00\1e(\15(\n\00\17(\11(\1b(\1c(\19( \00\01( \00\n(\15(\0b(\0b(\14($(\1d(\01(\n(\07( \00\01(\0e( \009(\11( \00\19(\11(\01(\19(\11(\0c( \00\0f(\n(\11(\n(\11( \00\15(\0b( \00\n(\17(\15(\1d(\r(\15(\1d(\1b(;(9(\n\00\14( \009(\11( \00\1e(\17(\01(\19(\11(2( \00C(%(\1e( \009(\11( \00:(\n(\0e(\19(\15(\r( \00\15(\0b( \003(\17( \00\01(\1d(\n(\11(\0c(\15(\17(\0e(\n\00\n(\0e( \00\14( \009(\11( \00\0e(\n(\r(\n(\07(\11(\06( \00\01(\1d(\19( \00\r(9( \00%(\1d(\19(\01(\07(\07(*(+( \00\19(\01(\1d(\19(\0e(\n\00)(\01(\07(\07( \00\1d(\15(\1e( \00\19(\n(\0c(%(\17(\03( \00\n(\1e(\02( \00\15(\17( \009(\11( \00J(3(\1d(\1e(\17(9(0(\0e( \00\19(\15(\1d(\11( \00\0b(\15(\17(2( \00y(3(\n\00:(\n(\07(\07( \009(;(\11(\0b(\15(\17(\11( \00\0f(;(\r(\n(\1e( \00\r(\11( \00\1e(\15( \00\17(\11(\0f(\11(\01(\1e(\02( \00\11(\r(\0f(\19(\01(\1e(\n(\n(\01(\07(\07(9(\02( \009(\01(\1e(\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00(\00T\00h\00e\00 \00f\00i\00r\00s\00t\00 \00c\00o\00u\00p\00l\00e\00 \00o\00f\00 \00p\00a\00r\00a\00g\00r\00a\00p\00h\00s\00 \00o\00f\00 \00\"\00A\00 \00C\00h\00r\00i\00s\00t\00m\00a\00s\00 \00C\00a\00r\00o\00l\00\"\00 \00b\00y\00 \00D\00i\00c\00k\00e\00n\00s\00)\00\n\00\n\00C\00o\00m\00p\00a\00c\00t\00 \00f\00o\00n\00t\00 \00s\00e\00l\00e\00c\00t\00i\00o\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00t\00e\00x\00t\00:\00\n\00\n\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00\n\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\n\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\n\00\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\n\00\n\00G\00r\00e\00e\00t\00i\00n\00g\00s\00 \00i\00n\00 \00v\00a\00r\00i\00o\00u\00s\00 \00l\00a\00n\00g\00u\00a\00g\00e\00s\00:\00\n\00\n\00H\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00,\00 \00\9a\03\b1\03\bb\03\b7\03\bc\03s\1f\c1\03\b1\03 \00\ba\03y\1f\c3\03\bc\03\b5\03,\00 \00\b30\f30\cb0\c10\cf0\n\00\n\00B\00o\00x\00 \00d\00r\00a\00w\00i\00n\00g\00 \00a\00l\00i\00g\00n\00m\00e\00n\00t\00 \00t\00e\00s\00t\00s\00:\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\88%\n\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\89%\n\00T%P%P%f%P%P%W% \00 \00\0c%\00%\00%,%\00%\00%\10% \00 \00m%\00%\00%,%\00%\00%n% \00 \00m%\00%\00%,%\00%\00%n% \00 \00\0f%\01%\01%3%\01%\01%\13% \00 \00\0e%\12%\0f%\11% \00 \00 \00w% \00 \00{% \00\0f%/%\13% \00\0c%0%\10% \00 \00 \00 \00\8a% \00q%r%q%r%s%s%s%\n\00Q%\0c%\00%h%\00%\10%Q% \00 \00\02%T%P%g%P%W%\02% \00 \00\02%R%P%j%P%U%\02% \00 \00\02%S%\00%A%\00%V%\02% \00 \00\03%\0c%\00%B%\00%\10%\03% \00 \00\17%C%D%\19% \00 \00v%<%t%z%K%x% %<%(% \00\1d%K%%% \00 \00 \00 \00\8b% \00r%q%r%q%s%s%s%\n\00Q%\02%r% \00q%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00\7f% \00\02%\03% \00 \00\r%E%F%\13% \00 \00 \00u% \00 \00y% \00\17%7%\1b% \00\14%8%\18% \00 \00 \00 \00\8c% \00q%r%q%r%s%s%s%\n\00`%a% \00s% \00^%c% \00 \00\1c%b% \00 \00 \00_%$% \00 \00\1c%<%\00%<%\00%<%$% \00 \00\1c%k%\00%B%\00%k%$% \00 \00#%?%~%<%|%?%+% \00 \00\15%\1b%\16%\1a% \00 \00 \00 \00 \00\0c%\04%\04%\10% \00N% \00\0f%\05%\05%\13% \00\0b% \00\8d% \00r%q%r%q%s%s%s%\n\00Q%\02%q% \00r%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00}% \00\02%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8e%\n\00Q%\14%\00%e%\00%\18%Q% \00 \00\02%Z%P%d%P%]%\02% \00 \00\02%X%P%j%P%[%\02% \00 \00\02%Y%\00%@%\00%\\%\02% \00 \00\03%\14%\00%B%\00%\18%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8f%\n\00Z%P%P%i%P%P%]% \00 \00\14%\00%\00%4%\00%\00%\18% \00 \00p%\00%\00%4%\00%\00%o% \00 \00p%\00%\00%4%\00%\00%o% \00 \00\17%\01%\01%;%\01%\01%\1b% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\14%L%L%\18% \00N% \00\17%M%M%\1b% \00\0b% \00 \00\81%\82%\83%\84%\85%\86%\87%\88%\n") - (data $25 (i32.const 15212) "\8c\1d") - (data $25.1 (i32.const 15224) "\02\00\00\00p\1d\00\00S\00e\00n\00t\00e\00n\00c\00e\00s\00 \00t\00h\00a\00t\00 \00c\00o\00n\00t\00a\00i\00n\00 \00a\00l\00l\00 \00l\00e\00t\00t\00e\00r\00s\00 \00c\00o\00m\00m\00o\00n\00l\00y\00 \00u\00s\00e\00d\00 \00i\00n\00 \00a\00 \00l\00a\00n\00g\00u\00a\00g\00e\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00M\00a\00r\00k\00u\00s\00 \00K\00u\00h\00n\00 \00<\00h\00t\00t\00p\00:\00/\00/\00w\00w\00w\00.\00c\00l\00.\00c\00a\00m\00.\00a\00c\00.\00u\00k\00/\00~\00m\00g\00k\002\005\00/\00>\00 \00-\00-\00 \002\000\001\002\00-\000\004\00-\001\001\00\n\00\n\00T\00h\00i\00s\00 \00i\00s\00 \00a\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00o\00f\00 \00a\00 \00p\00l\00a\00i\00n\00-\00t\00e\00x\00t\00 \00f\00i\00l\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00i\00n\00 \00U\00T\00F\00-\008\00.\00\n\00\n\00\n\00D\00a\00n\00i\00s\00h\00 \00(\00d\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00Q\00u\00i\00z\00d\00e\00l\00t\00a\00g\00e\00r\00n\00e\00 \00s\00p\00i\00s\00t\00e\00 \00j\00o\00r\00d\00b\00\e6\00r\00 \00m\00e\00d\00 \00f\00l\00\f8\00d\00e\00,\00 \00m\00e\00n\00s\00 \00c\00i\00r\00k\00u\00s\00k\00l\00o\00v\00n\00e\00n\00\n\00 \00 \00W\00o\00l\00t\00h\00e\00r\00 \00s\00p\00i\00l\00l\00e\00d\00e\00 \00p\00\e5\00 \00x\00y\00l\00o\00f\00o\00n\00.\00\n\00 \00 \00(\00=\00 \00Q\00u\00i\00z\00 \00c\00o\00n\00t\00e\00s\00t\00a\00n\00t\00s\00 \00w\00e\00r\00e\00 \00e\00a\00t\00i\00n\00g\00 \00s\00t\00r\00a\00w\00b\00e\00r\00y\00 \00w\00i\00t\00h\00 \00c\00r\00e\00a\00m\00 \00w\00h\00i\00l\00e\00 \00W\00o\00l\00t\00h\00e\00r\00\n\00 \00 \00t\00h\00e\00 \00c\00i\00r\00c\00u\00s\00 \00c\00l\00o\00w\00n\00 \00p\00l\00a\00y\00e\00d\00 \00o\00n\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00.\00)\00\n\00\n\00G\00e\00r\00m\00a\00n\00 \00(\00d\00e\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00F\00a\00l\00s\00c\00h\00e\00s\00 \00\dc\00b\00e\00n\00 \00v\00o\00n\00 \00X\00y\00l\00o\00p\00h\00o\00n\00m\00u\00s\00i\00k\00 \00q\00u\00\e4\00l\00t\00 \00j\00e\00d\00e\00n\00 \00g\00r\00\f6\00\df\00e\00r\00e\00n\00 \00Z\00w\00e\00r\00g\00\n\00 \00 \00(\00=\00 \00W\00r\00o\00n\00g\00f\00u\00l\00 \00p\00r\00a\00c\00t\00i\00c\00i\00n\00g\00 \00o\00f\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00 \00m\00u\00s\00i\00c\00 \00t\00o\00r\00t\00u\00r\00e\00s\00 \00e\00v\00e\00r\00y\00 \00l\00a\00r\00g\00e\00r\00 \00d\00w\00a\00r\00f\00)\00\n\00\n\00 \00 \00Z\00w\00\f6\00l\00f\00 \00B\00o\00x\00k\00\e4\00m\00p\00f\00e\00r\00 \00j\00a\00g\00t\00e\00n\00 \00E\00v\00a\00 \00q\00u\00e\00r\00 \00\fc\00b\00e\00r\00 \00d\00e\00n\00 \00S\00y\00l\00t\00e\00r\00 \00D\00e\00i\00c\00h\00\n\00 \00 \00(\00=\00 \00T\00w\00e\00l\00v\00e\00 \00b\00o\00x\00i\00n\00g\00 \00f\00i\00g\00h\00t\00e\00r\00s\00 \00h\00u\00n\00t\00e\00d\00 \00E\00v\00a\00 \00a\00c\00r\00o\00s\00s\00 \00t\00h\00e\00 \00d\00i\00k\00e\00 \00o\00f\00 \00S\00y\00l\00t\00)\00\n\00\n\00 \00 \00H\00e\00i\00z\00\f6\00l\00r\00\fc\00c\00k\00s\00t\00o\00\df\00a\00b\00d\00\e4\00m\00p\00f\00u\00n\00g\00\n\00 \00 \00(\00=\00 \00f\00u\00e\00l\00 \00o\00i\00l\00 \00r\00e\00c\00o\00i\00l\00 \00a\00b\00s\00o\00r\00b\00e\00r\00)\00\n\00 \00 \00(\00j\00q\00v\00w\00x\00y\00 \00m\00i\00s\00s\00i\00n\00g\00,\00 \00b\00u\00t\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00i\00n\00 \00o\00n\00e\00 \00w\00o\00r\00d\00)\00\n\00\n\00G\00r\00e\00e\00k\00 \00(\00e\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\93\03\b1\03\b6\03\ad\03\b5\03\c2\03 \00\ba\03\b1\03v\1f \00\bc\03\c5\03\c1\03\c4\03\b9\03r\1f\c2\03 \00\b4\03r\1f\bd\03 \00\b8\03p\1f \00\b2\03\c1\03\f6\1f \00\c0\03\b9\03p\1f \00\c3\03\c4\03x\1f \00\c7\03\c1\03\c5\03\c3\03\b1\03\c6\03v\1f \00\be\03\ad\03\c6\03\c9\03\c4\03\bf\03\n\00 \00 \00(\00=\00 \00N\00o\00 \00m\00o\00r\00e\00 \00s\00h\00a\00l\00l\00 \00I\00 \00s\00e\00e\00 \00a\00c\00a\00c\00i\00a\00s\00 \00o\00r\00 \00m\00y\00r\00t\00l\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \00g\00o\00l\00d\00e\00n\00 \00c\00l\00e\00a\00r\00i\00n\00g\00)\00\n\00\n\00 \00 \00\9e\03\b5\03\c3\03\ba\03\b5\03\c0\03\ac\03\b6\03\c9\03 \00\c4\03t\1f\bd\03 \00\c8\03\c5\03\c7\03\bf\03\c6\03\b8\03\cc\03\c1\03\b1\03 \00\b2\03\b4\03\b5\03\bb\03\c5\03\b3\03\bc\03\af\03\b1\03\n\00 \00 \00(\00=\00 \00I\00 \00u\00n\00c\00o\00v\00e\00r\00 \00t\00h\00e\00 \00s\00o\00u\00l\00-\00d\00e\00s\00t\00r\00o\00y\00i\00n\00g\00 \00a\00b\00h\00o\00r\00r\00e\00n\00c\00e\00)\00\n\00\n\00E\00n\00g\00l\00i\00s\00h\00 \00(\00e\00n\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00T\00h\00e\00 \00q\00u\00i\00c\00k\00 \00b\00r\00o\00w\00n\00 \00f\00o\00x\00 \00j\00u\00m\00p\00s\00 \00o\00v\00e\00r\00 \00t\00h\00e\00 \00l\00a\00z\00y\00 \00d\00o\00g\00\n\00\n\00S\00p\00a\00n\00i\00s\00h\00 \00(\00e\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00E\00l\00 \00p\00i\00n\00g\00\fc\00i\00n\00o\00 \00W\00e\00n\00c\00e\00s\00l\00a\00o\00 \00h\00i\00z\00o\00 \00k\00i\00l\00\f3\00m\00e\00t\00r\00o\00s\00 \00b\00a\00j\00o\00 \00e\00x\00h\00a\00u\00s\00t\00i\00v\00a\00 \00l\00l\00u\00v\00i\00a\00 \00y\00\n\00 \00 \00f\00r\00\ed\00o\00,\00 \00a\00\f1\00o\00r\00a\00b\00a\00 \00a\00 \00s\00u\00 \00q\00u\00e\00r\00i\00d\00o\00 \00c\00a\00c\00h\00o\00r\00r\00o\00.\00\n\00 \00 \00(\00C\00o\00n\00t\00a\00i\00n\00s\00 \00e\00v\00e\00r\00y\00 \00l\00e\00t\00t\00e\00r\00 \00a\00n\00d\00 \00e\00v\00e\00r\00y\00 \00a\00c\00c\00e\00n\00t\00,\00 \00b\00u\00t\00 \00n\00o\00t\00 \00e\00v\00e\00r\00y\00 \00c\00o\00m\00b\00i\00n\00a\00t\00i\00o\00n\00\n\00 \00 \00o\00f\00 \00v\00o\00w\00e\00l\00 \00+\00 \00a\00c\00u\00t\00e\00.\00)\00\n\00\n\00F\00r\00e\00n\00c\00h\00 \00(\00f\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00o\00r\00t\00e\00z\00 \00c\00e\00 \00v\00i\00e\00u\00x\00 \00w\00h\00i\00s\00k\00y\00 \00a\00u\00 \00j\00u\00g\00e\00 \00b\00l\00o\00n\00d\00 \00q\00u\00i\00 \00f\00u\00m\00e\00 \00s\00u\00r\00 \00s\00o\00n\00 \00\ee\00l\00e\00 \00i\00n\00t\00\e9\00r\00i\00e\00u\00r\00e\00,\00 \00\e0\00\n\00 \00 \00c\00\f4\00t\00\e9\00 \00d\00e\00 \00l\00\'\00a\00l\00c\00\f4\00v\00e\00 \00o\00v\00o\00\ef\00d\00e\00,\00 \00o\00\f9\00 \00l\00e\00s\00 \00b\00\fb\00c\00h\00e\00s\00 \00s\00e\00 \00c\00o\00n\00s\00u\00m\00e\00n\00t\00 \00d\00a\00n\00s\00 \00l\00\'\00\e2\00t\00r\00e\00,\00 \00c\00e\00\n\00 \00 \00q\00u\00i\00 \00l\00u\00i\00 \00p\00e\00r\00m\00e\00t\00 \00d\00e\00 \00p\00e\00n\00s\00e\00r\00 \00\e0\00 \00l\00a\00 \00c\00\e6\00n\00o\00g\00e\00n\00\e8\00s\00e\00 \00d\00e\00 \00l\00\'\00\ea\00t\00r\00e\00 \00d\00o\00n\00t\00 \00i\00l\00 \00e\00s\00t\00 \00q\00u\00e\00s\00t\00i\00o\00n\00\n\00 \00 \00d\00a\00n\00s\00 \00l\00a\00 \00c\00a\00u\00s\00e\00 \00a\00m\00b\00i\00g\00u\00\eb\00 \00e\00n\00t\00e\00n\00d\00u\00e\00 \00\e0\00 \00M\00o\00\ff\00,\00 \00d\00a\00n\00s\00 \00u\00n\00 \00c\00a\00p\00h\00a\00r\00n\00a\00\fc\00m\00 \00q\00u\00i\00,\00\n\00 \00 \00p\00e\00n\00s\00e\00-\00t\00-\00i\00l\00,\00 \00d\00i\00m\00i\00n\00u\00e\00 \00\e7\00\e0\00 \00e\00t\00 \00l\00\e0\00 \00l\00a\00 \00q\00u\00a\00l\00i\00t\00\e9\00 \00d\00e\00 \00s\00o\00n\00 \00S\01u\00v\00r\00e\00.\00\n\00\n\00 \00 \00l\00\'\00\ee\00l\00e\00 \00e\00x\00i\00g\00u\00\eb\00\n\00 \00 \00O\00\f9\00 \00l\00\'\00o\00b\00\e8\00s\00e\00 \00j\00u\00r\00y\00 \00m\00\fb\00r\00\n\00 \00 \00F\00\ea\00t\00e\00 \00l\00\'\00h\00a\00\ef\00 \00v\00o\00l\00a\00p\00\fc\00k\00,\00\n\00 \00 \00\c2\00n\00e\00 \00e\00x\00 \00a\00\e9\00q\00u\00o\00 \00a\00u\00 \00w\00h\00i\00s\00t\00,\00\n\00 \00 \00\d4\00t\00e\00z\00 \00c\00e\00 \00v\00S\01u\00 \00d\00\e9\00\e7\00u\00.\00\n\00\n\00 \00 \00L\00e\00 \00c\00S\01u\00r\00 \00d\00\e9\00\e7\00u\00 \00m\00a\00i\00s\00 \00l\00\'\00\e2\00m\00e\00 \00p\00l\00u\00t\00\f4\00t\00 \00n\00a\00\ef\00v\00e\00,\00 \00L\00o\00u\00\ff\00s\00 \00r\00\ea\00v\00a\00 \00d\00e\00 \00c\00r\00a\00p\00a\00\fc\00t\00e\00r\00 \00e\00n\00\n\00 \00 \00c\00a\00n\00o\00\eb\00 \00a\00u\00 \00d\00e\00l\00\e0\00 \00d\00e\00s\00 \00\ee\00l\00e\00s\00,\00 \00p\00r\00\e8\00s\00 \00d\00u\00 \00m\00\e4\00l\00s\00t\00r\00\f6\00m\00 \00o\00\f9\00 \00b\00r\00\fb\00l\00e\00n\00t\00 \00l\00e\00s\00 \00n\00o\00v\00\e6\00.\00\n\00\n\00I\00r\00i\00s\00h\00 \00G\00a\00e\00l\00i\00c\00 \00(\00g\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00D\00\'\00f\00h\00u\00a\00s\00c\00a\00i\00l\00 \00\cd\00o\00s\00a\00,\00 \00\da\00r\00m\00h\00a\00c\00 \00n\00a\00 \00h\00\d3\00i\00g\00h\00e\00 \00B\00e\00a\00n\00n\00a\00i\00t\00h\00e\00,\00 \00p\00\f3\00r\00 \00\c9\00a\00v\00a\00 \00a\00g\00u\00s\00 \00\c1\00d\00h\00a\00i\00m\00h\00\n\00\n\00H\00u\00n\00g\00a\00r\00i\00a\00n\00 \00(\00h\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c1\00r\00v\00\ed\00z\00t\00q\01r\00Q\01 \00t\00\fc\00k\00\f6\00r\00f\00\fa\00r\00\f3\00g\00\e9\00p\00\n\00 \00 \00(\00=\00 \00f\00l\00o\00o\00d\00-\00p\00r\00o\00o\00f\00 \00m\00i\00r\00r\00o\00r\00-\00d\00r\00i\00l\00l\00i\00n\00g\00 \00m\00a\00c\00h\00i\00n\00e\00,\00 \00o\00n\00l\00y\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00)\00\n\00\n\00I\00c\00e\00l\00a\00n\00d\00i\00c\00 \00(\00i\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00K\00\e6\00m\00i\00 \00n\00\fd\00 \00\f6\00x\00i\00 \00h\00\e9\00r\00 \00y\00k\00i\00s\00t\00 \00\fe\00j\00\f3\00f\00u\00m\00 \00n\00\fa\00 \00b\00\e6\00\f0\00i\00 \00v\00\ed\00l\00 \00o\00g\00 \00\e1\00d\00r\00e\00p\00a\00\n\00\n\00 \00 \00S\00\e6\00v\00\f6\00r\00 \00g\00r\00\e9\00t\00 \00\e1\00\f0\00a\00n\00 \00\fe\00v\00\ed\00 \00\fa\00l\00p\00a\00n\00 \00v\00a\00r\00 \00\f3\00n\00\fd\00t\00\n\00 \00 \00(\00s\00o\00m\00e\00 \00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00m\00i\00s\00s\00i\00n\00g\00)\00\n\00\n\00J\00a\00p\00a\00n\00e\00s\00e\00 \00(\00j\00p\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00H\00i\00r\00a\00g\00a\00n\00a\00:\00 \00(\00I\00r\00o\00h\00a\00)\00\n\00\n\00 \00 \00D0\8d0o0k0{0x0h0a0\8a0l0\8b0\920\n\00 \00 \00\8f0K0\880_0\8c0]0d0m0j0\890\800\n\00 \00 \00F0\900n0J0O0\840~0Q0u0S0H0f0\n\00 \00 \00B0U0M0\860\810\7f0W0\910r0\820[0Y0\n\00\n\00 \00 \00K\00a\00t\00a\00k\00a\00n\00a\00:\00\n\00\n\00 \00 \00\a40\ed0\cf0\cb0\db0\d80\c80 \00\c10\ea0\cc0\eb0\f20 \00\ef0\ab0\e80\bf0\ec0\bd0 \00\c40\cd0\ca0\e90\e00\n\00 \00 \00\a60\f00\ce0\aa0\af0\e40\de0 \00\b10\d50\b30\a80\c60 \00\a20\b50\ad0\e60\e10\df0\b70 \00\f10\d20\e20\bb0\b90\f30\n\00\n\00H\00e\00b\00r\00e\00w\00 \00(\00i\00w\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00?\00 \00\d3\05\d2\05 \00\e1\05\e7\05\e8\05\df\05 \00\e9\05\d8\05 \00\d1\05\d9\05\dd\05 \00\de\05\d0\05\d5\05\db\05\d6\05\d1\05 \00\d5\05\dc\05\e4\05\ea\05\e2\05 \00\de\05\e6\05\d0\05 \00\dc\05\d5\05 \00\d7\05\d1\05\e8\05\d4\05 \00\d0\05\d9\05\da\05 \00\d4\05\e7\05\dc\05\d9\05\d8\05\d4\05\n\00\n\00P\00o\00l\00i\00s\00h\00 \00(\00p\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00c\00h\00n\00\05\01\07\01 \00w\00 \00t\00\19\01 \00B\01\f3\00d\00z\01 \00j\00e\00|\01a\00 \00l\00u\00b\00 \00o\00[\01m\00 \00s\00k\00r\00z\00y\00D\01 \00f\00i\00g\00\n\00 \00 \00(\00=\00 \00T\00o\00 \00p\00u\00s\00h\00 \00a\00 \00h\00e\00d\00g\00e\00h\00o\00g\00 \00o\00r\00 \00e\00i\00g\00h\00t\00 \00b\00i\00n\00s\00 \00o\00f\00 \00f\00i\00g\00s\00 \00i\00n\00 \00t\00h\00i\00s\00 \00b\00o\00a\00t\00)\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00 \00(\00r\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\12\04 \00G\040\04I\040\04E\04 \00N\043\040\04 \006\048\04;\04 \001\04K\04 \00F\048\04B\04@\04C\04A\04?\00 \00\14\040\04,\00 \00=\04>\04 \00D\040\04;\04L\04H\048\042\04K\049\04 \00M\04:\047\045\04<\04?\04;\04O\04@\04!\00\n\00 \00 \00(\00=\00 \00W\00o\00u\00l\00d\00 \00a\00 \00c\00i\00t\00r\00u\00s\00 \00l\00i\00v\00e\00 \00i\00n\00 \00t\00h\00e\00 \00b\00u\00s\00h\00e\00s\00 \00o\00f\00 \00s\00o\00u\00t\00h\00?\00 \00Y\00e\00s\00,\00 \00b\00u\00t\00 \00o\00n\00l\00y\00 \00a\00 \00f\00a\00k\00e\00 \00o\00n\00e\00!\00)\00\n\00\n\00 \00 \00!\04J\045\04H\04L\04 \006\045\04 \005\04I\04Q\04 \00M\04B\048\04E\04 \00<\04O\043\04:\048\04E\04 \00D\04@\040\04=\04F\04C\047\04A\04:\048\04E\04 \001\04C\04;\04>\04:\04 \004\040\04 \002\04K\04?\045\049\04 \00G\040\04N\04\n\00 \00 \00(\00=\00 \00E\00a\00t\00 \00s\00o\00m\00e\00 \00m\00o\00r\00e\00 \00o\00f\00 \00t\00h\00e\00s\00e\00 \00f\00r\00e\00s\00h\00 \00F\00r\00e\00n\00c\00h\00 \00l\00o\00a\00f\00s\00 \00a\00n\00d\00 \00h\00a\00v\00e\00 \00s\00o\00m\00e\00 \00t\00e\00a\00)\00\n\00\n\00T\00h\00a\00i\00 \00(\00t\00h\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00@\0e\1b\0eG\0e\19\0e!\0e\19\0e8\0e)\0e\"\0eL\0e*\0e8\0e\14\0e\1b\0e#\0e0\0e@\0e*\0e#\0e4\0e\10\0e@\0e%\0e4\0e(\0e\04\0e8\0e\13\0e\04\0eH\0e2\0e \00 \00\01\0e\'\0eH\0e2\0e\1a\0e#\0e#\0e\14\0e2\0e\1d\0e9\0e\07\0e*\0e1\0e\15\0e\'\0eL\0e@\0e\14\0e#\0e1\0e\08\0e\t\0e2\0e\19\0e\n\00 \00 \00\08\0e\07\0e\1d\0eH\0e2\0e\1f\0e1\0e\19\0e\1e\0e1\0e\12\0e\19\0e2\0e\'\0e4\0e\n\0e2\0e\01\0e2\0e#\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00-\0e\"\0eH\0e2\0e%\0eI\0e2\0e\07\0e\1c\0e%\0e2\0e\r\0e$\0eE\0e@\0e\02\0eH\0e\19\0e\06\0eH\0e2\0e\1a\0e5\0e\11\0e2\0eC\0e\04\0e#\0e\n\00 \00 \00D\0e!\0eH\0e\16\0e7\0e-\0eB\0e\17\0e)\0eB\0e\01\0e#\0e\18\0eA\0e\n\0eH\0e\07\0e\0b\0e1\0e\14\0e.\0e6\0e\14\0e.\0e1\0e\14\0e\14\0eH\0e2\0e \00 \00 \00 \00 \00+\0e1\0e\14\0e-\0e \0e1\0e\"\0e@\0e+\0e!\0e7\0e-\0e\19\0e\01\0e5\0e,\0e2\0e-\0e1\0e\n\0e\0c\0e2\0e*\0e1\0e\"\0e\n\00 \00 \00\1b\0e\0f\0e4\0e\1a\0e1\0e\15\0e4\0e\1b\0e#\0e0\0e\1e\0e$\0e\15\0e4\0e\01\0e\0e\0e\01\0e3\0e+\0e\19\0e\14\0eC\0e\08\0e \00 \00 \00 \00 \00 \00 \00 \00\1e\0e9\0e\14\0e\08\0e2\0eC\0e+\0eI\0e\08\0eJ\0e0\0eF\0e \00\08\0eK\0e2\0eF\0e \00\19\0eH\0e2\0e\1f\0e1\0e\07\0e@\0e-\0e\"\0e \00/\0e\n\00\n\00 \00 \00[\00T\00h\00e\00 \00c\00o\00p\00y\00r\00i\00g\00h\00t\00 \00f\00o\00r\00 \00t\00h\00e\00 \00T\00h\00a\00i\00 \00e\00x\00a\00m\00p\00l\00e\00 \00i\00s\00 \00o\00w\00n\00e\00d\00 \00b\00y\00 \00T\00h\00e\00 \00C\00o\00m\00p\00u\00t\00e\00r\00\n\00 \00 \00A\00s\00s\00o\00c\00i\00a\00t\00i\00o\00n\00 \00o\00f\00 \00T\00h\00a\00i\00l\00a\00n\00d\00 \00u\00n\00d\00e\00r\00 \00t\00h\00e\00 \00R\00o\00y\00a\00l\00 \00P\00a\00t\00r\00o\00n\00a\00g\00e\00 \00o\00f\00 \00H\00i\00s\00 \00M\00a\00j\00e\00s\00t\00y\00 \00t\00h\00e\00\n\00 \00 \00K\00i\00n\00g\00.\00]\00\n\00\n\00T\00u\00r\00k\00i\00s\00h\00 \00(\00t\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00i\00j\00a\00m\00a\00l\001\01 \00h\00a\00s\00t\00a\00,\00 \00y\00a\00\1f\011\01z\00 \00_\01o\00f\00\f6\00r\00e\00 \00\e7\00a\00b\00u\00c\00a\00k\00 \00g\00\fc\00v\00e\00n\00d\00i\00.\00\n\00 \00 \00(\00=\00P\00a\00t\00i\00e\00n\00t\00 \00w\00i\00t\00h\00 \00p\00a\00j\00a\00m\00a\00s\00,\00 \00t\00r\00u\00s\00t\00e\00d\00 \00s\00w\00a\00r\00t\00h\00y\00 \00d\00r\00i\00v\00e\00r\00 \00q\00u\00i\00c\00k\00l\00y\00)\00\n\00\n\00O\00t\00h\00e\00r\00\n\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c0\00\c8\00 \00/\00 \00c\003\00_\008\000\00 \00c\003\00_\008\008\00\n\00 \00 \00\d8S\cf\91 \00/\00 \00e\005\00_\008\00f\00_\009\008\00 \00e\009\00_\008\007\00_\008\00f\00\n\00 \00 \00A\d8\0e\dfA\d81\df \00/\00 \00f\000\00_\00a\000\00_\009\00c\00_\008\00e\00 \00f\000\00_\00a\000\00_\009\00c\00_\00b\001\00\n") - (data $26 (i32.const 22784) "\04\00\00\00 \00\00\00 \00\00\00 ") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02") + (data $4 (i32.const 1164) "<") + (data $4.1 (i32.const 1176) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1228) "<") + (data $5.1 (i32.const 1240) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1356) "<") + (data $8.1 (i32.const 1368) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1420) ",") + (data $9.1 (i32.const 1432) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1500) "<") + (data $11.1 (i32.const 1512) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1564) "\1c") + (data $12.1 (i32.const 1576) "\02\00\00\00\02\00\00\00:") + (data $13 (i32.const 1596) "|") + (data $13.1 (i32.const 1608) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $14 (i32.const 1724) "<") + (data $14.1 (i32.const 1736) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $15 (i32.const 1788) "\1c") + (data $15.1 (i32.const 1800) "\02\00\00\00\02\00\00\000") + (data $16 (i32.const 1820) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $17 (i32.const 2220) "\1c\04") + (data $17.1 (i32.const 2232) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $18 (i32.const 3276) "\\") + (data $18.1 (i32.const 3288) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $19 (i32.const 3372) "<") + (data $19.1 (i32.const 3384) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $20 (i32.const 3436) "<") + (data $20.1 (i32.const 3448) "\02\00\00\00,\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00e\00n\00c\00o\00d\00i\00n\00g\00.\00t\00s") + (data $21 (i32.const 3500) "\1c") + (data $21.1 (i32.const 3512) "\02\00\00\00\04\00\00\00\01\d87\dc") + (data $22 (i32.const 3532) "\1c") + (data $22.1 (i32.const 3544) "\02\00\00\00\02\00\00\00h") + (data $23 (i32.const 3564) "\1c") + (data $23.1 (i32.const 3576) "\02\00\00\00\04\00\00\00h\00i") + (data $24 (i32.const 3596) "\1c") + (data $24.1 (i32.const 3608) "\02\00\00\00\04\00\00\00R\d8b\df") + (data $25 (i32.const 3628) "<") + (data $25.1 (i32.const 3640) "\02\00\00\00$\00\00\00U\00n\00p\00a\00i\00r\00e\00d\00 \00s\00u\00r\00r\00o\00g\00a\00t\00e") + (data $26 (i32.const 3692) ",") + (data $26.1 (i32.const 3704) "\02\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data $27 (i32.const 3740) "L") + (data $27.1 (i32.const 3752) "\02\00\00\008\00\00\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a") + (data $28 (i32.const 3820) "\1c") + (data $28.1 (i32.const 3832) "\02\00\00\00\02\00\00\004\d8") + (data $29 (i32.const 3852) "\1c") + (data $29.1 (i32.const 3864) "\02\00\00\00\02\00\00\00\fd\ff") + (data $30 (i32.const 3884) "\1c") + (data $30.1 (i32.const 3896) "\02\00\00\00\02\00\00\00\1e\dd") + (data $31 (i32.const 3916) ",") + (data $31.1 (i32.const 3928) "\02\00\00\00\0e\00\00\001\002\003\00\00\004\005\006") + (data $32 (i32.const 3964) "\1c") + (data $32.1 (i32.const 3976) "\02\00\00\00\06\00\00\001\002\003") + (data $33 (i32.const 3996) "\1c") + (data $33.1 (i32.const 4008) "\02\00\00\00\08\00\00\00h\00i\00R\d8b\df") + (data $34 (i32.const 4028) "<3") + (data $34.1 (i32.const 4040) "\02\00\00\00*3\00\00M\00a\00t\00h\00e\00m\00a\00t\00i\00c\00s\00 \00a\00n\00d\00 \00S\00c\00i\00e\00n\00c\00e\00s\00:\00\n\00\n\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00,\00 \00\00\"x\00\08\"\1d!:\00 \00\08#x\00\t# \00=\00 \00\12\"\n#\12\"x\00\0b#,\00 \00\b1\03 \00\'\" \00\ac\00\b2\03 \00=\00 \00\ac\00(\00\ac\00\b1\03 \00(\" \00\b2\03)\00,\00\n\00\n\00\15! \00\86\" \00\15!\80 \00\82\" \00$! \00\82\" \00\1a! \00\82\" \00\1d! \00\82\" \00\02!,\00 \00\a5\" \00<\00 \00a\00 \00`\" \00b\00 \00a\" \00c\00 \00d\" \00d\00 \00j\" \00\a4\" \00\d2! \00(\00A\00 \00\d4! \00B\00)\00,\00\n\00\n\002\00H\00\82 \00+\00 \00O\00\82 \00\cc! \002\00H\00\82 O\00,\00 \00R\00 \00=\00 \004\00.\007\00 \00k\00\a9\03,\00 \00\00# \002\000\000\00 \00m\00m\00\n\00\n\00L\00i\00n\00g\00u\00i\00s\00t\00i\00c\00s\00 \00a\00n\00d\00 \00d\00i\00c\00t\00i\00o\00n\00a\00r\00i\00e\00s\00:\00\n\00\n\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\n\00Y\00 \00[\00\c8\02\8f\02p\00s\00i\00l\00T\02n\00]\00,\00 \00Y\00e\00n\00 \00[\00j\00[\02n\00]\00,\00 \00Y\00o\00g\00a\00 \00[\00\c8\02j\00o\00\d0\02g\00Q\02]\00\n\00\n\00A\00P\00L\00:\00\n\00\n\00(\00(\00V\00s#V\00)\00=\00s#t#V\00)\00/\00V\00\90!,\00V\00 \00 \00 \00 \007#\90!s#\92!t#\06\"\07\"\83\"> N#U#\08#\n\00\n\00N\00i\00c\00e\00r\00 \00t\00y\00p\00o\00g\00r\00a\00p\00h\00y\00 \00i\00n\00 \00p\00l\00a\00i\00n\00 \00t\00e\00x\00t\00 \00f\00i\00l\00e\00s\00:\00\n\00\n\00T%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%W%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\18 s\00i\00n\00g\00l\00e\00\19 \00a\00n\00d\00 \00\1c d\00o\00u\00b\00l\00e\00\1d \00q\00u\00o\00t\00e\00s\00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00C\00u\00r\00l\00y\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00s\00:\00 \00\1c W\00e\00\19 v\00e\00 \00b\00e\00e\00n\00 \00h\00e\00r\00e\00\1d \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00L\00a\00t\00i\00n\00-\001\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00 \00a\00n\00d\00 \00a\00c\00c\00e\00n\00t\00s\00:\00 \00\'\00\b4\00`\00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\1a d\00e\00u\00t\00s\00c\00h\00e\00\18 \00\1e A\00n\00f\00\fc\00h\00r\00u\00n\00g\00s\00z\00e\00i\00c\00h\00e\00n\00\1c \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00 ,\00 \00! ,\00 \000 ,\00 \00\" ,\00 \003\00\13 4\00,\00 \00\14 ,\00 \00\12\"5\00/\00+\005\00,\00 \00\"!,\00 \00& \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00A\00S\00C\00I\00I\00 \00s\00a\00f\00e\00t\00y\00 \00t\00e\00s\00t\00:\00 \001\00l\00I\00|\00,\00 \000\00O\00D\00,\00 \008\00B\00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00m%\00%\00%\00%\00%\00%\00%\00%\00%\00%n% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00t\00h\00e\00 \00e\00u\00r\00o\00 \00s\00y\00m\00b\00o\00l\00:\00 \00\02% \001\004\00.\009\005\00 \00\ac \00\02% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00p%\00%\00%\00%\00%\00%\00%\00%\00%\00%o% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Z%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%]%\n\00\n\00G\00r\00e\00e\00k\00 \00(\00i\00n\00 \00P\00o\00l\00y\00t\00o\00n\00i\00c\00)\00:\00\n\00\n\00T\00h\00e\00 \00G\00r\00e\00e\00k\00 \00a\00n\00t\00h\00e\00m\00:\00\n\00\n\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03y\1f\c8\03\b7\03\n\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03u\1f,\00\n\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03\n\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03w\1f\b1\03 \00\bc\03\b5\03\c4\03\c1\03q\1f\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\n\00\n\00\bf\1f\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03y\1f\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03s\1f\bd\03\b7\03\n\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03u\1f\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03q\1f\n\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03s\1f\bd\03\b7\03\n\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03q\1f!\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00s\00p\00e\00e\00c\00h\00 \00o\00f\00 \00D\00e\00m\00o\00s\00t\00h\00e\00n\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \004\00t\00h\00 \00c\00e\00n\00t\00u\00r\00y\00 \00B\00C\00:\00\n\00\n\00\9f\03P\1f\c7\03v\1f \00\c4\03\b1\03P\1f\c4\03p\1f \00\c0\03\b1\03\c1\03w\1f\c3\03\c4\03\b1\03\c4\03\b1\03w\1f \00\bc\03\bf\03\b9\03 \00\b3\03\b9\03\b3\03\bd\03}\1f\c3\03\ba\03\b5\03\b9\03\bd\03,\00 \00f\1f \00\04\1f\bd\03\b4\03\c1\03\b5\03\c2\03 \00\bf\1f\91\03\b8\03\b7\03\bd\03\b1\03\d6\1f\bf\03\b9\03,\00\n\00E\1f\c4\03\b1\03\bd\03 \00\c4\03\bf\1f \00\b5\030\1f\c2\03 \00\c4\03p\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\b1\03 \00\00\1f\c0\03\bf\03\b2\03\bb\03s\1f\c8\03\c9\03 \00\ba\03\b1\03v\1f \00E\1f\c4\03\b1\03\bd\03 \00\c0\03\c1\03x\1f\c2\03 \00\c4\03\bf\03z\1f\c2\03\n\00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\bf\03S\1f\c2\03 \00\00\1f\ba\03\bf\03{\1f\c9\03\87\03 \00\c4\03\bf\03z\1f\c2\03 \00\bc\03r\1f\bd\03 \00\b3\03p\1f\c1\03 \00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03 \00A\1f\c1\03\f6\1f \00\b3\03\b9\03\b3\03\bd\03\bf\03\bc\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\c4\03p\1f \00\b4\03r\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\bf\1f\n\00\b5\030\1f\c2\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\c0\03\c1\03\bf\03u\1f\ba\03\bf\03\bd\03\c4\03\b1\03,\00 \00 \00e\1f\c3\03\b8\03\bf\1f \00E\1f\c0\03\c9\03\c2\03 \00\bc\03t\1f \00\c0\03\b5\03\b9\03\c3\03y\1f\bc\03\b5\03\b8\03\bf\1f \00\b1\03P\1f\c4\03\bf\03v\1f\n\00\c0\03\c1\03y\1f\c4\03\b5\03\c1\03\bf\03\bd\03 \00\ba\03\b1\03\ba\03\f6\1f\c2\03 \00\c3\03\ba\03s\1f\c8\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\b4\03s\1f\bf\03\bd\03.\00 \00\bf\03P\1f\b4\03s\1f\bd\03 \00\bf\03V\1f\bd\03 \00\04\1f\bb\03\bb\03\bf\03 \00\bc\03\bf\03\b9\03 \00\b4\03\bf\03\ba\03\bf\03\e6\1f\c3\03\b9\03\bd\03\n\00\bf\031\1f \00\c4\03p\1f \00\c4\03\bf\03\b9\03\b1\03\e6\1f\c4\03\b1\03 \00\bb\03s\1f\b3\03\bf\03\bd\03\c4\03\b5\03\c2\03 \00\"\1f \00\c4\03t\1f\bd\03 \00Q\1f\c0\03y\1f\b8\03\b5\03\c3\03\b9\03\bd\03,\00 \00\c0\03\b5\03\c1\03v\1f \00\'\1f\c2\03 \00\b2\03\bf\03\c5\03\bb\03\b5\03{\1f\b5\03\c3\03\b8\03\b1\03\b9\03,\00\n\00\bf\03P\1f\c7\03v\1f \00\c4\03t\1f\bd\03 \00\bf\03V\1f\c3\03\b1\03\bd\03 \00\c0\03\b1\03\c1\03\b9\03\c3\03\c4\03q\1f\bd\03\c4\03\b5\03\c2\03 \00Q\1f\bc\03\d6\1f\bd\03 \00\01\1f\bc\03\b1\03\c1\03\c4\03q\1f\bd\03\b5\03\b9\03\bd\03.\00 \00\10\1f\b3\03|\1f \00\b4\03s\1f,\00 \00E\1f\c4\03\b9\03 \00\bc\03s\1f\bd\03\n\00\c0\03\bf\03\c4\03\bf\1f \00\10\1f\be\03\c6\1f\bd\03 \00\c4\03\c7\1f \00\c0\03y\1f\bb\03\b5\03\b9\03 \00\ba\03\b1\03v\1f \00\c4\03p\1f \00\b1\03Q\1f\c4\03\c6\1f\c2\03 \00\14\1f\c7\03\b5\03\b9\03\bd\03 \00\00\1f\c3\03\c6\03\b1\03\bb\03\f6\1f\c2\03 \00\ba\03\b1\03v\1f \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03,\00 \00\ba\03\b1\03v\1f \00\bc\03q\1f\bb\03\bf\1f \00\00\1f\ba\03\c1\03\b9\03\b2\03\f6\1f\c2\03 \00\bf\036\1f\b4\03\b1\03\87\03 \00\10\1f\c0\03\bf\1f \00\10\1f\bc\03\bf\03\e6\1f \00\b3\03q\1f\c1\03,\00 \00\bf\03P\1f \00\c0\03q\1f\bb\03\b1\03\b9\03\n\00\b3\03s\1f\b3\03\bf\03\bd\03\b5\03\bd\03 \00\c4\03\b1\03\e6\1f\c4\03\bf\1f \00\00\1f\bc\03\c6\03y\1f\c4\03\b5\03\c1\03\b1\03\87\03 \00\bd\03\e6\1f\bd\03 \00\bc\03s\1f\bd\03\c4\03\bf\03\b9\03 \00\c0\03s\1f\c0\03\b5\03\b9\03\c3\03\bc\03\b1\03\b9\03 \00\c4\03\bf\03\e6\1f\b8\03\bf\1f \001\1f\ba\03\b1\03\bd\03x\1f\bd\03\n\00\c0\03\c1\03\bf\03\bb\03\b1\03\b2\03\b5\03\d6\1f\bd\03 \00!\1f\bc\03\d6\1f\bd\03 \00\b5\036\1f\bd\03\b1\03\b9\03 \00\c4\03t\1f\bd\03 \00\c0\03\c1\03}\1f\c4\03\b7\03\bd\03,\00 \00E\1f\c0\03\c9\03\c2\03 \00\c4\03\bf\03z\1f\c2\03 \00\c3\03\c5\03\bc\03\bc\03q\1f\c7\03\bf\03\c5\03\c2\03\n\00\c3\03}\1f\c3\03\bf\03\bc\03\b5\03\bd\03.\00 \00\10\1fp\1f\bd\03 \00\b3\03p\1f\c1\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\b2\03\b5\03\b2\03\b1\03w\1f\c9\03\c2\03 \00Q\1f\c0\03q\1f\c1\03\be\03\c3\1f,\00 \00\c4\03y\1f\c4\03\b5\03 \00\ba\03\b1\03v\1f \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03w\1f\bd\03\b1\03 \00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b5\03\c4\03\b1\03w\1f \00\c4\03\b9\03\c2\03 \00\ba\03\b1\03v\1f \00C\1f\bd\03 \00\c4\03\c1\03y\1f\c0\03\bf\03\bd\03 \00\10\1f\be\03s\1f\c3\03\c4\03\b1\03\b9\03 \00\c3\03\ba\03\bf\03\c0\03\b5\03\d6\1f\bd\03\87\03 \00\c0\03\c1\03v\1f\bd\03 \00\b4\03r\1f\n\00\c4\03t\1f\bd\03 \00\00\1f\c1\03\c7\03t\1f\bd\03 \00@\1f\c1\03\b8\03\f6\1f\c2\03 \00Q\1f\c0\03\bf\03\b8\03s\1f\c3\03\b8\03\b1\03\b9\03,\00 \00\bc\03q\1f\c4\03\b1\03\b9\03\bf\03\bd\03 \00!\1f\b3\03\bf\03\e6\1f\bc\03\b1\03\b9\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\c6\1f\c2\03\n\00\c4\03\b5\03\bb\03\b5\03\c5\03\c4\03\c6\1f\c2\03 \00A\1f\bd\03\c4\03\b9\03\bd\03\bf\03\e6\1f\bd\03 \00\c0\03\bf\03\b9\03\b5\03\d6\1f\c3\03\b8\03\b1\03\b9\03 \00\bb\03y\1f\b3\03\bf\03\bd\03.\00\n\00\n\00\94\03\b7\03\bc\03\bf\03\c3\03\b8\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\93\03\fd\1f \00\bf\1f\9f\03\bb\03\c5\03\bd\03\b8\03\b9\03\b1\03\ba\03x\1f\c2\03\n\00\n\00G\00e\00o\00r\00g\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\d2\10\d7\10\ee\10\dd\10\d5\10\d7\10 \00\d0\10\ee\10\da\10\d0\10\d5\10\d4\10 \00\d2\10\d0\10\d8\10\d0\10\e0\10\dd\10\d7\10 \00\e0\10\d4\10\d2\10\d8\10\e1\10\e2\10\e0\10\d0\10\ea\10\d8\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\db\10\d4\10\d0\10\d7\10\d4\10 \00\e1\10\d0\10\d4\10\e0\10\d7\10\d0\10\e8\10\dd\10\e0\10\d8\10\e1\10\dd\10\n\00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10\d6\10\d4\10 \00\d3\10\d0\10\e1\10\d0\10\e1\10\ec\10\e0\10\d4\10\d1\10\d0\10\d3\10,\00 \00\e0\10\dd\10\db\10\d4\10\da\10\d8\10\ea\10 \00\d2\10\d0\10\d8\10\db\10\d0\10\e0\10\d7\10\d4\10\d1\10\d0\10 \001\000\00-\001\002\00 \00\db\10\d0\10\e0\10\e2\10\e1\10,\00\n\00\e5\10.\00 \00\db\10\d0\10\d8\10\dc\10\ea\10\e8\10\d8\10,\00 \00\d2\10\d4\10\e0\10\db\10\d0\10\dc\10\d8\10\d0\10\e8\10\d8\10.\00 \00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10 \00\e8\10\d4\10\f0\10\d9\10\e0\10\d4\10\d1\10\e1\10 \00\d4\10\e0\10\d7\10\d0\10\d3\10 \00\db\10\e1\10\dd\10\e4\10\da\10\d8\10\dd\10\e1\10\n\00\d4\10\e5\10\e1\10\de\10\d4\10\e0\10\e2\10\d4\10\d1\10\e1\10 \00\d8\10\e1\10\d4\10\d7\10 \00\d3\10\d0\10\e0\10\d2\10\d4\10\d1\10\e8\10\d8\10 \00\e0\10\dd\10\d2\10\dd\10\e0\10\d8\10\ea\10\d0\10\d0\10 \00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d4\10\e2\10\d8\10 \00\d3\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10,\00\n\00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d0\10\ea\10\d8\10\dd\10\dc\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10 \00\d3\10\d0\10 \00\da\10\dd\10\d9\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10,\00 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d0\10\n\00\dd\10\de\10\d4\10\e0\10\d0\10\ea\10\d8\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e1\10\d0\10,\00 \00\d3\10\d0\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d8\10\d7\10 \00\de\10\e0\10\dd\10\d2\10\e0\10\d0\10\db\10\d4\10\d1\10\e8\10\d8\10,\00 \00\e8\10\e0\10\d8\10\e4\10\e2\10\d4\10\d1\10\e8\10\d8\10,\00\n\00\e2\10\d4\10\e5\10\e1\10\e2\10\d4\10\d1\10\d8\10\e1\10 \00\d3\10\d0\10\db\10\e3\10\e8\10\d0\10\d5\10\d4\10\d1\10\d0\10\e1\10\d0\10 \00\d3\10\d0\10 \00\db\10\e0\10\d0\10\d5\10\d0\10\da\10\d4\10\dc\10\dd\10\d5\10\d0\10\dc\10 \00\d9\10\dd\10\db\10\de\10\d8\10\e3\10\e2\10\d4\10\e0\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e8\10\d8\10.\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\17\040\04@\045\043\048\04A\04B\04@\048\04@\04C\049\04B\045\04A\04L\04 \00A\045\049\04G\040\04A\04 \00=\040\04 \00\14\045\04A\04O\04B\04C\04N\04 \00\1c\045\046\044\04C\04=\040\04@\04>\044\04=\04C\04N\04 \00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04N\04 \00?\04>\04\n\00U\00n\00i\00c\00o\00d\00e\00,\00 \00:\04>\04B\04>\04@\040\04O\04 \00A\04>\04A\04B\04>\048\04B\04A\04O\04 \001\000\00-\001\002\00 \00<\040\04@\04B\040\04 \001\009\009\007\00 \003\04>\044\040\04 \002\04 \00\1c\040\049\04=\04F\045\04 \002\04 \00\13\045\04@\04<\040\04=\048\048\04.\00\n\00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04O\04 \00A\04>\041\045\04@\045\04B\04 \00H\048\04@\04>\04:\048\049\04 \00:\04@\04C\043\04 \00M\04:\04A\04?\045\04@\04B\04>\042\04 \00?\04>\04 \00 \002\04>\04?\04@\04>\04A\040\04<\04 \003\04;\04>\041\040\04;\04L\04=\04>\043\04>\04\n\00\18\04=\04B\045\04@\04=\045\04B\040\04 \008\04 \00U\00n\00i\00c\00o\00d\00e\00,\00 \00;\04>\04:\040\04;\048\047\040\04F\048\048\04 \008\04 \008\04=\04B\045\04@\04=\040\04F\048\04>\04=\040\04;\048\047\040\04F\048\048\04,\00 \002\04>\04?\04;\04>\04I\045\04=\048\04N\04 \008\04\n\00?\04@\048\04<\045\04=\045\04=\048\04N\04 \00U\00n\00i\00c\00o\00d\00e\00 \002\04 \00@\040\047\04;\048\04G\04=\04K\04E\04 \00>\04?\045\04@\040\04F\048\04>\04=\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04 \008\04 \00?\04@\04>\043\04@\040\04<\04<\04=\04K\04E\04\n\00?\04@\048\04;\04>\046\045\04=\048\04O\04E\04,\00 \00H\04@\048\04D\04B\040\04E\04,\00 \002\045\04@\04A\04B\04:\045\04 \008\04 \00<\04=\04>\043\04>\04O\047\04K\04G\04=\04K\04E\04 \00:\04>\04<\04?\04L\04N\04B\045\04@\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04.\00\n\00\n\00T\00h\00a\00i\00 \00(\00U\00C\00S\00 \00L\00e\00v\00e\00l\00 \002\00)\00:\00\n\00\n\00E\00x\00c\00e\00r\00p\00t\00 \00f\00r\00o\00m\00 \00a\00 \00p\00o\00e\00t\00r\00y\00 \00o\00n\00 \00T\00h\00e\00 \00R\00o\00m\00a\00n\00c\00e\00 \00o\00f\00 \00T\00h\00e\00 \00T\00h\00r\00e\00e\00 \00K\00i\00n\00g\00d\00o\00m\00s\00 \00(\00a\00 \00C\00h\00i\00n\00e\00s\00e\00\n\00c\00l\00a\00s\00s\00i\00c\00 \00\'\00S\00a\00n\00 \00G\00u\00a\00\'\00)\00:\00\n\00\n\00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00A\0e\1c\0eH\0e\19\0e\14\0e4\0e\19\0e.\0e1\0eH\0e\19\0e@\0e*\0e7\0eH\0e-\0e!\0eB\0e\17\0e#\0e!\0eA\0e*\0e\19\0e*\0e1\0e\07\0e@\0e\'\0e\n\0e \00 \00\1e\0e#\0e0\0e\1b\0e\01\0e@\0e\01\0e(\0e\01\0e-\0e\07\0e\1a\0e9\0eJ\0e\01\0e9\0eI\0e\02\0e6\0eI\0e\19\0eC\0e+\0e!\0eH\0e\n\00*\0e4\0e\1a\0e*\0e-\0e\07\0e\01\0e)\0e1\0e\15\0e#\0e4\0e\"\0eL\0e\01\0eH\0e-\0e\19\0e+\0e\19\0eI\0e2\0eA\0e%\0e\16\0e1\0e\14\0eD\0e\1b\0e \00 \00 \00 \00 \00 \00 \00*\0e-\0e\07\0e-\0e\07\0e\04\0eL\0eD\0e\0b\0e#\0eI\0eB\0e\07\0eH\0e@\0e\02\0e%\0e2\0e@\0e\1a\0e2\0e\1b\0e1\0e\r\0e\r\0e2\0e\n\00 \00 \00\17\0e#\0e\07\0e\19\0e1\0e\1a\0e\16\0e7\0e-\0e\02\0e1\0e\19\0e\17\0e5\0e@\0e\1b\0eG\0e\19\0e\17\0e5\0eH\0e\1e\0e6\0eH\0e\07\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\1a\0eI\0e2\0e\19\0e@\0e!\0e7\0e-\0e\07\0e\08\0e6\0e\07\0e\'\0e4\0e\1b\0e#\0e4\0e\15\0e@\0e\1b\0eG\0e\19\0e\19\0e1\0e\01\0e+\0e\19\0e2\0e\n\00B\0e.\0e\08\0e4\0eK\0e\19\0e@\0e#\0e5\0e\"\0e\01\0e\17\0e1\0e\1e\0e\17\0e1\0eH\0e\'\0e+\0e1\0e\'\0e@\0e!\0e7\0e-\0e\07\0e!\0e2\0e \00 \00 \00 \00 \00 \00 \00 \00 \00+\0e!\0e2\0e\"\0e\08\0e0\0e\06\0eH\0e2\0e!\0e\14\0e\n\0e1\0eH\0e\'\0e\15\0e1\0e\'\0e*\0e3\0e\04\0e1\0e\r\0e\n\00 \00 \00@\0e+\0e!\0e7\0e-\0e\19\0e\02\0e1\0e\1a\0eD\0e*\0eD\0e%\0eH\0e@\0e*\0e7\0e-\0e\08\0e2\0e\01\0e@\0e\04\0e+\0e2\0e \00 \00 \00 \00 \00 \00#\0e1\0e\1a\0e+\0e!\0e2\0e\1b\0eH\0e2\0e@\0e\02\0eI\0e2\0e!\0e2\0e@\0e%\0e\"\0e-\0e2\0e*\0e1\0e\r\0e\n\00\1d\0eH\0e2\0e\"\0e-\0eI\0e-\0e\07\0e-\0e8\0eI\0e\19\0e\"\0e8\0eA\0e\"\0e\01\0eC\0e+\0eI\0eA\0e\15\0e\01\0e\01\0e1\0e\19\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00C\0e\n\0eI\0e*\0e2\0e\'\0e\19\0e1\0eI\0e\19\0e@\0e\1b\0eG\0e\19\0e\n\0e\19\0e\'\0e\19\0e\n\0e7\0eH\0e\19\0e\n\0e\'\0e\19\0eC\0e\08\0e\n\00 \00 \00\1e\0e%\0e1\0e\19\0e%\0e4\0e\t\0e8\0e\"\0e\01\0e8\0e\"\0e\01\0e5\0e\01\0e%\0e1\0e\1a\0e\01\0eH\0e-\0e@\0e+\0e\15\0e8\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\n\0eH\0e2\0e\07\0e-\0e2\0e@\0e\1e\0e(\0e\08\0e#\0e4\0e\07\0e+\0e\19\0e2\0e\1f\0eI\0e2\0e#\0eI\0e-\0e\07\0eD\0e+\0eI\0e\n\00\15\0eI\0e-\0e\07\0e#\0e\1a\0e#\0e2\0e\06\0eH\0e2\0e\1f\0e1\0e\19\0e\08\0e\19\0e\1a\0e#\0e#\0e%\0e1\0e\"\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00$\0eE\0e+\0e2\0eC\0e\04\0e#\0e\04\0eI\0e3\0e\n\0e9\0e\01\0e9\0eI\0e\1a\0e#\0e#\0e%\0e1\0e\07\0e\01\0eL\0e \00/\0e\n\00\n\00(\00T\00h\00e\00 \00a\00b\00o\00v\00e\00 \00i\00s\00 \00a\00 \00t\00w\00o\00-\00c\00o\00l\00u\00m\00n\00 \00t\00e\00x\00t\00.\00 \00I\00f\00 \00c\00o\00m\00b\00i\00n\00i\00n\00g\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00s\00 \00a\00r\00e\00 \00h\00a\00n\00d\00l\00e\00d\00\n\00c\00o\00r\00r\00e\00c\00t\00l\00y\00,\00 \00t\00h\00e\00 \00l\00i\00n\00e\00s\00 \00o\00f\00 \00t\00h\00e\00 \00s\00e\00c\00o\00n\00d\00 \00c\00o\00l\00u\00m\00n\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00a\00l\00i\00g\00n\00e\00d\00 \00w\00i\00t\00h\00 \00t\00h\00e\00\n\00|\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00a\00b\00o\00v\00e\00.\00)\00\n\00\n\00E\00t\00h\00i\00o\00p\00i\00a\00n\00:\00\n\00\n\00P\00r\00o\00v\00e\00r\00b\00s\00 \00i\00n\00 \00t\00h\00e\00 \00A\00m\00h\00a\00r\00i\00c\00 \00l\00a\00n\00g\00u\00a\00g\00e\00:\00\n\00\n\000\12\1b\12\ed\12 \00\a0\12\ed\12s\12(\125\12 \00\95\12\t\13%\12 \00\a0\12\ed\12\a8\120\125\12b\13\n\00e\12\0b\12 \00\ab\12\08\12\9d\12 \00\a5\12\95\12\f0\12\a0\12c\12t\12 \00`\12F\12\18\12 \13\9d\12b\13\n\00\0c\13%\13 \00\eb\12\08\12d\12q\12 \00A\12\1d\12%\13\93\12 \00\90\12\cd\12b\13\n\00\f0\12\00\12 \00`\12\15\12\r\12\19\12 \00E\12d\12 \00c\12\ed\12 \13#\13 \00\95\12#\13u\12 \00`\12\08\13\f0\12\08\12\cd\12b\13\n\00\e8\12\a0\12M\13 \00\c8\12\08\12\1d\12s\12 \00`\12E\12d\12 \00\a0\12\ed\12s\12=\12\1d\12b\13\n\00\a0\12\ed\12%\13 \00`\12`\12\0b\12 \00\f3\12\cb\12 \00p\12\18\12s\12b\13\n\002\12p\12(\12\t\13\19\12 \00\ed\12\f0\12(\12\r\13\19\12b\13\n\00@\125\12 \00`\12@\125\12e\13 \00\d5\12\95\12A\12\0b\12\r\12 \00`\12\a5\12\r\13)\12 \00\ed\12\04\12\f3\12\r\12b\13\n\00\f5\12-\12 \00b\12\eb\12e\12-\12 \00\a0\12\95\12`\123\12 \00\eb\125\12-\12b\13\n\000\12\cd\12 \00\a5\12\95\12\f0\12d\12q\12 \00\a5\12\95\12\05\13 \00\a5\12\95\12\f0\12 \00\t\13(\12d\12q\12 \00\a0\12\ed\12p\12\f3\12\f0\12-\12\1d\12b\13\n\00\a5\12\r\13\dc\12-\12 \00\e8\12\a8\12H\13p\12\cd\12\95\12 \00\t\13.\12.\12 \003\12\ed\12\d8\12\0b\13\cd\12 \00\a0\12\ed\12\f5\12-\12\1d\12b\13\n\00\e8\12\0e\13(\12d\12u\12 \00\0c\12c\12e\13 \00b\12\eb\12\e9\12u\12 \00\ed\125\12E\12 \00c\12\eb\12\e9\12u\12 \00\eb\12 \13\r\12E\12b\13\n\00%\12+\12 \00\a8\12\18\12M\13s\12u\12 \00\r\12\04\13\95\12 \00\0b\12K\13s\12u\12b\13\n\00\d3\12c\12\ed\12 \00\1b\12\f0\12*\12\eb\12 \00\e8\12\08\12\cd\12e\13 \00\r\13\95\12\f5\12 \00\ed\12\de\12 \00\ed\12\de\12+\12\r\12b\13\n\00\e8\12\a5\125\12\0b\12\1d\12 \00\a0\12\08\13)\12 \00\18\12\ab\12 \00\e8\12\a0\12\1e\12+\12 \00\a0\12\08\13)\12 \00\cb\12-\12\ab\12b\13\n\00p\12\95\12\0b\13\0e\12 \00b\12p\12I\13 \00p\12\18\12\r\126\12 \00c\12I\13b\13\n\00\c8\12\f3\12\05\13\05\12 \00\1b\12-\12 \00b\12\06\12\95\12 \00(\13-\125\12\05\12 \00\a0\12u\12\0b\120\12\cd\12b\13\n\00\a5\12\r\13-\12\05\12\95\12 \00`\12M\13+\12=\12\05\12 \00\r\12\ad\12 \00\d8\12-\12\0b\13b\13\n\00\n\00R\00u\00n\00e\00s\00:\00\n\00\n\00\bb\16\d6\16 \00\b3\16\b9\16\ab\16\a6\16 \00\a6\16\ab\16\cf\16 \00\bb\16\d6\16 \00\d2\16\a2\16\de\16\d6\16 \00\a9\16\be\16 \00\a6\16\ab\16\d7\16 \00\da\16\aa\16\be\16\de\16\d6\16 \00\be\16\a9\16\b1\16\a6\16\b9\16\d6\16\aa\16\b1\16\de\16\a2\16\d7\16 \00\b9\16\c1\16\a6\16 \00\a6\16\aa\16 \00\b9\16\d6\16\e5\16\ab\16\n\00\n\00(\00O\00l\00d\00 \00E\00n\00g\00l\00i\00s\00h\00,\00 \00w\00h\00i\00c\00h\00 \00t\00r\00a\00n\00s\00c\00r\00i\00b\00e\00d\00 \00i\00n\00t\00o\00 \00L\00a\00t\00i\00n\00 \00r\00e\00a\00d\00s\00 \00\'\00H\00e\00 \00c\00w\00a\00e\00t\00h\00 \00t\00h\00a\00t\00 \00h\00e\00\n\00b\00u\00d\00e\00 \00t\00h\00a\00e\00m\00 \00l\00a\00n\00d\00e\00 \00n\00o\00r\00t\00h\00w\00e\00a\00r\00d\00u\00m\00 \00w\00i\00t\00h\00 \00t\00h\00a\00 \00W\00e\00s\00t\00s\00a\00e\00.\00\'\00 \00a\00n\00d\00 \00m\00e\00a\00n\00s\00 \00\'\00H\00e\00 \00s\00a\00i\00d\00\n\00t\00h\00a\00t\00 \00h\00e\00 \00l\00i\00v\00e\00d\00 \00i\00n\00 \00t\00h\00e\00 \00n\00o\00r\00t\00h\00e\00r\00n\00 \00l\00a\00n\00d\00 \00n\00e\00a\00r\00 \00t\00h\00e\00 \00W\00e\00s\00t\00e\00r\00n\00 \00S\00e\00a\00.\00\'\00)\00\n\00\n\00B\00r\00a\00i\00l\00l\00e\00:\00\n\00\n\00L(\01(\'(\11( \00<(\01(\12( \00 \00M(\1c(\07(\11(9(0(\0e( \00c(\15(\0c(\n\00\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\19(\11(\01(\19(\12( \00\1e(\15( \00\03(\11(\1b(\14( \00:(\n(9(2( \00y(;(\11( \00\n(\0e( \00\1d(\15( \00\19(3(\03(\1e(\n\001(\01(\1e(\11(\'(;( \00\01(\03(3(\1e( \009(\01(\1e(2( \00y(\11( \00\17(\11(\1b(\n(\0c(;( \00\15(\0b( \00\19(\n(\0e( \00\03(%(\17(\n(\01(\07( \00:(\01(\0e(\n\00\0e(\n(\1b(\1d(+( \00\03(9( \009(\11( \00\n(\07(;(\1b(9(\r(\01(\1d(\02( \009(\11( \00\n(\07(;(\05(\02( \009(\11( \00%(\1d(\19(;(\1e(\01(\05(;(\02(\n\00\01(\1d(\19( \009(\11( \00!(\n(\11(\0b( \00\r(3(\17(\1d(;(2( \00N(\n(\17(\15(\15(\1b(\11( \00\0e(\n(\1b(\1d(+( \00\n(\1e(2( \00A(\1d(\19(\n\00N(\n(\17(\15(\15(\1b(\11(0(\0e( \00\1d(\01(\r(\11( \00:(\01(\0e( \00\1b(\15(\15(\19( \00%(\0f(\15(\1d( \000(a(\01(\1d(\1b(\11(\02( \00\0b(\15(\17( \00\01(\1d(9(9(\14(\1b( \00\19(\11(\n\00!(\15(\0e(\11( \00\1e(\15( \00\0f(%(\1e( \00\19(\n(\0e( \00\19(\01(\1d(\19( \00\1e(\15(2(\n\00\n\00U(\07(\19( \00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00M(\14(\19(\16( \00J( \00\19(\15(\1d(0(\1e( \00\r(\11(\01(\1d( \00\1e(\15( \00\0e(\01(9( \009(\01(\1e( \00J( \00\05(\1d(*(\02( \00\15(\0b( \00\r(9(\n\00*(\1d( \00\05(\1d(*(\07(+(\1b(\11(\02( \001(\01(\1e( \009(;(\11( \00\n(\0e( \00\0f(\1c(\1e(\n(\n(%(\07(\1c(\07(9( \00\19(\11(\01(\19( \00\01(\03(3(\1e(\n\00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2( \00J( \00\r(\n(#(\1e( \00\19(\01(\'(\11( \00\03(\11(2( \00\14(\n(\07(\14(+(\02( \00\r(9(\0e(\11(\07(\0b(\02( \00\1e(\15(\n\00\17(\11(\1b(\1c(\19( \00\01( \00\n(\15(\0b(\0b(\14($(\1d(\01(\n(\07( \00\01(\0e( \009(\11( \00\19(\11(\01(\19(\11(\0c( \00\0f(\n(\11(\n(\11( \00\15(\0b( \00\n(\17(\15(\1d(\r(\15(\1d(\1b(;(9(\n\00\14( \009(\11( \00\1e(\17(\01(\19(\11(2( \00C(%(\1e( \009(\11( \00:(\n(\0e(\19(\15(\r( \00\15(\0b( \003(\17( \00\01(\1d(\n(\11(\0c(\15(\17(\0e(\n\00\n(\0e( \00\14( \009(\11( \00\0e(\n(\r(\n(\07(\11(\06( \00\01(\1d(\19( \00\r(9( \00%(\1d(\19(\01(\07(\07(*(+( \00\19(\01(\1d(\19(\0e(\n\00)(\01(\07(\07( \00\1d(\15(\1e( \00\19(\n(\0c(%(\17(\03( \00\n(\1e(\02( \00\15(\17( \009(\11( \00J(3(\1d(\1e(\17(9(0(\0e( \00\19(\15(\1d(\11( \00\0b(\15(\17(2( \00y(3(\n\00:(\n(\07(\07( \009(;(\11(\0b(\15(\17(\11( \00\0f(;(\r(\n(\1e( \00\r(\11( \00\1e(\15( \00\17(\11(\0f(\11(\01(\1e(\02( \00\11(\r(\0f(\19(\01(\1e(\n(\n(\01(\07(\07(9(\02( \009(\01(\1e(\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00(\00T\00h\00e\00 \00f\00i\00r\00s\00t\00 \00c\00o\00u\00p\00l\00e\00 \00o\00f\00 \00p\00a\00r\00a\00g\00r\00a\00p\00h\00s\00 \00o\00f\00 \00\"\00A\00 \00C\00h\00r\00i\00s\00t\00m\00a\00s\00 \00C\00a\00r\00o\00l\00\"\00 \00b\00y\00 \00D\00i\00c\00k\00e\00n\00s\00)\00\n\00\n\00C\00o\00m\00p\00a\00c\00t\00 \00f\00o\00n\00t\00 \00s\00e\00l\00e\00c\00t\00i\00o\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00t\00e\00x\00t\00:\00\n\00\n\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00\n\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\n\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\n\00\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\n\00\n\00G\00r\00e\00e\00t\00i\00n\00g\00s\00 \00i\00n\00 \00v\00a\00r\00i\00o\00u\00s\00 \00l\00a\00n\00g\00u\00a\00g\00e\00s\00:\00\n\00\n\00H\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00,\00 \00\9a\03\b1\03\bb\03\b7\03\bc\03s\1f\c1\03\b1\03 \00\ba\03y\1f\c3\03\bc\03\b5\03,\00 \00\b30\f30\cb0\c10\cf0\n\00\n\00B\00o\00x\00 \00d\00r\00a\00w\00i\00n\00g\00 \00a\00l\00i\00g\00n\00m\00e\00n\00t\00 \00t\00e\00s\00t\00s\00:\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\88%\n\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\89%\n\00T%P%P%f%P%P%W% \00 \00\0c%\00%\00%,%\00%\00%\10% \00 \00m%\00%\00%,%\00%\00%n% \00 \00m%\00%\00%,%\00%\00%n% \00 \00\0f%\01%\01%3%\01%\01%\13% \00 \00\0e%\12%\0f%\11% \00 \00 \00w% \00 \00{% \00\0f%/%\13% \00\0c%0%\10% \00 \00 \00 \00\8a% \00q%r%q%r%s%s%s%\n\00Q%\0c%\00%h%\00%\10%Q% \00 \00\02%T%P%g%P%W%\02% \00 \00\02%R%P%j%P%U%\02% \00 \00\02%S%\00%A%\00%V%\02% \00 \00\03%\0c%\00%B%\00%\10%\03% \00 \00\17%C%D%\19% \00 \00v%<%t%z%K%x% %<%(% \00\1d%K%%% \00 \00 \00 \00\8b% \00r%q%r%q%s%s%s%\n\00Q%\02%r% \00q%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00\7f% \00\02%\03% \00 \00\r%E%F%\13% \00 \00 \00u% \00 \00y% \00\17%7%\1b% \00\14%8%\18% \00 \00 \00 \00\8c% \00q%r%q%r%s%s%s%\n\00`%a% \00s% \00^%c% \00 \00\1c%b% \00 \00 \00_%$% \00 \00\1c%<%\00%<%\00%<%$% \00 \00\1c%k%\00%B%\00%k%$% \00 \00#%?%~%<%|%?%+% \00 \00\15%\1b%\16%\1a% \00 \00 \00 \00 \00\0c%\04%\04%\10% \00N% \00\0f%\05%\05%\13% \00\0b% \00\8d% \00r%q%r%q%s%s%s%\n\00Q%\02%q% \00r%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00}% \00\02%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8e%\n\00Q%\14%\00%e%\00%\18%Q% \00 \00\02%Z%P%d%P%]%\02% \00 \00\02%X%P%j%P%[%\02% \00 \00\02%Y%\00%@%\00%\\%\02% \00 \00\03%\14%\00%B%\00%\18%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8f%\n\00Z%P%P%i%P%P%]% \00 \00\14%\00%\00%4%\00%\00%\18% \00 \00p%\00%\00%4%\00%\00%o% \00 \00p%\00%\00%4%\00%\00%o% \00 \00\17%\01%\01%;%\01%\01%\1b% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\14%L%L%\18% \00N% \00\17%M%M%\1b% \00\0b% \00 \00\81%\82%\83%\84%\85%\86%\87%\88%\n") + (data $35 (i32.const 17148) "\8c\1d") + (data $35.1 (i32.const 17160) "\02\00\00\00p\1d\00\00S\00e\00n\00t\00e\00n\00c\00e\00s\00 \00t\00h\00a\00t\00 \00c\00o\00n\00t\00a\00i\00n\00 \00a\00l\00l\00 \00l\00e\00t\00t\00e\00r\00s\00 \00c\00o\00m\00m\00o\00n\00l\00y\00 \00u\00s\00e\00d\00 \00i\00n\00 \00a\00 \00l\00a\00n\00g\00u\00a\00g\00e\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00M\00a\00r\00k\00u\00s\00 \00K\00u\00h\00n\00 \00<\00h\00t\00t\00p\00:\00/\00/\00w\00w\00w\00.\00c\00l\00.\00c\00a\00m\00.\00a\00c\00.\00u\00k\00/\00~\00m\00g\00k\002\005\00/\00>\00 \00-\00-\00 \002\000\001\002\00-\000\004\00-\001\001\00\n\00\n\00T\00h\00i\00s\00 \00i\00s\00 \00a\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00o\00f\00 \00a\00 \00p\00l\00a\00i\00n\00-\00t\00e\00x\00t\00 \00f\00i\00l\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00i\00n\00 \00U\00T\00F\00-\008\00.\00\n\00\n\00\n\00D\00a\00n\00i\00s\00h\00 \00(\00d\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00Q\00u\00i\00z\00d\00e\00l\00t\00a\00g\00e\00r\00n\00e\00 \00s\00p\00i\00s\00t\00e\00 \00j\00o\00r\00d\00b\00\e6\00r\00 \00m\00e\00d\00 \00f\00l\00\f8\00d\00e\00,\00 \00m\00e\00n\00s\00 \00c\00i\00r\00k\00u\00s\00k\00l\00o\00v\00n\00e\00n\00\n\00 \00 \00W\00o\00l\00t\00h\00e\00r\00 \00s\00p\00i\00l\00l\00e\00d\00e\00 \00p\00\e5\00 \00x\00y\00l\00o\00f\00o\00n\00.\00\n\00 \00 \00(\00=\00 \00Q\00u\00i\00z\00 \00c\00o\00n\00t\00e\00s\00t\00a\00n\00t\00s\00 \00w\00e\00r\00e\00 \00e\00a\00t\00i\00n\00g\00 \00s\00t\00r\00a\00w\00b\00e\00r\00y\00 \00w\00i\00t\00h\00 \00c\00r\00e\00a\00m\00 \00w\00h\00i\00l\00e\00 \00W\00o\00l\00t\00h\00e\00r\00\n\00 \00 \00t\00h\00e\00 \00c\00i\00r\00c\00u\00s\00 \00c\00l\00o\00w\00n\00 \00p\00l\00a\00y\00e\00d\00 \00o\00n\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00.\00)\00\n\00\n\00G\00e\00r\00m\00a\00n\00 \00(\00d\00e\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00F\00a\00l\00s\00c\00h\00e\00s\00 \00\dc\00b\00e\00n\00 \00v\00o\00n\00 \00X\00y\00l\00o\00p\00h\00o\00n\00m\00u\00s\00i\00k\00 \00q\00u\00\e4\00l\00t\00 \00j\00e\00d\00e\00n\00 \00g\00r\00\f6\00\df\00e\00r\00e\00n\00 \00Z\00w\00e\00r\00g\00\n\00 \00 \00(\00=\00 \00W\00r\00o\00n\00g\00f\00u\00l\00 \00p\00r\00a\00c\00t\00i\00c\00i\00n\00g\00 \00o\00f\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00 \00m\00u\00s\00i\00c\00 \00t\00o\00r\00t\00u\00r\00e\00s\00 \00e\00v\00e\00r\00y\00 \00l\00a\00r\00g\00e\00r\00 \00d\00w\00a\00r\00f\00)\00\n\00\n\00 \00 \00Z\00w\00\f6\00l\00f\00 \00B\00o\00x\00k\00\e4\00m\00p\00f\00e\00r\00 \00j\00a\00g\00t\00e\00n\00 \00E\00v\00a\00 \00q\00u\00e\00r\00 \00\fc\00b\00e\00r\00 \00d\00e\00n\00 \00S\00y\00l\00t\00e\00r\00 \00D\00e\00i\00c\00h\00\n\00 \00 \00(\00=\00 \00T\00w\00e\00l\00v\00e\00 \00b\00o\00x\00i\00n\00g\00 \00f\00i\00g\00h\00t\00e\00r\00s\00 \00h\00u\00n\00t\00e\00d\00 \00E\00v\00a\00 \00a\00c\00r\00o\00s\00s\00 \00t\00h\00e\00 \00d\00i\00k\00e\00 \00o\00f\00 \00S\00y\00l\00t\00)\00\n\00\n\00 \00 \00H\00e\00i\00z\00\f6\00l\00r\00\fc\00c\00k\00s\00t\00o\00\df\00a\00b\00d\00\e4\00m\00p\00f\00u\00n\00g\00\n\00 \00 \00(\00=\00 \00f\00u\00e\00l\00 \00o\00i\00l\00 \00r\00e\00c\00o\00i\00l\00 \00a\00b\00s\00o\00r\00b\00e\00r\00)\00\n\00 \00 \00(\00j\00q\00v\00w\00x\00y\00 \00m\00i\00s\00s\00i\00n\00g\00,\00 \00b\00u\00t\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00i\00n\00 \00o\00n\00e\00 \00w\00o\00r\00d\00)\00\n\00\n\00G\00r\00e\00e\00k\00 \00(\00e\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\93\03\b1\03\b6\03\ad\03\b5\03\c2\03 \00\ba\03\b1\03v\1f \00\bc\03\c5\03\c1\03\c4\03\b9\03r\1f\c2\03 \00\b4\03r\1f\bd\03 \00\b8\03p\1f \00\b2\03\c1\03\f6\1f \00\c0\03\b9\03p\1f \00\c3\03\c4\03x\1f \00\c7\03\c1\03\c5\03\c3\03\b1\03\c6\03v\1f \00\be\03\ad\03\c6\03\c9\03\c4\03\bf\03\n\00 \00 \00(\00=\00 \00N\00o\00 \00m\00o\00r\00e\00 \00s\00h\00a\00l\00l\00 \00I\00 \00s\00e\00e\00 \00a\00c\00a\00c\00i\00a\00s\00 \00o\00r\00 \00m\00y\00r\00t\00l\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \00g\00o\00l\00d\00e\00n\00 \00c\00l\00e\00a\00r\00i\00n\00g\00)\00\n\00\n\00 \00 \00\9e\03\b5\03\c3\03\ba\03\b5\03\c0\03\ac\03\b6\03\c9\03 \00\c4\03t\1f\bd\03 \00\c8\03\c5\03\c7\03\bf\03\c6\03\b8\03\cc\03\c1\03\b1\03 \00\b2\03\b4\03\b5\03\bb\03\c5\03\b3\03\bc\03\af\03\b1\03\n\00 \00 \00(\00=\00 \00I\00 \00u\00n\00c\00o\00v\00e\00r\00 \00t\00h\00e\00 \00s\00o\00u\00l\00-\00d\00e\00s\00t\00r\00o\00y\00i\00n\00g\00 \00a\00b\00h\00o\00r\00r\00e\00n\00c\00e\00)\00\n\00\n\00E\00n\00g\00l\00i\00s\00h\00 \00(\00e\00n\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00T\00h\00e\00 \00q\00u\00i\00c\00k\00 \00b\00r\00o\00w\00n\00 \00f\00o\00x\00 \00j\00u\00m\00p\00s\00 \00o\00v\00e\00r\00 \00t\00h\00e\00 \00l\00a\00z\00y\00 \00d\00o\00g\00\n\00\n\00S\00p\00a\00n\00i\00s\00h\00 \00(\00e\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00E\00l\00 \00p\00i\00n\00g\00\fc\00i\00n\00o\00 \00W\00e\00n\00c\00e\00s\00l\00a\00o\00 \00h\00i\00z\00o\00 \00k\00i\00l\00\f3\00m\00e\00t\00r\00o\00s\00 \00b\00a\00j\00o\00 \00e\00x\00h\00a\00u\00s\00t\00i\00v\00a\00 \00l\00l\00u\00v\00i\00a\00 \00y\00\n\00 \00 \00f\00r\00\ed\00o\00,\00 \00a\00\f1\00o\00r\00a\00b\00a\00 \00a\00 \00s\00u\00 \00q\00u\00e\00r\00i\00d\00o\00 \00c\00a\00c\00h\00o\00r\00r\00o\00.\00\n\00 \00 \00(\00C\00o\00n\00t\00a\00i\00n\00s\00 \00e\00v\00e\00r\00y\00 \00l\00e\00t\00t\00e\00r\00 \00a\00n\00d\00 \00e\00v\00e\00r\00y\00 \00a\00c\00c\00e\00n\00t\00,\00 \00b\00u\00t\00 \00n\00o\00t\00 \00e\00v\00e\00r\00y\00 \00c\00o\00m\00b\00i\00n\00a\00t\00i\00o\00n\00\n\00 \00 \00o\00f\00 \00v\00o\00w\00e\00l\00 \00+\00 \00a\00c\00u\00t\00e\00.\00)\00\n\00\n\00F\00r\00e\00n\00c\00h\00 \00(\00f\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00o\00r\00t\00e\00z\00 \00c\00e\00 \00v\00i\00e\00u\00x\00 \00w\00h\00i\00s\00k\00y\00 \00a\00u\00 \00j\00u\00g\00e\00 \00b\00l\00o\00n\00d\00 \00q\00u\00i\00 \00f\00u\00m\00e\00 \00s\00u\00r\00 \00s\00o\00n\00 \00\ee\00l\00e\00 \00i\00n\00t\00\e9\00r\00i\00e\00u\00r\00e\00,\00 \00\e0\00\n\00 \00 \00c\00\f4\00t\00\e9\00 \00d\00e\00 \00l\00\'\00a\00l\00c\00\f4\00v\00e\00 \00o\00v\00o\00\ef\00d\00e\00,\00 \00o\00\f9\00 \00l\00e\00s\00 \00b\00\fb\00c\00h\00e\00s\00 \00s\00e\00 \00c\00o\00n\00s\00u\00m\00e\00n\00t\00 \00d\00a\00n\00s\00 \00l\00\'\00\e2\00t\00r\00e\00,\00 \00c\00e\00\n\00 \00 \00q\00u\00i\00 \00l\00u\00i\00 \00p\00e\00r\00m\00e\00t\00 \00d\00e\00 \00p\00e\00n\00s\00e\00r\00 \00\e0\00 \00l\00a\00 \00c\00\e6\00n\00o\00g\00e\00n\00\e8\00s\00e\00 \00d\00e\00 \00l\00\'\00\ea\00t\00r\00e\00 \00d\00o\00n\00t\00 \00i\00l\00 \00e\00s\00t\00 \00q\00u\00e\00s\00t\00i\00o\00n\00\n\00 \00 \00d\00a\00n\00s\00 \00l\00a\00 \00c\00a\00u\00s\00e\00 \00a\00m\00b\00i\00g\00u\00\eb\00 \00e\00n\00t\00e\00n\00d\00u\00e\00 \00\e0\00 \00M\00o\00\ff\00,\00 \00d\00a\00n\00s\00 \00u\00n\00 \00c\00a\00p\00h\00a\00r\00n\00a\00\fc\00m\00 \00q\00u\00i\00,\00\n\00 \00 \00p\00e\00n\00s\00e\00-\00t\00-\00i\00l\00,\00 \00d\00i\00m\00i\00n\00u\00e\00 \00\e7\00\e0\00 \00e\00t\00 \00l\00\e0\00 \00l\00a\00 \00q\00u\00a\00l\00i\00t\00\e9\00 \00d\00e\00 \00s\00o\00n\00 \00S\01u\00v\00r\00e\00.\00\n\00\n\00 \00 \00l\00\'\00\ee\00l\00e\00 \00e\00x\00i\00g\00u\00\eb\00\n\00 \00 \00O\00\f9\00 \00l\00\'\00o\00b\00\e8\00s\00e\00 \00j\00u\00r\00y\00 \00m\00\fb\00r\00\n\00 \00 \00F\00\ea\00t\00e\00 \00l\00\'\00h\00a\00\ef\00 \00v\00o\00l\00a\00p\00\fc\00k\00,\00\n\00 \00 \00\c2\00n\00e\00 \00e\00x\00 \00a\00\e9\00q\00u\00o\00 \00a\00u\00 \00w\00h\00i\00s\00t\00,\00\n\00 \00 \00\d4\00t\00e\00z\00 \00c\00e\00 \00v\00S\01u\00 \00d\00\e9\00\e7\00u\00.\00\n\00\n\00 \00 \00L\00e\00 \00c\00S\01u\00r\00 \00d\00\e9\00\e7\00u\00 \00m\00a\00i\00s\00 \00l\00\'\00\e2\00m\00e\00 \00p\00l\00u\00t\00\f4\00t\00 \00n\00a\00\ef\00v\00e\00,\00 \00L\00o\00u\00\ff\00s\00 \00r\00\ea\00v\00a\00 \00d\00e\00 \00c\00r\00a\00p\00a\00\fc\00t\00e\00r\00 \00e\00n\00\n\00 \00 \00c\00a\00n\00o\00\eb\00 \00a\00u\00 \00d\00e\00l\00\e0\00 \00d\00e\00s\00 \00\ee\00l\00e\00s\00,\00 \00p\00r\00\e8\00s\00 \00d\00u\00 \00m\00\e4\00l\00s\00t\00r\00\f6\00m\00 \00o\00\f9\00 \00b\00r\00\fb\00l\00e\00n\00t\00 \00l\00e\00s\00 \00n\00o\00v\00\e6\00.\00\n\00\n\00I\00r\00i\00s\00h\00 \00G\00a\00e\00l\00i\00c\00 \00(\00g\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00D\00\'\00f\00h\00u\00a\00s\00c\00a\00i\00l\00 \00\cd\00o\00s\00a\00,\00 \00\da\00r\00m\00h\00a\00c\00 \00n\00a\00 \00h\00\d3\00i\00g\00h\00e\00 \00B\00e\00a\00n\00n\00a\00i\00t\00h\00e\00,\00 \00p\00\f3\00r\00 \00\c9\00a\00v\00a\00 \00a\00g\00u\00s\00 \00\c1\00d\00h\00a\00i\00m\00h\00\n\00\n\00H\00u\00n\00g\00a\00r\00i\00a\00n\00 \00(\00h\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c1\00r\00v\00\ed\00z\00t\00q\01r\00Q\01 \00t\00\fc\00k\00\f6\00r\00f\00\fa\00r\00\f3\00g\00\e9\00p\00\n\00 \00 \00(\00=\00 \00f\00l\00o\00o\00d\00-\00p\00r\00o\00o\00f\00 \00m\00i\00r\00r\00o\00r\00-\00d\00r\00i\00l\00l\00i\00n\00g\00 \00m\00a\00c\00h\00i\00n\00e\00,\00 \00o\00n\00l\00y\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00)\00\n\00\n\00I\00c\00e\00l\00a\00n\00d\00i\00c\00 \00(\00i\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00K\00\e6\00m\00i\00 \00n\00\fd\00 \00\f6\00x\00i\00 \00h\00\e9\00r\00 \00y\00k\00i\00s\00t\00 \00\fe\00j\00\f3\00f\00u\00m\00 \00n\00\fa\00 \00b\00\e6\00\f0\00i\00 \00v\00\ed\00l\00 \00o\00g\00 \00\e1\00d\00r\00e\00p\00a\00\n\00\n\00 \00 \00S\00\e6\00v\00\f6\00r\00 \00g\00r\00\e9\00t\00 \00\e1\00\f0\00a\00n\00 \00\fe\00v\00\ed\00 \00\fa\00l\00p\00a\00n\00 \00v\00a\00r\00 \00\f3\00n\00\fd\00t\00\n\00 \00 \00(\00s\00o\00m\00e\00 \00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00m\00i\00s\00s\00i\00n\00g\00)\00\n\00\n\00J\00a\00p\00a\00n\00e\00s\00e\00 \00(\00j\00p\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00H\00i\00r\00a\00g\00a\00n\00a\00:\00 \00(\00I\00r\00o\00h\00a\00)\00\n\00\n\00 \00 \00D0\8d0o0k0{0x0h0a0\8a0l0\8b0\920\n\00 \00 \00\8f0K0\880_0\8c0]0d0m0j0\890\800\n\00 \00 \00F0\900n0J0O0\840~0Q0u0S0H0f0\n\00 \00 \00B0U0M0\860\810\7f0W0\910r0\820[0Y0\n\00\n\00 \00 \00K\00a\00t\00a\00k\00a\00n\00a\00:\00\n\00\n\00 \00 \00\a40\ed0\cf0\cb0\db0\d80\c80 \00\c10\ea0\cc0\eb0\f20 \00\ef0\ab0\e80\bf0\ec0\bd0 \00\c40\cd0\ca0\e90\e00\n\00 \00 \00\a60\f00\ce0\aa0\af0\e40\de0 \00\b10\d50\b30\a80\c60 \00\a20\b50\ad0\e60\e10\df0\b70 \00\f10\d20\e20\bb0\b90\f30\n\00\n\00H\00e\00b\00r\00e\00w\00 \00(\00i\00w\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00?\00 \00\d3\05\d2\05 \00\e1\05\e7\05\e8\05\df\05 \00\e9\05\d8\05 \00\d1\05\d9\05\dd\05 \00\de\05\d0\05\d5\05\db\05\d6\05\d1\05 \00\d5\05\dc\05\e4\05\ea\05\e2\05 \00\de\05\e6\05\d0\05 \00\dc\05\d5\05 \00\d7\05\d1\05\e8\05\d4\05 \00\d0\05\d9\05\da\05 \00\d4\05\e7\05\dc\05\d9\05\d8\05\d4\05\n\00\n\00P\00o\00l\00i\00s\00h\00 \00(\00p\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00c\00h\00n\00\05\01\07\01 \00w\00 \00t\00\19\01 \00B\01\f3\00d\00z\01 \00j\00e\00|\01a\00 \00l\00u\00b\00 \00o\00[\01m\00 \00s\00k\00r\00z\00y\00D\01 \00f\00i\00g\00\n\00 \00 \00(\00=\00 \00T\00o\00 \00p\00u\00s\00h\00 \00a\00 \00h\00e\00d\00g\00e\00h\00o\00g\00 \00o\00r\00 \00e\00i\00g\00h\00t\00 \00b\00i\00n\00s\00 \00o\00f\00 \00f\00i\00g\00s\00 \00i\00n\00 \00t\00h\00i\00s\00 \00b\00o\00a\00t\00)\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00 \00(\00r\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\12\04 \00G\040\04I\040\04E\04 \00N\043\040\04 \006\048\04;\04 \001\04K\04 \00F\048\04B\04@\04C\04A\04?\00 \00\14\040\04,\00 \00=\04>\04 \00D\040\04;\04L\04H\048\042\04K\049\04 \00M\04:\047\045\04<\04?\04;\04O\04@\04!\00\n\00 \00 \00(\00=\00 \00W\00o\00u\00l\00d\00 \00a\00 \00c\00i\00t\00r\00u\00s\00 \00l\00i\00v\00e\00 \00i\00n\00 \00t\00h\00e\00 \00b\00u\00s\00h\00e\00s\00 \00o\00f\00 \00s\00o\00u\00t\00h\00?\00 \00Y\00e\00s\00,\00 \00b\00u\00t\00 \00o\00n\00l\00y\00 \00a\00 \00f\00a\00k\00e\00 \00o\00n\00e\00!\00)\00\n\00\n\00 \00 \00!\04J\045\04H\04L\04 \006\045\04 \005\04I\04Q\04 \00M\04B\048\04E\04 \00<\04O\043\04:\048\04E\04 \00D\04@\040\04=\04F\04C\047\04A\04:\048\04E\04 \001\04C\04;\04>\04:\04 \004\040\04 \002\04K\04?\045\049\04 \00G\040\04N\04\n\00 \00 \00(\00=\00 \00E\00a\00t\00 \00s\00o\00m\00e\00 \00m\00o\00r\00e\00 \00o\00f\00 \00t\00h\00e\00s\00e\00 \00f\00r\00e\00s\00h\00 \00F\00r\00e\00n\00c\00h\00 \00l\00o\00a\00f\00s\00 \00a\00n\00d\00 \00h\00a\00v\00e\00 \00s\00o\00m\00e\00 \00t\00e\00a\00)\00\n\00\n\00T\00h\00a\00i\00 \00(\00t\00h\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00@\0e\1b\0eG\0e\19\0e!\0e\19\0e8\0e)\0e\"\0eL\0e*\0e8\0e\14\0e\1b\0e#\0e0\0e@\0e*\0e#\0e4\0e\10\0e@\0e%\0e4\0e(\0e\04\0e8\0e\13\0e\04\0eH\0e2\0e \00 \00\01\0e\'\0eH\0e2\0e\1a\0e#\0e#\0e\14\0e2\0e\1d\0e9\0e\07\0e*\0e1\0e\15\0e\'\0eL\0e@\0e\14\0e#\0e1\0e\08\0e\t\0e2\0e\19\0e\n\00 \00 \00\08\0e\07\0e\1d\0eH\0e2\0e\1f\0e1\0e\19\0e\1e\0e1\0e\12\0e\19\0e2\0e\'\0e4\0e\n\0e2\0e\01\0e2\0e#\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00-\0e\"\0eH\0e2\0e%\0eI\0e2\0e\07\0e\1c\0e%\0e2\0e\r\0e$\0eE\0e@\0e\02\0eH\0e\19\0e\06\0eH\0e2\0e\1a\0e5\0e\11\0e2\0eC\0e\04\0e#\0e\n\00 \00 \00D\0e!\0eH\0e\16\0e7\0e-\0eB\0e\17\0e)\0eB\0e\01\0e#\0e\18\0eA\0e\n\0eH\0e\07\0e\0b\0e1\0e\14\0e.\0e6\0e\14\0e.\0e1\0e\14\0e\14\0eH\0e2\0e \00 \00 \00 \00 \00+\0e1\0e\14\0e-\0e \0e1\0e\"\0e@\0e+\0e!\0e7\0e-\0e\19\0e\01\0e5\0e,\0e2\0e-\0e1\0e\n\0e\0c\0e2\0e*\0e1\0e\"\0e\n\00 \00 \00\1b\0e\0f\0e4\0e\1a\0e1\0e\15\0e4\0e\1b\0e#\0e0\0e\1e\0e$\0e\15\0e4\0e\01\0e\0e\0e\01\0e3\0e+\0e\19\0e\14\0eC\0e\08\0e \00 \00 \00 \00 \00 \00 \00 \00\1e\0e9\0e\14\0e\08\0e2\0eC\0e+\0eI\0e\08\0eJ\0e0\0eF\0e \00\08\0eK\0e2\0eF\0e \00\19\0eH\0e2\0e\1f\0e1\0e\07\0e@\0e-\0e\"\0e \00/\0e\n\00\n\00 \00 \00[\00T\00h\00e\00 \00c\00o\00p\00y\00r\00i\00g\00h\00t\00 \00f\00o\00r\00 \00t\00h\00e\00 \00T\00h\00a\00i\00 \00e\00x\00a\00m\00p\00l\00e\00 \00i\00s\00 \00o\00w\00n\00e\00d\00 \00b\00y\00 \00T\00h\00e\00 \00C\00o\00m\00p\00u\00t\00e\00r\00\n\00 \00 \00A\00s\00s\00o\00c\00i\00a\00t\00i\00o\00n\00 \00o\00f\00 \00T\00h\00a\00i\00l\00a\00n\00d\00 \00u\00n\00d\00e\00r\00 \00t\00h\00e\00 \00R\00o\00y\00a\00l\00 \00P\00a\00t\00r\00o\00n\00a\00g\00e\00 \00o\00f\00 \00H\00i\00s\00 \00M\00a\00j\00e\00s\00t\00y\00 \00t\00h\00e\00\n\00 \00 \00K\00i\00n\00g\00.\00]\00\n\00\n\00T\00u\00r\00k\00i\00s\00h\00 \00(\00t\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00i\00j\00a\00m\00a\00l\001\01 \00h\00a\00s\00t\00a\00,\00 \00y\00a\00\1f\011\01z\00 \00_\01o\00f\00\f6\00r\00e\00 \00\e7\00a\00b\00u\00c\00a\00k\00 \00g\00\fc\00v\00e\00n\00d\00i\00.\00\n\00 \00 \00(\00=\00P\00a\00t\00i\00e\00n\00t\00 \00w\00i\00t\00h\00 \00p\00a\00j\00a\00m\00a\00s\00,\00 \00t\00r\00u\00s\00t\00e\00d\00 \00s\00w\00a\00r\00t\00h\00y\00 \00d\00r\00i\00v\00e\00r\00 \00q\00u\00i\00c\00k\00l\00y\00)\00\n\00\n\00O\00t\00h\00e\00r\00\n\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c0\00\c8\00 \00/\00 \00c\003\00_\008\000\00 \00c\003\00_\008\008\00\n\00 \00 \00\d8S\cf\91 \00/\00 \00e\005\00_\008\00f\00_\009\008\00 \00e\009\00_\008\007\00_\008\00f\00\n\00 \00 \00A\d8\0e\dfA\d81\df \00/\00 \00f\000\00_\00a\000\00_\009\00c\00_\008\00e\00 \00f\000\00_\00a\000\00_\009\00c\00_\00b\001\00\n") + (data $36 (i32.const 24720) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots @@ -76,11 +94,15 @@ (local $1 i32) i32.const 1056 call $~lib/rt/itcms/__visit - i32.const 1344 + i32.const 1376 call $~lib/rt/itcms/__visit - i32.const 1152 + i32.const 1184 + call $~lib/rt/itcms/__visit + i32.const 3648 + call $~lib/rt/itcms/__visit + i32.const 2240 call $~lib/rt/itcms/__visit - i32.const 1712 + i32.const 3296 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -101,7 +123,7 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 1248 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -149,7 +171,7 @@ i32.eqz if i32.const 0 - i32.const 1216 + i32.const 1248 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -158,7 +180,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$158 + block $__inlined_func$~lib/rt/itcms/Object#unlink$170 local.get $1 i32.load offset=4 i32.const -4 @@ -170,19 +192,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 55572 + i32.const 57508 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1216 + i32.const 1248 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$158 + br $__inlined_func$~lib/rt/itcms/Object#unlink$170 end local.get $1 i32.load offset=8 @@ -190,7 +212,7 @@ i32.eqz if i32.const 0 - i32.const 1216 + i32.const 1248 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -219,12 +241,12 @@ i32.const 1 else local.get $0 - i32.const 22784 + i32.const 24720 i32.load i32.gt_u if - i32.const 1344 - i32.const 1408 + i32.const 1376 + i32.const 1440 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -233,7 +255,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 22788 + i32.const 24724 i32.add i32.load i32.const 32 @@ -285,7 +307,7 @@ i32.eqz if i32.const 0 - i32.const 1488 + i32.const 1520 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -299,7 +321,7 @@ i32.lt_u if i32.const 0 - i32.const 1488 + i32.const 1520 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -345,7 +367,7 @@ i32.eqz if i32.const 0 - i32.const 1488 + i32.const 1520 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -428,7 +450,7 @@ i32.eqz if i32.const 0 - i32.const 1488 + i32.const 1520 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -442,7 +464,7 @@ i32.eqz if i32.const 0 - i32.const 1488 + i32.const 1520 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -503,7 +525,7 @@ i32.eqz if i32.const 0 - i32.const 1488 + i32.const 1520 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -536,7 +558,7 @@ i32.lt_u if i32.const 0 - i32.const 1488 + i32.const 1520 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -551,7 +573,7 @@ i32.ne if i32.const 0 - i32.const 1488 + i32.const 1520 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -602,7 +624,7 @@ i32.eqz if i32.const 0 - i32.const 1488 + i32.const 1520 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -674,7 +696,7 @@ i64.lt_u if i32.const 0 - i32.const 1488 + i32.const 1520 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -699,7 +721,7 @@ i32.gt_u if i32.const 0 - i32.const 1488 + i32.const 1520 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -726,7 +748,7 @@ i32.gt_u if i32.const 0 - i32.const 1488 + i32.const 1520 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -798,10 +820,10 @@ if unreachable end - i32.const 55584 + i32.const 57520 i32.const 0 i32.store - i32.const 57152 + i32.const 59088 i32.const 0 i32.store loop $for-loop|0 @@ -812,7 +834,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 55584 + i32.const 57520 i32.add i32.const 0 i32.store offset=4 @@ -830,7 +852,7 @@ i32.add i32.const 2 i32.shl - i32.const 55584 + i32.const 57520 i32.add i32.const 0 i32.store offset=96 @@ -848,14 +870,14 @@ br $for-loop|0 end end - i32.const 55584 - i32.const 57156 + i32.const 57520 + i32.const 59092 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 55584 + i32.const 57520 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -940,7 +962,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 55572 + i32.const 57508 i32.lt_u if local.get $0 @@ -1029,14 +1051,14 @@ i32.ne if i32.const 0 - i32.const 1216 + i32.const 1248 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 55572 + i32.const 57508 i32.lt_u if local.get $0 @@ -1059,7 +1081,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 55572 + i32.const 57508 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1088,7 +1110,7 @@ end if i32.const 0 - i32.const 1488 + i32.const 1520 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1172,7 +1194,7 @@ i32.eqz if i32.const 0 - i32.const 1488 + i32.const 1520 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1224,7 +1246,7 @@ i32.eqz if i32.const 0 - i32.const 1488 + i32.const 1520 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1256,8 +1278,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1152 - i32.const 1216 + i32.const 1184 + i32.const 1248 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1267,7 +1289,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$70 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1288,7 +1310,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1321,8 +1343,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1152 - i32.const 1488 + i32.const 1184 + i32.const 1520 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1424,7 +1446,7 @@ i32.eqz if i32.const 0 - i32.const 1488 + i32.const 1520 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1439,7 +1461,7 @@ i32.gt_u if i32.const 0 - i32.const 1488 + i32.const 1520 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1458,7 +1480,7 @@ i32.and if i32.const 0 - i32.const 1488 + i32.const 1520 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1563,6 +1585,204 @@ memory.fill local.get $1 ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 24740 + i32.lt_s + if + i32.const 57536 + i32.const 57584 + 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$75 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1808 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$75 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/string/String.UTF8.byteLength (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1657,13 +1877,45 @@ (local $0 i32) (local $1 i32) (local $2 i32) + memory.size + i32.const 16 + i32.shl + i32.const 57508 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/pinSpace + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/toSpace + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + 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 22804 + i32.const 24740 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -1678,7 +1930,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 8 i32.const 3 call $~lib/builtins/abort @@ -1688,44 +1940,12 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - memory.size - i32.const 16 - i32.shl - i32.const 55572 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1268 - i32.const 1264 - i32.store - i32.const 1272 - i32.const 1264 - i32.store - i32.const 1264 - global.set $~lib/rt/itcms/pinSpace - i32.const 1300 - i32.const 1296 - i32.store - i32.const 1304 - i32.const 1296 - i32.store - i32.const 1296 - global.set $~lib/rt/itcms/toSpace - i32.const 1444 - i32.const 1440 - i32.store - i32.const 1448 - i32.const 1440 - i32.store - i32.const 1440 - global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -1750,7 +1970,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 15 i32.const 3 call $~lib/builtins/abort @@ -1762,7 +1982,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 16 i32.const 3 call $~lib/builtins/abort @@ -1774,7 +1994,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 17 i32.const 3 call $~lib/builtins/abort @@ -1786,7 +2006,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 18 i32.const 3 call $~lib/builtins/abort @@ -1798,7 +2018,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 19 i32.const 3 call $~lib/builtins/abort @@ -1810,7 +2030,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 20 i32.const 3 call $~lib/builtins/abort @@ -1820,7 +2040,7 @@ i32.load8_u offset=5 if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 21 i32.const 3 call $~lib/builtins/abort @@ -1832,7 +2052,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 22 i32.const 3 call $~lib/builtins/abort @@ -1842,7 +2062,7 @@ i32.load8_u offset=7 if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 23 i32.const 3 call $~lib/builtins/abort @@ -1854,7 +2074,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 24 i32.const 3 call $~lib/builtins/abort @@ -1866,7 +2086,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 25 i32.const 3 call $~lib/builtins/abort @@ -1878,7 +2098,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 26 i32.const 3 call $~lib/builtins/abort @@ -1890,7 +2110,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -1905,7 +2125,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -1940,7 +2160,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -1955,7 +2175,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -1986,12 +2206,12 @@ local.get $0 i32.store local.get $0 - i32.const 1552 + i32.const 1152 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -2013,7 +2233,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -2027,12 +2247,12 @@ local.get $0 i32.store local.get $0 - i32.const 1584 + i32.const 3520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -2048,12 +2268,12 @@ local.get $0 i32.store local.get $0 - i32.const 1616 + i32.const 3552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -2069,12 +2289,12 @@ local.get $0 i32.store local.get $0 - i32.const 1648 + i32.const 3584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -2090,12 +2310,12 @@ local.get $0 i32.store local.get $0 - i32.const 1680 + i32.const 3616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 47 i32.const 3 call $~lib/builtins/abort @@ -2111,12 +2331,12 @@ local.get $0 i32.store local.get $0 - i32.const 1552 + i32.const 1152 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 48 i32.const 3 call $~lib/builtins/abort @@ -2131,7 +2351,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2147,7 +2367,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 55 i32.const 3 call $~lib/builtins/abort @@ -2163,7 +2383,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 56 i32.const 3 call $~lib/builtins/abort @@ -2178,7 +2398,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2206,7 +2426,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -2218,7 +2438,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -2230,7 +2450,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -2242,7 +2462,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 66 i32.const 3 call $~lib/builtins/abort @@ -2254,7 +2474,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -2266,7 +2486,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -2278,7 +2498,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 69 i32.const 3 call $~lib/builtins/abort @@ -2290,7 +2510,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 70 i32.const 3 call $~lib/builtins/abort @@ -2302,7 +2522,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 71 i32.const 3 call $~lib/builtins/abort @@ -2314,7 +2534,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 72 i32.const 3 call $~lib/builtins/abort @@ -2326,7 +2546,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 73 i32.const 3 call $~lib/builtins/abort @@ -2342,14 +2562,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 1904 + i32.const 3840 i32.const 0 i32.const 0 call $~lib/string/String.UTF8.encode @@ -2366,19 +2586,19 @@ local.get $0 i32.store local.get $0 - i32.const 1904 + i32.const 3840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 101 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1904 + i32.const 3840 i32.const 0 i32.const 1 call $~lib/string/String.UTF8.encode @@ -2395,19 +2615,19 @@ local.get $0 i32.store local.get $0 - i32.const 1936 + i32.const 3872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 103 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1968 + i32.const 3904 i32.const 0 i32.const 0 call $~lib/string/String.UTF8.encode @@ -2424,19 +2644,19 @@ local.get $0 i32.store local.get $0 - i32.const 1968 + i32.const 3904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 106 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1968 + i32.const 3904 i32.const 0 i32.const 1 call $~lib/string/String.UTF8.encode @@ -2453,12 +2673,12 @@ local.get $0 i32.store local.get $0 - i32.const 1936 + i32.const 3872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -2473,7 +2693,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2512,7 +2732,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -2527,7 +2747,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -2564,38 +2784,38 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 120 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 2000 + i32.const 3936 i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 2000 + i32.const 3936 i32.store - i32.const 2000 + i32.const 3936 i32.const 1 call $~lib/string/String.UTF8.byteLength i32.const 4 i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 122 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 2000 + i32.const 3936 i32.store i32.const 2 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 2000 + i32.const 3936 i32.const 1 call $~lib/string/String.UTF8.encode@varargs local.tee $0 @@ -2611,26 +2831,26 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 124 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 2048 + i32.const 3984 i32.store offset=24 global.get $~lib/memory/__stack_pointer - i32.const 2048 + i32.const 3984 i32.store - i32.const 2048 + i32.const 3984 i32.const 1 call $~lib/string/String.UTF8.byteLength i32.const 4 i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 126 i32.const 3 call $~lib/builtins/abort @@ -2647,27 +2867,27 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 2048 + i32.const 3984 i32.store offset=8 local.get $0 - i32.const 2048 + i32.const 3984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 127 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 2000 + i32.const 3936 i32.store i32.const 2 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 2000 + i32.const 3936 i32.const 0 call $~lib/string/String.UTF8.encode@varargs local.tee $0 @@ -2683,15 +2903,15 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 2048 + i32.const 3984 i32.store offset=8 local.get $0 - i32.const 2048 + i32.const 3984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 129 i32.const 3 call $~lib/builtins/abort @@ -2702,9 +2922,9 @@ i32.add global.set $~lib/memory/__stack_pointer call $std/string-encoding/testUTF8DecodeUnsafe - i32.const 2112 + i32.const 4048 call $std/string-encoding/testRoundtrip - i32.const 15232 + i32.const 17168 call $std/string-encoding/testRoundtrip global.get $~lib/rt/itcms/state i32.const 0 @@ -2741,40 +2961,215 @@ global.set $~lib/rt/itcms/threshold return end - i32.const 55600 - i32.const 55648 + i32.const 57536 + i32.const 57584 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return + (func $~start + call $start:std/string-encoding + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 24740 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 24740 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$175 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1152 + local.set $0 + br $__inlined_func$~lib/string/String#concat$175 end - return + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load - call $~lib/rt/itcms/__visit return end + i32.const 57536 + i32.const 57584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) - (func $~start - call $start:std/string-encoding + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 24740 + i32.lt_s + if + i32.const 57536 + i32.const 57584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1088 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1120 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3392 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/string/String.UTF16.encode (param $0 i32) (result i32) (local $1 i32) @@ -2783,11 +3178,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s if - i32.const 55600 - i32.const 55648 + i32.const 57536 + i32.const 57584 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2832,11 +3227,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s if - i32.const 55600 - i32.const 55648 + i32.const 57536 + i32.const 57584 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2869,11 +3264,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s if - i32.const 55600 - i32.const 55648 + i32.const 57536 + i32.const 57584 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2972,7 +3367,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$94 + block $__inlined_func$~lib/util/string/compareImpl$97 loop $while-continue|1 local.get $0 local.tee $3 @@ -2992,7 +3387,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$94 + br_if $__inlined_func$~lib/util/string/compareImpl$97 local.get $2 i32.const 2 i32.add @@ -3032,11 +3427,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s if - i32.const 55600 - i32.const 55648 + i32.const 57536 + i32.const 57584 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3205,8 +3600,8 @@ i32.const 2 i32.eq if - i32.const 1712 - i32.const 1776 + i32.const 3648 + i32.const 3712 i32.const 742 i32.const 49 call $~lib/builtins/abort @@ -3272,11 +3667,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s if - i32.const 55600 - i32.const 55648 + i32.const 57536 + i32.const 57584 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3317,11 +3712,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s if - i32.const 55600 - i32.const 55648 + i32.const 57536 + i32.const 57584 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3355,7 +3750,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 80 i32.const 3 call $~lib/builtins/abort @@ -3367,7 +3762,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 81 i32.const 3 call $~lib/builtins/abort @@ -3379,7 +3774,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 82 i32.const 3 call $~lib/builtins/abort @@ -3391,7 +3786,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -3403,7 +3798,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -3415,7 +3810,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 85 i32.const 3 call $~lib/builtins/abort @@ -3427,7 +3822,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 86 i32.const 3 call $~lib/builtins/abort @@ -3439,7 +3834,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 87 i32.const 3 call $~lib/builtins/abort @@ -3451,7 +3846,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 88 i32.const 3 call $~lib/builtins/abort @@ -3463,7 +3858,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 89 i32.const 3 call $~lib/builtins/abort @@ -3475,7 +3870,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 90 i32.const 3 call $~lib/builtins/abort @@ -3485,22 +3880,22 @@ i32.load8_u offset=10 if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 91 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1824 + i32.const 3760 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 1824 + i32.const 3760 i32.store i32.const 2 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 1824 + i32.const 3760 i32.const 1 call $~lib/string/String.UTF8.encode@varargs local.tee $0 @@ -3514,16 +3909,16 @@ i32.load offset=16 local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 1824 + i32.const 3760 i32.store - i32.const 1824 + i32.const 3760 i32.const 1 call $~lib/string/String.UTF8.byteLength local.get $0 i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 94 i32.const 3 call $~lib/builtins/abort @@ -3540,11 +3935,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s if - i32.const 55600 - i32.const 55648 + i32.const 57536 + i32.const 57584 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3577,11 +3972,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s if - i32.const 55600 - i32.const 55648 + i32.const 57536 + i32.const 57584 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3620,12 +4015,12 @@ local.get $1 i32.store local.get $1 - i32.const 1552 + i32.const 1152 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 138 i32.const 3 call $~lib/builtins/abort @@ -3648,7 +4043,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 139 i32.const 3 call $~lib/builtins/abort @@ -3663,12 +4058,12 @@ local.get $1 i32.store local.get $1 - i32.const 1584 + i32.const 3520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 140 i32.const 3 call $~lib/builtins/abort @@ -3685,12 +4080,12 @@ local.get $1 i32.store local.get $1 - i32.const 1648 + i32.const 3584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 141 i32.const 3 call $~lib/builtins/abort @@ -3707,12 +4102,12 @@ local.get $1 i32.store local.get $1 - i32.const 1680 + i32.const 3616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 142 i32.const 3 call $~lib/builtins/abort @@ -3729,12 +4124,12 @@ local.get $1 i32.store local.get $1 - i32.const 1552 + i32.const 1152 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 143 i32.const 3 call $~lib/builtins/abort @@ -3751,12 +4146,12 @@ local.get $1 i32.store local.get $1 - i32.const 2080 + i32.const 4016 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 145 i32.const 3 call $~lib/builtins/abort @@ -3773,12 +4168,12 @@ local.get $1 i32.store local.get $1 - i32.const 1680 + i32.const 3616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 146 i32.const 3 call $~lib/builtins/abort @@ -3795,12 +4190,12 @@ local.get $0 i32.store local.get $0 - i32.const 1552 + i32.const 1152 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 147 i32.const 3 call $~lib/builtins/abort @@ -3818,11 +4213,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s if - i32.const 55600 - i32.const 55648 + i32.const 57536 + i32.const 57584 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3862,7 +4257,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 153 i32.const 3 call $~lib/builtins/abort @@ -3894,7 +4289,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 155 i32.const 3 call $~lib/builtins/abort @@ -3912,11 +4307,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s if - i32.const 55600 - i32.const 55648 + i32.const 57536 + i32.const 57584 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3955,11 +4350,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 22804 + i32.const 24740 i32.lt_s if - i32.const 55600 - i32.const 55648 + i32.const 57536 + i32.const 57584 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3978,7 +4373,7 @@ i32.gt_u if i32.const 0 - i32.const 1776 + i32.const 3712 i32.const 770 i32.const 7 call $~lib/builtins/abort @@ -4150,7 +4545,7 @@ end end end - block $__inlined_func$~lib/rt/itcms/__renew$157 + block $__inlined_func$~lib/rt/itcms/__renew$168 local.get $1 local.get $0 i32.sub @@ -4169,7 +4564,7 @@ local.get $3 local.get $2 i32.store offset=16 - br $__inlined_func$~lib/rt/itcms/__renew$157 + br $__inlined_func$~lib/rt/itcms/__renew$168 end local.get $2 local.get $3 @@ -4195,4 +4590,29 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/std/string-nonnull.debug.wat b/tests/compiler/std/string-nonnull.debug.wat index 9e74fc89e8..53dd1f41bf 100644 --- a/tests/compiler/std/string-nonnull.debug.wat +++ b/tests/compiler/std/string-nonnull.debug.wat @@ -1,10 +1,17 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func)) + (type $1 (func (param i32 i32))) (type $2 (func (param i32 i32) (result i32))) - (type $3 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (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)) @@ -12,6 +19,18 @@ (global $~lib/memory/__data_end i32 (i32.const 44)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32812)) (global $~lib/memory/__heap_base i32 (i32.const 32812)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 1 funcref) @@ -138,13 +157,2629 @@ (func $~start call $start:std/string-nonnull ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 33136 + i32.const 33200 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 33008 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33008 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32944 + i32.const 33280 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33280 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32944 + i32.const 33008 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 33580 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 33580 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 33580 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 33580 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 34000 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 34000 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 35056 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 35056 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~stack_check global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__data_end i32.lt_s if i32.const 32832 - i32.const 32880 + i32.const 35216 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -435,4 +3070,408 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 32 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32880 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 32912 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 33344 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 33344 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 35152 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 33376 + i32.const 33504 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 33568 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 33136 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32944 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 34000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 35056 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/std/string-nonnull.release.wat b/tests/compiler/std/string-nonnull.release.wat index 63edc700be..68ebb2f950 100644 --- a/tests/compiler/std/string-nonnull.release.wat +++ b/tests/compiler/std/string-nonnull.release.wat @@ -1,9 +1,20 @@ (module - (type $0 (func (result i32))) - (type $1 (func)) - (type $2 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func)) + (type $1 (func (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33836)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02") @@ -124,12 +135,1674 @@ return end i32.const 33856 - i32.const 33904 + i32.const 36240 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 34160 + call $~lib/rt/itcms/__visit + i32.const 33968 + call $~lib/rt/itcms/__visit + i32.const 35024 + call $~lib/rt/itcms/__visit + i32.const 36080 + call $~lib/rt/itcms/__visit + i32.const 4 + i32.load + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 34032 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + 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 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 34032 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$130 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 33836 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34032 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$130 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 34032 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.load + i32.gt_u + if + i32.const 34160 + i32.const 34224 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.load offset=4 + i32.const 32 + i32.and + end + local.set $1 + i32.const 8 + i32.load + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $1 + select + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + i32.const 8 + local.get $0 + i32.store + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 34304 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 34304 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 34304 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 34304 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 34304 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 34304 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 33840 + i32.const 0 + i32.store + i32.const 35408 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 33840 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 33840 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 33840 + i32.const 35412 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 33840 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + i32.const 0 + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 33836 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + local.get $1 + global.set $~lib/rt/itcms/white + i32.const 4 + i32.load + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + 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 34032 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 33836 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 33836 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 34304 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + i32.const 4 + i32.const 0 + i32.store + i32.const 8 + i32.const 0 + i32.store + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 33968 + i32.const 34032 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 33968 + i32.const 34304 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 34304 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 34304 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 34304 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + i32.const 8 + i32.load + local.set $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + i32.const 8 + local.get $1 + i32.store + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 1068 + i32.lt_s + if + i32.const 33856 + i32.const 36240 + 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$73 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 34592 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$73 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 34604 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/string/String.__eq (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -140,7 +1813,7 @@ i32.lt_s if i32.const 33856 - i32.const 33904 + i32.const 36240 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -166,7 +1839,7 @@ i32.lt_s if i32.const 33856 - i32.const 33904 + i32.const 36240 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -188,4 +1861,228 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$135 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1056 + local.set $0 + br $__inlined_func$~lib/string/String#concat$135 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 33856 + i32.const 36240 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + if + i32.const 33856 + i32.const 36240 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 33904 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 33936 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 34368 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 34368 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 36176 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/std/string.debug.wat b/tests/compiler/std/string.debug.wat index 733dbecb2d..629878fe11 100644 --- a/tests/compiler/std/string.debug.wat +++ b/tests/compiler/std/string.debug.wat @@ -6,18 +6,18 @@ (type $4 (func (param i32))) (type $5 (func)) (type $6 (func (param i32 i32 i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i64 i32) (result i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i32 i32 i32))) (type $9 (func (param i32) (result f64))) (type $10 (func (result i32))) (type $11 (func (param i32 i64 i32))) (type $12 (func (param i32 i32) (result f64))) (type $13 (func (param i32 i32) (result i64))) - (type $14 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $15 (func (param i32 i32 i64) (result i32))) - (type $16 (func (param f64 i32) (result f64))) - (type $17 (func (param f64 f64) (result i32))) - (type $18 (func (param i32 i64 i32 i32))) + (type $14 (func (param i32 i32 i64) (result i32))) + (type $15 (func (param i32 i64 i32 i32))) + (type $16 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $17 (func (param f64 i32) (result f64))) + (type $18 (func (param f64 f64) (result i32))) (type $19 (func (param i64) (result i32))) (type $20 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $21 (func (param i32 f64 i32) (result i32))) @@ -25,13 +25,11 @@ (type $23 (func (param i32 i32 i32 i32) (result i32))) (type $24 (func (param f64) (result i32))) (type $25 (func (param f32) (result i32))) - (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -43,6 +41,7 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/string/String.MAX_LENGTH i32 (i32.const 536870910)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) @@ -70,487 +69,491 @@ (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~lib/builtins/f32.EPSILON f32 (f32.const 1.1920928955078125e-07)) (global $~lib/builtins/f32.MAX_VALUE f32 (f32.const 3402823466385288598117041e14)) - (global $~lib/rt/__rtti_base i32 (i32.const 25584)) - (global $~lib/memory/__data_end i32 (i32.const 25612)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 58380)) - (global $~lib/memory/__heap_base i32 (i32.const 58380)) + (global $~lib/rt/__rtti_base i32 (i32.const 25744)) + (global $~lib/memory/__data_end i32 (i32.const 25772)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 58540)) + (global $~lib/memory/__heap_base i32 (i32.const 58540)) (memory $0 1) (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00\00\00") - (data $2 (i32.const 124) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\df\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 156) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\df\00\df\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\df\00a\00b\00\00\00\00\00\00\00") - (data $5 (i32.const 220) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 284) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data $7 (i32.const 332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $8 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 464) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 496) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 524) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 576) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 604) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00h\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $17 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") - (data $18 (i32.const 796) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00@\00\00\00\00\00\00\00\00\00\00\00") - (data $19 (i32.const 828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\006\00\00\00\00\00\00\00\00\00\00\00") - (data $20 (i32.const 860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\00\d8\00\df\00\00\00\00\00\00\00\00") - (data $21 (i32.const 892) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\006\00\00\00\00\00\00\00") - (data $22 (i32.const 924) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\00\006\00\00\00\00\00\00\00\00\00") - (data $23 (i32.const 956) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00A\00\00\00B\00\00\00C\00\00\00") - (data $24 (i32.const 988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00B\00C\00\00\00\00\00\00\00") - (data $25 (i32.const 1020) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\004\d8\00\00\06\df\00\00a\00\00\004\d8\00\00\07\df\00\00\00\00\00\00\00\00\00\00") - (data $26 (i32.const 1068) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\004\d8\06\dfa\004\d8\07\df\00\00") - (data $27 (i32.const 1100) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\004\d8\06\df\00\00\00\00\00\00\00\00") - (data $28 (i32.const 1132) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00h\00i\00\00\00\00\00\00\00\00\00") - (data $29 (i32.const 1164) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") - (data $30 (i32.const 1196) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00I\00\'\00m\00\00\00\00\00\00\00") - (data $31 (i32.const 1228) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") - (data $32 (i32.const 1260) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00 \00 \00 \00\00\00\00\00\00\00") - (data $33 (i32.const 1292) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00b\00c\00\00\00\00\00\00\00") - (data $34 (i32.const 1324) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00 \00a\00b\00c\00\00\00") - (data $35 (i32.const 1356) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\002\003\00\00\00\00\00\00\00") - (data $36 (i32.const 1388) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\002\003\00a\00b\00c\00") - (data $37 (i32.const 1420) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $38 (i32.const 1468) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00c\00 \00 \00\00\00") - (data $39 (i32.const 1500) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c\00") - (data $40 (i32.const 1532) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $41 (i32.const 1580) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") - (data $42 (i32.const 1612) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00x\00\00\00\00\00\00\00\00\00\00\00") - (data $43 (i32.const 1644) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00,\00 \00I\00\00\00\00\00\00\00") - (data $44 (i32.const 1676) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00g\00\00\00\00\00\00\00\00\00\00\00") - (data $45 (i32.const 1708) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00i\00\00\00\00\00\00\00\00\00\00\00") - (data $46 (i32.const 1740) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00n\00u\00l\00l\00\00\00\00\00") - (data $47 (i32.const 1772) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00b\00d\00\00\00\00\00\00\00") - (data $48 (i32.const 1804) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00b\00f\00\00\00\00\00\00\00") - (data $49 (i32.const 1836) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00b\00z\00\00\00\00\00\00\00") - (data $50 (i32.const 1868) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00b\00c\00d\00\00\00\00\00") - (data $51 (i32.const 1900) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00b\00d\00d\00\00\00\00\00") - (data $52 (i32.const 1932) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00b\00 \00c\00\00\00\00\00") - (data $53 (i32.const 1964) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00 \00\n\00\t\00\r\00a\00b\00c\00 \00\t\00\r\00 \00\00\00\00\00\00\00") - (data $54 (i32.const 2012) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00a\00b\00c\00 \00\t\00\r\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $55 (i32.const 2060) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00 \00\n\00\t\00\r\00a\00b\00c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $56 (i32.const 2108) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00\t\00\n\00 \00t\00r\00u\00e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $57 (i32.const 2156) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00\t\00\n\00 \00t\00r\00u\00e\00\n\00\r\00 \00\00\00\00\00\00\00\00\00") - (data $58 (i32.const 2204) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00 \00 \00t\00r\00u\00e\00a\00b\00c\00\00\00\00\00\00\00\00\00\00\00") - (data $59 (i32.const 2252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00t\00r\00u\00\00\00\00\00\00\00") - (data $60 (i32.const 2284) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00T\00r\00u\00e\00\00\00\00\00") - (data $61 (i32.const 2316) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00f\00a\00l\00s\00e\00\00\00") - (data $62 (i32.const 2348) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data $63 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\000\000\00\00\00\00\00\00\00") - (data $64 (i32.const 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") - (data $65 (i32.const 2444) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\000\000\000\001\00\00\00\00\00") - (data $66 (i32.const 2476) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\00b\001\000\001\00\00\00") - (data $67 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\00o\007\000\007\00\00\00") - (data $68 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\00x\00f\000\00f\00\00\00") - (data $69 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\00X\00F\000\00F\00\00\00") - (data $70 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\001\001\00\00\00\00\00\00\00") - (data $71 (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\000\00x\001\00g\00\00\00\00\00") - (data $72 (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00-\001\002\003\00\00\00\00\00") - (data $73 (i32.const 2700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00+\001\002\003\00\00\00\00\00") - (data $74 (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00-\001\002\00.\003\00\00\00") - (data $75 (i32.const 2764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00x\000\00\00\00\00\00\00\00") - (data $76 (i32.const 2796) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\000\00b\001\001\00\00\00\00\00") - (data $77 (i32.const 2828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\n\001\00\00\00\00\00\00\00\00\00") - (data $78 (i32.const 2860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00( 1\00\00\00\00\00\00\00\00\00") - (data $79 (i32.const 2892) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00) 1\00\00\00\00\00\00\00\00\00") - (data $80 (i32.const 2924) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00-\000\00\00\00\00\00\00\00\00\00") - (data $81 (i32.const 2956) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\000\00X\00A\00B\00C\00D\00E\00F\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $82 (i32.const 3004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00A\00B\00C\00D\00E\00F\00") - (data $83 (i32.const 3036) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\003\006\008\009\003\004\008\008\001\004\007\004\001\009\001\000\003\002\003\002\00\00\00\00\00") - (data $84 (i32.const 3100) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\004\00\00\00-\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00") - (data $85 (i32.const 3180) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\000\00x\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\00") - (data $86 (i32.const 3244) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00=\d8%\dd\00\00\00\00\00\00") - (data $87 (i32.const 3276) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\002\00b\00a\00d\00n\00u\00m\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $88 (i32.const 3324) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00\t\00\n\001\00\00\00\00\00") - (data $89 (i32.const 3356) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00 \00\t\00\n\000\00x\000\002\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $90 (i32.const 3404) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\00 \00a\00b\00c\00\00\00") - (data $91 (i32.const 3436) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00 \00a\00b\00c\00\00\00") - (data $92 (i32.const 3468) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00 \00\t\00\n\000\00 \00a\00b\00c\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $93 (i32.const 3516) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") - (data $94 (i32.const 3548) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") - (data $95 (i32.const 3580) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00=\d8%\dd\00\00\00\00\00\00\00\00") - (data $96 (i32.const 3612) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00b\00a\00d\00n\00u\00m\00") - (data $97 (i32.const 3648) "\00\00\00\00\00\00\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") - (data $98 (i32.const 3836) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F\00\00\00\00\00\00\00\00\00") - (data $99 (i32.const 3884) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00\00\00\00\00\00\00\00\00") - (data $100 (i32.const 3948) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\00.\00\00\00\00\00\00\00\00\00") - (data $101 (i32.const 3980) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00.\000\000\00\00\00\00\00") - (data $102 (i32.const 4012) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\00-\005\00\00\00\00\00") - (data $103 (i32.const 4044) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00-\001\00e\00-\005\00\00\00") - (data $104 (i32.const 4076) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00-\000\00.\003\00e\00-\002\002\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $105 (i32.const 4124) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\000\00.\003\00e\00+\002\002\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $106 (i32.const 4172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\00-\001\00\00\00\00\00") - (data $107 (i32.const 4204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\000\00.\001\00e\00-\000\00") - (data $108 (i32.const 4236) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\001\00\00\00\00\00\00\00") - (data $109 (i32.const 4268) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00.\002\005\00\00\00\00\00\00\00") - (data $110 (i32.const 4300) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00.\00e\00+\003\00a\00") - (data $111 (i32.const 4332) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\00.\000\00e\00-\001\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $112 (i32.const 4380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\00.\000\00e\00-\003\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $113 (i32.const 4428) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\003\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $114 (i32.const 4476) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\004\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $115 (i32.const 4524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00e\00+\003\000\008\00") - (data $116 (i32.const 4556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00e\00+\003\000\009\00") - (data $117 (i32.const 4588) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\001\00.\000\00e\00-\001\00_\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $118 (i32.const 4636) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\00.\000\00e\00-\001\000\00_\000\00\00\00\00\00\00\00\00\00\00\00") - (data $119 (i32.const 4684) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\001\00.\000\00e\00+\001\00_\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $120 (i32.const 4732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00_\000\00\00\00\00\00\00\00") - (data $121 (i32.const 4764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00_\001\00\00\00\00\00\00\00") - (data $122 (i32.const 4796) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\001\000\00.\000\000\00_\000\001\00e\002\00\00\00\00\00\00\00\00\00") - (data $123 (i32.const 4844) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\001\002\003\004\005\006\007\008\009\00_\004\00\00\00\00\00\00\00") - (data $124 (i32.const 4892) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\001\00_\000\001\002\003\004\005\006\007\008\009\00\00\00\00\00") - (data $125 (i32.const 4940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00e\00-\006\000\00\00\00") - (data $126 (i32.const 4972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\006\000\00\00\00\00\00") - (data $127 (i32.const 5004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\002\003\00.\004\00e\00") - (data $128 (i32.const 5036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\00x\00\00\00\00\00\00\00\00\00") - (data $129 (i32.const 5068) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00-\001\001\00e\00-\001\00s\00t\00r\00i\00n\00g\00\00\00\00\00") - (data $130 (i32.const 5116) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\000\001\00e\001\00s\00t\00r\00i\00n\00g\00\00\00\00\00\00\00\00\00") - (data $131 (i32.const 5164) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\000\001\000\00s\00t\00r\00i\00n\00g\00\00\00\00\00\00\00\00\00\00\00") - (data $132 (i32.const 5212) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00+\00.\002\002\00e\00-\001\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $133 (i32.const 5260) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\001\00.\00s\001\00\00\00") - (data $134 (i32.const 5292) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00x\005\00\00\00\00\00\00\00") - (data $135 (i32.const 5324) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00x\00D\00\00\00\00\00\00\00") - (data $136 (i32.const 5356) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00\0b\001\00.\001\00\00\00\00\00") - (data $137 (i32.const 5388) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00\0b\00\0b\00-\001\00.\001\00") - (data $138 (i32.const 5420) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00\0c\00\0c\00-\001\00.\001\00") - (data $139 (i32.const 5452) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00( ( -\001\00.\001\00") - (data $140 (i32.const 5484) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00) ) -\001\00.\001\00") - (data $141 (i32.const 5516) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\000\000\000\000\00\00\00") - (data $142 (i32.const 5548) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\000\000\000\00a\00\00\00") - (data $143 (i32.const 5580) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\000\000\000\001\00\00\00") - (data $144 (i32.const 5612) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\000\00.\000\000\00\00\00") - (data $145 (i32.const 5644) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\000\00.\000\00a\00\00\00") - (data $146 (i32.const 5676) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\001\00e\00\00\00\00\00") - (data $147 (i32.const 5708) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\00e\00+\000\000\000\001\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $148 (i32.const 5756) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\000\00e\00+\001\000\000\00") - (data $149 (i32.const 5788) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00.\00-\001\00.\00\00\00") - (data $150 (i32.const 5820) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00e\00-\001\00.\002\00") - (data $151 (i32.const 5852) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00e\00x\00\00\00\00\00\00\00") - (data $152 (i32.const 5884) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\001\00x\00\00\00\00\00") - (data $153 (i32.const 5916) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\00-\00x\00\00\00\00\00") - (data $154 (i32.const 5948) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00e\00-\001\00x\00\00\00") - (data $155 (i32.const 5980) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\000\00.\001\00e\00-\001\00x\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $156 (i32.const 6028) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\000\00.\00\00\00\00\00\00\00") - (data $157 (i32.const 6060) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00.\000\000\00\00\00\00\00\00\00") - (data $158 (i32.const 6092) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00.\000\00.\00\00\00\00\00\00\00") - (data $159 (i32.const 6124) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00.\001\00.\00\00\00\00\00\00\00") - (data $160 (i32.const 6156) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\00.\00\00\00\00\00\00\00") - (data $161 (i32.const 6188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\00a\00\00\00\00\00\00\00") - (data $162 (i32.const 6220) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00.\00.\001\00\00\00\00\00") - (data $163 (i32.const 6252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\00.\001\00.\001\00\00\00") - (data $164 (i32.const 6284) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\000\00.\00 \001\00\00\00\00\00") - (data $165 (i32.const 6316) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00+\000\00.\000\00\00\00\00\00") - (data $166 (i32.const 6348) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00-\000\00.\000\00\00\00\00\00") - (data $167 (i32.const 6380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00+\000\00\00\00\00\00\00\00\00\00") - (data $168 (i32.const 6412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00-\00.\000\000\000\000\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $169 (i32.const 6460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00-\00-\000\00\00\00\00\00\00\00") - (data $170 (i32.const 6492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00+\00+\000\00\00\00\00\00\00\00") - (data $171 (i32.const 6524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00.\00a\00\00\00\00\00\00\00\00\00") - (data $172 (i32.const 6556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00.\00.\000\00\00\00\00\00\00\00") - (data $173 (i32.const 6588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") - (data $174 (i32.const 6620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00.\00.\00\00\00\00\00\00\00\00\00") - (data $175 (i32.const 6652) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") - (data $176 (i32.const 6684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") - (data $177 (i32.const 6716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\0e\18\00\00\00\00\00\00\00\00\00\00") - (data $178 (i32.const 6748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00\0e\181\00.\001\00\00\00\00\00") - (data $179 (i32.const 6780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\0e\18\0e\181\00.\001\00\00\00") - (data $180 (i32.const 6812) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") - (data $181 (i32.const 6844) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00r\00u\00e\00\00\00\00\00") - (data $182 (i32.const 6876) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\002\002\00\00\00\00\00") - (data $183 (i32.const 6908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00e\00-\002\002\00\00\00") - (data $184 (i32.const 6940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\002\003\00\00\00\00\00") - (data $185 (i32.const 6972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00e\00-\002\003\00\00\00") - (data $186 (i32.const 7004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\003\007\00\00\00\00\00") - (data $187 (i32.const 7036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00e\00-\003\007\00\00\00") - (data $188 (i32.const 7068) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\003\008\00\00\00\00\00") - (data $189 (i32.const 7100) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00e\00-\003\008\00\00\00") - (data $190 (i32.const 7132) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\002\00.\002\002\000\004\004\006\000\004\009\002\005\000\003\001\003\00e\00-\001\006\00\00\00") - (data $191 (i32.const 7196) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\001\00.\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\007\00e\00+\003\000\008\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $192 (i32.const 7276) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\005\00e\00-\003\002\004\00") - (data $193 (i32.const 7308) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\000\00.\000\000\000\000\000\001\00e\00+\003\001\004\00\00\00") - (data $194 (i32.const 7356) "\8c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00|\00\00\000\00.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\00e\00+\005\006\00") - (data $195 (i32.const 7500) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00+\001\00E\00-\003\002\005\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $196 (i32.const 7548) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00+\001\00E\00+\003\000\009\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $197 (i32.const 7596) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00-\001\00E\00-\003\002\005\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $198 (i32.const 7644) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00-\001\00E\00+\003\000\009\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $199 (i32.const 7692) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\001\00e\00-\001\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00") - (data $200 (i32.const 7740) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\001\00e\00+\001\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00") - (data $201 (i32.const 7788) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00.\00e\003\006\000\00") - (data $202 (i32.const 7820) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00 \00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") - (data $203 (i32.const 7868) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00+\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") - (data $204 (i32.const 7916) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") - (data $205 (i32.const 7964) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00x\00\00\00\00\00\00\00\00\00\00\00") - (data $206 (i32.const 8012) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00+\001\00\00\00\00\00\00\00\00\00") - (data $207 (i32.const 8060) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00I\00n\00f\00i\00\00\00\00\00") - (data $208 (i32.const 8092) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00+\00I\00n\00f\00i\00n\00i\00t\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $209 (i32.const 8140) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00i\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $210 (i32.const 8188) "\bc\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\aa\00\00\00.\002\004\007\000\003\002\008\002\002\009\002\000\006\002\003\002\007\002\000\008\008\002\008\004\003\009\006\004\003\004\001\001\000\006\008\006\001\008\002\005\002\009\009\000\001\003\000\007\001\006\002\003\008\002\002\001\002\007\009\002\008\004\001\002\005\000\003\003\007\007\005\003\006\003\005\001\000\004\003\00e\00-\003\002\003\00\00\00") - (data $211 (i32.const 8380) "\bc\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\aa\00\00\00.\007\004\001\000\009\008\004\006\008\007\006\001\008\006\009\008\001\006\002\006\004\008\005\003\001\008\009\003\000\002\003\003\002\000\005\008\005\004\007\005\008\009\007\000\003\009\002\001\004\008\007\001\004\006\006\003\008\003\007\008\005\002\003\007\005\001\000\001\003\002\006\000\009\000\005\003\001\003\002\00e\00-\003\002\003\00\00\00") - (data $212 (i32.const 8572) "\bc\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\aa\00\00\00.\002\002\002\005\000\007\003\008\005\008\005\000\007\002\000\001\006\003\000\001\002\003\000\005\005\006\003\007\009\005\005\006\007\006\001\005\002\005\000\003\006\001\002\004\001\004\005\007\003\000\001\008\000\001\003\000\008\003\002\002\008\007\002\004\000\004\009\005\008\006\006\004\007\006\000\006\007\006\000\00e\00-\003\000\007\00\00\00") - (data $213 (i32.const 8764) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\88\00\00\001\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\008\000\007\009\003\007\002\008\009\007\001\004\000\005\003\000\003\004\001\005\000\007\009\009\003\004\001\003\002\007\001\000\000\003\007\008\002\006\009\003\006\001\007\003\007\007\008\009\008\000\004\004\00\00\00\00\00") - (data $214 (i32.const 8924) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\88\00\00\004\009\006\008\002\009\002\007\006\004\007\005\000\009\004\006\006\004\009\000\001\007\009\007\007\005\008\007\002\000\007\000\009\006\003\003\000\002\008\006\004\001\006\006\009\002\008\008\007\009\001\000\009\004\006\005\005\005\005\004\007\008\005\001\009\004\000\004\00\00\00\00\00") - (data $215 (i32.const 9084) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\88\00\00\000\002\006\003\000\006\005\007\004\008\008\006\007\001\005\000\005\008\002\000\006\008\001\009\000\008\009\000\002\000\000\000\007\000\008\003\008\003\006\007\006\002\007\003\008\005\004\008\004\005\008\001\007\007\001\001\005\003\001\007\006\004\004\007\005\007\003\000\00\00\00\00\00") - (data $216 (i32.const 9244) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\88\00\00\002\007\000\000\006\009\008\005\005\005\007\001\003\006\006\009\005\009\006\002\002\008\004\002\009\001\004\008\001\009\008\006\000\008\003\004\009\003\006\004\007\005\002\009\002\007\001\009\000\007\004\001\006\008\004\004\004\003\006\005\005\001\000\007\000\004\003\004\00\00\00\00\00") - (data $217 (i32.const 9404) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\88\00\00\002\007\001\001\005\005\009\006\009\009\005\000\008\000\009\003\000\004\002\008\008\000\001\007\007\009\000\004\001\007\004\004\009\007\007\009\001\00.\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\00\00\00\00\00") - (data $218 (i32.const 9564) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\\\00\00\000\00.\009\007\005\003\005\003\001\008\008\008\007\009\009\005\000\002\006\001\003\008\000\007\001\003\005\002\007\006\001\004\007\001\006\004\004\000\004\003\009\00e\00-\001\000\003\00") - (data $219 (i32.const 9676) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\00.\005\009\006\001\008\006\000\003\004\008\001\003\001\008\000\007\000\009\001\008\006\001\000\000\002\002\006\006\004\005\003\009\004\001\009\005\000\004\002\008\00e\000\000\00\00\00\00\00") - (data $220 (i32.const 9788) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\001\00.\008\001\005\000\001\003\001\006\009\002\001\008\000\003\008\007\002\009\008\008\007\004\006\000\008\009\008\007\003\003\005\002\006\009\005\007\004\004\002\00e\00-\001\00\00\00\00\00") - (data $221 (i32.const 9900) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\004\002\00.\000\007\000\008\002\003\005\007\005\003\004\004\005\003\006\000\000\006\008\001\006\001\008\006\008\005\006\008\002\002\005\007\005\009\000\007\007\002\00e\00-\002\00\00\00\00\00") - (data $222 (i32.const 10012) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\006\006\005\00.\004\006\008\006\003\000\006\005\001\006\002\006\001\004\005\006\003\002\008\009\007\003\002\002\005\005\007\009\008\003\003\004\007\000\008\001\006\00e\00-\003\00\00\00\00\00") - (data $223 (i32.const 10124) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\006\001\000\001\00.\008\005\002\009\002\002\009\007\000\008\006\008\006\002\001\007\008\006\006\009\000\004\009\005\004\008\005\004\004\009\008\003\001\007\005\003\00e\00-\004\00\00\00\00\00") - (data $224 (i32.const 10236) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\007\006\009\006\006\00.\009\005\002\000\008\002\003\006\009\006\008\000\007\007\008\004\009\004\006\004\003\004\008\008\007\005\004\007\001\001\005\008\005\004\009\00e\00-\005\00\00\00\00\00") - (data $225 (i32.const 10348) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\002\005\000\005\000\006\00.\005\003\002\002\002\002\008\006\008\002\004\009\006\001\003\002\006\000\004\008\000\007\002\002\002\009\002\003\007\000\002\003\000\004\00e\00-\006\00\00\00\00\00") - (data $226 (i32.const 10460) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\002\007\004\000\000\003\007\00.\002\003\000\002\002\008\000\000\005\003\002\005\008\005\002\004\002\004\006\009\007\006\009\008\003\003\001\001\007\007\003\007\007\00e\00-\007\00\00\00\00\00") - (data $227 (i32.const 10572) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\002\000\007\002\003\000\009\003\00.\005\000\000\004\009\007\004\002\006\004\005\009\004\001\005\002\009\002\006\008\007\001\005\004\002\008\003\002\004\004\009\000\00e\00-\008\00\00\00\00\00") - (data $228 (i32.const 10684) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\000\00.\007\009\000\000\002\008\000\002\003\008\000\008\001\006\000\004\009\005\006\002\002\006\000\001\001\000\004\007\004\006\000\002\003\008\007\004\008\009\001\002\00e\001\00\00\00\00\00") - (data $229 (i32.const 10796) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\000\00.\009\008\002\002\008\006\000\006\005\003\007\003\007\002\009\006\008\004\008\001\009\000\005\005\008\004\004\008\007\006\000\004\006\005\008\006\003\005\009\007\00e\002\00\00\00\00\00") - (data $230 (i32.const 10908) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\000\00.\007\004\006\008\009\004\009\007\002\003\001\009\000\003\007\000\008\000\009\004\000\005\005\007\000\005\006\000\001\006\000\004\000\005\003\002\004\008\006\009\00e\003\00\00\00\00\00") - (data $231 (i32.const 11020) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\000\00.\001\006\003\000\002\006\008\003\002\000\002\008\002\007\002\008\004\007\005\009\008\000\004\005\009\008\004\004\002\007\001\000\003\001\007\005\001\006\006\005\00e\004\00\00\00\00\00") - (data $232 (i32.const 11132) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\000\00.\004\006\003\007\001\006\008\006\002\009\007\001\009\001\007\000\006\009\005\001\000\009\009\001\008\007\006\009\006\004\005\004\009\002\000\002\002\000\008\008\00e\005\00\00\00\00\00") - (data $233 (i32.const 11244) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\000\00.\006\005\003\007\008\000\005\009\004\004\004\009\007\007\001\001\005\005\004\002\000\009\004\006\001\006\008\006\004\001\005\008\007\002\000\006\007\005\002\003\00e\006\00\00\00\00\00") - (data $234 (i32.const 11356) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\000\00.\002\003\004\006\003\002\004\003\005\006\005\000\002\004\003\007\000\004\005\002\001\002\002\003\000\007\001\003\009\006\000\004\005\007\006\007\006\005\003\001\00e\006\00\00\00\00\00") - (data $235 (i32.const 11468) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\000\00.\009\007\000\009\004\008\001\007\001\006\004\002\000\000\004\008\003\004\001\008\009\007\002\005\008\009\008\000\004\005\004\002\009\008\002\000\005\002\007\008\00e\008\00\00\00\00\00") - (data $236 (i32.const 11580) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\000\00.\004\009\009\006\009\000\008\005\002\002\000\005\001\008\007\004\001\001\000\007\007\009\009\008\002\003\005\004\009\003\002\004\009\009\004\009\009\006\000\002\00e\009\00\00\00\00\00") - (data $237 (i32.const 11692) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00Z\00\00\000\00.\007\009\002\005\002\000\001\002\000\000\005\005\007\002\004\005\008\006\001\009\004\004\000\001\001\002\006\007\000\004\001\007\008\007\005\000\005\001\004\009\00e\002\002\00\00\00") - (data $238 (i32.const 11804) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00Z\00\00\000\00.\006\000\009\006\005\006\004\005\008\005\009\008\003\001\007\007\004\000\008\009\003\004\003\005\002\005\007\000\002\001\003\003\007\007\004\007\005\007\003\009\00e\003\000\00\00\00") - (data $239 (i32.const 11916) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00Z\00\00\000\00.\004\008\000\000\004\001\006\001\001\007\004\007\007\000\002\008\007\008\007\008\007\004\003\006\000\002\000\005\000\002\003\005\004\009\004\009\007\001\002\008\00e\006\007\00\00\00") - (data $240 (i32.const 12028) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\\\00\00\000\00.\008\005\002\004\008\002\009\000\007\009\008\001\007\009\006\008\002\002\004\008\003\000\003\003\007\009\003\001\000\005\002\007\008\001\006\004\001\004\008\003\00e\001\000\005\00") - (data $241 (i32.const 12140) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\\\00\00\000\00.\000\003\002\007\001\002\003\009\002\009\001\007\000\009\007\008\002\001\001\005\004\004\007\000\006\009\003\007\002\007\004\008\009\005\006\000\008\004\002\005\00e\002\006\009\00") - (data $242 (i32.const 12252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00 \00\t\00\n\00\00\00\00\00\00\00") - (data $243 (i32.const 12284) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00 \00\t\00\n\00\r\00.\001\00") - (data $244 (i32.const 12316) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") - (data $245 (i32.const 12348) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") - (data $246 (i32.const 12380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00k\00e\00y\001\00\00\00\00\00") - (data $247 (i32.const 12412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00k\00e\00y\002\00\00\00\00\00") - (data $248 (i32.const 12444) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00k\00e\001\00\00\00\00\00\00\00") - (data $249 (i32.const 12476) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00k\00e\002\00\00\00\00\00\00\00") - (data $250 (i32.const 12508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00k\00e\00y\001\002\00\00\00") - (data $251 (i32.const 12540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00k\00e\00y\001\001\00\00\00") - (data $252 (i32.const 12572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00\a40\ed0\cf0\cb0\db0\d80\c80\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $253 (i32.const 12620) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00\a60\f00\ce0\aa0\af0\e40\de0\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $254 (i32.const 12668) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00D\00\19 f\00h\00u\00a\00s\00c\00a\00i\00l\00\00\00\00\00\00\00") - (data $255 (i32.const 12716) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00D\00\19 \1f\1eu\00a\00s\00c\00a\00i\00l\00\00\00\00\00\00\00\00\00") - (data $256 (i32.const 12764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00b\00a\00\00\00\00\00\00\00\00\00") - (data $257 (i32.const 12796) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00a\00\00\00\00\00\00\00\00\00") - (data $258 (i32.const 12828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\000\00\00\00\00\00\00\00\00\00") - (data $259 (i32.const 12860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\001\00\00\00\00\00\00\00\00\00") - (data $260 (i32.const 12892) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\000\001\00\00\00\00\00\00\00") - (data $261 (i32.const 12924) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\002\002\00\00\00\00\00\00\00") - (data $262 (i32.const 12956) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\002\003\004\00\00\00\00\00") - (data $263 (i32.const 12988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\002\003\003\00\00\00\00\00") - (data $264 (i32.const 13020) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $265 (i32.const 13068) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00a\00a\00\00\00\00\00\00\00") - (data $266 (i32.const 13100) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00a\00b\00a\00b\00a\00b\00a\00b\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $267 (i32.const 13148) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00a\00a\00a\00a\00\00\00") - (data $268 (i32.const 13180) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a\00") - (data $269 (i32.const 13212) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $270 (i32.const 13260) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00-\00b\00-\00c\00\00\00") - (data $271 (i32.const 13292) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00+\00b\00-\00c\00\00\00") - (data $272 (i32.const 13324) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00+\00a\00b\00c\00\00\00\00\00") - (data $273 (i32.const 13356) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00\n\00a\00b\00c\00\00\00\00\00") - (data $274 (i32.const 13388) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") - (data $275 (i32.const 13420) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00c\00\00\00\00\00\00\00\00\00\00\00") - (data $276 (i32.const 13452) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00+\00+\00\00\00\00\00\00\00\00\00") - (data $277 (i32.const 13484) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00b\00+\00+\00\00\00\00\00") - (data $278 (i32.const 13516) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00c\00\00\00\00\00\00\00\00\00\00\00") - (data $279 (i32.const 13564) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00+\00+\00+\00\00\00\00\00\00\00") - (data $280 (i32.const 13596) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00a\00b\00c\00a\00b\00c\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $281 (i32.const 13644) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00+\00+\00+\00b\00c\00+\00+\00+\00b\00c\00+\00+\00+\00\00\00") - (data $282 (i32.const 13692) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00+\00+\00c\00+\00+\00c\00") - (data $283 (i32.const 13724) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00c\00c\00c\00c\00\00\00\00\00") - (data $284 (i32.const 13756) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00c\00c\00\00\00\00\00\00\00\00\00") - (data $285 (i32.const 13788) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00+\00+\00+\00+\00\00\00\00\00") - (data $286 (i32.const 13820) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00e\00\00\00\00\00\00\00\00\00\00\00") - (data $287 (i32.const 13852) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00b\00c\00\00\00\00\00\00\00\00\00") - (data $288 (i32.const 13884) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00+\00\00\00\00\00\00\00\00\00") - (data $289 (i32.const 13916) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00+\00b\00+\00c\00\00\00") - (data $290 (i32.const 13948) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00+\00a\00+\00b\00+\00c\00+\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $291 (i32.const 13996) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00c\00d\00e\00\00\00") - (data $292 (i32.const 14028) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00-\00-\00-\00\00\00\00\00\00\00") - (data $293 (i32.const 14060) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00-\00-\00-\00b\00c\00d\00e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $294 (i32.const 14108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00-\00-\00-\00-\00-\00\00\00") - (data $295 (i32.const 14140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00-\00-\00-\00-\00\00\00\00\00") - (data $296 (i32.const 14172) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\00\00\00\00") - (data $297 (i32.const 14220) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00-\00-\00-\00a\00\00\00\00\00") - (data $298 (i32.const 14252) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00") - (data $299 (i32.const 14300) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00n\00\00\00\00\00\00\00\00\00\00\00") - (data $300 (i32.const 14332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00j\00k\00l\00m\00n\00\00\00") - (data $301 (i32.const 14364) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00c\00d\00e\00f\00g\00\00\00") - (data $302 (i32.const 14396) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00d\00e\00f\00g\00h\00\00\00") - (data $303 (i32.const 14428) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00\00\00") - (data $304 (i32.const 14476) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00c\00d\00e\00f\00g\00h\00i\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $305 (i32.const 14524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00e\00f\00g\00\00\00\00\00\00\00") - (data $306 (i32.const 14556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00e\00f\00g\00h\00\00\00\00\00") - (data $307 (i32.const 14588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00d\00\00\00\00\00\00\00\00\00\00\00") - (data $308 (i32.const 14620) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $309 (i32.const 14668) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $310 (i32.const 14796) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00,\00b\00,\00c\00\00\00") - (data $311 (i32.const 14828) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00a\00,\00 \00b\00,\00 \00c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $312 (i32.const 14876) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00,\00 \00\00\00\00\00\00\00\00\00") - (data $313 (i32.const 14908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00a\00,\00b\00,\00,\00c\00") - (data $314 (i32.const 14940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00,\00a\00,\00b\00,\00c\00") - (data $315 (i32.const 14972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00a\00,\00b\00,\00c\00,\00") - (data $316 (i32.const 15004) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") - (data $317 (i32.const 15132) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $318 (i32.const 15196) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data $319 (i32.const 15596) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $320 (i32.const 16652) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") - (data $321 (i32.const 16748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\008\00\00\00\00\00\00\00\00\00\00\00") - (data $322 (i32.const 16780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\002\00\00\00\00\00\00\00\00\00") - (data $323 (i32.const 16812) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00-\001\000\000\000\00\00\00") - (data $324 (i32.const 16844) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\002\003\004\005\00\00\00") - (data $325 (i32.const 16876) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\002\003\004\005\006\00") - (data $326 (i32.const 16908) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\001\001\001\001\001\001\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $327 (i32.const 16956) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\002\003\004\005\006\007\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $328 (i32.const 17004) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\001\002\003\004\005\006\007\008\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $329 (i32.const 17052) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\002\003\004\005\006\007\008\009\00\00\00\00\00\00\00\00\00\00\00") - (data $330 (i32.const 17100) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006\00\00\00\00\00\00\00\00\00") - (data $331 (i32.const 17148) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007\00\00\00\00\00\00\00\00\00") - (data $332 (i32.const 17196) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008\00\00\00\00\00\00\00") - (data $333 (i32.const 17244) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00-\001\00\00\00\00\00\00\00\00\00") - (data $334 (i32.const 17276) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00-\001\002\008\00\00\00\00\00") - (data $335 (i32.const 17308) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00-\003\002\007\006\008\00") - (data $336 (i32.const 17340) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\000\000\000\00\00\00\00\00") - (data $337 (i32.const 17372) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008\00\00\00\00\00\00\00\00\00") - (data $338 (i32.const 17420) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005\00\00\00\00\00\00\00\00\00") - (data $339 (i32.const 17468) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\007\00b\00\00\00\00\00\00\00\00\00") - (data $340 (i32.const 17500) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\004\00d\002\00\00\00\00\00\00\00") - (data $341 (i32.const 17532) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\003\000\003\009\00\00\00\00\00") - (data $342 (i32.const 17564) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00e\002\004\000\00\00\00") - (data $343 (i32.const 17596) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\000\00f\004\004\007\00") - (data $344 (i32.const 17628) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\002\00d\006\008\007\00") - (data $345 (i32.const 17660) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00b\00c\006\001\004\00e\00") - (data $346 (i32.const 17692) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\007\005\00b\00c\00d\001\005\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $347 (i32.const 17740) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00e\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $348 (i32.const 17788) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $349 (i32.const 17836) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\008\000\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $350 (i32.const 17884) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00f\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $351 (i32.const 17932) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00") - (data $352 (i32.const 17980) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00-\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $353 (i32.const 18028) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\008\000\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00\00\00") - (data $354 (i32.const 18076) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\001\001\00\00\00\00\00\00\00") - (data $355 (i32.const 18108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\001\001\000\00\00\00\00\00") - (data $356 (i32.const 18140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\001\001\000\001\00\00\00") - (data $357 (i32.const 18172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\001\001\000\001\001\00") - (data $358 (i32.const 18204) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\001\001\001\001\001\001\001\001\001\001\001\001\00\00\00\00\00") - (data $359 (i32.const 18252) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00\00\00\00\00\00\00\00\00\00\00") - (data $360 (i32.const 18332) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\001\000\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $361 (i32.const 18428) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $362 (i32.const 18524) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $363 (i32.const 18620) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $364 (i32.const 18716) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00-\001\001\001\001\001\001\001\001\001\001\001\00\00\00\00\00") - (data $365 (i32.const 18764) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\001\000\002\000\000\002\000\002\002\002\000\001\002\002\001\001\001\001\002\001\000\00\00\00") - (data $366 (i32.const 18828) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $367 (i32.const 18892) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\003\002\002\004\004\000\000\002\004\002\003\001\004\000\00") - (data $368 (i32.const 18940) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\003\007\007\007\007\007\007\007\007\007\007\00\00\00\00\00\00\00") - (data $369 (i32.const 18988) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\001\009\000\004\004\004\000\005\005\003\00\00\00\00\00\00\00\00\00") - (data $370 (i32.const 19036) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\00a\002\000\00d\00c\00d\008\000\00\00\00\00\00\00\00\00\00\00\00") - (data $371 (i32.const 19084) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00a\007\00f\00f\00d\00a\009\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $372 (i32.const 19132) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\002\008\001\00d\005\005\00i\003\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $373 (i32.const 19180) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00b\002\008\00j\00p\00d\00l\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $374 (i32.const 19228) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\003\00v\00v\00v\00v\00v\00v\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $375 (i32.const 19276) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\00z\001\004\001\00z\003\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $376 (i32.const 19324) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\009\009\009\009\009\009\009\009\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $377 (i32.const 19372) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00\00\00") - (data $378 (i32.const 19420) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\007\00\00\00\00\00\00\00\00\00") - (data $379 (i32.const 19468) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00\00\00") - (data $380 (i32.const 19516) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00") - (data $381 (i32.const 19564) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000\00\00\00") - (data $382 (i32.const 19612) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000\001\00") - (data $383 (i32.const 19660) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $384 (i32.const 19724) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $385 (i32.const 19788) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00\00\00\00\00\00\00") - (data $386 (i32.const 19852) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\001\002\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00\00\00\00\00") - (data $387 (i32.const 19916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\001\002\003\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00\00\00") - (data $388 (i32.const 19980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00\00\00\00\00") - (data $389 (i32.const 20044) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00-\001\002\003\004\00\00\00") - (data $390 (i32.const 20076) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005\00\00\00\00\00\00\00") - (data $391 (i32.const 20124) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00") - (data $392 (i32.const 20172) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005\00\00\00") - (data $393 (i32.const 20220) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $394 (i32.const 20284) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00\00\00\00\00") - (data $395 (i32.const 20348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00\00\00\00\00\00\00") - (data $396 (i32.const 20412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00\00\00\00\00") - (data $397 (i32.const 20476) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\00f\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00") - (data $398 (i32.const 20524) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\005\006\007\008\009\00a\00b\00c\00d\00e\001\00\00\00\00\00\00\00") - (data $399 (i32.const 20572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\004\005\006\007\008\009\00a\00b\00c\00d\00e\001\00\00\00\00\00") - (data $400 (i32.const 20620) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00\00\00") - (data $401 (i32.const 20668) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00") - (data $402 (i32.const 20716) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $403 (i32.const 20780) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $404 (i32.const 20844) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $405 (i32.const 20908) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $406 (i32.const 20972) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00") - (data $407 (i32.const 21036) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00-\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00\00\00") - (data $408 (i32.const 21100) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00b\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00\00\00\00\00\00\00\00\00\00\00") - (data $409 (i32.const 21228) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\80\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $410 (i32.const 21388) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00D\00\00\00-\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00\00\00\00\00\00\00\00\00") - (data $411 (i32.const 21484) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00R\00\00\001\001\001\001\002\002\002\000\000\002\002\001\002\002\001\002\000\001\000\001\002\001\001\000\002\000\001\002\000\002\001\000\002\001\000\002\001\001\002\002\000\00\00\00\00\00\00\00\00\00\00\00") - (data $412 (i32.const 21596) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $413 (i32.const 21692) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\008\00\00\002\002\001\004\002\002\000\003\000\003\001\001\004\004\000\000\004\002\004\001\002\001\001\002\002\004\003\000\00\00\00\00\00") - (data $414 (i32.const 21772) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\001\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\00") - (data $415 (i32.const 21836) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\003\003\005\005\000\000\005\001\006\00a\004\002\009\000\007\001\002\008\004\00\00\00\00\00\00\00") - (data $416 (i32.const 21900) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\002\00c\001\00d\005\006\00b\006\004\008\00c\006\00c\00d\001\001\000\00\00\00\00\00\00\00\00\00\00\00") - (data $417 (i32.const 21964) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\006\007\009\007\009\00g\006\000\00f\005\004\002\008\000\001\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $418 (i32.const 22028) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\005\00e\008\00g\004\00g\00g\00g\007\00g\005\006\00d\00i\00f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $419 (i32.const 22092) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\004\00e\00o\008\00h\00f\00a\00m\006\00f\00l\00l\00m\00o\00") - (data $420 (i32.const 22140) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00f\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00\00\00") - (data $421 (i32.const 22188) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\003\00w\005\00e\001\001\002\006\004\00s\00g\00s\00f\00\00\00") - (data $422 (i32.const 22236) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") - (data $423 (i32.const 22268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $424 (i32.const 22320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $425 (i32.const 22376) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8#get:length_ (param $this i32) (result i32) - local.get $this - i32.load offset=12 - ) - (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/memory/memory.repeat (param $dst i32) (param $src i32) (param $srcLength i32) (param $count i32) - (local $index i32) - (local $total i32) - i32.const 0 - local.set $index - local.get $srcLength - local.get $count - i32.mul - local.set $total - loop $while-continue|0 - local.get $index - local.get $total + unreachable + else + local.get $value + i32.const 10000000 i32.lt_u if - local.get $dst - local.get $index + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u i32.add - local.get $src - local.get $srcLength - memory.copy - local.get $index - local.get $srcLength + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u i32.add - local.set $index - br $while-continue|0 + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return end + unreachable end + unreachable ) - (func $~lib/util/string/isSpace (param $c i32) (result i32) - (local $1 i32) - local.get $c - i32.const 5760 - i32.lt_u - if - local.get $c - i32.const 128 - i32.or - i32.const 160 - i32.eq - if (result i32) - i32.const 1 - else - local.get $c - i32.const 9 - i32.sub - i32.const 13 - i32.const 9 + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 828 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 828 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 i32.sub - i32.le_u + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end - return end - local.get $c - i32.const 8192 - i32.sub - i32.const 8202 - i32.const 8192 - i32.sub - i32.le_u + local.get $num + i32.const 100 + i32.ge_u if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 828 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset i32.const 1 - return - end - block $break|0 - block $case6|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $c - local.set $1 - local.get $1 - i32.const 5760 - i32.eq - br_if $case0|0 - local.get $1 - i32.const 8232 - i32.eq - br_if $case1|0 - local.get $1 - i32.const 8233 - i32.eq - br_if $case2|0 - local.get $1 - i32.const 8239 - i32.eq - br_if $case3|0 - local.get $1 - i32.const 8287 - i32.eq - br_if $case4|0 - local.get $1 - i32.const 12288 - i32.eq - br_if $case5|0 - local.get $1 - i32.const 65279 - i32.eq - br_if $case6|0 - br $break|0 - end - end - end - end - end - end - end - i32.const 1 - return + i32.shl + i32.add + local.get $digits + i32.store end - i32.const 0 - return - ) - (func $~lib/math/ipow32 (param $x i32) (param $e i32) (result i32) - (local $out i32) - (local $log i32) - (local $4 i32) - i32.const 1 - local.set $out - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $x - i32.const 2 - i32.eq + local.get $num + i32.const 10 + i32.ge_u if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 828 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset i32.const 1 - local.get $e i32.shl - i32.const 0 - local.get $e - i32.const 32 - i32.lt_u - select - return - end - local.get $e - i32.const 0 - i32.le_s - if - local.get $x - i32.const -1 - i32.eq + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u if - i32.const -1 - i32.const 1 - local.get $e + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset i32.const 1 + i32.shl + i32.add + i32.const 1248 + local.get $num + i32.wrap_i64 + i32.const 255 i32.and - select - return + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 end - local.get $e - i32.const 0 - i32.eq - local.get $x + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1248 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt i32.const 1 i32.eq - i32.or - return - else - local.get $e + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u i32.const 1 - i32.eq + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u if - local.get $x - return - else + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b local.get $e - i32.const 2 - i32.eq - if - local.get $x - local.get $x - i32.mul - return - else - local.get $e - i32.const 32 - i32.lt_s + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2304 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2304 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne if - i32.const 32 - local.get $e - i32.clz - i32.sub - local.set $log - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $log - local.set $4 - local.get $4 - i32.const 5 - i32.eq - br_if $case0|0 - local.get $4 - i32.const 4 - i32.eq - br_if $case1|0 - local.get $4 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $4 - i32.const 2 - i32.eq - br_if $case3|0 - local.get $4 - i32.const 1 - i32.eq - br_if $case4|0 - br $break|0 - end - local.get $e - i32.const 1 - i32.and - if - local.get $out - local.get $x - i32.mul - local.set $out - end - local.get $e - i32.const 1 - i32.shr_u - local.set $e - local.get $x - local.get $x - i32.mul - local.set $x - end - local.get $e - i32.const 1 - i32.and - if - local.get $out - local.get $x - i32.mul - local.set $out - end - local.get $e - i32.const 1 - i32.shr_u - local.set $e - local.get $x - local.get $x - i32.mul - local.set $x - end - local.get $e - i32.const 1 - i32.and - if - local.get $out - local.get $x - i32.mul - local.set $out - end - local.get $e - i32.const 1 - i32.shr_u - local.set $e - local.get $x - local.get $x - i32.mul - local.set $x - end - local.get $e - i32.const 1 - i32.and - if - local.get $out - local.get $x - i32.mul - local.set $out - end - local.get $e - i32.const 1 - i32.shr_u - local.set $e - local.get $x - local.get $x - i32.mul - local.set $x - end - local.get $e - i32.const 1 - i32.and - if - local.get $out - local.get $x - i32.mul - local.set $out - end - end - local.get $out - return + br $do-break|0 end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 end end end loop $while-continue|1 - local.get $e + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 if - local.get $e - i32.const 1 - i32.and + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne if - local.get $out - local.get $x - i32.mul - local.set $out + local.get $a + local.get $b + i32.sub + return end - local.get $e - i32.const 1 - i32.shr_u - local.set $e - local.get $x - local.get $x - i32.mul - local.set $x + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 br $while-continue|1 end end - local.get $out + i32.const 0 return ) - (func $~lib/math/NativeMath.scalbn (param $x f64) (param $n i32) (result f64) - (local $y f64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $x - local.set $y - local.get $n - i32.const 1023 - i32.gt_s - if - local.get $y - f64.const 8988465674311579538646525e283 - f64.mul - local.set $y - local.get $n - i32.const 1023 - i32.sub - local.set $n - local.get $n - i32.const 1023 - i32.gt_s - if - local.get $y - f64.const 8988465674311579538646525e283 - f64.mul - local.set $y - local.get $n - i32.const 1023 - i32.sub - local.tee $3 - i32.const 1023 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.set $n - end - else - local.get $n - i32.const -1022 - i32.lt_s - if - local.get $y - f64.const 2.2250738585072014e-308 - f64.const 9007199254740992 - f64.mul - f64.mul - local.set $y - local.get $n - i32.const 1022 - i32.const 53 - i32.sub - i32.add - local.set $n - local.get $n - i32.const -1022 - i32.lt_s - if - local.get $y - f64.const 2.2250738585072014e-308 - f64.const 9007199254740992 - f64.mul - f64.mul - local.set $y - local.get $n - i32.const 1022 - i32.add - i32.const 53 + (func $~lib/string/String.fromCharCode@varargs (param $unit i32) (param $surr i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 i32.sub - local.tee $5 - i32.const -1022 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_s - select - local.set $n + br_table $0of1 $1of1 $outOfRange end + unreachable end + i32.const -1 + local.set $surr end - local.get $y - i64.const 1023 - local.get $n - i64.extend_i32_s - i64.add - i64.const 52 - i64.shl - f64.reinterpret_i64 - f64.mul + local.get $unit + local.get $surr + call $~lib/string/String.fromCharCode + ) + (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) + (local $buffer i32) + local.get $size + local.get $id + call $~lib/rt/itcms/__new + local.set $buffer + local.get $data + if + local.get $buffer + local.get $data + local.get $size + memory.copy + end + local.get $buffer return ) - (func $~lib/object/Object.is (param $x f64) (param $y f64) (result i32) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end i32.const 1 drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $x - local.get $x - f64.ne - local.get $y - local.get $y - f64.ne - i32.and - local.get $x - i64.reinterpret_f64 - local.get $y - i64.reinterpret_f64 - i64.eq - i32.or - return - ) - (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) - (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) - (local $oldObj i32) - (local $newPtr i32) - (local $4 i32) - (local $5 i32) - local.get $oldPtr + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 256 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr i32.const 20 i32.sub - local.set $oldObj - local.get $size - local.get $oldObj - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.sub - i32.le_u + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq if - local.get $oldObj - local.get $size - call $~lib/rt/itcms/Object#set:rtSize - local.get $oldPtr - return + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end end - local.get $size - local.get $oldObj - call $~lib/rt/itcms/Object#get:rtId - call $~lib/rt/itcms/__new - local.set $newPtr - local.get $newPtr - local.get $oldPtr - local.get $size - local.tee $4 - local.get $oldObj - call $~lib/rt/itcms/Object#get:rtSize - local.tee $5 - local.get $4 - local.get $5 - i32.lt_u - select - memory.copy - local.get $newPtr - return ) - (func $~lib/array/Array<~lib/string/String>#get:length_ (param $this i32) (result i32) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) local.get $this i32.load offset=12 ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) - local.get $this - i32.load offset=8 - ) - (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array<~lib/string/String>#set:length_ (param $this i32) (param $length_ i32) - local.get $this - local.get $length_ - i32.store offset=12 - ) - (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) local.get $this i32.load offset=4 ) - (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) - local.get $value - i32.const 100000 - i32.lt_u - if - local.get $value - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $value - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $value - i32.const 10000 - i32.ge_u - i32.add - local.get $value - i32.const 1000 - i32.ge_u - i32.add - return - end - unreachable - else - local.get $value - i32.const 10000000 + (func $~lib/memory/memory.repeat (param $dst i32) (param $src i32) (param $srcLength i32) (param $count i32) + (local $index i32) + (local $total i32) + i32.const 0 + local.set $index + local.get $srcLength + local.get $count + i32.mul + local.set $total + loop $while-continue|0 + local.get $index + local.get $total i32.lt_u if - i32.const 6 - local.get $value - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $value - i32.const 1000000000 - i32.ge_u + local.get $dst + local.get $index i32.add - local.get $value - i32.const 100000000 - i32.ge_u + local.get $src + local.get $srcLength + memory.copy + local.get $index + local.get $srcLength i32.add - return + local.set $index + br $while-continue|0 end - unreachable end - unreachable ) - (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) - (local $t i32) - (local $r i32) - (local $d1 i32) - (local $d2 i32) - (local $digits1 i64) - (local $digits2 i64) - (local $t|9 i32) - (local $d1|10 i32) - (local $digits i32) - (local $digits|12 i32) - (local $digit i32) - loop $while-continue|0 - local.get $num - i32.const 10000 - i32.ge_u - if - local.get $num - i32.const 10000 - i32.div_u - local.set $t - local.get $num - i32.const 10000 - i32.rem_u - local.set $r - local.get $t - local.set $num - local.get $r - i32.const 100 - i32.div_u - local.set $d1 - local.get $r - i32.const 100 - i32.rem_u - local.set $d2 - i32.const 15196 - local.get $d1 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits1 - i32.const 15196 - local.get $d2 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits2 - local.get $offset - i32.const 4 - i32.sub - local.set $offset - local.get $buffer - local.get $offset + (func $~lib/util/string/isSpace (param $c i32) (result i32) + (local $1 i32) + local.get $c + i32.const 5760 + i32.lt_u + if + local.get $c + i32.const 128 + i32.or + i32.const 160 + i32.eq + if (result i32) i32.const 1 - i32.shl - i32.add - local.get $digits1 - local.get $digits2 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + else + local.get $c + i32.const 9 + i32.sub + i32.const 13 + i32.const 9 + i32.sub + i32.le_u end + return end - local.get $num - i32.const 100 - i32.ge_u + local.get $c + i32.const 8192 + i32.sub + i32.const 8202 + i32.const 8192 + i32.sub + i32.le_u if - local.get $num - i32.const 100 - i32.div_u - local.set $t|9 - local.get $num - i32.const 100 - i32.rem_u - local.set $d1|10 - local.get $t|9 - local.set $num - local.get $offset - i32.const 2 - i32.sub - local.set $offset - i32.const 15196 - local.get $d1|10 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $digits - local.get $buffer - local.get $offset i32.const 1 - i32.shl - i32.add - local.get $digits - i32.store + return + end + block $break|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $c + local.set $1 + local.get $1 + i32.const 5760 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 8232 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 8233 + i32.eq + br_if $case2|0 + local.get $1 + i32.const 8239 + i32.eq + br_if $case3|0 + local.get $1 + i32.const 8287 + i32.eq + br_if $case4|0 + local.get $1 + i32.const 12288 + i32.eq + br_if $case5|0 + local.get $1 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + end + end + end + end + end + end + i32.const 1 + return end - local.get $num - i32.const 10 - i32.ge_u + i32.const 0 + return + ) + (func $~lib/math/ipow32 (param $x i32) (param $e i32) (result i32) + (local $out i32) + (local $log i32) + (local $4 i32) + i32.const 1 + local.set $out + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $x + i32.const 2 + i32.eq if - local.get $offset - i32.const 2 - i32.sub - local.set $offset - i32.const 15196 - local.get $num - i32.const 2 - i32.shl - i32.add - i32.load - local.set $digits|12 - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits|12 - i32.store - else - local.get $offset - i32.const 1 - i32.sub - local.set $offset - i32.const 48 - local.get $num - i32.add - local.set $digit - local.get $buffer - local.get $offset i32.const 1 + local.get $e i32.shl - i32.add - local.get $digit - i32.store16 + i32.const 0 + local.get $e + i32.const 32 + i32.lt_u + select + return end - ) - (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) - loop $while-continue|0 - local.get $offset - i32.const 2 - i32.ge_u + local.get $e + i32.const 0 + i32.le_s + if + local.get $x + i32.const -1 + i32.eq if - local.get $offset - i32.const 2 - i32.sub - local.set $offset - local.get $buffer - local.get $offset + i32.const -1 + i32.const 1 + local.get $e i32.const 1 - i32.shl - i32.add - i32.const 15616 - local.get $num - i32.wrap_i64 - i32.const 255 i32.and + select + return + end + local.get $e + i32.const 0 + i32.eq + local.get $x + i32.const 1 + i32.eq + i32.or + return + else + local.get $e + i32.const 1 + i32.eq + if + local.get $x + return + else + local.get $e i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $num - i64.const 8 - i64.shr_u - local.set $num - br $while-continue|0 + i32.eq + if + local.get $x + local.get $x + i32.mul + return + else + local.get $e + i32.const 32 + i32.lt_s + if + i32.const 32 + local.get $e + i32.clz + i32.sub + local.set $log + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $log + local.set $4 + local.get $4 + i32.const 5 + i32.eq + br_if $case0|0 + local.get $4 + i32.const 4 + i32.eq + br_if $case1|0 + local.get $4 + i32.const 3 + i32.eq + br_if $case2|0 + local.get $4 + i32.const 2 + i32.eq + br_if $case3|0 + local.get $4 + i32.const 1 + i32.eq + br_if $case4|0 + br $break|0 + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + end + local.get $out + return + end + end end end - local.get $offset - i32.const 1 - i32.and - if - local.get $buffer - i32.const 15616 - local.get $num - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 - end - ) - (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) - (local $value i32) - (local $b64 i64) - (local $b i64) - (local $e i32) - block $~lib/util/number/isPowerOf2|inlined.0 (result i32) - local.get $base - local.set $value - local.get $value - i32.popcnt - i32.const 1 - i32.eq - br $~lib/util/number/isPowerOf2|inlined.0 - end - if - i32.const 63 - local.get $num - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $base - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - return - end - local.get $base - i64.extend_i32_s - local.set $b64 - local.get $b64 - local.set $b - i32.const 1 - local.set $e - loop $while-continue|0 - local.get $num - local.get $b - i64.ge_u + loop $while-continue|1 + local.get $e if - local.get $num - local.get $b - i64.div_u - local.set $num - local.get $b - local.get $b - i64.mul - local.set $b local.get $e i32.const 1 - i32.shl - local.set $e - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $num - i64.const 1 - i64.ge_u - if - local.get $num - local.get $b64 - i64.div_u - local.set $num + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end local.get $e i32.const 1 - i32.add + i32.shr_u local.set $e + local.get $x + local.get $x + i32.mul + local.set $x br $while-continue|1 end end - local.get $e - i32.const 1 - i32.sub + local.get $out return ) - (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) - (local $base i64) - (local $shift i64) - (local $mask i64) - (local $q i64) - local.get $radix - i64.extend_i32_s - local.set $base - local.get $radix - local.get $radix - i32.const 1 - i32.sub - i32.and - i32.const 0 - i32.eq + (func $~lib/math/NativeMath.scalbn (param $x f64) (param $n i32) (result f64) + (local $y f64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $x + local.set $y + local.get $n + i32.const 1023 + i32.gt_s if - local.get $radix - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s - local.set $shift - local.get $base - i64.const 1 - i64.sub - local.set $mask - loop $do-loop|0 - local.get $offset - i32.const 1 + local.get $y + f64.const 8988465674311579538646525e283 + f64.mul + local.set $y + local.get $n + i32.const 1023 + i32.sub + local.set $n + local.get $n + i32.const 1023 + i32.gt_s + if + local.get $y + f64.const 8988465674311579538646525e283 + f64.mul + local.set $y + local.get $n + i32.const 1023 i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - i32.const 16672 - local.get $num - local.get $mask - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $num - local.get $shift - i64.shr_u - local.set $num - local.get $num - i64.const 0 - i64.ne - br_if $do-loop|0 + local.tee $3 + i32.const 1023 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + local.set $n end else - loop $do-loop|1 - local.get $offset - i32.const 1 + local.get $n + i32.const -1022 + i32.lt_s + if + local.get $y + f64.const 2.2250738585072014e-308 + f64.const 9007199254740992 + f64.mul + f64.mul + local.set $y + local.get $n + i32.const 1022 + i32.const 53 i32.sub - local.set $offset - local.get $num - local.get $base - i64.div_u - local.set $q - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - i32.const 16672 - local.get $num - local.get $q - local.get $base - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl i32.add - i32.load16_u - i32.store16 - local.get $q - local.set $num - local.get $num - i64.const 0 - i64.ne - br_if $do-loop|1 + local.set $n + local.get $n + i32.const -1022 + i32.lt_s + if + local.get $y + f64.const 2.2250738585072014e-308 + f64.const 9007199254740992 + f64.mul + f64.mul + local.set $y + local.get $n + i32.const 1022 + i32.add + i32.const 53 + i32.sub + local.tee $5 + i32.const -1022 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $n + end end end + local.get $y + i64.const 1023 + local.get $n + i64.extend_i32_s + i64.add + i64.const 52 + i64.shl + f64.reinterpret_i64 + f64.mul + return + ) + (func $~lib/object/Object.is (param $x f64) (param $y f64) (result i32) + i32.const 1 + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $x + local.get $x + f64.ne + local.get $y + local.get $y + f64.ne + i32.and + local.get $x + i64.reinterpret_f64 + local.get $y + i64.reinterpret_f64 + i64.eq + i32.or + return + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array<~lib/string/String>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 ) (func $~lib/util/number/decimalCount64High (param $value i64) (result i32) local.get $value @@ -4025,14 +4034,14 @@ i32.const 100 i32.rem_u local.set $c2 - i32.const 15196 + i32.const 828 local.get $c1 i32.const 2 i32.shl i32.add i64.load32_u local.set $digits1 - i32.const 15196 + i32.const 828 local.get $c2 i32.const 2 i32.shl @@ -4054,14 +4063,14 @@ i64.shl i64.or i64.store - i32.const 15196 + i32.const 828 local.get $b1 i32.const 2 i32.shl i32.add i64.load32_u local.set $digits1 - i32.const 15196 + i32.const 828 local.get $b2 i32.const 2 i32.shl @@ -4365,7 +4374,7 @@ local.set $delta|21 local.get $tmp local.set $rest - i32.const 23248 + i32.const 23408 local.get $kappa i32.const 2 i32.shl @@ -4502,7 +4511,7 @@ i32.add global.set $~lib/util/number/_K local.get $wp_w_frc - i32.const 23248 + i32.const 23408 i32.const 0 local.get $kappa i32.sub @@ -5181,14 +5190,14 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 22376 + i32.const 22536 local.get $index i32.const 3 i32.shl i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 23072 + i32.const 23232 local.get $index i32.const 1 i32.shl @@ -5512,129 +5521,226 @@ global.get $std/string/str return ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $std/string/str - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/string/nullStr - local.tee $1 + (func $~start + call $start:std/string + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 58560 + i32.const 58608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 240 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 13040 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 14688 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 352 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 15616 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 16672 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load - ) - (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/array/Array<~lib/string/String> - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array<~lib/string/String> $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>~visit + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 160 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - unreachable + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~start - call $start:std/string + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~stack_check + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 96 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 58400 - i32.const 58448 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 128 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 592 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 592 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 2400 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) (local $leftLength i32) @@ -5914,8 +6020,8 @@ local.get $len i32.ge_u if - i32.const 240 - i32.const 304 + i32.const 384 + i32.const 2608 i32.const 57 i32.const 31 call $~lib/builtins/abort @@ -5963,7 +6069,7 @@ call $~lib/string/String#get:length i32.ge_u if - i32.const 688 + i32.const 160 local.set $3 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -7082,7 +7188,7 @@ local.get $size i32.eqz if - i32.const 688 + i32.const 160 local.set $4 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -7161,7 +7267,7 @@ local.get $size i32.eqz if - i32.const 688 + i32.const 160 local.set $4 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -7279,7 +7385,7 @@ local.get $size i32.eqz if - i32.const 688 + i32.const 160 local.set $5 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -8510,7 +8616,7 @@ i32.const 22 i32.sub local.set $n - i32.const 3648 + i32.const 5552 local.get $n i32.const 3 i32.shl @@ -8550,7 +8656,7 @@ block $~lib/util/string/pow10|inlined.1 (result f64) local.get $exp local.set $n|26 - i32.const 3648 + i32.const 5552 local.get $n|26 i32.const 3 i32.shl @@ -8567,7 +8673,7 @@ local.get $exp i32.sub local.set $n|27 - i32.const 3648 + i32.const 5552 local.get $n|27 i32.const 3 i32.shl @@ -9702,114 +9808,7 @@ call $~lib/util/string/strtod local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - ) - (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) - (local $thisSize i32) - (local $otherSize i32) - (local $outSize i32) - (local $out i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $thisSize - local.get $other - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $otherSize - local.get $thisSize - local.get $otherSize - i32.add - local.set $outSize - local.get $outSize - i32.const 0 - i32.eq - if - i32.const 688 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - global.get $~lib/memory/__stack_pointer - local.get $outSize - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store offset=4 - local.get $out - local.get $this - local.get $thisSize - memory.copy - local.get $out - local.get $thisSize - i32.add - local.get $other - local.get $otherSize - memory.copy - local.get $out - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - ) - (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $left - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $right - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/string/String#concat - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -10168,8 +10167,8 @@ i64.gt_u end if - i32.const 13040 - i32.const 304 + i32.const 14944 + i32.const 2608 i32.const 334 i32.const 7 call $~lib/builtins/abort @@ -10185,7 +10184,7 @@ i32.eqz end if - i32.const 688 + i32.const 160 local.set $4 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -10916,7 +10915,7 @@ i32.const 0 i32.le_s if - i32.const 688 + i32.const 160 local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -11064,7 +11063,7 @@ i32.const 0 i32.le_s if - i32.const 688 + i32.const 160 local.set $14 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -11233,7 +11232,7 @@ local.get $size i32.eqz if - i32.const 688 + i32.const 160 local.set $22 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -11363,8 +11362,8 @@ i32.shr_u i32.gt_u if - i32.const 13040 - i32.const 14640 + i32.const 14944 + i32.const 16544 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -11466,8 +11465,8 @@ i32.const 0 i32.lt_s if - i32.const 240 - i32.const 14640 + i32.const 384 + i32.const 16544 i32.const 130 i32.const 22 call $~lib/builtins/abort @@ -11783,7 +11782,7 @@ i32.store offset=4 local.get $21 call $~lib/array/Array<~lib/string/String>#get:dataStart - i32.const 688 + i32.const 160 i32.store local.get $result|12 local.set $21 @@ -11875,7 +11874,7 @@ local.get $21 i32.store offset=4 local.get $21 - i32.const 688 + i32.const 160 call $~lib/array/Array<~lib/string/String>#push drop end @@ -11975,7 +11974,7 @@ local.get $21 i32.store offset=4 local.get $21 - i32.const 688 + i32.const 160 call $~lib/array/Array<~lib/string/String>#push drop end @@ -12080,8 +12079,8 @@ call $~lib/array/Array<~lib/string/String>#get:length_ i32.ge_u if - i32.const 240 - i32.const 14640 + i32.const 384 + i32.const 16544 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -12110,8 +12109,8 @@ local.get $value i32.eqz if - i32.const 14688 - i32.const 14640 + i32.const 16592 + i32.const 16544 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -12189,49 +12188,66 @@ i32.const 0 i32.const 76 memory.fill + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 304 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 336 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 480 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $std/string/str i32.const 32 i32.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 8 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 144 - i32.const 144 + i32.const 2512 + i32.const 2512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 176 - i32.const 176 + i32.const 2544 + i32.const 2544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 208 - i32.const 208 + i32.const 2576 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -12249,7 +12265,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -12268,7 +12284,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -12287,29 +12303,12 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 464 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 496 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 576 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace global.get $std/string/str local.set $52 global.get $~lib/memory/__stack_pointer @@ -12340,7 +12339,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 17 i32.const 1 call $~lib/builtins/abort @@ -12384,7 +12383,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -12411,18 +12410,18 @@ local.get $52 i32.store local.get $52 - i32.const 720 + i32.const 2656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 + i32.const 160 call $~lib/string/String.__not i32.eqz i32.const 0 @@ -12430,13 +12429,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 752 + i32.const 2688 call $~lib/string/String.__not i32.eqz i32.const 1 @@ -12444,13 +12443,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 784 + i32.const 2720 call $~lib/string/String.__not i32.eqz i32.const 1 @@ -12458,7 +12457,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -12474,12 +12473,12 @@ local.get $52 i32.store local.get $52 - i32.const 752 + i32.const 2688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -12495,12 +12494,12 @@ local.get $52 i32.store local.get $52 - i32.const 816 + i32.const 2752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -12516,12 +12515,12 @@ local.get $52 i32.store local.get $52 - i32.const 848 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -12539,12 +12538,12 @@ local.get $52 i32.store local.get $52 - i32.const 848 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -12558,12 +12557,12 @@ local.get $52 i32.store local.get $52 - i32.const 880 + i32.const 2816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -12572,7 +12571,7 @@ i32.const 2 i32.const 2 i32.const 4 - i32.const 912 + i32.const 2848 call $~lib/rt/__newArray local.set $52 global.get $~lib/memory/__stack_pointer @@ -12585,12 +12584,12 @@ local.get $52 i32.store local.get $52 - i32.const 944 + i32.const 2880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -12599,7 +12598,7 @@ i32.const 3 i32.const 2 i32.const 4 - i32.const 976 + i32.const 2912 call $~lib/rt/__newArray local.set $52 global.get $~lib/memory/__stack_pointer @@ -12612,12 +12611,12 @@ local.get $52 i32.store local.get $52 - i32.const 1008 + i32.const 2944 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -12626,7 +12625,7 @@ i32.const 5 i32.const 2 i32.const 4 - i32.const 1040 + i32.const 2976 call $~lib/rt/__newArray local.set $52 global.get $~lib/memory/__stack_pointer @@ -12639,12 +12638,12 @@ local.get $52 i32.store local.get $52 - i32.const 1088 + i32.const 3024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 32 i32.const 1 call $~lib/builtins/abort @@ -12657,12 +12656,12 @@ local.get $52 i32.store local.get $52 - i32.const 752 + i32.const 2688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -12675,12 +12674,12 @@ local.get $52 i32.store local.get $52 - i32.const 848 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -12693,12 +12692,12 @@ local.get $52 i32.store local.get $52 - i32.const 1120 + i32.const 3056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 36 i32.const 1 call $~lib/builtins/abort @@ -12710,13 +12709,13 @@ local.get $52 i32.store local.get $52 - i32.const 1152 + i32.const 3088 i32.const 0 call $~lib/string/String#startsWith i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -12728,7 +12727,7 @@ local.get $52 i32.store local.get $52 - i32.const 1184 + i32.const 3120 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -12736,7 +12735,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 39 i32.const 1 call $~lib/builtins/abort @@ -12748,13 +12747,13 @@ local.get $52 i32.store local.get $52 - i32.const 1216 + i32.const 3152 i32.const 0 call $~lib/string/String#includes i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -12767,7 +12766,7 @@ i32.store offset=8 local.get $52 i32.const 0 - i32.const 1248 + i32.const 3184 call $~lib/string/String#padStart local.set $52 global.get $~lib/memory/__stack_pointer @@ -12784,7 +12783,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -12797,7 +12796,7 @@ i32.store offset=8 local.get $52 i32.const 15 - i32.const 1248 + i32.const 3184 call $~lib/string/String#padStart local.set $52 global.get $~lib/memory/__stack_pointer @@ -12814,127 +12813,127 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 43 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 + i32.const 160 i32.const 3 - i32.const 1248 + i32.const 3184 call $~lib/string/String#padStart local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1280 + i32.const 3216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 44 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 + i32.const 160 i32.const 10 - i32.const 688 + i32.const 160 call $~lib/string/String#padStart local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 45 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 784 + i32.const 2720 i32.const 100 - i32.const 688 + i32.const 160 call $~lib/string/String#padStart local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 784 + i32.const 2720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 + i32.const 3248 i32.const 5 - i32.const 1248 + i32.const 3184 call $~lib/string/String#padStart local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1344 + i32.const 3280 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 47 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 + i32.const 3248 i32.const 6 - i32.const 1376 + i32.const 3312 call $~lib/string/String#padStart local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1408 + i32.const 3344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 48 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 + i32.const 3248 i32.const 8 - i32.const 1376 + i32.const 3312 call $~lib/string/String#padStart local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1440 + i32.const 3376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 49 i32.const 1 call $~lib/builtins/abort @@ -12947,7 +12946,7 @@ i32.store offset=8 local.get $52 i32.const 0 - i32.const 1248 + i32.const 3184 call $~lib/string/String#padEnd local.set $52 global.get $~lib/memory/__stack_pointer @@ -12964,7 +12963,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 51 i32.const 1 call $~lib/builtins/abort @@ -12977,7 +12976,7 @@ i32.store offset=8 local.get $52 i32.const 15 - i32.const 1248 + i32.const 3184 call $~lib/string/String#padEnd local.set $52 global.get $~lib/memory/__stack_pointer @@ -12994,134 +12993,134 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 52 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 + i32.const 160 i32.const 3 - i32.const 1248 + i32.const 3184 call $~lib/string/String#padEnd local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1280 + i32.const 3216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 53 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 + i32.const 160 i32.const 10 - i32.const 688 + i32.const 160 call $~lib/string/String#padEnd local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 54 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 784 + i32.const 2720 i32.const 100 - i32.const 688 + i32.const 160 call $~lib/string/String#padEnd local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 784 + i32.const 2720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 55 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 + i32.const 3248 i32.const 5 - i32.const 1248 + i32.const 3184 call $~lib/string/String#padEnd local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1488 + i32.const 3424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 56 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 + i32.const 3248 i32.const 6 - i32.const 1312 + i32.const 3248 call $~lib/string/String#padEnd local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1520 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 57 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 + i32.const 3248 i32.const 8 - i32.const 1312 + i32.const 3248 call $~lib/string/String#padEnd local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1552 + i32.const 3488 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 58 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 688 + i32.const 160 + i32.const 160 i32.const 0 call $~lib/string/String#indexOf i32.const 0 @@ -13129,14 +13128,14 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 60 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 1152 + i32.const 160 + i32.const 3088 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -13144,14 +13143,14 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 61 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 784 - i32.const 784 + i32.const 2720 + i32.const 2720 i32.const 0 call $~lib/string/String#indexOf i32.const 0 @@ -13159,7 +13158,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 62 i32.const 1 call $~lib/builtins/abort @@ -13184,7 +13183,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 63 i32.const 1 call $~lib/builtins/abort @@ -13196,7 +13195,7 @@ local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 i32.const 0 call $~lib/string/String#indexOf i32.const 0 @@ -13204,7 +13203,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 64 i32.const 1 call $~lib/builtins/abort @@ -13216,7 +13215,7 @@ local.get $52 i32.store local.get $52 - i32.const 1600 + i32.const 3536 i32.const 0 call $~lib/string/String#indexOf i32.const 2 @@ -13224,7 +13223,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 65 i32.const 1 call $~lib/builtins/abort @@ -13236,7 +13235,7 @@ local.get $52 i32.store local.get $52 - i32.const 1632 + i32.const 3568 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -13244,7 +13243,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 66 i32.const 1 call $~lib/builtins/abort @@ -13256,7 +13255,7 @@ local.get $52 i32.store local.get $52 - i32.const 1600 + i32.const 3536 i32.const 2 call $~lib/string/String#indexOf i32.const 2 @@ -13264,7 +13263,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 67 i32.const 1 call $~lib/builtins/abort @@ -13276,7 +13275,7 @@ local.get $52 i32.store local.get $52 - i32.const 1600 + i32.const 3536 i32.const 3 call $~lib/string/String#indexOf i32.const -1 @@ -13284,7 +13283,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 68 i32.const 1 call $~lib/builtins/abort @@ -13296,7 +13295,7 @@ local.get $52 i32.store local.get $52 - i32.const 1664 + i32.const 3600 i32.const -1 call $~lib/string/String#indexOf i32.const 2 @@ -13304,14 +13303,14 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 69 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 688 + i32.const 160 + i32.const 160 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -13321,14 +13320,14 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 71 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 1152 + i32.const 160 + i32.const 3088 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -13338,7 +13337,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 72 i32.const 1 call $~lib/builtins/abort @@ -13350,7 +13349,7 @@ local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -13366,7 +13365,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 73 i32.const 1 call $~lib/builtins/abort @@ -13378,7 +13377,7 @@ local.get $52 i32.store local.get $52 - i32.const 1600 + i32.const 3536 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -13388,7 +13387,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 74 i32.const 1 call $~lib/builtins/abort @@ -13400,7 +13399,7 @@ local.get $52 i32.store local.get $52 - i32.const 1632 + i32.const 3568 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -13410,7 +13409,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 75 i32.const 1 call $~lib/builtins/abort @@ -13422,7 +13421,7 @@ local.get $52 i32.store local.get $52 - i32.const 1696 + i32.const 3632 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -13432,7 +13431,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 76 i32.const 1 call $~lib/builtins/abort @@ -13444,7 +13443,7 @@ local.get $52 i32.store local.get $52 - i32.const 1600 + i32.const 3536 i32.const 2 call $~lib/string/String#lastIndexOf i32.const 2 @@ -13452,7 +13451,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 77 i32.const 1 call $~lib/builtins/abort @@ -13464,7 +13463,7 @@ local.get $52 i32.store local.get $52 - i32.const 1600 + i32.const 3536 i32.const 3 call $~lib/string/String#lastIndexOf i32.const 2 @@ -13472,7 +13471,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 78 i32.const 1 call $~lib/builtins/abort @@ -13484,7 +13483,7 @@ local.get $52 i32.store local.get $52 - i32.const 1664 + i32.const 3600 i32.const -1 call $~lib/string/String#lastIndexOf i32.const -1 @@ -13492,7 +13491,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 79 i32.const 1 call $~lib/builtins/abort @@ -13504,7 +13503,7 @@ local.get $52 i32.store local.get $52 - i32.const 1728 + i32.const 3664 i32.const 0 call $~lib/string/String#lastIndexOf i32.const -1 @@ -13512,7 +13511,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 80 i32.const 1 call $~lib/builtins/abort @@ -13524,7 +13523,7 @@ local.get $52 i32.store local.get $52 - i32.const 1152 + i32.const 3088 i32.const 0 call $~lib/string/String#lastIndexOf i32.const 0 @@ -13532,365 +13531,365 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 81 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 688 + i32.const 160 + i32.const 160 call $~lib/string/String#localeCompare i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 83 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 784 - i32.const 688 + i32.const 2720 + i32.const 160 call $~lib/string/String#localeCompare i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 84 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 784 + i32.const 160 + i32.const 2720 call $~lib/string/String#localeCompare i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 85 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1760 - i32.const 1760 + i32.const 3696 + i32.const 3696 call $~lib/string/String#localeCompare i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 86 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 1792 + i32.const 3248 + i32.const 3728 call $~lib/string/String#localeCompare i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 87 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 1824 + i32.const 3248 + i32.const 3760 call $~lib/string/String#localeCompare i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 88 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1792 - i32.const 1312 + i32.const 3728 + i32.const 3248 call $~lib/string/String#localeCompare i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 89 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1856 - i32.const 1312 + i32.const 3792 + i32.const 3248 call $~lib/string/String#localeCompare i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 90 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 1312 + i32.const 3824 + i32.const 3248 call $~lib/string/String#localeCompare i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1856 - i32.const 1920 + i32.const 3792 + i32.const 3856 call $~lib/string/String#localeCompare i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 92 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 1888 + i32.const 3248 + i32.const 3824 call $~lib/string/String#localeCompare i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 93 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1920 - i32.const 1856 + i32.const 3856 + i32.const 3792 call $~lib/string/String#localeCompare i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 94 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 1280 + i32.const 160 + i32.const 3216 call $~lib/string/String#localeCompare i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 95 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 752 - i32.const 688 + i32.const 2688 + i32.const 160 call $~lib/string/String#localeCompare i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 96 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 + i32.const 160 call $~lib/string/String#trimStart local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 98 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1952 + i32.const 3888 call $~lib/string/String#trimStart local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1952 + i32.const 3888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 99 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1984 + i32.const 3920 call $~lib/string/String#trimStart local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 2032 + i32.const 3968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 100 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 + i32.const 160 call $~lib/string/String#trimEnd local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 102 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1952 + i32.const 3888 call $~lib/string/String#trimEnd local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1952 + i32.const 3888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 103 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1984 + i32.const 3920 call $~lib/string/String#trimEnd local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 2080 + i32.const 4016 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 104 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 + i32.const 160 call $~lib/string/String#trim local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 106 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1952 + i32.const 3888 call $~lib/string/String#trim local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1952 + i32.const 3888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 107 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1984 + i32.const 3920 call $~lib/string/String#trim local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1312 + i32.const 3248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 108 i32.const 1 call $~lib/builtins/abort @@ -13898,7 +13897,7 @@ end block $~lib/builtins/bool.parse|inlined.0 (result i32) global.get $~lib/memory/__stack_pointer - i32.const 2128 + i32.const 4064 local.tee $3 i32.store offset=16 local.get $3 @@ -13917,7 +13916,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 111 i32.const 1 call $~lib/builtins/abort @@ -13925,7 +13924,7 @@ end block $~lib/builtins/bool.parse|inlined.1 (result i32) global.get $~lib/memory/__stack_pointer - i32.const 2176 + i32.const 4112 local.tee $4 i32.store offset=20 local.get $4 @@ -13944,7 +13943,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 112 i32.const 1 call $~lib/builtins/abort @@ -13952,7 +13951,7 @@ end block $~lib/builtins/bool.parse|inlined.2 (result i32) global.get $~lib/memory/__stack_pointer - i32.const 2224 + i32.const 4160 local.tee $5 i32.store offset=24 local.get $5 @@ -13971,7 +13970,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 113 i32.const 1 call $~lib/builtins/abort @@ -13979,7 +13978,7 @@ end block $~lib/builtins/bool.parse|inlined.3 (result i32) global.get $~lib/memory/__stack_pointer - i32.const 688 + i32.const 160 local.tee $6 i32.store offset=28 local.get $6 @@ -13998,7 +13997,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 114 i32.const 1 call $~lib/builtins/abort @@ -14006,7 +14005,7 @@ end block $~lib/builtins/bool.parse|inlined.4 (result i32) global.get $~lib/memory/__stack_pointer - i32.const 2272 + i32.const 4208 local.tee $7 i32.store offset=32 local.get $7 @@ -14025,7 +14024,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 115 i32.const 1 call $~lib/builtins/abort @@ -14033,7 +14032,7 @@ end block $~lib/builtins/bool.parse|inlined.5 (result i32) global.get $~lib/memory/__stack_pointer - i32.const 2304 + i32.const 4240 local.tee $8 i32.store offset=36 local.get $8 @@ -14052,7 +14051,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 116 i32.const 1 call $~lib/builtins/abort @@ -14060,7 +14059,7 @@ end block $~lib/builtins/bool.parse|inlined.6 (result i32) global.get $~lib/memory/__stack_pointer - i32.const 2336 + i32.const 4272 local.tee $9 i32.store offset=40 local.get $9 @@ -14079,13 +14078,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 117 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2368 + i32.const 816 i32.const 0 call $~lib/string/parseInt f64.const 0 @@ -14093,13 +14092,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 119 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2400 + i32.const 4304 i32.const 0 call $~lib/string/parseInt f64.const 0 @@ -14107,13 +14106,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 120 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2432 + i32.const 4336 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -14121,13 +14120,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 121 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2464 + i32.const 4368 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -14135,13 +14134,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 122 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2496 + i32.const 4400 i32.const 0 call $~lib/string/parseInt f64.const 5 @@ -14149,13 +14148,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 123 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2528 + i32.const 4432 i32.const 0 call $~lib/string/parseInt f64.const 455 @@ -14163,13 +14162,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 124 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2560 + i32.const 4464 i32.const 0 call $~lib/string/parseInt f64.const 3855 @@ -14177,13 +14176,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 125 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2592 + i32.const 4496 i32.const 0 call $~lib/string/parseInt f64.const 3855 @@ -14191,13 +14190,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 126 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2624 + i32.const 4528 i32.const 0 call $~lib/string/parseInt f64.const 11 @@ -14205,13 +14204,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 127 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2656 + i32.const 4560 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -14219,13 +14218,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 128 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2688 + i32.const 4592 i32.const 0 call $~lib/string/parseInt f64.const -123 @@ -14233,13 +14232,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 129 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2720 + i32.const 4624 i32.const 0 call $~lib/string/parseInt f64.const 123 @@ -14247,13 +14246,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 130 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2752 + i32.const 4656 i32.const 0 call $~lib/string/parseInt f64.const -12 @@ -14261,13 +14260,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 131 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2368 + i32.const 816 i32.const 0 call $~lib/string/parseInt f64.const 0 @@ -14275,13 +14274,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 132 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2784 + i32.const 4688 i32.const 0 call $~lib/string/parseInt f64.const 0 @@ -14289,13 +14288,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 133 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2816 + i32.const 4720 i32.const 16 call $~lib/string/parseInt f64.const 2833 @@ -14303,13 +14302,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 134 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2848 + i32.const 4752 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -14317,13 +14316,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 135 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2880 + i32.const 4784 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -14331,13 +14330,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 136 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2912 + i32.const 4816 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -14345,14 +14344,14 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 137 i32.const 1 call $~lib/builtins/abort unreachable end block $~lib/math/NativeMath.signbit|inlined.0 (result i32) - i32.const 2944 + i32.const 4848 i32.const 0 call $~lib/string/parseInt local.set $10 @@ -14369,29 +14368,29 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 138 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2976 + i32.const 4880 i32.const 0 call $~lib/string/parseInt - i32.const 3024 + i32.const 4928 i32.const 16 call $~lib/string/parseInt f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 139 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3056 + i32.const 4960 i32.const 0 call $~lib/string/parseInt f64.const 36893488147419103232 @@ -14399,13 +14398,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 140 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3056 + i32.const 4960 i32.const 13 call $~lib/string/parseInt f64.const 5135857308667095285760 @@ -14413,13 +14412,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 141 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3120 + i32.const 5024 i32.const 10 call $~lib/string/parseInt f64.const -1.e+24 @@ -14427,13 +14426,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 142 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3200 + i32.const 5104 i32.const 16 call $~lib/string/parseInt f64.const 75557863725914323419136 @@ -14441,13 +14440,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 143 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3264 + i32.const 5168 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -14455,13 +14454,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 144 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3296 + i32.const 5200 i32.const 0 call $~lib/string/parseInt f64.const 2 @@ -14469,13 +14468,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 145 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3344 + i32.const 5248 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -14483,13 +14482,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 147 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3376 + i32.const 5280 i32.const 0 call $~lib/string/parseInt f64.const 2 @@ -14497,13 +14496,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 148 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3424 + i32.const 5328 i32.const 0 call $~lib/string/parseInt f64.const 0 @@ -14511,13 +14510,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 149 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3456 + i32.const 5360 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -14525,13 +14524,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 150 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3488 + i32.const 5392 i32.const 0 call $~lib/string/parseInt f64.const 0 @@ -14539,13 +14538,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 151 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 + i32.const 160 i32.const 0 call $~lib/string/parseInt local.tee $11 @@ -14554,13 +14553,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 152 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3536 + i32.const 5440 i32.const 0 call $~lib/string/parseInt local.tee $12 @@ -14569,13 +14568,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 153 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3568 + i32.const 5472 i32.const 0 call $~lib/string/parseInt local.tee $13 @@ -14584,13 +14583,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 154 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1376 + i32.const 3312 i32.const 37 call $~lib/string/parseInt local.tee $14 @@ -14599,13 +14598,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 155 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3600 + i32.const 5504 i32.const 0 call $~lib/string/parseInt local.tee $15 @@ -14614,13 +14613,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 156 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3632 + i32.const 5536 i32.const 0 call $~lib/string/parseInt local.tee $16 @@ -14629,13 +14628,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 157 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3632 + i32.const 5536 call $~lib/number/F32.parseFloat local.tee $17 local.get $17 @@ -14643,13 +14642,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 158 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3632 + i32.const 5536 call $~lib/number/F64.parseFloat local.tee $18 local.get $18 @@ -14657,7 +14656,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 159 i32.const 1 call $~lib/builtins/abort @@ -14665,7 +14664,7 @@ end block $~lib/builtins/f32.parse|inlined.0 (result f32) global.get $~lib/memory/__stack_pointer - i32.const 3632 + i32.const 5536 local.tee $19 i32.store offset=44 local.get $19 @@ -14684,7 +14683,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 160 i32.const 1 call $~lib/builtins/abort @@ -14692,7 +14691,7 @@ end block $~lib/builtins/f64.parse|inlined.0 (result f64) global.get $~lib/memory/__stack_pointer - i32.const 3632 + i32.const 5536 local.tee $21 i32.store offset=48 local.get $21 @@ -14710,13 +14709,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 161 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3856 + i32.const 5760 i32.const 0 call $~lib/number/I32.parseInt global.get $~lib/number/I32.MAX_VALUE @@ -14724,7 +14723,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 163 i32.const 1 call $~lib/builtins/abort @@ -14732,7 +14731,7 @@ end block $~lib/builtins/i32.parse|inlined.0 (result i32) global.get $~lib/memory/__stack_pointer - i32.const 3856 + i32.const 5760 local.tee $23 i32.store offset=52 i32.const 0 @@ -14752,13 +14751,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 164 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3904 + i32.const 5808 i32.const 0 call $~lib/number/I64.parseInt global.get $~lib/number/I64.MAX_VALUE @@ -14766,7 +14765,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 165 i32.const 1 call $~lib/builtins/abort @@ -14774,7 +14773,7 @@ end block $~lib/builtins/i64.parse|inlined.0 (result i64) global.get $~lib/memory/__stack_pointer - i32.const 3904 + i32.const 5808 local.tee $25 i32.store offset=56 i32.const 0 @@ -14794,260 +14793,260 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 166 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2368 + i32.const 816 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 169 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2432 + i32.const 4336 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 170 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3968 + i32.const 5872 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 171 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4000 + i32.const 5904 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 172 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4032 + i32.const 5936 call $~lib/string/parseFloat f64.const 1e-05 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 173 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4064 + i32.const 5968 call $~lib/string/parseFloat f64.const -1e-05 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 174 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4096 + i32.const 6000 call $~lib/string/parseFloat f64.const -3e-23 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 175 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4144 + i32.const 6048 call $~lib/string/parseFloat f64.const 3e21 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 176 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4192 + i32.const 6096 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 177 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4224 + i32.const 6128 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 178 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4256 + i32.const 6160 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 179 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4288 + i32.const 6192 call $~lib/string/parseFloat f64.const 0.25 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 180 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4320 + i32.const 6224 call $~lib/string/parseFloat f64.const 1e3 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 181 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4352 + i32.const 6256 call $~lib/string/parseFloat f64.const 1e-10 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 182 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4400 + i32.const 6304 call $~lib/string/parseFloat f64.const 1e-30 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 183 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4448 + i32.const 6352 call $~lib/string/parseFloat f64.const 1e-323 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 184 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4496 + i32.const 6400 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 185 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4544 + i32.const 6448 call $~lib/string/parseFloat f64.const 1.e+308 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 186 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4576 + i32.const 6480 call $~lib/string/parseFloat f64.const inf f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 187 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 + i32.const 160 call $~lib/string/parseFloat local.tee $27 local.get $27 @@ -15055,650 +15054,650 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 188 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4608 + i32.const 6512 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 191 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4656 + i32.const 6560 call $~lib/string/parseFloat f64.const 1e-10 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 192 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4704 + i32.const 6608 call $~lib/string/parseFloat f64.const 10 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 193 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4752 + i32.const 6656 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 194 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4784 + i32.const 6688 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 195 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4816 + i32.const 6720 call $~lib/string/parseFloat f64.const 10 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 196 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4864 + i32.const 6768 call $~lib/string/parseFloat f64.const 123456789 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 197 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4912 + i32.const 6816 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 198 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4960 + i32.const 6864 call $~lib/string/parseFloat f64.const 1e-60 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 200 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4992 + i32.const 6896 call $~lib/string/parseFloat f64.const 1.e+60 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 201 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5024 + i32.const 6928 call $~lib/string/parseFloat f64.const 123.4 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 204 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5056 + i32.const 6960 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 205 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5088 + i32.const 6992 call $~lib/string/parseFloat f64.const -1.1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 206 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5136 + i32.const 7040 call $~lib/string/parseFloat f64.const 10 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 207 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5184 + i32.const 7088 call $~lib/string/parseFloat f64.const 10 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 208 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5232 + i32.const 7136 call $~lib/string/parseFloat f64.const 0.022 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 209 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5280 + i32.const 7184 call $~lib/string/parseFloat f64.const 11 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 210 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2784 + i32.const 4688 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 211 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5312 + i32.const 7216 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 212 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5344 + i32.const 7248 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 213 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5376 + i32.const 7280 call $~lib/string/parseFloat f64.const 1.1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 214 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5408 + i32.const 7312 call $~lib/string/parseFloat f64.const -1.1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 215 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5440 + i32.const 7344 call $~lib/string/parseFloat f64.const -1.1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 216 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5472 + i32.const 7376 call $~lib/string/parseFloat f64.const -1.1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 217 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5504 + i32.const 7408 call $~lib/string/parseFloat f64.const -1.1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 218 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5536 + i32.const 7440 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 219 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5568 + i32.const 7472 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 220 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5600 + i32.const 7504 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 221 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5632 + i32.const 7536 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 222 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5664 + i32.const 7568 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 223 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5696 + i32.const 7600 call $~lib/string/parseFloat f64.const 10 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 224 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5728 + i32.const 7632 call $~lib/string/parseFloat f64.const 10 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 225 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5776 + i32.const 7680 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 226 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5808 + i32.const 7712 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 227 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5840 + i32.const 7744 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 228 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5872 + i32.const 7776 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 229 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5904 + i32.const 7808 call $~lib/string/parseFloat f64.const 10 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 230 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5936 + i32.const 7840 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 231 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5968 + i32.const 7872 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 232 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6000 + i32.const 7904 call $~lib/string/parseFloat f64.const 0.01 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 233 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6048 + i32.const 7952 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 234 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6080 + i32.const 7984 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 235 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6112 + i32.const 8016 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 236 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6144 + i32.const 8048 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 237 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6176 + i32.const 8080 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 238 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6208 + i32.const 8112 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 239 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6240 + i32.const 8144 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 240 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6272 + i32.const 8176 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 241 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6304 + i32.const 8208 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 242 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6336 + i32.const 8240 call $~lib/string/parseFloat f64.const 0 call $~lib/object/Object.is @@ -15707,13 +15706,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 243 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6368 + i32.const 8272 call $~lib/string/parseFloat f64.const -0 call $~lib/object/Object.is @@ -15722,13 +15721,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 244 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6400 + i32.const 8304 call $~lib/string/parseFloat f64.const 0 call $~lib/object/Object.is @@ -15737,13 +15736,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 245 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2944 + i32.const 4848 call $~lib/string/parseFloat f64.const -0 call $~lib/object/Object.is @@ -15752,13 +15751,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 246 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6432 + i32.const 8336 call $~lib/string/parseFloat f64.const -0 call $~lib/object/Object.is @@ -15767,13 +15766,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 247 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3568 + i32.const 5472 call $~lib/string/parseFloat local.tee $28 local.get $28 @@ -15781,13 +15780,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 248 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3536 + i32.const 5440 call $~lib/string/parseFloat local.tee $29 local.get $29 @@ -15795,13 +15794,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 249 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6480 + i32.const 8384 call $~lib/string/parseFloat local.tee $30 local.get $30 @@ -15809,13 +15808,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 250 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6512 + i32.const 8416 call $~lib/string/parseFloat local.tee $31 local.get $31 @@ -15823,13 +15822,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 251 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6544 + i32.const 8448 call $~lib/string/parseFloat local.tee $32 local.get $32 @@ -15837,13 +15836,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 252 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6576 + i32.const 8480 call $~lib/string/parseFloat local.tee $33 local.get $33 @@ -15851,13 +15850,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 253 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6608 + i32.const 8512 call $~lib/string/parseFloat local.tee $34 local.get $34 @@ -15865,13 +15864,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 254 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6640 + i32.const 8544 call $~lib/string/parseFloat local.tee $35 local.get $35 @@ -15879,13 +15878,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 255 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6672 + i32.const 8576 call $~lib/string/parseFloat local.tee $36 local.get $36 @@ -15893,13 +15892,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 256 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6704 + i32.const 8608 call $~lib/string/parseFloat local.tee $37 local.get $37 @@ -15907,13 +15906,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 257 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6736 + i32.const 8640 call $~lib/string/parseFloat local.tee $38 local.get $38 @@ -15921,13 +15920,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 258 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6768 + i32.const 8672 call $~lib/string/parseFloat local.tee $39 local.get $39 @@ -15935,13 +15934,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 259 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6800 + i32.const 8704 call $~lib/string/parseFloat local.tee $40 local.get $40 @@ -15949,13 +15948,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 260 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6832 + i32.const 8736 call $~lib/string/parseFloat local.tee $41 local.get $41 @@ -15963,13 +15962,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 261 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6864 + i32.const 8768 call $~lib/string/parseFloat local.tee $42 local.get $42 @@ -15977,13 +15976,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 262 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 + i32.const 4272 call $~lib/string/parseFloat local.tee $43 local.get $43 @@ -15991,221 +15990,221 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 263 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6896 + i32.const 8800 call $~lib/string/parseFloat f64.const 1e22 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 264 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6928 + i32.const 8832 call $~lib/string/parseFloat f64.const 1e-22 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 265 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6960 + i32.const 8864 call $~lib/string/parseFloat f64.const 1.e+23 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 266 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6992 + i32.const 8896 call $~lib/string/parseFloat f64.const 1e-23 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 267 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7024 + i32.const 8928 call $~lib/string/parseFloat f64.const 1.e+37 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 268 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7056 + i32.const 8960 call $~lib/string/parseFloat f64.const 1e-37 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 269 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7088 + i32.const 8992 call $~lib/string/parseFloat f64.const 1.e+38 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 270 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7120 + i32.const 9024 call $~lib/string/parseFloat f64.const 1e-38 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 271 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7152 + i32.const 9056 call $~lib/string/parseFloat global.get $~lib/builtins/f64.EPSILON f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 272 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7216 + i32.const 9120 call $~lib/string/parseFloat global.get $~lib/builtins/f64.MAX_VALUE f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 273 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7296 + i32.const 9200 call $~lib/string/parseFloat global.get $~lib/builtins/f64.MIN_VALUE f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 274 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7328 + i32.const 9232 call $~lib/string/parseFloat f64.const 1.e+308 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 275 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7376 + i32.const 9280 call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 276 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7520 + i32.const 9424 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 277 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7568 + i32.const 9472 call $~lib/string/parseFloat f64.const inf f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 278 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7616 + i32.const 9520 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 279 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7664 + i32.const 9568 call $~lib/string/parseFloat f64.const inf f64.neg @@ -16213,78 +16212,78 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 280 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7712 + i32.const 9616 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 281 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7760 + i32.const 9664 call $~lib/string/parseFloat f64.const inf f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 282 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7808 + i32.const 9712 call $~lib/string/parseFloat f64.const inf f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 283 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7840 + i32.const 9744 call $~lib/string/parseFloat f64.const inf f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 284 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7888 + i32.const 9792 call $~lib/string/parseFloat f64.const inf f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 285 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7936 + i32.const 9840 call $~lib/string/parseFloat f64.const inf f64.neg @@ -16292,39 +16291,39 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 286 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7984 + i32.const 9888 call $~lib/string/parseFloat f64.const inf f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 287 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8032 + i32.const 9936 call $~lib/string/parseFloat f64.const inf f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 288 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8080 + i32.const 9984 call $~lib/string/parseFloat local.tee $44 local.get $44 @@ -16332,13 +16331,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 289 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8112 + i32.const 10016 call $~lib/string/parseFloat local.tee $45 local.get $45 @@ -16346,13 +16345,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 290 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8160 + i32.const 10064 call $~lib/string/parseFloat local.tee $46 local.get $46 @@ -16360,74 +16359,74 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 291 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8208 + i32.const 10112 call $~lib/string/parseFloat f64.const 0 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 295 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8400 + i32.const 10304 call $~lib/string/parseFloat global.get $std/string/Ox1p_1073 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 308 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8592 + i32.const 10496 call $~lib/string/parseFloat global.get $std/string/Ox1_0000000000001p_1022 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 312 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8784 - i32.const 8944 + i32.const 10688 + i32.const 10848 call $~lib/string/String.__concat local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store offset=12 local.get $52 - i32.const 9104 + i32.const 11008 call $~lib/string/String.__concat local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store offset=8 local.get $52 - i32.const 9264 + i32.const 11168 call $~lib/string/String.__concat local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store offset=4 local.get $52 - i32.const 9424 + i32.const 11328 call $~lib/string/String.__concat local.set $52 global.get $~lib/memory/__stack_pointer @@ -16440,325 +16439,325 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 315 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9584 + i32.const 11488 call $~lib/string/parseFloat f64.const 9.753531888799502e-104 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 333 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9696 + i32.const 11600 call $~lib/string/parseFloat f64.const 0.5961860348131807 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 334 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9808 + i32.const 11712 call $~lib/string/parseFloat f64.const 0.18150131692180388 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 335 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9920 + i32.const 11824 call $~lib/string/parseFloat f64.const 0.42070823575344535 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 336 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10032 + i32.const 11936 call $~lib/string/parseFloat f64.const 0.6654686306516261 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 337 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10144 + i32.const 12048 call $~lib/string/parseFloat f64.const 0.6101852922970868 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 338 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10256 + i32.const 12160 call $~lib/string/parseFloat f64.const 0.7696695208236968 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 339 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10368 + i32.const 12272 call $~lib/string/parseFloat f64.const 0.25050653222286823 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 340 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10480 + i32.const 12384 call $~lib/string/parseFloat f64.const 0.2740037230228005 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 341 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10592 + i32.const 12496 call $~lib/string/parseFloat f64.const 0.20723093500497428 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 342 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10704 + i32.const 12608 call $~lib/string/parseFloat f64.const 7.900280238081605 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 343 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10816 + i32.const 12720 call $~lib/string/parseFloat f64.const 98.22860653737297 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 344 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10928 + i32.const 12832 call $~lib/string/parseFloat f64.const 746.894972319037 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 345 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11040 + i32.const 12944 call $~lib/string/parseFloat f64.const 1630.2683202827284 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 346 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11152 + i32.const 13056 call $~lib/string/parseFloat f64.const 46371.68629719171 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 347 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11264 + i32.const 13168 call $~lib/string/parseFloat f64.const 653780.5944497711 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 348 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11376 + i32.const 13280 call $~lib/string/parseFloat f64.const 234632.43565024371 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 349 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11488 + i32.const 13392 call $~lib/string/parseFloat f64.const 97094817.16420048 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 350 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11600 + i32.const 13504 call $~lib/string/parseFloat f64.const 499690852.20518744 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 351 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11712 + i32.const 13616 call $~lib/string/parseFloat f64.const 7925201200557245595648 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 352 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11824 + i32.const 13728 call $~lib/string/parseFloat f64.const 6096564585983177528398588e5 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 353 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11936 + i32.const 13840 call $~lib/string/parseFloat f64.const 4800416117477028695992383e42 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 354 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12048 + i32.const 13952 call $~lib/string/parseFloat f64.const 8524829079817968137287277e80 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 355 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12160 + i32.const 14064 call $~lib/string/parseFloat f64.const 3271239291709782092398754e243 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 356 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12272 + i32.const 14176 call $~lib/string/parseFloat local.tee $47 local.get $47 @@ -16766,28 +16765,28 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 359 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12304 + i32.const 14208 call $~lib/string/parseFloat f64.const 0.1 f64.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 360 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 784 - i32.const 12336 + i32.const 2720 + i32.const 14240 call $~lib/string/String.__concat local.tee $48 i32.store offset=60 @@ -16797,12 +16796,12 @@ local.get $52 i32.store local.get $52 - i32.const 12368 + i32.const 14272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 364 i32.const 3 call $~lib/builtins/abort @@ -16814,24 +16813,24 @@ local.get $52 i32.store local.get $52 - i32.const 784 + i32.const 2720 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 365 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 688 + i32.const 160 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 367 i32.const 1 call $~lib/builtins/abort @@ -16848,13 +16847,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 369 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 + i32.const 160 global.get $std/string/nullStr local.set $52 global.get $~lib/memory/__stack_pointer @@ -16865,7 +16864,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 371 i32.const 1 call $~lib/builtins/abort @@ -16877,538 +16876,538 @@ local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 373 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 784 - i32.const 12336 + i32.const 2720 + i32.const 14240 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 375 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 784 - i32.const 784 + i32.const 2720 + i32.const 2720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 376 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12400 - i32.const 12432 + i32.const 14304 + i32.const 14336 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 378 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12400 - i32.const 12400 + i32.const 14304 + i32.const 14304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 379 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12464 - i32.const 12496 + i32.const 14368 + i32.const 14400 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 381 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12528 - i32.const 12560 + i32.const 14432 + i32.const 14464 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 383 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12592 - i32.const 12592 + i32.const 14496 + i32.const 14496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 384 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12592 - i32.const 12640 + i32.const 14496 + i32.const 14544 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 386 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12688 - i32.const 12736 + i32.const 14592 + i32.const 14640 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 388 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12336 - i32.const 784 + i32.const 14240 + i32.const 2720 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 390 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12784 - i32.const 784 + i32.const 14688 + i32.const 2720 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 391 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12784 - i32.const 12816 + i32.const 14688 + i32.const 14720 call $~lib/string/String.__gte i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 392 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12784 - i32.const 12368 + i32.const 14688 + i32.const 14272 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 393 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12784 - i32.const 12368 + i32.const 14688 + i32.const 14272 call $~lib/string/String.__lt i32.eqz i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 394 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 688 + i32.const 3248 + i32.const 160 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 396 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 1312 + i32.const 160 + i32.const 3248 call $~lib/string/String.__lt i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 397 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 688 + i32.const 3248 + i32.const 160 call $~lib/string/String.__gte i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 398 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 1312 + i32.const 160 + i32.const 3248 call $~lib/string/String.__lte i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 399 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 688 + i32.const 3248 + i32.const 160 call $~lib/string/String.__lt i32.eqz i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 400 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 1312 + i32.const 160 + i32.const 3248 call $~lib/string/String.__gt i32.eqz i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 401 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 688 + i32.const 160 + i32.const 160 call $~lib/string/String.__lt i32.eqz i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 402 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 688 + i32.const 160 + i32.const 160 call $~lib/string/String.__gt i32.eqz i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 403 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 688 + i32.const 160 + i32.const 160 call $~lib/string/String.__gte i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 404 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 688 + i32.const 160 + i32.const 160 call $~lib/string/String.__lte i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 405 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2432 - i32.const 12848 + i32.const 4336 + i32.const 14752 call $~lib/string/String.__lt i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 407 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12848 - i32.const 2432 + i32.const 14752 + i32.const 4336 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 408 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12880 - i32.const 12848 + i32.const 14784 + i32.const 14752 call $~lib/string/String.__lt i32.eqz i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 409 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12848 - i32.const 12880 + i32.const 14752 + i32.const 14784 call $~lib/string/String.__gt i32.eqz i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 410 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12880 - i32.const 12848 + i32.const 14784 + i32.const 14752 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 411 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12848 - i32.const 12880 + i32.const 14752 + i32.const 14784 call $~lib/string/String.__lt i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 412 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12880 - i32.const 12880 + i32.const 14784 + i32.const 14784 call $~lib/string/String.__lt i32.eqz i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 413 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12880 - i32.const 12880 + i32.const 14784 + i32.const 14784 call $~lib/string/String.__gt i32.eqz i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 414 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12880 - i32.const 12880 + i32.const 14784 + i32.const 14784 call $~lib/string/String.__lte i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 415 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12880 - i32.const 12880 + i32.const 14784 + i32.const 14784 call $~lib/string/String.__gte i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 416 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12848 - i32.const 12912 + i32.const 14752 + i32.const 14816 call $~lib/string/String.__gte i32.eqz i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 417 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12912 - i32.const 12848 + i32.const 14816 + i32.const 14752 call $~lib/string/String.__gte i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 418 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12848 - i32.const 12912 + i32.const 14752 + i32.const 14816 call $~lib/string/String.__lte i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 419 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2432 - i32.const 2432 + i32.const 4336 + i32.const 4336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 420 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12880 - i32.const 12880 + i32.const 14784 + i32.const 14784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 421 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1376 - i32.const 1376 + i32.const 3312 + i32.const 3312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 422 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1376 - i32.const 12944 + i32.const 3312 + i32.const 14848 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 424 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12976 - i32.const 12976 + i32.const 14880 + i32.const 14880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 425 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13008 - i32.const 12976 + i32.const 14912 + i32.const 14880 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 427 i32.const 1 call $~lib/builtins/abort @@ -17453,26 +17452,26 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 432 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1376 + i32.const 3312 call $~lib/string/String#get:length i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 435 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 + i32.const 160 i32.const 100 call $~lib/string/String#repeat local.set $52 @@ -17480,18 +17479,18 @@ local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 437 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 784 + i32.const 2720 i32.const 0 call $~lib/string/String#repeat local.set $52 @@ -17499,18 +17498,18 @@ local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 438 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 784 + i32.const 2720 i32.const 1 call $~lib/string/String#repeat local.set $52 @@ -17518,18 +17517,18 @@ local.get $52 i32.store local.get $52 - i32.const 784 + i32.const 2720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 439 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 784 + i32.const 2720 i32.const 2 call $~lib/string/String#repeat local.set $52 @@ -17537,18 +17536,18 @@ local.get $52 i32.store local.get $52 - i32.const 12816 + i32.const 14720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 440 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 784 + i32.const 2720 i32.const 3 call $~lib/string/String#repeat local.set $52 @@ -17556,18 +17555,18 @@ local.get $52 i32.store local.get $52 - i32.const 13088 + i32.const 14992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 441 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12368 + i32.const 14272 i32.const 4 call $~lib/string/String#repeat local.set $52 @@ -17575,18 +17574,18 @@ local.get $52 i32.store local.get $52 - i32.const 13120 + i32.const 15024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 442 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 784 + i32.const 2720 i32.const 5 call $~lib/string/String#repeat local.set $52 @@ -17594,18 +17593,18 @@ local.get $52 i32.store local.get $52 - i32.const 13168 + i32.const 15072 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 443 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 784 + i32.const 2720 i32.const 6 call $~lib/string/String#repeat local.set $52 @@ -17613,18 +17612,18 @@ local.get $52 i32.store local.get $52 - i32.const 13200 + i32.const 15104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 444 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 784 + i32.const 2720 i32.const 7 call $~lib/string/String#repeat local.set $52 @@ -17632,778 +17631,778 @@ local.get $52 i32.store local.get $52 - i32.const 13232 + i32.const 15136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 445 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 688 - i32.const 688 + i32.const 160 + i32.const 160 + i32.const 160 call $~lib/string/String#replace local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 447 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 688 - i32.const 3568 + i32.const 160 + i32.const 160 + i32.const 5472 call $~lib/string/String#replace local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 3568 + i32.const 5472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 448 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3568 - i32.const 3568 - i32.const 688 + i32.const 5472 + i32.const 5472 + i32.const 160 call $~lib/string/String#replace local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 449 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3568 - i32.const 688 - i32.const 688 + i32.const 5472 + i32.const 160 + i32.const 160 call $~lib/string/String#replace local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 3568 + i32.const 5472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 450 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 3536 - i32.const 3568 + i32.const 3248 + i32.const 5440 + i32.const 5472 call $~lib/string/String#replace local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1312 + i32.const 3248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 451 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 1312 - i32.const 3568 + i32.const 3248 + i32.const 3248 + i32.const 5472 call $~lib/string/String#replace local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 3568 + i32.const 5472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 452 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 1888 - i32.const 3568 + i32.const 3248 + i32.const 3824 + i32.const 5472 call $~lib/string/String#replace local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1312 + i32.const 3248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 453 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 12368 - i32.const 12368 + i32.const 3248 + i32.const 14272 + i32.const 14272 call $~lib/string/String#replace local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1312 + i32.const 3248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 454 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13280 - i32.const 3536 - i32.const 3568 + i32.const 15184 + i32.const 5440 + i32.const 5472 call $~lib/string/String#replace local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 13312 + i32.const 15216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 455 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 688 - i32.const 3568 + i32.const 3248 + i32.const 160 + i32.const 5472 call $~lib/string/String#replace local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 13344 + i32.const 15248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 456 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13376 - i32.const 13408 - i32.const 3568 + i32.const 15280 + i32.const 15312 + i32.const 5472 call $~lib/string/String#replace local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 13344 + i32.const 15248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 457 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 13440 - i32.const 13472 + i32.const 3248 + i32.const 15344 + i32.const 15376 call $~lib/string/String#replace local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 13504 + i32.const 15408 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 458 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 13440 - i32.const 688 + i32.const 3248 + i32.const 15344 + i32.const 160 call $~lib/string/String#replace local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 12368 + i32.const 14272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 459 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 688 - i32.const 1312 + i32.const 160 + i32.const 160 + i32.const 3248 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1312 + i32.const 3248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 461 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 3536 - i32.const 3568 + i32.const 3248 + i32.const 5440 + i32.const 5472 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1312 + i32.const 3248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 462 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1520 - i32.const 1312 - i32.const 3568 + i32.const 3456 + i32.const 3248 + i32.const 5472 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 13472 + i32.const 15376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 464 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13536 - i32.const 1312 - i32.const 3568 + i32.const 15440 + i32.const 3248 + i32.const 5472 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 13584 + i32.const 15488 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 465 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1520 - i32.const 12368 - i32.const 12368 + i32.const 3456 + i32.const 14272 + i32.const 14272 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1520 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 466 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13616 - i32.const 784 - i32.const 13584 + i32.const 15520 + i32.const 2720 + i32.const 15488 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 13664 + i32.const 15568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 467 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1520 - i32.const 12368 - i32.const 13472 + i32.const 3456 + i32.const 14272 + i32.const 15376 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 13712 + i32.const 15616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 468 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13744 - i32.const 13776 - i32.const 13472 + i32.const 15648 + i32.const 15680 + i32.const 15376 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 13808 + i32.const 15712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 469 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 1888 - i32.const 3568 + i32.const 3248 + i32.const 3824 + i32.const 5472 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1312 + i32.const 3248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 470 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 13840 - i32.const 13472 + i32.const 3824 + i32.const 15744 + i32.const 15376 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1888 + i32.const 3824 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 471 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 13872 - i32.const 3568 + i32.const 3248 + i32.const 15776 + i32.const 5472 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 13904 + i32.const 15808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 472 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12368 - i32.const 12368 - i32.const 3568 + i32.const 14272 + i32.const 14272 + i32.const 5472 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 3568 + i32.const 5472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 473 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13280 - i32.const 3536 - i32.const 3568 + i32.const 15184 + i32.const 5440 + i32.const 5472 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 13936 + i32.const 15840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 474 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 688 - i32.const 688 + i32.const 160 + i32.const 160 + i32.const 160 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 476 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 688 - i32.const 3568 + i32.const 160 + i32.const 160 + i32.const 5472 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 3568 + i32.const 5472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 477 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3568 - i32.const 3568 - i32.const 688 + i32.const 5472 + i32.const 5472 + i32.const 160 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 478 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3568 - i32.const 688 - i32.const 688 + i32.const 5472 + i32.const 160 + i32.const 160 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 3568 + i32.const 5472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 479 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 1312 - i32.const 3536 + i32.const 3248 + i32.const 3248 + i32.const 5440 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 3536 + i32.const 5440 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 480 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 1792 - i32.const 3536 + i32.const 3248 + i32.const 3728 + i32.const 5440 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1312 + i32.const 3248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 481 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 688 - i32.const 3568 + i32.const 3248 + i32.const 160 + i32.const 5472 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 13968 + i32.const 15872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 482 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 688 - i32.const 688 + i32.const 3248 + i32.const 160 + i32.const 160 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 1312 + i32.const 3248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 483 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14016 - i32.const 784 - i32.const 14048 + i32.const 15920 + i32.const 2720 + i32.const 15952 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 14080 + i32.const 15984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 486 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12368 - i32.const 12368 - i32.const 14128 + i32.const 14272 + i32.const 14272 + i32.const 16032 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 14128 + i32.const 16032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 487 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13088 - i32.const 784 - i32.const 14160 + i32.const 14992 + i32.const 2720 + i32.const 16064 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 14192 + i32.const 16096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 488 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13088 - i32.const 12816 - i32.const 14048 + i32.const 14992 + i32.const 14720 + i32.const 15952 call $~lib/string/String#replaceAll local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 14240 + i32.const 16144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 489 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14272 + i32.const 16176 global.set $std/string/str global.get $std/string/str local.set $52 @@ -18421,12 +18420,12 @@ local.get $52 i32.store local.get $52 - i32.const 14272 + i32.const 16176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 493 i32.const 1 call $~lib/builtins/abort @@ -18448,12 +18447,12 @@ local.get $52 i32.store local.get $52 - i32.const 14320 + i32.const 16224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 494 i32.const 1 call $~lib/builtins/abort @@ -18475,12 +18474,12 @@ local.get $52 i32.store local.get $52 - i32.const 14352 + i32.const 16256 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 495 i32.const 1 call $~lib/builtins/abort @@ -18500,12 +18499,12 @@ local.get $52 i32.store local.get $52 - i32.const 14384 + i32.const 16288 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 496 i32.const 1 call $~lib/builtins/abort @@ -18525,12 +18524,12 @@ local.get $52 i32.store local.get $52 - i32.const 14416 + i32.const 16320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 497 i32.const 1 call $~lib/builtins/abort @@ -18550,12 +18549,12 @@ local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 498 i32.const 1 call $~lib/builtins/abort @@ -18575,12 +18574,12 @@ local.get $52 i32.store local.get $52 - i32.const 14448 + i32.const 16352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 499 i32.const 1 call $~lib/builtins/abort @@ -18602,12 +18601,12 @@ local.get $52 i32.store local.get $52 - i32.const 14272 + i32.const 16176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 501 i32.const 1 call $~lib/builtins/abort @@ -18629,12 +18628,12 @@ local.get $52 i32.store local.get $52 - i32.const 14320 + i32.const 16224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 502 i32.const 1 call $~lib/builtins/abort @@ -18656,12 +18655,12 @@ local.get $52 i32.store local.get $52 - i32.const 14352 + i32.const 16256 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 503 i32.const 1 call $~lib/builtins/abort @@ -18681,12 +18680,12 @@ local.get $52 i32.store local.get $52 - i32.const 14496 + i32.const 16400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 504 i32.const 1 call $~lib/builtins/abort @@ -18706,12 +18705,12 @@ local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 505 i32.const 1 call $~lib/builtins/abort @@ -18731,12 +18730,12 @@ local.get $52 i32.store local.get $52 - i32.const 14544 + i32.const 16448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 506 i32.const 1 call $~lib/builtins/abort @@ -18756,12 +18755,12 @@ local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 507 i32.const 1 call $~lib/builtins/abort @@ -18781,12 +18780,12 @@ local.get $52 i32.store local.get $52 - i32.const 14272 + i32.const 16176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 508 i32.const 1 call $~lib/builtins/abort @@ -18806,12 +18805,12 @@ local.get $52 i32.store local.get $52 - i32.const 14576 + i32.const 16480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 509 i32.const 1 call $~lib/builtins/abort @@ -18831,12 +18830,12 @@ local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 510 i32.const 1 call $~lib/builtins/abort @@ -18858,12 +18857,12 @@ local.get $52 i32.store local.get $52 - i32.const 14272 + i32.const 16176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 512 i32.const 1 call $~lib/builtins/abort @@ -18885,12 +18884,12 @@ local.get $52 i32.store local.get $52 - i32.const 14272 + i32.const 16176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 513 i32.const 1 call $~lib/builtins/abort @@ -18912,12 +18911,12 @@ local.get $52 i32.store local.get $52 - i32.const 14272 + i32.const 16176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 514 i32.const 1 call $~lib/builtins/abort @@ -18937,12 +18936,12 @@ local.get $52 i32.store local.get $52 - i32.const 14384 + i32.const 16288 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 515 i32.const 1 call $~lib/builtins/abort @@ -18962,12 +18961,12 @@ local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 516 i32.const 1 call $~lib/builtins/abort @@ -18987,12 +18986,12 @@ local.get $52 i32.store local.get $52 - i32.const 14608 + i32.const 16512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 517 i32.const 1 call $~lib/builtins/abort @@ -19012,12 +19011,12 @@ local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 518 i32.const 1 call $~lib/builtins/abort @@ -19037,12 +19036,12 @@ local.get $52 i32.store local.get $52 - i32.const 14272 + i32.const 16176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 519 i32.const 1 call $~lib/builtins/abort @@ -19062,12 +19061,12 @@ local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 520 i32.const 1 call $~lib/builtins/abort @@ -19087,19 +19086,19 @@ local.get $52 i32.store local.get $52 - i32.const 1888 + i32.const 3824 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 521 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 688 + i32.const 160 i32.const 0 i32.const 0 global.set $~argumentsLength @@ -19130,7 +19129,7 @@ local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq else i32.const 0 @@ -19138,15 +19137,15 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 527 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 688 - i32.const 688 + i32.const 160 + i32.const 160 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -19165,15 +19164,15 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 688 - i32.const 1600 + i32.const 160 + i32.const 3536 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -19203,7 +19202,7 @@ local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq else i32.const 0 @@ -19211,15 +19210,15 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 14816 - i32.const 6608 + i32.const 16720 + i32.const 8512 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -19249,7 +19248,7 @@ local.get $52 i32.store local.get $52 - i32.const 14816 + i32.const 16720 call $~lib/string/String.__eq else i32.const 0 @@ -19257,15 +19256,15 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 533 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 14816 - i32.const 1600 + i32.const 16720 + i32.const 3536 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -19295,7 +19294,7 @@ local.get $52 i32.store local.get $52 - i32.const 784 + i32.const 2720 call $~lib/string/String.__eq else i32.const 0 @@ -19314,7 +19313,7 @@ local.get $52 i32.store local.get $52 - i32.const 12336 + i32.const 14240 call $~lib/string/String.__eq else i32.const 0 @@ -19333,7 +19332,7 @@ local.get $52 i32.store local.get $52 - i32.const 13440 + i32.const 15344 call $~lib/string/String.__eq else i32.const 0 @@ -19341,15 +19340,15 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 535 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 14848 - i32.const 14896 + i32.const 16752 + i32.const 16800 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -19379,7 +19378,7 @@ local.get $52 i32.store local.get $52 - i32.const 784 + i32.const 2720 call $~lib/string/String.__eq else i32.const 0 @@ -19398,7 +19397,7 @@ local.get $52 i32.store local.get $52 - i32.const 12336 + i32.const 14240 call $~lib/string/String.__eq else i32.const 0 @@ -19417,7 +19416,7 @@ local.get $52 i32.store local.get $52 - i32.const 13440 + i32.const 15344 call $~lib/string/String.__eq else i32.const 0 @@ -19425,15 +19424,15 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 537 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 14928 - i32.const 1600 + i32.const 16832 + i32.const 3536 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -19463,7 +19462,7 @@ local.get $52 i32.store local.get $52 - i32.const 784 + i32.const 2720 call $~lib/string/String.__eq else i32.const 0 @@ -19482,7 +19481,7 @@ local.get $52 i32.store local.get $52 - i32.const 12336 + i32.const 14240 call $~lib/string/String.__eq else i32.const 0 @@ -19501,7 +19500,7 @@ local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq else i32.const 0 @@ -19520,7 +19519,7 @@ local.get $52 i32.store local.get $52 - i32.const 13440 + i32.const 15344 call $~lib/string/String.__eq else i32.const 0 @@ -19528,15 +19527,15 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 539 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 14960 - i32.const 1600 + i32.const 16864 + i32.const 3536 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -19566,7 +19565,7 @@ local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq else i32.const 0 @@ -19585,7 +19584,7 @@ local.get $52 i32.store local.get $52 - i32.const 784 + i32.const 2720 call $~lib/string/String.__eq else i32.const 0 @@ -19604,7 +19603,7 @@ local.get $52 i32.store local.get $52 - i32.const 12336 + i32.const 14240 call $~lib/string/String.__eq else i32.const 0 @@ -19623,7 +19622,7 @@ local.get $52 i32.store local.get $52 - i32.const 13440 + i32.const 15344 call $~lib/string/String.__eq else i32.const 0 @@ -19631,15 +19630,15 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 541 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 14992 - i32.const 1600 + i32.const 16896 + i32.const 3536 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -19669,7 +19668,7 @@ local.get $52 i32.store local.get $52 - i32.const 784 + i32.const 2720 call $~lib/string/String.__eq else i32.const 0 @@ -19688,7 +19687,7 @@ local.get $52 i32.store local.get $52 - i32.const 12336 + i32.const 14240 call $~lib/string/String.__eq else i32.const 0 @@ -19707,7 +19706,7 @@ local.get $52 i32.store local.get $52 - i32.const 13440 + i32.const 15344 call $~lib/string/String.__eq else i32.const 0 @@ -19726,7 +19725,7 @@ local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq else i32.const 0 @@ -19734,15 +19733,15 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 543 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1312 - i32.const 688 + i32.const 3248 + i32.const 160 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -19772,7 +19771,7 @@ local.get $52 i32.store local.get $52 - i32.const 784 + i32.const 2720 call $~lib/string/String.__eq else i32.const 0 @@ -19791,7 +19790,7 @@ local.get $52 i32.store local.get $52 - i32.const 12336 + i32.const 14240 call $~lib/string/String.__eq else i32.const 0 @@ -19810,7 +19809,7 @@ local.get $52 i32.store local.get $52 - i32.const 13440 + i32.const 15344 call $~lib/string/String.__eq else i32.const 0 @@ -19818,15 +19817,15 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 545 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1312 - i32.const 688 + i32.const 3248 + i32.const 160 i32.const 0 call $~lib/string/String#split local.tee $51 @@ -19843,15 +19842,15 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 547 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1312 - i32.const 688 + i32.const 3248 + i32.const 160 i32.const 1 call $~lib/string/String#split local.tee $51 @@ -19879,7 +19878,7 @@ local.get $52 i32.store local.get $52 - i32.const 784 + i32.const 2720 call $~lib/string/String.__eq else i32.const 0 @@ -19887,15 +19886,15 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 549 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 14816 - i32.const 1600 + i32.const 16720 + i32.const 3536 i32.const 1 call $~lib/string/String#split local.tee $51 @@ -19923,7 +19922,7 @@ local.get $52 i32.store local.get $52 - i32.const 784 + i32.const 2720 call $~lib/string/String.__eq else i32.const 0 @@ -19931,15 +19930,15 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 551 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1312 - i32.const 688 + i32.const 3248 + i32.const 160 i32.const 4 call $~lib/string/String#split local.tee $51 @@ -19967,7 +19966,7 @@ local.get $52 i32.store local.get $52 - i32.const 784 + i32.const 2720 call $~lib/string/String.__eq else i32.const 0 @@ -19986,7 +19985,7 @@ local.get $52 i32.store local.get $52 - i32.const 12336 + i32.const 14240 call $~lib/string/String.__eq else i32.const 0 @@ -20005,7 +20004,7 @@ local.get $52 i32.store local.get $52 - i32.const 13440 + i32.const 15344 call $~lib/string/String.__eq else i32.const 0 @@ -20013,15 +20012,15 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 553 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1312 - i32.const 688 + i32.const 3248 + i32.const 160 i32.const -1 call $~lib/string/String#split local.tee $51 @@ -20049,7 +20048,7 @@ local.get $52 i32.store local.get $52 - i32.const 784 + i32.const 2720 call $~lib/string/String.__eq else i32.const 0 @@ -20068,7 +20067,7 @@ local.get $52 i32.store local.get $52 - i32.const 12336 + i32.const 14240 call $~lib/string/String.__eq else i32.const 0 @@ -20087,7 +20086,7 @@ local.get $52 i32.store local.get $52 - i32.const 13440 + i32.const 15344 call $~lib/string/String.__eq else i32.const 0 @@ -20095,15 +20094,15 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 555 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 14816 - i32.const 1600 + i32.const 16720 + i32.const 3536 i32.const -1 call $~lib/string/String#split local.tee $51 @@ -20131,7 +20130,7 @@ local.get $52 i32.store local.get $52 - i32.const 784 + i32.const 2720 call $~lib/string/String.__eq else i32.const 0 @@ -20150,7 +20149,7 @@ local.get $52 i32.store local.get $52 - i32.const 12336 + i32.const 14240 call $~lib/string/String.__eq else i32.const 0 @@ -20169,7 +20168,7 @@ local.get $52 i32.store local.get $52 - i32.const 13440 + i32.const 15344 call $~lib/string/String.__eq else i32.const 0 @@ -20177,7 +20176,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -20191,12 +20190,12 @@ local.get $52 i32.store local.get $52 - i32.const 2368 + i32.const 816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 562 i32.const 1 call $~lib/builtins/abort @@ -20210,12 +20209,12 @@ local.get $52 i32.store local.get $52 - i32.const 2432 + i32.const 4336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 563 i32.const 1 call $~lib/builtins/abort @@ -20229,12 +20228,12 @@ local.get $52 i32.store local.get $52 - i32.const 16768 + i32.const 16928 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 564 i32.const 1 call $~lib/builtins/abort @@ -20248,12 +20247,12 @@ local.get $52 i32.store local.get $52 - i32.const 16800 + i32.const 16960 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 565 i32.const 1 call $~lib/builtins/abort @@ -20267,12 +20266,12 @@ local.get $52 i32.store local.get $52 - i32.const 1376 + i32.const 3312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 566 i32.const 1 call $~lib/builtins/abort @@ -20286,12 +20285,12 @@ local.get $52 i32.store local.get $52 - i32.const 16832 + i32.const 16992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 567 i32.const 1 call $~lib/builtins/abort @@ -20305,12 +20304,12 @@ local.get $52 i32.store local.get $52 - i32.const 12976 + i32.const 14880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 568 i32.const 1 call $~lib/builtins/abort @@ -20324,12 +20323,12 @@ local.get $52 i32.store local.get $52 - i32.const 16864 + i32.const 17024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 569 i32.const 1 call $~lib/builtins/abort @@ -20343,12 +20342,12 @@ local.get $52 i32.store local.get $52 - i32.const 16896 + i32.const 17056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 570 i32.const 1 call $~lib/builtins/abort @@ -20362,12 +20361,12 @@ local.get $52 i32.store local.get $52 - i32.const 16928 + i32.const 17088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 571 i32.const 1 call $~lib/builtins/abort @@ -20381,12 +20380,12 @@ local.get $52 i32.store local.get $52 - i32.const 16976 + i32.const 17136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 572 i32.const 1 call $~lib/builtins/abort @@ -20400,12 +20399,12 @@ local.get $52 i32.store local.get $52 - i32.const 17024 + i32.const 17184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 573 i32.const 1 call $~lib/builtins/abort @@ -20419,12 +20418,12 @@ local.get $52 i32.store local.get $52 - i32.const 17072 + i32.const 17232 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 574 i32.const 1 call $~lib/builtins/abort @@ -20438,12 +20437,12 @@ local.get $52 i32.store local.get $52 - i32.const 17120 + i32.const 17280 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 575 i32.const 1 call $~lib/builtins/abort @@ -20457,12 +20456,12 @@ local.get $52 i32.store local.get $52 - i32.const 17168 + i32.const 17328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 576 i32.const 1 call $~lib/builtins/abort @@ -20476,12 +20475,12 @@ local.get $52 i32.store local.get $52 - i32.const 17216 + i32.const 17376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 577 i32.const 1 call $~lib/builtins/abort @@ -20495,12 +20494,12 @@ local.get $52 i32.store local.get $52 - i32.const 17264 + i32.const 17424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 578 i32.const 1 call $~lib/builtins/abort @@ -20514,12 +20513,12 @@ local.get $52 i32.store local.get $52 - i32.const 17296 + i32.const 17456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 580 i32.const 1 call $~lib/builtins/abort @@ -20533,12 +20532,12 @@ local.get $52 i32.store local.get $52 - i32.const 17328 + i32.const 17488 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 581 i32.const 1 call $~lib/builtins/abort @@ -20552,12 +20551,12 @@ local.get $52 i32.store local.get $52 - i32.const 17216 + i32.const 17376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 582 i32.const 1 call $~lib/builtins/abort @@ -20571,12 +20570,12 @@ local.get $52 i32.store local.get $52 - i32.const 2368 + i32.const 816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 584 i32.const 1 call $~lib/builtins/abort @@ -20590,12 +20589,12 @@ local.get $52 i32.store local.get $52 - i32.const 17360 + i32.const 17520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 585 i32.const 1 call $~lib/builtins/abort @@ -20609,12 +20608,12 @@ local.get $52 i32.store local.get $52 - i32.const 17168 + i32.const 17328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 586 i32.const 1 call $~lib/builtins/abort @@ -20628,12 +20627,12 @@ local.get $52 i32.store local.get $52 - i32.const 17392 + i32.const 17552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 587 i32.const 1 call $~lib/builtins/abort @@ -20647,12 +20646,12 @@ local.get $52 i32.store local.get $52 - i32.const 17440 + i32.const 17600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 588 i32.const 1 call $~lib/builtins/abort @@ -20666,12 +20665,12 @@ local.get $52 i32.store local.get $52 - i32.const 2368 + i32.const 816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 592 i32.const 1 call $~lib/builtins/abort @@ -20685,12 +20684,12 @@ local.get $52 i32.store local.get $52 - i32.const 2432 + i32.const 4336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 593 i32.const 1 call $~lib/builtins/abort @@ -20704,12 +20703,12 @@ local.get $52 i32.store local.get $52 - i32.const 16768 + i32.const 16928 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 594 i32.const 1 call $~lib/builtins/abort @@ -20723,12 +20722,12 @@ local.get $52 i32.store local.get $52 - i32.const 13440 + i32.const 15344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 595 i32.const 1 call $~lib/builtins/abort @@ -20742,12 +20741,12 @@ local.get $52 i32.store local.get $52 - i32.const 17488 + i32.const 17648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 596 i32.const 1 call $~lib/builtins/abort @@ -20761,12 +20760,12 @@ local.get $52 i32.store local.get $52 - i32.const 17520 + i32.const 17680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 597 i32.const 1 call $~lib/builtins/abort @@ -20780,12 +20779,12 @@ local.get $52 i32.store local.get $52 - i32.const 17552 + i32.const 17712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 598 i32.const 1 call $~lib/builtins/abort @@ -20799,12 +20798,12 @@ local.get $52 i32.store local.get $52 - i32.const 17584 + i32.const 17744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 599 i32.const 1 call $~lib/builtins/abort @@ -20818,12 +20817,12 @@ local.get $52 i32.store local.get $52 - i32.const 17616 + i32.const 17776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 600 i32.const 1 call $~lib/builtins/abort @@ -20837,12 +20836,12 @@ local.get $52 i32.store local.get $52 - i32.const 17648 + i32.const 17808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 601 i32.const 1 call $~lib/builtins/abort @@ -20856,12 +20855,12 @@ local.get $52 i32.store local.get $52 - i32.const 17680 + i32.const 17840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 602 i32.const 1 call $~lib/builtins/abort @@ -20875,12 +20874,12 @@ local.get $52 i32.store local.get $52 - i32.const 17712 + i32.const 17872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 603 i32.const 1 call $~lib/builtins/abort @@ -20894,12 +20893,12 @@ local.get $52 i32.store local.get $52 - i32.const 17760 + i32.const 17920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 604 i32.const 1 call $~lib/builtins/abort @@ -20913,12 +20912,12 @@ local.get $52 i32.store local.get $52 - i32.const 17808 + i32.const 17968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 605 i32.const 1 call $~lib/builtins/abort @@ -20932,12 +20931,12 @@ local.get $52 i32.store local.get $52 - i32.const 17856 + i32.const 18016 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 606 i32.const 1 call $~lib/builtins/abort @@ -20951,12 +20950,12 @@ local.get $52 i32.store local.get $52 - i32.const 17904 + i32.const 18064 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 607 i32.const 1 call $~lib/builtins/abort @@ -20970,12 +20969,12 @@ local.get $52 i32.store local.get $52 - i32.const 2368 + i32.const 816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 609 i32.const 1 call $~lib/builtins/abort @@ -20989,12 +20988,12 @@ local.get $52 i32.store local.get $52 - i32.const 16832 + i32.const 16992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 610 i32.const 1 call $~lib/builtins/abort @@ -21008,12 +21007,12 @@ local.get $52 i32.store local.get $52 - i32.const 17808 + i32.const 17968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 611 i32.const 1 call $~lib/builtins/abort @@ -21027,12 +21026,12 @@ local.get $52 i32.store local.get $52 - i32.const 17952 + i32.const 18112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 612 i32.const 1 call $~lib/builtins/abort @@ -21046,12 +21045,12 @@ local.get $52 i32.store local.get $52 - i32.const 18000 + i32.const 18160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 613 i32.const 1 call $~lib/builtins/abort @@ -21065,12 +21064,12 @@ local.get $52 i32.store local.get $52 - i32.const 18048 + i32.const 18208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 614 i32.const 1 call $~lib/builtins/abort @@ -21084,12 +21083,12 @@ local.get $52 i32.store local.get $52 - i32.const 18048 + i32.const 18208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 615 i32.const 1 call $~lib/builtins/abort @@ -21103,12 +21102,12 @@ local.get $52 i32.store local.get $52 - i32.const 2368 + i32.const 816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 619 i32.const 1 call $~lib/builtins/abort @@ -21122,12 +21121,12 @@ local.get $52 i32.store local.get $52 - i32.const 2432 + i32.const 4336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 620 i32.const 1 call $~lib/builtins/abort @@ -21141,12 +21140,12 @@ local.get $52 i32.store local.get $52 - i32.const 12880 + i32.const 14784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 621 i32.const 1 call $~lib/builtins/abort @@ -21160,12 +21159,12 @@ local.get $52 i32.store local.get $52 - i32.const 18096 + i32.const 18256 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 622 i32.const 1 call $~lib/builtins/abort @@ -21179,12 +21178,12 @@ local.get $52 i32.store local.get $52 - i32.const 18128 + i32.const 18288 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 623 i32.const 1 call $~lib/builtins/abort @@ -21198,12 +21197,12 @@ local.get $52 i32.store local.get $52 - i32.const 18160 + i32.const 18320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 624 i32.const 1 call $~lib/builtins/abort @@ -21217,12 +21216,12 @@ local.get $52 i32.store local.get $52 - i32.const 18192 + i32.const 18352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 625 i32.const 1 call $~lib/builtins/abort @@ -21236,12 +21235,12 @@ local.get $52 i32.store local.get $52 - i32.const 18224 + i32.const 18384 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 626 i32.const 1 call $~lib/builtins/abort @@ -21255,12 +21254,12 @@ local.get $52 i32.store local.get $52 - i32.const 18272 + i32.const 18432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 627 i32.const 1 call $~lib/builtins/abort @@ -21274,12 +21273,12 @@ local.get $52 i32.store local.get $52 - i32.const 18352 + i32.const 18512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 628 i32.const 1 call $~lib/builtins/abort @@ -21293,12 +21292,12 @@ local.get $52 i32.store local.get $52 - i32.const 18448 + i32.const 18608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 629 i32.const 1 call $~lib/builtins/abort @@ -21312,12 +21311,12 @@ local.get $52 i32.store local.get $52 - i32.const 18544 + i32.const 18704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 630 i32.const 1 call $~lib/builtins/abort @@ -21331,12 +21330,12 @@ local.get $52 i32.store local.get $52 - i32.const 18640 + i32.const 18800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 631 i32.const 1 call $~lib/builtins/abort @@ -21350,12 +21349,12 @@ local.get $52 i32.store local.get $52 - i32.const 18736 + i32.const 18896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 633 i32.const 1 call $~lib/builtins/abort @@ -21369,12 +21368,12 @@ local.get $52 i32.store local.get $52 - i32.const 18784 + i32.const 18944 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 637 i32.const 1 call $~lib/builtins/abort @@ -21388,12 +21387,12 @@ local.get $52 i32.store local.get $52 - i32.const 18848 + i32.const 19008 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 638 i32.const 1 call $~lib/builtins/abort @@ -21407,12 +21406,12 @@ local.get $52 i32.store local.get $52 - i32.const 18912 + i32.const 19072 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 639 i32.const 1 call $~lib/builtins/abort @@ -21426,12 +21425,12 @@ local.get $52 i32.store local.get $52 - i32.const 18960 + i32.const 19120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 640 i32.const 1 call $~lib/builtins/abort @@ -21445,12 +21444,12 @@ local.get $52 i32.store local.get $52 - i32.const 19008 + i32.const 19168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 641 i32.const 1 call $~lib/builtins/abort @@ -21464,12 +21463,12 @@ local.get $52 i32.store local.get $52 - i32.const 19056 + i32.const 19216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 642 i32.const 1 call $~lib/builtins/abort @@ -21483,12 +21482,12 @@ local.get $52 i32.store local.get $52 - i32.const 19104 + i32.const 19264 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 643 i32.const 1 call $~lib/builtins/abort @@ -21502,12 +21501,12 @@ local.get $52 i32.store local.get $52 - i32.const 19152 + i32.const 19312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 644 i32.const 1 call $~lib/builtins/abort @@ -21521,12 +21520,12 @@ local.get $52 i32.store local.get $52 - i32.const 19200 + i32.const 19360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 645 i32.const 1 call $~lib/builtins/abort @@ -21540,12 +21539,12 @@ local.get $52 i32.store local.get $52 - i32.const 19248 + i32.const 19408 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 646 i32.const 1 call $~lib/builtins/abort @@ -21559,12 +21558,12 @@ local.get $52 i32.store local.get $52 - i32.const 19296 + i32.const 19456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 647 i32.const 1 call $~lib/builtins/abort @@ -21578,12 +21577,12 @@ local.get $52 i32.store local.get $52 - i32.const 2368 + i32.const 816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 651 i32.const 1 call $~lib/builtins/abort @@ -21597,12 +21596,12 @@ local.get $52 i32.store local.get $52 - i32.const 16800 + i32.const 16960 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 652 i32.const 1 call $~lib/builtins/abort @@ -21616,12 +21615,12 @@ local.get $52 i32.store local.get $52 - i32.const 1376 + i32.const 3312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 653 i32.const 1 call $~lib/builtins/abort @@ -21635,12 +21634,12 @@ local.get $52 i32.store local.get $52 - i32.const 12976 + i32.const 14880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 654 i32.const 1 call $~lib/builtins/abort @@ -21654,12 +21653,12 @@ local.get $52 i32.store local.get $52 - i32.const 16864 + i32.const 17024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 655 i32.const 1 call $~lib/builtins/abort @@ -21673,12 +21672,12 @@ local.get $52 i32.store local.get $52 - i32.const 16896 + i32.const 17056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 656 i32.const 1 call $~lib/builtins/abort @@ -21692,12 +21691,12 @@ local.get $52 i32.store local.get $52 - i32.const 16976 + i32.const 17136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 657 i32.const 1 call $~lib/builtins/abort @@ -21711,12 +21710,12 @@ local.get $52 i32.store local.get $52 - i32.const 19344 + i32.const 19504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 658 i32.const 1 call $~lib/builtins/abort @@ -21730,12 +21729,12 @@ local.get $52 i32.store local.get $52 - i32.const 19392 + i32.const 19552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 659 i32.const 1 call $~lib/builtins/abort @@ -21749,12 +21748,12 @@ local.get $52 i32.store local.get $52 - i32.const 17440 + i32.const 17600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 660 i32.const 1 call $~lib/builtins/abort @@ -21768,12 +21767,12 @@ local.get $52 i32.store local.get $52 - i32.const 19440 + i32.const 19600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 661 i32.const 1 call $~lib/builtins/abort @@ -21787,12 +21786,12 @@ local.get $52 i32.store local.get $52 - i32.const 19488 + i32.const 19648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 662 i32.const 1 call $~lib/builtins/abort @@ -21806,12 +21805,12 @@ local.get $52 i32.store local.get $52 - i32.const 19536 + i32.const 19696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 663 i32.const 1 call $~lib/builtins/abort @@ -21825,12 +21824,12 @@ local.get $52 i32.store local.get $52 - i32.const 19584 + i32.const 19744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 664 i32.const 1 call $~lib/builtins/abort @@ -21844,12 +21843,12 @@ local.get $52 i32.store local.get $52 - i32.const 19632 + i32.const 19792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 665 i32.const 1 call $~lib/builtins/abort @@ -21863,12 +21862,12 @@ local.get $52 i32.store local.get $52 - i32.const 19680 + i32.const 19840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 666 i32.const 1 call $~lib/builtins/abort @@ -21882,12 +21881,12 @@ local.get $52 i32.store local.get $52 - i32.const 19744 + i32.const 19904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 667 i32.const 1 call $~lib/builtins/abort @@ -21901,12 +21900,12 @@ local.get $52 i32.store local.get $52 - i32.const 19808 + i32.const 19968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 668 i32.const 1 call $~lib/builtins/abort @@ -21920,12 +21919,12 @@ local.get $52 i32.store local.get $52 - i32.const 19872 + i32.const 20032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 669 i32.const 1 call $~lib/builtins/abort @@ -21939,12 +21938,12 @@ local.get $52 i32.store local.get $52 - i32.const 19936 + i32.const 20096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 670 i32.const 1 call $~lib/builtins/abort @@ -21958,12 +21957,12 @@ local.get $52 i32.store local.get $52 - i32.const 20000 + i32.const 20160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 671 i32.const 1 call $~lib/builtins/abort @@ -21977,12 +21976,12 @@ local.get $52 i32.store local.get $52 - i32.const 2368 + i32.const 816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 673 i32.const 1 call $~lib/builtins/abort @@ -21996,12 +21995,12 @@ local.get $52 i32.store local.get $52 - i32.const 20064 + i32.const 20224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 674 i32.const 1 call $~lib/builtins/abort @@ -22015,12 +22014,12 @@ local.get $52 i32.store local.get $52 - i32.const 17440 + i32.const 17600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 675 i32.const 1 call $~lib/builtins/abort @@ -22034,12 +22033,12 @@ local.get $52 i32.store local.get $52 - i32.const 19440 + i32.const 19600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 676 i32.const 1 call $~lib/builtins/abort @@ -22053,12 +22052,12 @@ local.get $52 i32.store local.get $52 - i32.const 20096 + i32.const 20256 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 677 i32.const 1 call $~lib/builtins/abort @@ -22072,12 +22071,12 @@ local.get $52 i32.store local.get $52 - i32.const 19488 + i32.const 19648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 678 i32.const 1 call $~lib/builtins/abort @@ -22091,12 +22090,12 @@ local.get $52 i32.store local.get $52 - i32.const 20144 + i32.const 20304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 679 i32.const 1 call $~lib/builtins/abort @@ -22110,12 +22109,12 @@ local.get $52 i32.store local.get $52 - i32.const 20192 + i32.const 20352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 680 i32.const 1 call $~lib/builtins/abort @@ -22129,12 +22128,12 @@ local.get $52 i32.store local.get $52 - i32.const 20240 + i32.const 20400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 681 i32.const 1 call $~lib/builtins/abort @@ -22148,12 +22147,12 @@ local.get $52 i32.store local.get $52 - i32.const 20304 + i32.const 20464 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 682 i32.const 1 call $~lib/builtins/abort @@ -22167,12 +22166,12 @@ local.get $52 i32.store local.get $52 - i32.const 20368 + i32.const 20528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 683 i32.const 1 call $~lib/builtins/abort @@ -22186,12 +22185,12 @@ local.get $52 i32.store local.get $52 - i32.const 20432 + i32.const 20592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 684 i32.const 1 call $~lib/builtins/abort @@ -22205,12 +22204,12 @@ local.get $52 i32.store local.get $52 - i32.const 2368 + i32.const 816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 688 i32.const 1 call $~lib/builtins/abort @@ -22224,12 +22223,12 @@ local.get $52 i32.store local.get $52 - i32.const 2432 + i32.const 4336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 689 i32.const 1 call $~lib/builtins/abort @@ -22243,12 +22242,12 @@ local.get $52 i32.store local.get $52 - i32.const 13440 + i32.const 15344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 690 i32.const 1 call $~lib/builtins/abort @@ -22262,12 +22261,12 @@ local.get $52 i32.store local.get $52 - i32.const 17520 + i32.const 17680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 691 i32.const 1 call $~lib/builtins/abort @@ -22281,12 +22280,12 @@ local.get $52 i32.store local.get $52 - i32.const 17616 + i32.const 17776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 692 i32.const 1 call $~lib/builtins/abort @@ -22300,12 +22299,12 @@ local.get $52 i32.store local.get $52 - i32.const 20496 + i32.const 20656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 693 i32.const 1 call $~lib/builtins/abort @@ -22319,12 +22318,12 @@ local.get $52 i32.store local.get $52 - i32.const 20544 + i32.const 20704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 694 i32.const 1 call $~lib/builtins/abort @@ -22338,12 +22337,12 @@ local.get $52 i32.store local.get $52 - i32.const 20592 + i32.const 20752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 695 i32.const 1 call $~lib/builtins/abort @@ -22357,12 +22356,12 @@ local.get $52 i32.store local.get $52 - i32.const 20640 + i32.const 20800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 696 i32.const 1 call $~lib/builtins/abort @@ -22376,12 +22375,12 @@ local.get $52 i32.store local.get $52 - i32.const 20688 + i32.const 20848 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 697 i32.const 1 call $~lib/builtins/abort @@ -22395,12 +22394,12 @@ local.get $52 i32.store local.get $52 - i32.const 20736 + i32.const 20896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 698 i32.const 1 call $~lib/builtins/abort @@ -22414,12 +22413,12 @@ local.get $52 i32.store local.get $52 - i32.const 20800 + i32.const 20960 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 699 i32.const 1 call $~lib/builtins/abort @@ -22433,12 +22432,12 @@ local.get $52 i32.store local.get $52 - i32.const 20864 + i32.const 21024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 700 i32.const 1 call $~lib/builtins/abort @@ -22452,12 +22451,12 @@ local.get $52 i32.store local.get $52 - i32.const 20928 + i32.const 21088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 701 i32.const 1 call $~lib/builtins/abort @@ -22471,12 +22470,12 @@ local.get $52 i32.store local.get $52 - i32.const 20992 + i32.const 21152 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 703 i32.const 1 call $~lib/builtins/abort @@ -22490,12 +22489,12 @@ local.get $52 i32.store local.get $52 - i32.const 21056 + i32.const 21216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 704 i32.const 1 call $~lib/builtins/abort @@ -22509,12 +22508,12 @@ local.get $52 i32.store local.get $52 - i32.const 21056 + i32.const 21216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 705 i32.const 1 call $~lib/builtins/abort @@ -22528,12 +22527,12 @@ local.get $52 i32.store local.get $52 - i32.const 2368 + i32.const 816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 709 i32.const 1 call $~lib/builtins/abort @@ -22547,12 +22546,12 @@ local.get $52 i32.store local.get $52 - i32.const 2432 + i32.const 4336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 710 i32.const 1 call $~lib/builtins/abort @@ -22566,12 +22565,12 @@ local.get $52 i32.store local.get $52 - i32.const 18096 + i32.const 18256 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 711 i32.const 1 call $~lib/builtins/abort @@ -22585,12 +22584,12 @@ local.get $52 i32.store local.get $52 - i32.const 18128 + i32.const 18288 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 712 i32.const 1 call $~lib/builtins/abort @@ -22604,12 +22603,12 @@ local.get $52 i32.store local.get $52 - i32.const 18192 + i32.const 18352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 713 i32.const 1 call $~lib/builtins/abort @@ -22623,12 +22622,12 @@ local.get $52 i32.store local.get $52 - i32.const 18224 + i32.const 18384 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 714 i32.const 1 call $~lib/builtins/abort @@ -22642,12 +22641,12 @@ local.get $52 i32.store local.get $52 - i32.const 18640 + i32.const 18800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 715 i32.const 1 call $~lib/builtins/abort @@ -22661,12 +22660,12 @@ local.get $52 i32.store local.get $52 - i32.const 21120 + i32.const 21280 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 716 i32.const 1 call $~lib/builtins/abort @@ -22680,12 +22679,12 @@ local.get $52 i32.store local.get $52 - i32.const 21248 + i32.const 21408 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 717 i32.const 1 call $~lib/builtins/abort @@ -22699,12 +22698,12 @@ local.get $52 i32.store local.get $52 - i32.const 21408 + i32.const 21568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 719 i32.const 1 call $~lib/builtins/abort @@ -22718,12 +22717,12 @@ local.get $52 i32.store local.get $52 - i32.const 21504 + i32.const 21664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 723 i32.const 1 call $~lib/builtins/abort @@ -22737,12 +22736,12 @@ local.get $52 i32.store local.get $52 - i32.const 21616 + i32.const 21776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 724 i32.const 1 call $~lib/builtins/abort @@ -22756,12 +22755,12 @@ local.get $52 i32.store local.get $52 - i32.const 21712 + i32.const 21872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 725 i32.const 1 call $~lib/builtins/abort @@ -22775,12 +22774,12 @@ local.get $52 i32.store local.get $52 - i32.const 21792 + i32.const 21952 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 726 i32.const 1 call $~lib/builtins/abort @@ -22794,12 +22793,12 @@ local.get $52 i32.store local.get $52 - i32.const 21856 + i32.const 22016 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 727 i32.const 1 call $~lib/builtins/abort @@ -22813,12 +22812,12 @@ local.get $52 i32.store local.get $52 - i32.const 21920 + i32.const 22080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 728 i32.const 1 call $~lib/builtins/abort @@ -22832,12 +22831,12 @@ local.get $52 i32.store local.get $52 - i32.const 21984 + i32.const 22144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 729 i32.const 1 call $~lib/builtins/abort @@ -22851,12 +22850,12 @@ local.get $52 i32.store local.get $52 - i32.const 22048 + i32.const 22208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 730 i32.const 1 call $~lib/builtins/abort @@ -22870,12 +22869,12 @@ local.get $52 i32.store local.get $52 - i32.const 22112 + i32.const 22272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 731 i32.const 1 call $~lib/builtins/abort @@ -22889,12 +22888,12 @@ local.get $52 i32.store local.get $52 - i32.const 22160 + i32.const 22320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 732 i32.const 1 call $~lib/builtins/abort @@ -22908,12 +22907,12 @@ local.get $52 i32.store local.get $52 - i32.const 22208 + i32.const 22368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 733 i32.const 1 call $~lib/builtins/abort @@ -22926,12 +22925,12 @@ local.get $52 i32.store local.get $52 - i32.const 22256 + i32.const 22416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 736 i32.const 1 call $~lib/builtins/abort @@ -22944,12 +22943,12 @@ local.get $52 i32.store local.get $52 - i32.const 22256 + i32.const 22416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 737 i32.const 1 call $~lib/builtins/abort @@ -22962,12 +22961,12 @@ local.get $52 i32.store local.get $52 - i32.const 6672 + i32.const 8576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 738 i32.const 1 call $~lib/builtins/abort @@ -22980,12 +22979,12 @@ local.get $52 i32.store local.get $52 - i32.const 22288 + i32.const 22448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 739 i32.const 1 call $~lib/builtins/abort @@ -22999,12 +22998,12 @@ local.get $52 i32.store local.get $52 - i32.const 7936 + i32.const 9840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 740 i32.const 1 call $~lib/builtins/abort @@ -23017,12 +23016,12 @@ local.get $52 i32.store local.get $52 - i32.const 7152 + i32.const 9056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 741 i32.const 1 call $~lib/builtins/abort @@ -23036,12 +23035,12 @@ local.get $52 i32.store local.get $52 - i32.const 23312 + i32.const 23472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 742 i32.const 1 call $~lib/builtins/abort @@ -23054,12 +23053,12 @@ local.get $52 i32.store local.get $52 - i32.const 7216 + i32.const 9120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 743 i32.const 1 call $~lib/builtins/abort @@ -23073,12 +23072,12 @@ local.get $52 i32.store local.get $52 - i32.const 23376 + i32.const 23536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 744 i32.const 1 call $~lib/builtins/abort @@ -23091,12 +23090,12 @@ local.get $52 i32.store local.get $52 - i32.const 23456 + i32.const 23616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 745 i32.const 1 call $~lib/builtins/abort @@ -23110,12 +23109,12 @@ local.get $52 i32.store local.get $52 - i32.const 23504 + i32.const 23664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 746 i32.const 1 call $~lib/builtins/abort @@ -23128,12 +23127,12 @@ local.get $52 i32.store local.get $52 - i32.const 23552 + i32.const 23712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 747 i32.const 1 call $~lib/builtins/abort @@ -23147,12 +23146,12 @@ local.get $52 i32.store local.get $52 - i32.const 23600 + i32.const 23760 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 748 i32.const 1 call $~lib/builtins/abort @@ -23165,12 +23164,12 @@ local.get $52 i32.store local.get $52 - i32.const 23648 + i32.const 23808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 749 i32.const 1 call $~lib/builtins/abort @@ -23183,12 +23182,12 @@ local.get $52 i32.store local.get $52 - i32.const 23712 + i32.const 23872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 750 i32.const 1 call $~lib/builtins/abort @@ -23201,12 +23200,12 @@ local.get $52 i32.store local.get $52 - i32.const 23792 + i32.const 23952 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 751 i32.const 1 call $~lib/builtins/abort @@ -23219,12 +23218,12 @@ local.get $52 i32.store local.get $52 - i32.const 23840 + i32.const 24000 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 752 i32.const 1 call $~lib/builtins/abort @@ -23237,12 +23236,12 @@ local.get $52 i32.store local.get $52 - i32.const 23904 + i32.const 24064 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 753 i32.const 1 call $~lib/builtins/abort @@ -23255,12 +23254,12 @@ local.get $52 i32.store local.get $52 - i32.const 23968 + i32.const 24128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 754 i32.const 1 call $~lib/builtins/abort @@ -23273,12 +23272,12 @@ local.get $52 i32.store local.get $52 - i32.const 7296 + i32.const 9200 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 755 i32.const 1 call $~lib/builtins/abort @@ -23291,12 +23290,12 @@ local.get $52 i32.store local.get $52 - i32.const 24032 + i32.const 24192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 757 i32.const 1 call $~lib/builtins/abort @@ -23309,12 +23308,12 @@ local.get $52 i32.store local.get $52 - i32.const 4256 + i32.const 6160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 758 i32.const 1 call $~lib/builtins/abort @@ -23327,12 +23326,12 @@ local.get $52 i32.store local.get $52 - i32.const 24064 + i32.const 24224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 759 i32.const 1 call $~lib/builtins/abort @@ -23345,12 +23344,12 @@ local.get $52 i32.store local.get $52 - i32.const 24096 + i32.const 24256 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 760 i32.const 1 call $~lib/builtins/abort @@ -23363,12 +23362,12 @@ local.get $52 i32.store local.get $52 - i32.const 24128 + i32.const 24288 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 762 i32.const 1 call $~lib/builtins/abort @@ -23381,12 +23380,12 @@ local.get $52 i32.store local.get $52 - i32.const 24176 + i32.const 24336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 763 i32.const 1 call $~lib/builtins/abort @@ -23399,12 +23398,12 @@ local.get $52 i32.store local.get $52 - i32.const 24224 + i32.const 24384 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 764 i32.const 1 call $~lib/builtins/abort @@ -23417,12 +23416,12 @@ local.get $52 i32.store local.get $52 - i32.const 24272 + i32.const 24432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 765 i32.const 1 call $~lib/builtins/abort @@ -23435,12 +23434,12 @@ local.get $52 i32.store local.get $52 - i32.const 24320 + i32.const 24480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 766 i32.const 1 call $~lib/builtins/abort @@ -23453,12 +23452,12 @@ local.get $52 i32.store local.get $52 - i32.const 24368 + i32.const 24528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 767 i32.const 1 call $~lib/builtins/abort @@ -23471,12 +23470,12 @@ local.get $52 i32.store local.get $52 - i32.const 4544 + i32.const 6448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 769 i32.const 1 call $~lib/builtins/abort @@ -23489,12 +23488,12 @@ local.get $52 i32.store local.get $52 - i32.const 24400 + i32.const 24560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 770 i32.const 1 call $~lib/builtins/abort @@ -23507,12 +23506,12 @@ local.get $52 i32.store local.get $52 - i32.const 22288 + i32.const 22448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 771 i32.const 1 call $~lib/builtins/abort @@ -23525,12 +23524,12 @@ local.get $52 i32.store local.get $52 - i32.const 7936 + i32.const 9840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 772 i32.const 1 call $~lib/builtins/abort @@ -23543,12 +23542,12 @@ local.get $52 i32.store local.get $52 - i32.const 24448 + i32.const 24608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 773 i32.const 1 call $~lib/builtins/abort @@ -23561,12 +23560,12 @@ local.get $52 i32.store local.get $52 - i32.const 24480 + i32.const 24640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 774 i32.const 1 call $~lib/builtins/abort @@ -23579,12 +23578,12 @@ local.get $52 i32.store local.get $52 - i32.const 24528 + i32.const 24688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 775 i32.const 1 call $~lib/builtins/abort @@ -23597,12 +23596,12 @@ local.get $52 i32.store local.get $52 - i32.const 24560 + i32.const 24720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 776 i32.const 1 call $~lib/builtins/abort @@ -23615,12 +23614,12 @@ local.get $52 i32.store local.get $52 - i32.const 22256 + i32.const 22416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 777 i32.const 1 call $~lib/builtins/abort @@ -23633,12 +23632,12 @@ local.get $52 i32.store local.get $52 - i32.const 24608 + i32.const 24768 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 779 i32.const 1 call $~lib/builtins/abort @@ -23651,12 +23650,12 @@ local.get $52 i32.store local.get $52 - i32.const 24656 + i32.const 24816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 780 i32.const 1 call $~lib/builtins/abort @@ -23669,12 +23668,12 @@ local.get $52 i32.store local.get $52 - i32.const 24720 + i32.const 24880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 781 i32.const 1 call $~lib/builtins/abort @@ -23687,12 +23686,12 @@ local.get $52 i32.store local.get $52 - i32.const 24784 + i32.const 24944 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 782 i32.const 1 call $~lib/builtins/abort @@ -23705,12 +23704,12 @@ local.get $52 i32.store local.get $52 - i32.const 24032 + i32.const 24192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 783 i32.const 1 call $~lib/builtins/abort @@ -23723,12 +23722,12 @@ local.get $52 i32.store local.get $52 - i32.const 24848 + i32.const 25008 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 784 i32.const 1 call $~lib/builtins/abort @@ -23743,12 +23742,12 @@ local.get $52 i32.store local.get $52 - i32.const 24880 + i32.const 25040 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 785 i32.const 1 call $~lib/builtins/abort @@ -23761,12 +23760,12 @@ local.get $52 i32.store local.get $52 - i32.const 24944 + i32.const 25104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 786 i32.const 1 call $~lib/builtins/abort @@ -23779,12 +23778,12 @@ local.get $52 i32.store local.get $52 - i32.const 25024 + i32.const 25184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 787 i32.const 1 call $~lib/builtins/abort @@ -23797,12 +23796,12 @@ local.get $52 i32.store local.get $52 - i32.const 25072 + i32.const 25232 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 788 i32.const 1 call $~lib/builtins/abort @@ -23815,12 +23814,12 @@ local.get $52 i32.store local.get $52 - i32.const 25120 + i32.const 25280 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 789 i32.const 1 call $~lib/builtins/abort @@ -23833,12 +23832,12 @@ local.get $52 i32.store local.get $52 - i32.const 25168 + i32.const 25328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 790 i32.const 1 call $~lib/builtins/abort @@ -23851,12 +23850,12 @@ local.get $52 i32.store local.get $52 - i32.const 25216 + i32.const 25376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 791 i32.const 1 call $~lib/builtins/abort @@ -23869,12 +23868,12 @@ local.get $52 i32.store local.get $52 - i32.const 25264 + i32.const 25424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 792 i32.const 1 call $~lib/builtins/abort @@ -23887,136 +23886,136 @@ local.get $52 i32.store local.get $52 - i32.const 25312 + i32.const 25472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 793 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 25360 - i32.const 25392 + i32.const 25520 + i32.const 25552 call $~lib/string/String#concat local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 25424 + i32.const 25584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 820 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 25472 + i32.const 160 + i32.const 25632 call $~lib/string/String#concat local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 25472 + i32.const 25632 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 821 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 25472 - i32.const 688 + i32.const 25632 + i32.const 160 call $~lib/string/String#concat local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 25472 + i32.const 25632 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 822 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 688 - i32.const 688 + i32.const 160 + i32.const 160 call $~lib/string/String#concat local.set $52 global.get $~lib/memory/__stack_pointer local.get $52 i32.store local.get $52 - i32.const 688 + i32.const 160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 823 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 25504 - i32.const 25504 + i32.const 25664 + i32.const 25664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 831 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 25504 - i32.const 25504 + i32.const 25664 + i32.const 25664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 832 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 25536 - i32.const 25536 + i32.const 25696 + i32.const 25696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 833 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 25568 - i32.const 25568 + i32.const 25728 + i32.const 25728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 834 i32.const 1 call $~lib/builtins/abort @@ -24032,37 +24031,18 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) - (local $cur i32) - (local $end i32) - (local $val i32) - (local $5 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -24071,62 +24051,132 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 - drop - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/string/String>#get:dataStart - local.set $cur - local.get $cur - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/string/String>#get:length_ + local.get $radix i32.const 2 - i32.shl - i32.add - local.set $end - loop $while-continue|0 - local.get $cur - local.get $end - i32.lt_u + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 624 + i32.const 752 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 816 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq if - local.get $cur - i32.load - local.set $val - local.get $val - if - local.get $val - local.get $cookie - call $~lib/rt/itcms/__visit - end - local.get $cur - i32.const 4 + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 i32.add - local.set $cur - br $while-continue|0 + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core end end - local.get $this - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array<~lib/string/String>#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $out + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $12 + return ) (func $~lib/string/String.fromCharCode (param $unit i32) (param $surr i32) (result i32) (local $hasSur i32) @@ -24262,7 +24312,7 @@ i32.eqz if i32.const 0 - i32.const 304 + i32.const 2608 i32.const 39 i32.const 7 call $~lib/builtins/abort @@ -24334,8 +24384,8 @@ i32.gt_s end if - i32.const 15024 - i32.const 15152 + i32.const 624 + i32.const 752 i32.const 373 i32.const 5 call $~lib/builtins/abort @@ -24344,7 +24394,7 @@ local.get $value i32.eqz if - i32.const 2368 + i32.const 816 local.set $14 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -24362,176 +24412,9 @@ local.get $sign if i32.const 0 - local.get $value - i32.sub - local.set $value - end - local.get $radix - i32.const 10 - i32.eq - if - local.get $value - call $~lib/util/number/decimalCount32 - local.set $decimals - global.get $~lib/memory/__stack_pointer - local.get $decimals - i32.const 1 - i32.shl - local.get $sign - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $sign - i32.add - local.set $buffer - local.get $value - local.set $num - local.get $decimals - local.set $offset - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer - local.get $num - local.get $offset - call $~lib/util/number/utoa32_dec_lut - else - local.get $radix - i32.const 16 - i32.eq - if - i32.const 31 - local.get $value - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $decimals|8 - global.get $~lib/memory/__stack_pointer - local.get $decimals|8 - i32.const 1 - i32.shl - local.get $sign - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $sign - i32.add - local.set $buffer|9 - local.get $value - local.set $num|10 - local.get $decimals|8 - local.set $offset|11 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|9 - local.get $num|10 - i64.extend_i32_u - local.get $offset|11 - call $~lib/util/number/utoa_hex_lut - else - local.get $value - local.set $val32 - local.get $val32 - i64.extend_i32_u - local.get $radix - call $~lib/util/number/ulog_base - local.set $decimals|13 - global.get $~lib/memory/__stack_pointer - local.get $decimals|13 - i32.const 1 - i32.shl - local.get $sign - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $sign - i32.add - local.get $val32 - i64.extend_i32_u - local.get $decimals|13 - local.get $radix - call $~lib/util/number/utoa64_any_core - end - end - local.get $sign - if - local.get $out - i32.const 45 - i32.store16 - end - local.get $out - local.set $14 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $14 - return - ) - (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) - (local $out i32) - (local $decimals i32) - (local $buffer i32) - (local $num i32) - (local $offset i32) - (local $decimals|7 i32) - (local $buffer|8 i32) - (local $num|9 i32) - (local $offset|10 i32) - (local $decimals|11 i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $radix - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $radix - i32.const 36 - i32.gt_s - end - if - i32.const 15024 - i32.const 15152 - i32.const 350 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $value - i32.eqz - if - i32.const 2368 - local.set $12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $12 - return + local.get $value + i32.sub + local.set $value end local.get $radix i32.const 10 @@ -24544,11 +24427,15 @@ local.get $decimals i32.const 1 i32.shl + local.get $sign + i32.add i32.const 2 call $~lib/rt/itcms/__new local.tee $out i32.store local.get $out + local.get $sign + i32.add local.set $buffer local.get $value local.set $num @@ -24575,59 +24462,75 @@ i32.shr_s i32.const 1 i32.add - local.set $decimals|7 + local.set $decimals|8 global.get $~lib/memory/__stack_pointer - local.get $decimals|7 + local.get $decimals|8 i32.const 1 i32.shl + local.get $sign + i32.add i32.const 2 call $~lib/rt/itcms/__new local.tee $out i32.store local.get $out - local.set $buffer|8 + local.get $sign + i32.add + local.set $buffer|9 local.get $value - local.set $num|9 - local.get $decimals|7 - local.set $offset|10 + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 i32.const 0 i32.const 1 i32.ge_s drop - local.get $buffer|8 - local.get $num|9 + local.get $buffer|9 + local.get $num|10 i64.extend_i32_u - local.get $offset|10 + local.get $offset|11 call $~lib/util/number/utoa_hex_lut else local.get $value + local.set $val32 + local.get $val32 i64.extend_i32_u local.get $radix call $~lib/util/number/ulog_base - local.set $decimals|11 + local.set $decimals|13 global.get $~lib/memory/__stack_pointer - local.get $decimals|11 + local.get $decimals|13 i32.const 1 i32.shl + local.get $sign + i32.add i32.const 2 call $~lib/rt/itcms/__new local.tee $out i32.store local.get $out - local.get $value + local.get $sign + i32.add + local.get $val32 i64.extend_i32_u - local.get $decimals|11 + local.get $decimals|13 local.get $radix call $~lib/util/number/utoa64_any_core end end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end local.get $out - local.set $12 + local.set $14 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $12 + local.get $14 return ) (func $~lib/util/number/utoa64 (param $value i64) (param $radix i32) (result i32) @@ -24666,8 +24569,8 @@ i32.gt_s end if - i32.const 15024 - i32.const 15152 + i32.const 624 + i32.const 752 i32.const 401 i32.const 5 call $~lib/builtins/abort @@ -24678,7 +24581,7 @@ i64.ne i32.eqz if - i32.const 2368 + i32.const 816 local.set $17 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -24854,8 +24757,8 @@ i32.gt_s end if - i32.const 15024 - i32.const 15152 + i32.const 624 + i32.const 752 i32.const 431 i32.const 5 call $~lib/builtins/abort @@ -24866,7 +24769,7 @@ i64.ne i32.eqz if - i32.const 2368 + i32.const 816 local.set $18 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -25064,7 +24967,7 @@ f64.const 0 f64.eq if - i32.const 22256 + i32.const 22416 br $~lib/util/number/dtoa_impl|inlined.0 end local.get $value|1 @@ -25078,18 +24981,18 @@ local.get $value|1 f64.ne if - i32.const 6672 + i32.const 8576 br $~lib/util/number/dtoa_impl|inlined.0 end - i32.const 7936 - i32.const 22288 + i32.const 9840 + i32.const 22448 local.get $value|1 f64.const 0 f64.lt select br $~lib/util/number/dtoa_impl|inlined.0 end - i32.const 22320 + i32.const 22480 local.get $value|1 local.get $isSingle call $~lib/util/number/dtoa_core @@ -25103,7 +25006,7 @@ local.tee $result i32.store local.get $result - i32.const 22320 + i32.const 22480 local.get $size memory.copy local.get $result @@ -25141,7 +25044,7 @@ f64.const 0 f64.eq if - i32.const 22256 + i32.const 22416 br $~lib/util/number/dtoa_impl|inlined.1 end local.get $value|1 @@ -25155,18 +25058,18 @@ local.get $value|1 f64.ne if - i32.const 6672 + i32.const 8576 br $~lib/util/number/dtoa_impl|inlined.1 end - i32.const 7936 - i32.const 22288 + i32.const 9840 + i32.const 22448 local.get $value|1 f64.const 0 f64.lt select br $~lib/util/number/dtoa_impl|inlined.1 end - i32.const 22320 + i32.const 22480 local.get $value|1 local.get $isSingle call $~lib/util/number/dtoa_core @@ -25180,7 +25083,7 @@ local.tee $result i32.store local.get $result - i32.const 22320 + i32.const 22480 local.get $size memory.copy local.get $result @@ -25218,7 +25121,7 @@ f64.const 0 f64.eq if - i32.const 22256 + i32.const 22416 br $~lib/util/number/dtoa_impl|inlined.2 end local.get $value|1 @@ -25232,18 +25135,18 @@ local.get $value|1 f64.ne if - i32.const 6672 + i32.const 8576 br $~lib/util/number/dtoa_impl|inlined.2 end - i32.const 7936 - i32.const 22288 + i32.const 9840 + i32.const 22448 local.get $value|1 f64.const 0 f64.lt select br $~lib/util/number/dtoa_impl|inlined.2 end - i32.const 22320 + i32.const 22480 local.get $value|1 local.get $isSingle call $~lib/util/number/dtoa_core @@ -25257,7 +25160,7 @@ local.tee $result i32.store local.get $result - i32.const 22320 + i32.const 22480 local.get $size memory.copy local.get $result @@ -25271,4 +25174,208 @@ local.get $5 return ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/string/str + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/string/nullStr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 384 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 14944 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 16592 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1248 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2304 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array<~lib/string/String> + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array<~lib/string/String> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + unreachable + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/std/string.release.wat b/tests/compiler/std/string.release.wat index e573886983..7641a2438b 100644 --- a/tests/compiler/std/string.release.wat +++ b/tests/compiler/std/string.release.wat @@ -10,18 +10,17 @@ (type $8 (func (param i32 i32) (result f64))) (type $9 (func (param i32) (result f64))) (type $10 (func (param i64 i32) (result i32))) - (type $11 (func (param i32 i32 i32 i32))) - (type $12 (func (param i32 i32 i32 i32) (result i32))) - (type $13 (func (param i32 i32 i64))) + (type $11 (func (param i32 i32 i64))) + (type $12 (func (param i32 i64 i32 i32))) + (type $13 (func (param i32 i32 i32 i32) (result i32))) (type $14 (func (param f64 i32) (result f64))) - (type $15 (func (param i32 i64 i32 i32))) - (type $16 (func (param i32 i64 i32))) - (type $17 (func (param i64 i64 i32 i64 i32) (result i32))) - (type $18 (func (param f64 i32) (result i32))) + (type $15 (func (param i32 i64 i32))) + (type $16 (func (param i64 i64 i32 i64 i32) (result i32))) + (type $17 (func (param f64 i32) (result i32))) + (type $18 (func (param i32 i32 i32 i32))) (type $19 (func (result i64))) (type $20 (func (param f64) (result i32))) (type $21 (func (param f32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/string/str (mut i32) (i32.const 1056)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -41,1032 +40,957 @@ (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 59404)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 59564)) (memory $0 1) (data $0 (i32.const 1036) "<") (data $0.1 (i32.const 1048) "\02\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g") - (data $1 (i32.const 1100) ",") - (data $1.1 (i32.const 1112) "\02\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data $2 (i32.const 1148) "\1c") - (data $2.1 (i32.const 1160) "\02\00\00\00\02\00\00\00\df") - (data $3 (i32.const 1180) "\1c") - (data $3.1 (i32.const 1192) "\02\00\00\00\04\00\00\00\df\00\df") - (data $4 (i32.const 1212) "\1c") - (data $4.1 (i32.const 1224) "\02\00\00\00\06\00\00\00\df\00a\00b") - (data $5 (i32.const 1244) "<") - (data $5.1 (i32.const 1256) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $6 (i32.const 1308) ",") - (data $6.1 (i32.const 1320) "\02\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data $7 (i32.const 1356) "<") - (data $7.1 (i32.const 1368) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $8 (i32.const 1420) "<") - (data $8.1 (i32.const 1432) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $11 (i32.const 1548) ",") - (data $11.1 (i32.const 1560) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $13 (i32.const 1628) "<") - (data $13.1 (i32.const 1640) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $14 (i32.const 1692) "\1c") - (data $14.1 (i32.const 1704) "\02") - (data $15 (i32.const 1724) "\1c") - (data $15.1 (i32.const 1736) "\02\00\00\00\02\00\00\00h") - (data $16 (i32.const 1756) "\1c") - (data $16.1 (i32.const 1768) "\02\00\00\00\02") - (data $17 (i32.const 1788) "\1c") - (data $17.1 (i32.const 1800) "\02\00\00\00\02\00\00\00a") - (data $18 (i32.const 1820) "\1c") - (data $18.1 (i32.const 1832) "\02\00\00\00\02\00\00\00@") - (data $19 (i32.const 1852) "\1c") - (data $19.1 (i32.const 1864) "\02\00\00\00\02\00\00\006") - (data $20 (i32.const 1884) "\1c") - (data $20.1 (i32.const 1896) "\02\00\00\00\04\00\00\00\00\d8\00\df") - (data $21 (i32.const 1916) "\1c") - (data $21.1 (i32.const 1928) "\01\00\00\00\08\00\00\00\00\00\00\006") - (data $22 (i32.const 1948) "\1c") - (data $22.1 (i32.const 1960) "\02\00\00\00\04\00\00\00\00\006") - (data $23 (i32.const 1980) "\1c") - (data $23.1 (i32.const 1992) "\01\00\00\00\0c\00\00\00A\00\00\00B\00\00\00C") - (data $24 (i32.const 2012) "\1c") - (data $24.1 (i32.const 2024) "\02\00\00\00\06\00\00\00A\00B\00C") - (data $25 (i32.const 2044) ",") - (data $25.1 (i32.const 2056) "\01\00\00\00\14\00\00\004\d8\00\00\06\df\00\00a\00\00\004\d8\00\00\07\df") - (data $26 (i32.const 2092) "\1c") - (data $26.1 (i32.const 2104) "\02\00\00\00\n\00\00\004\d8\06\dfa\004\d8\07\df") - (data $27 (i32.const 2124) "\1c") - (data $27.1 (i32.const 2136) "\02\00\00\00\04\00\00\004\d8\06\df") - (data $28 (i32.const 2156) "\1c") - (data $28.1 (i32.const 2168) "\02\00\00\00\04\00\00\00h\00i") - (data $29 (i32.const 2188) "\1c") - (data $29.1 (i32.const 2200) "\02\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") - (data $30 (i32.const 2220) "\1c") - (data $30.1 (i32.const 2232) "\02\00\00\00\06\00\00\00I\00\'\00m") - (data $31 (i32.const 2252) "\1c") - (data $31.1 (i32.const 2264) "\02\00\00\00\02\00\00\00 ") - (data $32 (i32.const 2284) "\1c") - (data $32.1 (i32.const 2296) "\02\00\00\00\06\00\00\00 \00 \00 ") - (data $33 (i32.const 2316) "\1c") - (data $33.1 (i32.const 2328) "\02\00\00\00\06\00\00\00a\00b\00c") - (data $34 (i32.const 2348) "\1c") - (data $34.1 (i32.const 2360) "\02\00\00\00\n\00\00\00 \00 \00a\00b\00c") - (data $35 (i32.const 2380) "\1c") - (data $35.1 (i32.const 2392) "\02\00\00\00\06\00\00\001\002\003") - (data $36 (i32.const 2412) "\1c") - (data $36.1 (i32.const 2424) "\02\00\00\00\0c\00\00\001\002\003\00a\00b\00c") - (data $37 (i32.const 2444) ",") - (data $37.1 (i32.const 2456) "\02\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c") - (data $38 (i32.const 2492) "\1c") - (data $38.1 (i32.const 2504) "\02\00\00\00\n\00\00\00a\00b\00c\00 \00 ") - (data $39 (i32.const 2524) "\1c") - (data $39.1 (i32.const 2536) "\02\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c") - (data $40 (i32.const 2556) ",") - (data $40.1 (i32.const 2568) "\02\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b") - (data $41 (i32.const 2604) "\1c") - (data $41.1 (i32.const 2616) "\02\00\00\00\02\00\00\00,") - (data $42 (i32.const 2636) "\1c") - (data $42.1 (i32.const 2648) "\02\00\00\00\02\00\00\00x") - (data $43 (i32.const 2668) "\1c") - (data $43.1 (i32.const 2680) "\02\00\00\00\06\00\00\00,\00 \00I") - (data $44 (i32.const 2700) "\1c") - (data $44.1 (i32.const 2712) "\02\00\00\00\02\00\00\00g") - (data $45 (i32.const 2732) "\1c") - (data $45.1 (i32.const 2744) "\02\00\00\00\02\00\00\00i") - (data $46 (i32.const 2764) "\1c") - (data $46.1 (i32.const 2776) "\02\00\00\00\08\00\00\00n\00u\00l\00l") - (data $47 (i32.const 2796) "\1c") - (data $47.1 (i32.const 2808) "\02\00\00\00\06\00\00\00a\00b\00d") - (data $48 (i32.const 2828) "\1c") - (data $48.1 (i32.const 2840) "\02\00\00\00\06\00\00\00a\00b\00f") - (data $49 (i32.const 2860) "\1c") - (data $49.1 (i32.const 2872) "\02\00\00\00\06\00\00\00a\00b\00z") - (data $50 (i32.const 2892) "\1c") - (data $50.1 (i32.const 2904) "\02\00\00\00\08\00\00\00a\00b\00c\00d") - (data $51 (i32.const 2924) "\1c") - (data $51.1 (i32.const 2936) "\02\00\00\00\08\00\00\00a\00b\00d\00d") - (data $52 (i32.const 2956) "\1c") - (data $52.1 (i32.const 2968) "\02\00\00\00\08\00\00\00a\00b\00 \00c") - (data $53 (i32.const 2988) ",") - (data $53.1 (i32.const 3000) "\02\00\00\00\16\00\00\00 \00\n\00\t\00\r\00a\00b\00c\00 \00\t\00\r\00 ") - (data $54 (i32.const 3036) ",") - (data $54.1 (i32.const 3048) "\02\00\00\00\0e\00\00\00a\00b\00c\00 \00\t\00\r\00 ") - (data $55 (i32.const 3084) ",") - (data $55.1 (i32.const 3096) "\02\00\00\00\0e\00\00\00 \00\n\00\t\00\r\00a\00b\00c") - (data $56 (i32.const 3132) ",") - (data $56.1 (i32.const 3144) "\02\00\00\00\0e\00\00\00\t\00\n\00 \00t\00r\00u\00e") - (data $57 (i32.const 3180) ",") - (data $57.1 (i32.const 3192) "\02\00\00\00\14\00\00\00\t\00\n\00 \00t\00r\00u\00e\00\n\00\r\00 ") - (data $58 (i32.const 3228) ",") - (data $58.1 (i32.const 3240) "\02\00\00\00\12\00\00\00 \00 \00t\00r\00u\00e\00a\00b\00c") - (data $59 (i32.const 3276) "\1c") - (data $59.1 (i32.const 3288) "\02\00\00\00\06\00\00\00t\00r\00u") - (data $60 (i32.const 3308) "\1c") - (data $60.1 (i32.const 3320) "\02\00\00\00\08\00\00\00T\00r\00u\00e") - (data $61 (i32.const 3340) "\1c") - (data $61.1 (i32.const 3352) "\02\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data $62 (i32.const 3372) "\1c") - (data $62.1 (i32.const 3384) "\02\00\00\00\02\00\00\000") - (data $63 (i32.const 3404) "\1c") - (data $63.1 (i32.const 3416) "\02\00\00\00\06\00\00\000\000\000") - (data $64 (i32.const 3436) "\1c") - (data $64.1 (i32.const 3448) "\02\00\00\00\02\00\00\001") - (data $65 (i32.const 3468) "\1c") - (data $65.1 (i32.const 3480) "\02\00\00\00\08\00\00\000\000\000\001") - (data $66 (i32.const 3500) "\1c") - (data $66.1 (i32.const 3512) "\02\00\00\00\n\00\00\000\00b\001\000\001") - (data $67 (i32.const 3532) "\1c") - (data $67.1 (i32.const 3544) "\02\00\00\00\n\00\00\000\00o\007\000\007") - (data $68 (i32.const 3564) "\1c") - (data $68.1 (i32.const 3576) "\02\00\00\00\n\00\00\000\00x\00f\000\00f") - (data $69 (i32.const 3596) "\1c") - (data $69.1 (i32.const 3608) "\02\00\00\00\n\00\00\000\00X\00F\000\00F") - (data $70 (i32.const 3628) "\1c") - (data $70.1 (i32.const 3640) "\02\00\00\00\06\00\00\000\001\001") - (data $71 (i32.const 3660) "\1c") - (data $71.1 (i32.const 3672) "\02\00\00\00\08\00\00\000\00x\001\00g") - (data $72 (i32.const 3692) "\1c") - (data $72.1 (i32.const 3704) "\02\00\00\00\08\00\00\00-\001\002\003") - (data $73 (i32.const 3724) "\1c") - (data $73.1 (i32.const 3736) "\02\00\00\00\08\00\00\00+\001\002\003") - (data $74 (i32.const 3756) "\1c") - (data $74.1 (i32.const 3768) "\02\00\00\00\n\00\00\00-\001\002\00.\003") - (data $75 (i32.const 3788) "\1c") - (data $75.1 (i32.const 3800) "\02\00\00\00\06\00\00\000\00x\000") - (data $76 (i32.const 3820) "\1c") - (data $76.1 (i32.const 3832) "\02\00\00\00\08\00\00\000\00b\001\001") - (data $77 (i32.const 3852) "\1c") - (data $77.1 (i32.const 3864) "\02\00\00\00\04\00\00\00\n\001") - (data $78 (i32.const 3884) "\1c") - (data $78.1 (i32.const 3896) "\02\00\00\00\04\00\00\00( 1") - (data $79 (i32.const 3916) "\1c") - (data $79.1 (i32.const 3928) "\02\00\00\00\04\00\00\00) 1") - (data $80 (i32.const 3948) "\1c") - (data $80.1 (i32.const 3960) "\02\00\00\00\04\00\00\00-\000") - (data $81 (i32.const 3980) ",") - (data $81.1 (i32.const 3992) "\02\00\00\00\10\00\00\000\00X\00A\00B\00C\00D\00E\00F") - (data $82 (i32.const 4028) "\1c") - (data $82.1 (i32.const 4040) "\02\00\00\00\0c\00\00\00A\00B\00C\00D\00E\00F") - (data $83 (i32.const 4060) "<") - (data $83.1 (i32.const 4072) "\02\00\00\00(\00\00\003\006\008\009\003\004\008\008\001\004\007\004\001\009\001\000\003\002\003\002") - (data $84 (i32.const 4124) "L") - (data $84.1 (i32.const 4136) "\02\00\00\004\00\00\00-\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") - (data $85 (i32.const 4204) "<") - (data $85.1 (i32.const 4216) "\02\00\00\00,\00\00\000\00x\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") - (data $86 (i32.const 4268) "\1c") - (data $86.1 (i32.const 4280) "\02\00\00\00\06\00\00\001\00=\d8%\dd") - (data $87 (i32.const 4300) ",") - (data $87.1 (i32.const 4312) "\02\00\00\00\0e\00\00\002\00b\00a\00d\00n\00u\00m") - (data $88 (i32.const 4348) "\1c") - (data $88.1 (i32.const 4360) "\02\00\00\00\08\00\00\00 \00\t\00\n\001") - (data $89 (i32.const 4380) ",") - (data $89.1 (i32.const 4392) "\02\00\00\00\0e\00\00\00 \00\t\00\n\000\00x\000\002") - (data $90 (i32.const 4428) "\1c") - (data $90.1 (i32.const 4440) "\02\00\00\00\n\00\00\000\00 \00a\00b\00c") - (data $91 (i32.const 4460) "\1c") - (data $91.1 (i32.const 4472) "\02\00\00\00\n\00\00\001\00 \00a\00b\00c") - (data $92 (i32.const 4492) ",") - (data $92.1 (i32.const 4504) "\02\00\00\00\10\00\00\00 \00\t\00\n\000\00 \00a\00b\00c") - (data $93 (i32.const 4540) "\1c") - (data $93.1 (i32.const 4552) "\02\00\00\00\02\00\00\00-") - (data $94 (i32.const 4572) "\1c") - (data $94.1 (i32.const 4584) "\02\00\00\00\02\00\00\00+") - (data $95 (i32.const 4604) "\1c") - (data $95.1 (i32.const 4616) "\02\00\00\00\04\00\00\00=\d8%\dd") - (data $96 (i32.const 4636) "\1c") - (data $96.1 (i32.const 4648) "\02\00\00\00\0c\00\00\00b\00a\00d\00n\00u\00m") - (data $97 (i32.const 4678) "\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") - (data $98 (i32.const 4860) ",") - (data $98.1 (i32.const 4872) "\02\00\00\00\14\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F") - (data $99 (i32.const 4908) "<") - (data $99.1 (i32.const 4920) "\02\00\00\00$\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F") - (data $100 (i32.const 4972) "\1c") - (data $100.1 (i32.const 4984) "\02\00\00\00\04\00\00\001\00.") - (data $101 (i32.const 5004) "\1c") - (data $101.1 (i32.const 5016) "\02\00\00\00\08\00\00\001\00.\000\000") - (data $102 (i32.const 5036) "\1c") - (data $102.1 (i32.const 5048) "\02\00\00\00\08\00\00\001\00e\00-\005") - (data $103 (i32.const 5068) "\1c") - (data $103.1 (i32.const 5080) "\02\00\00\00\n\00\00\00-\001\00e\00-\005") - (data $104 (i32.const 5100) ",") - (data $104.1 (i32.const 5112) "\02\00\00\00\10\00\00\00-\000\00.\003\00e\00-\002\002") - (data $105 (i32.const 5148) ",") - (data $105.1 (i32.const 5160) "\02\00\00\00\0e\00\00\000\00.\003\00e\00+\002\002") - (data $106 (i32.const 5196) "\1c") - (data $106.1 (i32.const 5208) "\02\00\00\00\08\00\00\001\00e\00-\001") - (data $107 (i32.const 5228) "\1c") - (data $107.1 (i32.const 5240) "\02\00\00\00\0c\00\00\000\00.\001\00e\00-\000") - (data $108 (i32.const 5260) "\1c") - (data $108.1 (i32.const 5272) "\02\00\00\00\06\00\00\000\00.\001") - (data $109 (i32.const 5292) "\1c") - (data $109.1 (i32.const 5304) "\02\00\00\00\06\00\00\00.\002\005") - (data $110 (i32.const 5324) "\1c") - (data $110.1 (i32.const 5336) "\02\00\00\00\0c\00\00\001\00.\00e\00+\003\00a") - (data $111 (i32.const 5356) ",") - (data $111.1 (i32.const 5368) "\02\00\00\00\0e\00\00\001\00.\000\00e\00-\001\000") - (data $112 (i32.const 5404) ",") - (data $112.1 (i32.const 5416) "\02\00\00\00\0e\00\00\001\00.\000\00e\00-\003\000") - (data $113 (i32.const 5452) ",") - (data $113.1 (i32.const 5464) "\02\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\003") - (data $114 (i32.const 5500) ",") - (data $114.1 (i32.const 5512) "\02\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\004") - (data $115 (i32.const 5548) "\1c") - (data $115.1 (i32.const 5560) "\02\00\00\00\0c\00\00\001\00e\00+\003\000\008") - (data $116 (i32.const 5580) "\1c") - (data $116.1 (i32.const 5592) "\02\00\00\00\0c\00\00\001\00e\00+\003\000\009") - (data $117 (i32.const 5612) ",") - (data $117.1 (i32.const 5624) "\02\00\00\00\10\00\00\001\00.\000\00e\00-\001\00_\000") - (data $118 (i32.const 5660) ",") - (data $118.1 (i32.const 5672) "\02\00\00\00\12\00\00\001\00.\000\00e\00-\001\000\00_\000") - (data $119 (i32.const 5708) ",") - (data $119.1 (i32.const 5720) "\02\00\00\00\10\00\00\001\00.\000\00e\00+\001\00_\000") - (data $120 (i32.const 5756) "\1c") - (data $120.1 (i32.const 5768) "\02\00\00\00\06\00\00\001\00_\000") - (data $121 (i32.const 5788) "\1c") - (data $121.1 (i32.const 5800) "\02\00\00\00\06\00\00\001\00_\001") - (data $122 (i32.const 5820) ",") - (data $122.1 (i32.const 5832) "\02\00\00\00\14\00\00\001\000\00.\000\000\00_\000\001\00e\002") - (data $123 (i32.const 5868) ",") - (data $123.1 (i32.const 5880) "\02\00\00\00\16\00\00\001\002\003\004\005\006\007\008\009\00_\004") - (data $124 (i32.const 5916) ",") - (data $124.1 (i32.const 5928) "\02\00\00\00\18\00\00\001\00_\000\001\002\003\004\005\006\007\008\009") - (data $125 (i32.const 5964) "\1c") - (data $125.1 (i32.const 5976) "\02\00\00\00\n\00\00\001\00e\00-\006\000") - (data $126 (i32.const 5996) "\1c") - (data $126.1 (i32.const 6008) "\02\00\00\00\08\00\00\001\00e\006\000") - (data $127 (i32.const 6028) "\1c") - (data $127.1 (i32.const 6040) "\02\00\00\00\0c\00\00\001\002\003\00.\004\00e") - (data $128 (i32.const 6060) "\1c") - (data $128.1 (i32.const 6072) "\02\00\00\00\04\00\00\001\00x") - (data $129 (i32.const 6092) ",") - (data $129.1 (i32.const 6104) "\02\00\00\00\18\00\00\00-\001\001\00e\00-\001\00s\00t\00r\00i\00n\00g") - (data $130 (i32.const 6140) ",") - (data $130.1 (i32.const 6152) "\02\00\00\00\14\00\00\000\001\00e\001\00s\00t\00r\00i\00n\00g") - (data $131 (i32.const 6188) ",") - (data $131.1 (i32.const 6200) "\02\00\00\00\12\00\00\000\001\000\00s\00t\00r\00i\00n\00g") - (data $132 (i32.const 6236) ",") - (data $132.1 (i32.const 6248) "\02\00\00\00\0e\00\00\00+\00.\002\002\00e\00-\001") - (data $133 (i32.const 6284) "\1c") - (data $133.1 (i32.const 6296) "\02\00\00\00\n\00\00\001\001\00.\00s\001") - (data $134 (i32.const 6316) "\1c") - (data $134.1 (i32.const 6328) "\02\00\00\00\06\00\00\000\00x\005") - (data $135 (i32.const 6348) "\1c") - (data $135.1 (i32.const 6360) "\02\00\00\00\06\00\00\000\00x\00D") - (data $136 (i32.const 6380) "\1c") - (data $136.1 (i32.const 6392) "\02\00\00\00\08\00\00\00\0b\001\00.\001") - (data $137 (i32.const 6412) "\1c") - (data $137.1 (i32.const 6424) "\02\00\00\00\0c\00\00\00\0b\00\0b\00-\001\00.\001") - (data $138 (i32.const 6444) "\1c") - (data $138.1 (i32.const 6456) "\02\00\00\00\0c\00\00\00\0c\00\0c\00-\001\00.\001") - (data $139 (i32.const 6476) "\1c") - (data $139.1 (i32.const 6488) "\02\00\00\00\0c\00\00\00( ( -\001\00.\001") - (data $140 (i32.const 6508) "\1c") - (data $140.1 (i32.const 6520) "\02\00\00\00\0c\00\00\00) ) -\001\00.\001") - (data $141 (i32.const 6540) "\1c") - (data $141.1 (i32.const 6552) "\02\00\00\00\n\00\00\000\000\000\000\000") - (data $142 (i32.const 6572) "\1c") - (data $142.1 (i32.const 6584) "\02\00\00\00\n\00\00\000\000\000\000\00a") - (data $143 (i32.const 6604) "\1c") - (data $143.1 (i32.const 6616) "\02\00\00\00\n\00\00\000\000\000\000\001") - (data $144 (i32.const 6636) "\1c") - (data $144.1 (i32.const 6648) "\02\00\00\00\n\00\00\000\000\00.\000\000") - (data $145 (i32.const 6668) "\1c") - (data $145.1 (i32.const 6680) "\02\00\00\00\n\00\00\000\000\00.\000\00a") - (data $146 (i32.const 6700) "\1c") - (data $146.1 (i32.const 6712) "\02\00\00\00\08\00\00\001\00e\001\00e") - (data $147 (i32.const 6732) ",") - (data $147.1 (i32.const 6744) "\02\00\00\00\0e\00\00\001\00e\00+\000\000\000\001") - (data $148 (i32.const 6780) "\1c") - (data $148.1 (i32.const 6792) "\02\00\00\00\0c\00\00\000\00e\00+\001\000\000") - (data $149 (i32.const 6812) "\1c") - (data $149.1 (i32.const 6824) "\02\00\00\00\n\00\00\001\00.\00-\001\00.") - (data $150 (i32.const 6844) "\1c") - (data $150.1 (i32.const 6856) "\02\00\00\00\0c\00\00\001\00e\00-\001\00.\002") - (data $151 (i32.const 6876) "\1c") - (data $151.1 (i32.const 6888) "\02\00\00\00\06\00\00\001\00e\00x") - (data $152 (i32.const 6908) "\1c") - (data $152.1 (i32.const 6920) "\02\00\00\00\08\00\00\001\00e\001\00x") - (data $153 (i32.const 6940) "\1c") - (data $153.1 (i32.const 6952) "\02\00\00\00\08\00\00\001\00e\00-\00x") - (data $154 (i32.const 6972) "\1c") - (data $154.1 (i32.const 6984) "\02\00\00\00\n\00\00\001\00e\00-\001\00x") - (data $155 (i32.const 7004) ",") - (data $155.1 (i32.const 7016) "\02\00\00\00\0e\00\00\000\00.\001\00e\00-\001\00x") - (data $156 (i32.const 7052) "\1c") - (data $156.1 (i32.const 7064) "\02\00\00\00\06\00\00\000\000\00.") - (data $157 (i32.const 7084) "\1c") - (data $157.1 (i32.const 7096) "\02\00\00\00\06\00\00\00.\000\000") - (data $158 (i32.const 7116) "\1c") - (data $158.1 (i32.const 7128) "\02\00\00\00\06\00\00\00.\000\00.") - (data $159 (i32.const 7148) "\1c") - (data $159.1 (i32.const 7160) "\02\00\00\00\06\00\00\00.\001\00.") - (data $160 (i32.const 7180) "\1c") - (data $160.1 (i32.const 7192) "\02\00\00\00\06\00\00\000\00.\00.") - (data $161 (i32.const 7212) "\1c") - (data $161.1 (i32.const 7224) "\02\00\00\00\06\00\00\000\00.\00a") - (data $162 (i32.const 7244) "\1c") - (data $162.1 (i32.const 7256) "\02\00\00\00\08\00\00\001\00.\00.\001") - (data $163 (i32.const 7276) "\1c") - (data $163.1 (i32.const 7288) "\02\00\00\00\n\00\00\000\00.\001\00.\001") - (data $164 (i32.const 7308) "\1c") - (data $164.1 (i32.const 7320) "\02\00\00\00\08\00\00\000\00.\00 \001") - (data $165 (i32.const 7340) "\1c") - (data $165.1 (i32.const 7352) "\02\00\00\00\08\00\00\00+\000\00.\000") - (data $166 (i32.const 7372) "\1c") - (data $166.1 (i32.const 7384) "\02\00\00\00\08\00\00\00-\000\00.\000") - (data $167 (i32.const 7404) "\1c") - (data $167.1 (i32.const 7416) "\02\00\00\00\04\00\00\00+\000") - (data $168 (i32.const 7436) ",") - (data $168.1 (i32.const 7448) "\02\00\00\00\0e\00\00\00-\00.\000\000\000\000\000") - (data $169 (i32.const 7484) "\1c") - (data $169.1 (i32.const 7496) "\02\00\00\00\06\00\00\00-\00-\000") - (data $170 (i32.const 7516) "\1c") - (data $170.1 (i32.const 7528) "\02\00\00\00\06\00\00\00+\00+\000") - (data $171 (i32.const 7548) "\1c") - (data $171.1 (i32.const 7560) "\02\00\00\00\04\00\00\00.\00a") - (data $172 (i32.const 7580) "\1c") - (data $172.1 (i32.const 7592) "\02\00\00\00\06\00\00\00.\00.\000") - (data $173 (i32.const 7612) "\1c") - (data $173.1 (i32.const 7624) "\02\00\00\00\02\00\00\00.") - (data $174 (i32.const 7644) "\1c") - (data $174.1 (i32.const 7656) "\02\00\00\00\04\00\00\00.\00.") - (data $175 (i32.const 7676) "\1c") - (data $175.1 (i32.const 7688) "\02\00\00\00\06\00\00\00N\00a\00N") - (data $176 (i32.const 7708) "\1c") - (data $176.1 (i32.const 7720) "\02\00\00\00\02\00\00\00\0b") - (data $177 (i32.const 7740) "\1c") - (data $177.1 (i32.const 7752) "\02\00\00\00\02\00\00\00\0e\18") - (data $178 (i32.const 7772) "\1c") - (data $178.1 (i32.const 7784) "\02\00\00\00\08\00\00\00\0e\181\00.\001") - (data $179 (i32.const 7804) "\1c") - (data $179.1 (i32.const 7816) "\02\00\00\00\n\00\00\00\0e\18\0e\181\00.\001") - (data $180 (i32.const 7836) "\1c") - (data $180.1 (i32.const 7848) "\02\00\00\00\02\00\00\00\0c") - (data $181 (i32.const 7868) "\1c") - (data $181.1 (i32.const 7880) "\02\00\00\00\08\00\00\00t\00r\00u\00e") - (data $182 (i32.const 7900) "\1c") - (data $182.1 (i32.const 7912) "\02\00\00\00\08\00\00\001\00e\002\002") - (data $183 (i32.const 7932) "\1c") - (data $183.1 (i32.const 7944) "\02\00\00\00\n\00\00\001\00e\00-\002\002") - (data $184 (i32.const 7964) "\1c") - (data $184.1 (i32.const 7976) "\02\00\00\00\08\00\00\001\00e\002\003") - (data $185 (i32.const 7996) "\1c") - (data $185.1 (i32.const 8008) "\02\00\00\00\n\00\00\001\00e\00-\002\003") - (data $186 (i32.const 8028) "\1c") - (data $186.1 (i32.const 8040) "\02\00\00\00\08\00\00\001\00e\003\007") - (data $187 (i32.const 8060) "\1c") - (data $187.1 (i32.const 8072) "\02\00\00\00\n\00\00\001\00e\00-\003\007") - (data $188 (i32.const 8092) "\1c") - (data $188.1 (i32.const 8104) "\02\00\00\00\08\00\00\001\00e\003\008") - (data $189 (i32.const 8124) "\1c") - (data $189.1 (i32.const 8136) "\02\00\00\00\n\00\00\001\00e\00-\003\008") - (data $190 (i32.const 8156) "<") - (data $190.1 (i32.const 8168) "\02\00\00\00*\00\00\002\00.\002\002\000\004\004\006\000\004\009\002\005\000\003\001\003\00e\00-\001\006") - (data $191 (i32.const 8220) "L") - (data $191.1 (i32.const 8232) "\02\00\00\00.\00\00\001\00.\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\007\00e\00+\003\000\008") - (data $192 (i32.const 8300) "\1c") - (data $192.1 (i32.const 8312) "\02\00\00\00\0c\00\00\005\00e\00-\003\002\004") - (data $193 (i32.const 8332) ",") - (data $193.1 (i32.const 8344) "\02\00\00\00\1a\00\00\000\00.\000\000\000\000\000\001\00e\00+\003\001\004") - (data $194 (i32.const 8380) "\8c") - (data $194.1 (i32.const 8392) "\02\00\00\00|\00\00\000\00.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\00e\00+\005\006") - (data $195 (i32.const 8524) ",") - (data $195.1 (i32.const 8536) "\02\00\00\00\0e\00\00\00+\001\00E\00-\003\002\005") - (data $196 (i32.const 8572) ",") - (data $196.1 (i32.const 8584) "\02\00\00\00\0e\00\00\00+\001\00E\00+\003\000\009") - (data $197 (i32.const 8620) ",") - (data $197.1 (i32.const 8632) "\02\00\00\00\0e\00\00\00-\001\00E\00-\003\002\005") - (data $198 (i32.const 8668) ",") - (data $198.1 (i32.const 8680) "\02\00\00\00\0e\00\00\00-\001\00E\00+\003\000\009") - (data $199 (i32.const 8716) ",") - (data $199.1 (i32.const 8728) "\02\00\00\00\14\00\00\001\00e\00-\001\000\000\000\000\000\000") - (data $200 (i32.const 8764) ",") - (data $200.1 (i32.const 8776) "\02\00\00\00\14\00\00\001\00e\00+\001\000\000\000\000\000\000") - (data $201 (i32.const 8812) "\1c") - (data $201.1 (i32.const 8824) "\02\00\00\00\0c\00\00\001\00.\00e\003\006\000") - (data $202 (i32.const 8844) ",") - (data $202.1 (i32.const 8856) "\02\00\00\00\12\00\00\00 \00I\00n\00f\00i\00n\00i\00t\00y") - (data $203 (i32.const 8892) ",") - (data $203.1 (i32.const 8904) "\02\00\00\00\12\00\00\00+\00I\00n\00f\00i\00n\00i\00t\00y") - (data $204 (i32.const 8940) ",") - (data $204.1 (i32.const 8952) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data $205 (i32.const 8988) ",") - (data $205.1 (i32.const 9000) "\02\00\00\00\12\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00x") - (data $206 (i32.const 9036) ",") - (data $206.1 (i32.const 9048) "\02\00\00\00\14\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00+\001") - (data $207 (i32.const 9084) "\1c") - (data $207.1 (i32.const 9096) "\02\00\00\00\08\00\00\00I\00n\00f\00i") - (data $208 (i32.const 9116) ",") - (data $208.1 (i32.const 9128) "\02\00\00\00\10\00\00\00+\00I\00n\00f\00i\00n\00i\00t") - (data $209 (i32.const 9164) ",") - (data $209.1 (i32.const 9176) "\02\00\00\00\10\00\00\00i\00n\00f\00i\00n\00i\00t\00y") - (data $210 (i32.const 9212) "\bc") - (data $210.1 (i32.const 9224) "\02\00\00\00\aa\00\00\00.\002\004\007\000\003\002\008\002\002\009\002\000\006\002\003\002\007\002\000\008\008\002\008\004\003\009\006\004\003\004\001\001\000\006\008\006\001\008\002\005\002\009\009\000\001\003\000\007\001\006\002\003\008\002\002\001\002\007\009\002\008\004\001\002\005\000\003\003\007\007\005\003\006\003\005\001\000\004\003\00e\00-\003\002\003") - (data $211 (i32.const 9404) "\bc") - (data $211.1 (i32.const 9416) "\02\00\00\00\aa\00\00\00.\007\004\001\000\009\008\004\006\008\007\006\001\008\006\009\008\001\006\002\006\004\008\005\003\001\008\009\003\000\002\003\003\002\000\005\008\005\004\007\005\008\009\007\000\003\009\002\001\004\008\007\001\004\006\006\003\008\003\007\008\005\002\003\007\005\001\000\001\003\002\006\000\009\000\005\003\001\003\002\00e\00-\003\002\003") - (data $212 (i32.const 9596) "\bc") - (data $212.1 (i32.const 9608) "\02\00\00\00\aa\00\00\00.\002\002\002\005\000\007\003\008\005\008\005\000\007\002\000\001\006\003\000\001\002\003\000\005\005\006\003\007\009\005\005\006\007\006\001\005\002\005\000\003\006\001\002\004\001\004\005\007\003\000\001\008\000\001\003\000\008\003\002\002\008\007\002\004\000\004\009\005\008\006\006\004\007\006\000\006\007\006\000\00e\00-\003\000\007") - (data $213 (i32.const 9788) "\9c") - (data $213.1 (i32.const 9800) "\02\00\00\00\88\00\00\001\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\008\000\007\009\003\007\002\008\009\007\001\004\000\005\003\000\003\004\001\005\000\007\009\009\003\004\001\003\002\007\001\000\000\003\007\008\002\006\009\003\006\001\007\003\007\007\008\009\008\000\004\004") - (data $214 (i32.const 9948) "\9c") - (data $214.1 (i32.const 9960) "\02\00\00\00\88\00\00\004\009\006\008\002\009\002\007\006\004\007\005\000\009\004\006\006\004\009\000\001\007\009\007\007\005\008\007\002\000\007\000\009\006\003\003\000\002\008\006\004\001\006\006\009\002\008\008\007\009\001\000\009\004\006\005\005\005\005\004\007\008\005\001\009\004\000\004") - (data $215 (i32.const 10108) "\9c") - (data $215.1 (i32.const 10120) "\02\00\00\00\88\00\00\000\002\006\003\000\006\005\007\004\008\008\006\007\001\005\000\005\008\002\000\006\008\001\009\000\008\009\000\002\000\000\000\007\000\008\003\008\003\006\007\006\002\007\003\008\005\004\008\004\005\008\001\007\007\001\001\005\003\001\007\006\004\004\007\005\007\003\000") - (data $216 (i32.const 10268) "\9c") - (data $216.1 (i32.const 10280) "\02\00\00\00\88\00\00\002\007\000\000\006\009\008\005\005\005\007\001\003\006\006\009\005\009\006\002\002\008\004\002\009\001\004\008\001\009\008\006\000\008\003\004\009\003\006\004\007\005\002\009\002\007\001\009\000\007\004\001\006\008\004\004\004\003\006\005\005\001\000\007\000\004\003\004") - (data $217 (i32.const 10428) "\9c") - (data $217.1 (i32.const 10440) "\02\00\00\00\88\00\00\002\007\001\001\005\005\009\006\009\009\005\000\008\000\009\003\000\004\002\008\008\000\001\007\007\009\000\004\001\007\004\004\009\007\007\009\001\00.\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009") - (data $218 (i32.const 10588) "l") - (data $218.1 (i32.const 10600) "\02\00\00\00\\\00\00\000\00.\009\007\005\003\005\003\001\008\008\008\007\009\009\005\000\002\006\001\003\008\000\007\001\003\005\002\007\006\001\004\007\001\006\004\004\000\004\003\009\00e\00-\001\000\003") - (data $219 (i32.const 10700) "l") - (data $219.1 (i32.const 10712) "\02\00\00\00X\00\00\00.\005\009\006\001\008\006\000\003\004\008\001\003\001\008\000\007\000\009\001\008\006\001\000\000\002\002\006\006\004\005\003\009\004\001\009\005\000\004\002\008\00e\000\000") - (data $220 (i32.const 10812) "l") - (data $220.1 (i32.const 10824) "\02\00\00\00X\00\00\001\00.\008\001\005\000\001\003\001\006\009\002\001\008\000\003\008\007\002\009\008\008\007\004\006\000\008\009\008\007\003\003\005\002\006\009\005\007\004\004\002\00e\00-\001") - (data $221 (i32.const 10924) "l") - (data $221.1 (i32.const 10936) "\02\00\00\00X\00\00\004\002\00.\000\007\000\008\002\003\005\007\005\003\004\004\005\003\006\000\000\006\008\001\006\001\008\006\008\005\006\008\002\002\005\007\005\009\000\007\007\002\00e\00-\002") - (data $222 (i32.const 11036) "l") - (data $222.1 (i32.const 11048) "\02\00\00\00X\00\00\006\006\005\00.\004\006\008\006\003\000\006\005\001\006\002\006\001\004\005\006\003\002\008\009\007\003\002\002\005\005\007\009\008\003\003\004\007\000\008\001\006\00e\00-\003") - (data $223 (i32.const 11148) "l") - (data $223.1 (i32.const 11160) "\02\00\00\00X\00\00\006\001\000\001\00.\008\005\002\009\002\002\009\007\000\008\006\008\006\002\001\007\008\006\006\009\000\004\009\005\004\008\005\004\004\009\008\003\001\007\005\003\00e\00-\004") - (data $224 (i32.const 11260) "l") - (data $224.1 (i32.const 11272) "\02\00\00\00X\00\00\007\006\009\006\006\00.\009\005\002\000\008\002\003\006\009\006\008\000\007\007\008\004\009\004\006\004\003\004\008\008\007\005\004\007\001\001\005\008\005\004\009\00e\00-\005") - (data $225 (i32.const 11372) "l") - (data $225.1 (i32.const 11384) "\02\00\00\00X\00\00\002\005\000\005\000\006\00.\005\003\002\002\002\002\008\006\008\002\004\009\006\001\003\002\006\000\004\008\000\007\002\002\002\009\002\003\007\000\002\003\000\004\00e\00-\006") - (data $226 (i32.const 11484) "l") - (data $226.1 (i32.const 11496) "\02\00\00\00X\00\00\002\007\004\000\000\003\007\00.\002\003\000\002\002\008\000\000\005\003\002\005\008\005\002\004\002\004\006\009\007\006\009\008\003\003\001\001\007\007\003\007\007\00e\00-\007") - (data $227 (i32.const 11596) "l") - (data $227.1 (i32.const 11608) "\02\00\00\00X\00\00\002\000\007\002\003\000\009\003\00.\005\000\000\004\009\007\004\002\006\004\005\009\004\001\005\002\009\002\006\008\007\001\005\004\002\008\003\002\004\004\009\000\00e\00-\008") - (data $228 (i32.const 11708) "l") - (data $228.1 (i32.const 11720) "\02\00\00\00X\00\00\000\00.\007\009\000\000\002\008\000\002\003\008\000\008\001\006\000\004\009\005\006\002\002\006\000\001\001\000\004\007\004\006\000\002\003\008\007\004\008\009\001\002\00e\001") - (data $229 (i32.const 11820) "l") - (data $229.1 (i32.const 11832) "\02\00\00\00X\00\00\000\00.\009\008\002\002\008\006\000\006\005\003\007\003\007\002\009\006\008\004\008\001\009\000\005\005\008\004\004\008\007\006\000\004\006\005\008\006\003\005\009\007\00e\002") - (data $230 (i32.const 11932) "l") - (data $230.1 (i32.const 11944) "\02\00\00\00X\00\00\000\00.\007\004\006\008\009\004\009\007\002\003\001\009\000\003\007\000\008\000\009\004\000\005\005\007\000\005\006\000\001\006\000\004\000\005\003\002\004\008\006\009\00e\003") - (data $231 (i32.const 12044) "l") - (data $231.1 (i32.const 12056) "\02\00\00\00X\00\00\000\00.\001\006\003\000\002\006\008\003\002\000\002\008\002\007\002\008\004\007\005\009\008\000\004\005\009\008\004\004\002\007\001\000\003\001\007\005\001\006\006\005\00e\004") - (data $232 (i32.const 12156) "l") - (data $232.1 (i32.const 12168) "\02\00\00\00X\00\00\000\00.\004\006\003\007\001\006\008\006\002\009\007\001\009\001\007\000\006\009\005\001\000\009\009\001\008\007\006\009\006\004\005\004\009\002\000\002\002\000\008\008\00e\005") - (data $233 (i32.const 12268) "l") - (data $233.1 (i32.const 12280) "\02\00\00\00X\00\00\000\00.\006\005\003\007\008\000\005\009\004\004\004\009\007\007\001\001\005\005\004\002\000\009\004\006\001\006\008\006\004\001\005\008\007\002\000\006\007\005\002\003\00e\006") - (data $234 (i32.const 12380) "l") - (data $234.1 (i32.const 12392) "\02\00\00\00X\00\00\000\00.\002\003\004\006\003\002\004\003\005\006\005\000\002\004\003\007\000\004\005\002\001\002\002\003\000\007\001\003\009\006\000\004\005\007\006\007\006\005\003\001\00e\006") - (data $235 (i32.const 12492) "l") - (data $235.1 (i32.const 12504) "\02\00\00\00X\00\00\000\00.\009\007\000\009\004\008\001\007\001\006\004\002\000\000\004\008\003\004\001\008\009\007\002\005\008\009\008\000\004\005\004\002\009\008\002\000\005\002\007\008\00e\008") - (data $236 (i32.const 12604) "l") - (data $236.1 (i32.const 12616) "\02\00\00\00X\00\00\000\00.\004\009\009\006\009\000\008\005\002\002\000\005\001\008\007\004\001\001\000\007\007\009\009\008\002\003\005\004\009\003\002\004\009\009\004\009\009\006\000\002\00e\009") - (data $237 (i32.const 12716) "l") - (data $237.1 (i32.const 12728) "\02\00\00\00Z\00\00\000\00.\007\009\002\005\002\000\001\002\000\000\005\005\007\002\004\005\008\006\001\009\004\004\000\001\001\002\006\007\000\004\001\007\008\007\005\000\005\001\004\009\00e\002\002") - (data $238 (i32.const 12828) "l") - (data $238.1 (i32.const 12840) "\02\00\00\00Z\00\00\000\00.\006\000\009\006\005\006\004\005\008\005\009\008\003\001\007\007\004\000\008\009\003\004\003\005\002\005\007\000\002\001\003\003\007\007\004\007\005\007\003\009\00e\003\000") - (data $239 (i32.const 12940) "l") - (data $239.1 (i32.const 12952) "\02\00\00\00Z\00\00\000\00.\004\008\000\000\004\001\006\001\001\007\004\007\007\000\002\008\007\008\007\008\007\004\003\006\000\002\000\005\000\002\003\005\004\009\004\009\007\001\002\008\00e\006\007") - (data $240 (i32.const 13052) "l") - (data $240.1 (i32.const 13064) "\02\00\00\00\\\00\00\000\00.\008\005\002\004\008\002\009\000\007\009\008\001\007\009\006\008\002\002\004\008\003\000\003\003\007\009\003\001\000\005\002\007\008\001\006\004\001\004\008\003\00e\001\000\005") - (data $241 (i32.const 13164) "l") - (data $241.1 (i32.const 13176) "\02\00\00\00\\\00\00\000\00.\000\003\002\007\001\002\003\009\002\009\001\007\000\009\007\008\002\001\001\005\004\004\007\000\006\009\003\007\002\007\004\008\009\005\006\000\008\004\002\005\00e\002\006\009") - (data $242 (i32.const 13276) "\1c") - (data $242.1 (i32.const 13288) "\02\00\00\00\06\00\00\00 \00\t\00\n") - (data $243 (i32.const 13308) "\1c") - (data $243.1 (i32.const 13320) "\02\00\00\00\0c\00\00\00 \00\t\00\n\00\r\00.\001") - (data $244 (i32.const 13340) "\1c") - (data $244.1 (i32.const 13352) "\02\00\00\00\02\00\00\00b") - (data $245 (i32.const 13372) "\1c") - (data $245.1 (i32.const 13384) "\02\00\00\00\04\00\00\00a\00b") - (data $246 (i32.const 13404) "\1c") - (data $246.1 (i32.const 13416) "\02\00\00\00\08\00\00\00k\00e\00y\001") - (data $247 (i32.const 13436) "\1c") - (data $247.1 (i32.const 13448) "\02\00\00\00\08\00\00\00k\00e\00y\002") - (data $248 (i32.const 13468) "\1c") - (data $248.1 (i32.const 13480) "\02\00\00\00\06\00\00\00k\00e\001") - (data $249 (i32.const 13500) "\1c") - (data $249.1 (i32.const 13512) "\02\00\00\00\06\00\00\00k\00e\002") - (data $250 (i32.const 13532) "\1c") - (data $250.1 (i32.const 13544) "\02\00\00\00\n\00\00\00k\00e\00y\001\002") - (data $251 (i32.const 13564) "\1c") - (data $251.1 (i32.const 13576) "\02\00\00\00\n\00\00\00k\00e\00y\001\001") - (data $252 (i32.const 13596) ",") - (data $252.1 (i32.const 13608) "\02\00\00\00\0e\00\00\00\a40\ed0\cf0\cb0\db0\d80\c80") - (data $253 (i32.const 13644) ",") - (data $253.1 (i32.const 13656) "\02\00\00\00\0e\00\00\00\a60\f00\ce0\aa0\af0\e40\de0") - (data $254 (i32.const 13692) ",") - (data $254.1 (i32.const 13704) "\02\00\00\00\16\00\00\00D\00\19 f\00h\00u\00a\00s\00c\00a\00i\00l") - (data $255 (i32.const 13740) ",") - (data $255.1 (i32.const 13752) "\02\00\00\00\14\00\00\00D\00\19 \1f\1eu\00a\00s\00c\00a\00i\00l") - (data $256 (i32.const 13788) "\1c") - (data $256.1 (i32.const 13800) "\02\00\00\00\04\00\00\00b\00a") - (data $257 (i32.const 13820) "\1c") - (data $257.1 (i32.const 13832) "\02\00\00\00\04\00\00\00a\00a") - (data $258 (i32.const 13852) "\1c") - (data $258.1 (i32.const 13864) "\02\00\00\00\04\00\00\001\000") - (data $259 (i32.const 13884) "\1c") - (data $259.1 (i32.const 13896) "\02\00\00\00\04\00\00\001\001") - (data $260 (i32.const 13916) "\1c") - (data $260.1 (i32.const 13928) "\02\00\00\00\06\00\00\001\000\001") - (data $261 (i32.const 13948) "\1c") - (data $261.1 (i32.const 13960) "\02\00\00\00\06\00\00\001\002\002") - (data $262 (i32.const 13980) "\1c") - (data $262.1 (i32.const 13992) "\02\00\00\00\08\00\00\001\002\003\004") - (data $263 (i32.const 14012) "\1c") - (data $263.1 (i32.const 14024) "\02\00\00\00\08\00\00\001\002\003\003") - (data $264 (i32.const 14044) ",") - (data $264.1 (i32.const 14056) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $265 (i32.const 14092) "\1c") - (data $265.1 (i32.const 14104) "\02\00\00\00\06\00\00\00a\00a\00a") - (data $266 (i32.const 14124) ",") - (data $266.1 (i32.const 14136) "\02\00\00\00\10\00\00\00a\00b\00a\00b\00a\00b\00a\00b") - (data $267 (i32.const 14172) "\1c") - (data $267.1 (i32.const 14184) "\02\00\00\00\n\00\00\00a\00a\00a\00a\00a") - (data $268 (i32.const 14204) "\1c") - (data $268.1 (i32.const 14216) "\02\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a") - (data $269 (i32.const 14236) ",") - (data $269.1 (i32.const 14248) "\02\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a") - (data $270 (i32.const 14284) "\1c") - (data $270.1 (i32.const 14296) "\02\00\00\00\n\00\00\00a\00-\00b\00-\00c") - (data $271 (i32.const 14316) "\1c") - (data $271.1 (i32.const 14328) "\02\00\00\00\n\00\00\00a\00+\00b\00-\00c") - (data $272 (i32.const 14348) "\1c") - (data $272.1 (i32.const 14360) "\02\00\00\00\08\00\00\00+\00a\00b\00c") - (data $273 (i32.const 14380) "\1c") - (data $273.1 (i32.const 14392) "\02\00\00\00\08\00\00\00\n\00a\00b\00c") - (data $274 (i32.const 14412) "\1c") - (data $274.1 (i32.const 14424) "\02\00\00\00\02\00\00\00\n") - (data $275 (i32.const 14444) "\1c") - (data $275.1 (i32.const 14456) "\02\00\00\00\02\00\00\00c") - (data $276 (i32.const 14476) "\1c") - (data $276.1 (i32.const 14488) "\02\00\00\00\04\00\00\00+\00+") - (data $277 (i32.const 14508) "\1c") - (data $277.1 (i32.const 14520) "\02\00\00\00\08\00\00\00a\00b\00+\00+") - (data $278 (i32.const 14540) ",") - (data $278.1 (i32.const 14552) "\02\00\00\00\12\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00c") - (data $279 (i32.const 14588) "\1c") - (data $279.1 (i32.const 14600) "\02\00\00\00\06\00\00\00+\00+\00+") - (data $280 (i32.const 14620) ",") - (data $280.1 (i32.const 14632) "\02\00\00\00\0e\00\00\00a\00b\00c\00a\00b\00c\00a") - (data $281 (i32.const 14668) ",") - (data $281.1 (i32.const 14680) "\02\00\00\00\1a\00\00\00+\00+\00+\00b\00c\00+\00+\00+\00b\00c\00+\00+\00+") - (data $282 (i32.const 14716) "\1c") - (data $282.1 (i32.const 14728) "\02\00\00\00\0c\00\00\00+\00+\00c\00+\00+\00c") - (data $283 (i32.const 14748) "\1c") - (data $283.1 (i32.const 14760) "\02\00\00\00\08\00\00\00c\00c\00c\00c") - (data $284 (i32.const 14780) "\1c") - (data $284.1 (i32.const 14792) "\02\00\00\00\04\00\00\00c\00c") - (data $285 (i32.const 14812) "\1c") - (data $285.1 (i32.const 14824) "\02\00\00\00\08\00\00\00+\00+\00+\00+") - (data $286 (i32.const 14844) "\1c") - (data $286.1 (i32.const 14856) "\02\00\00\00\02\00\00\00e") - (data $287 (i32.const 14876) "\1c") - (data $287.1 (i32.const 14888) "\02\00\00\00\04\00\00\00b\00c") - (data $288 (i32.const 14908) "\1c") - (data $288.1 (i32.const 14920) "\02\00\00\00\04\00\00\00a\00+") - (data $289 (i32.const 14940) "\1c") - (data $289.1 (i32.const 14952) "\02\00\00\00\n\00\00\00a\00+\00b\00+\00c") - (data $290 (i32.const 14972) ",") - (data $290.1 (i32.const 14984) "\02\00\00\00\0e\00\00\00+\00a\00+\00b\00+\00c\00+") - (data $291 (i32.const 15020) "\1c") - (data $291.1 (i32.const 15032) "\02\00\00\00\n\00\00\00a\00b\00c\00d\00e") - (data $292 (i32.const 15052) "\1c") - (data $292.1 (i32.const 15064) "\02\00\00\00\06\00\00\00-\00-\00-") - (data $293 (i32.const 15084) ",") - (data $293.1 (i32.const 15096) "\02\00\00\00\0e\00\00\00-\00-\00-\00b\00c\00d\00e") - (data $294 (i32.const 15132) "\1c") - (data $294.1 (i32.const 15144) "\02\00\00\00\n\00\00\00-\00-\00-\00-\00-") - (data $295 (i32.const 15164) "\1c") - (data $295.1 (i32.const 15176) "\02\00\00\00\08\00\00\00-\00-\00-\00-") - (data $296 (i32.const 15196) ",") - (data $296.1 (i32.const 15208) "\02\00\00\00\18\00\00\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-") - (data $297 (i32.const 15244) "\1c") - (data $297.1 (i32.const 15256) "\02\00\00\00\08\00\00\00-\00-\00-\00a") - (data $298 (i32.const 15276) ",") - (data $298.1 (i32.const 15288) "\02\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n") - (data $299 (i32.const 15324) "\1c") - (data $299.1 (i32.const 15336) "\02\00\00\00\02\00\00\00n") - (data $300 (i32.const 15356) "\1c") - (data $300.1 (i32.const 15368) "\02\00\00\00\n\00\00\00j\00k\00l\00m\00n") - (data $301 (i32.const 15388) "\1c") - (data $301.1 (i32.const 15400) "\02\00\00\00\n\00\00\00c\00d\00e\00f\00g") - (data $302 (i32.const 15420) "\1c") - (data $302.1 (i32.const 15432) "\02\00\00\00\n\00\00\00d\00e\00f\00g\00h") - (data $303 (i32.const 15452) ",") - (data $303.1 (i32.const 15464) "\02\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m") - (data $304 (i32.const 15500) ",") - (data $304.1 (i32.const 15512) "\02\00\00\00\0e\00\00\00c\00d\00e\00f\00g\00h\00i") - (data $305 (i32.const 15548) "\1c") - (data $305.1 (i32.const 15560) "\02\00\00\00\06\00\00\00e\00f\00g") - (data $306 (i32.const 15580) "\1c") - (data $306.1 (i32.const 15592) "\02\00\00\00\08\00\00\00e\00f\00g\00h") - (data $307 (i32.const 15612) "\1c") - (data $307.1 (i32.const 15624) "\02\00\00\00\02\00\00\00d") - (data $308 (i32.const 15644) ",") - (data $308.1 (i32.const 15656) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $309 (i32.const 15692) "|") - (data $309.1 (i32.const 15704) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data $310 (i32.const 15820) "\1c") - (data $310.1 (i32.const 15832) "\02\00\00\00\n\00\00\00a\00,\00b\00,\00c") - (data $311 (i32.const 15852) ",") - (data $311.1 (i32.const 15864) "\02\00\00\00\0e\00\00\00a\00,\00 \00b\00,\00 \00c") - (data $312 (i32.const 15900) "\1c") - (data $312.1 (i32.const 15912) "\02\00\00\00\04\00\00\00,\00 ") - (data $313 (i32.const 15932) "\1c") - (data $313.1 (i32.const 15944) "\02\00\00\00\0c\00\00\00a\00,\00b\00,\00,\00c") - (data $314 (i32.const 15964) "\1c") - (data $314.1 (i32.const 15976) "\02\00\00\00\0c\00\00\00,\00a\00,\00b\00,\00c") - (data $315 (i32.const 15996) "\1c") - (data $315.1 (i32.const 16008) "\02\00\00\00\0c\00\00\00a\00,\00b\00,\00c\00,") - (data $316 (i32.const 16028) "|") - (data $316.1 (i32.const 16040) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data $317 (i32.const 16156) "<") - (data $317.1 (i32.const 16168) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data $318 (i32.const 16220) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data $319 (i32.const 16620) "\1c\04") - (data $319.1 (i32.const 16632) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data $320 (i32.const 17676) "\\") - (data $320.1 (i32.const 17688) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data $321 (i32.const 17772) "\1c") - (data $321.1 (i32.const 17784) "\02\00\00\00\02\00\00\008") - (data $322 (i32.const 17804) "\1c") - (data $322.1 (i32.const 17816) "\02\00\00\00\04\00\00\001\002") - (data $323 (i32.const 17836) "\1c") - (data $323.1 (i32.const 17848) "\02\00\00\00\n\00\00\00-\001\000\000\000") - (data $324 (i32.const 17868) "\1c") - (data $324.1 (i32.const 17880) "\02\00\00\00\n\00\00\001\002\003\004\005") - (data $325 (i32.const 17900) "\1c") - (data $325.1 (i32.const 17912) "\02\00\00\00\0c\00\00\001\002\003\004\005\006") - (data $326 (i32.const 17932) ",") - (data $326.1 (i32.const 17944) "\02\00\00\00\0e\00\00\001\001\001\001\001\001\001") - (data $327 (i32.const 17980) ",") - (data $327.1 (i32.const 17992) "\02\00\00\00\0e\00\00\001\002\003\004\005\006\007") - (data $328 (i32.const 18028) ",") - (data $328.1 (i32.const 18040) "\02\00\00\00\10\00\00\001\002\003\004\005\006\007\008") - (data $329 (i32.const 18076) ",") - (data $329.1 (i32.const 18088) "\02\00\00\00\12\00\00\001\002\003\004\005\006\007\008\009") - (data $330 (i32.const 18124) ",") - (data $330.1 (i32.const 18136) "\02\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006") - (data $331 (i32.const 18172) ",") - (data $331.1 (i32.const 18184) "\02\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007") - (data $332 (i32.const 18220) ",") - (data $332.1 (i32.const 18232) "\02\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008") - (data $333 (i32.const 18268) "\1c") - (data $333.1 (i32.const 18280) "\02\00\00\00\04\00\00\00-\001") - (data $334 (i32.const 18300) "\1c") - (data $334.1 (i32.const 18312) "\02\00\00\00\08\00\00\00-\001\002\008") - (data $335 (i32.const 18332) "\1c") - (data $335.1 (i32.const 18344) "\02\00\00\00\0c\00\00\00-\003\002\007\006\008") - (data $336 (i32.const 18364) "\1c") - (data $336.1 (i32.const 18376) "\02\00\00\00\08\00\00\001\000\000\000") - (data $337 (i32.const 18396) ",") - (data $337.1 (i32.const 18408) "\02\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008") - (data $338 (i32.const 18444) ",") - (data $338.1 (i32.const 18456) "\02\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005") + (data $1 (i32.const 1100) "\1c") + (data $1.1 (i32.const 1112) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1132) "\1c") + (data $2.1 (i32.const 1144) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1164) "\1c") + (data $3.1 (i32.const 1176) "\02") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1260) "<") + (data $5.1 (i32.const 1272) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1388) "<") + (data $8.1 (i32.const 1400) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1452) ",") + (data $9.1 (i32.const 1464) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1532) "<") + (data $11.1 (i32.const 1544) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1596) "\1c") + (data $12.1 (i32.const 1608) "\02\00\00\00\02\00\00\00:") + (data $13 (i32.const 1628) "|") + (data $13.1 (i32.const 1640) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $14 (i32.const 1756) "<") + (data $14.1 (i32.const 1768) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $15 (i32.const 1820) "\1c") + (data $15.1 (i32.const 1832) "\02\00\00\00\02\00\00\000") + (data $16 (i32.const 1852) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $17 (i32.const 2252) "\1c\04") + (data $17.1 (i32.const 2264) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $18 (i32.const 3308) "\\") + (data $18.1 (i32.const 3320) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $19 (i32.const 3404) "<") + (data $19.1 (i32.const 3416) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $20 (i32.const 3468) ",") + (data $20.1 (i32.const 3480) "\02\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data $21 (i32.const 3516) "\1c") + (data $21.1 (i32.const 3528) "\02\00\00\00\02\00\00\00\df") + (data $22 (i32.const 3548) "\1c") + (data $22.1 (i32.const 3560) "\02\00\00\00\04\00\00\00\df\00\df") + (data $23 (i32.const 3580) "\1c") + (data $23.1 (i32.const 3592) "\02\00\00\00\06\00\00\00\df\00a\00b") + (data $24 (i32.const 3612) ",") + (data $24.1 (i32.const 3624) "\02\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data $25 (i32.const 3660) "\1c") + (data $25.1 (i32.const 3672) "\02\00\00\00\02\00\00\00h") + (data $26 (i32.const 3692) "\1c") + (data $26.1 (i32.const 3704) "\02\00\00\00\02") + (data $27 (i32.const 3724) "\1c") + (data $27.1 (i32.const 3736) "\02\00\00\00\02\00\00\00a") + (data $28 (i32.const 3756) "\1c") + (data $28.1 (i32.const 3768) "\02\00\00\00\02\00\00\00@") + (data $29 (i32.const 3788) "\1c") + (data $29.1 (i32.const 3800) "\02\00\00\00\02\00\00\006") + (data $30 (i32.const 3820) "\1c") + (data $30.1 (i32.const 3832) "\02\00\00\00\04\00\00\00\00\d8\00\df") + (data $31 (i32.const 3852) "\1c") + (data $31.1 (i32.const 3864) "\01\00\00\00\08\00\00\00\00\00\00\006") + (data $32 (i32.const 3884) "\1c") + (data $32.1 (i32.const 3896) "\02\00\00\00\04\00\00\00\00\006") + (data $33 (i32.const 3916) "\1c") + (data $33.1 (i32.const 3928) "\01\00\00\00\0c\00\00\00A\00\00\00B\00\00\00C") + (data $34 (i32.const 3948) "\1c") + (data $34.1 (i32.const 3960) "\02\00\00\00\06\00\00\00A\00B\00C") + (data $35 (i32.const 3980) ",") + (data $35.1 (i32.const 3992) "\01\00\00\00\14\00\00\004\d8\00\00\06\df\00\00a\00\00\004\d8\00\00\07\df") + (data $36 (i32.const 4028) "\1c") + (data $36.1 (i32.const 4040) "\02\00\00\00\n\00\00\004\d8\06\dfa\004\d8\07\df") + (data $37 (i32.const 4060) "\1c") + (data $37.1 (i32.const 4072) "\02\00\00\00\04\00\00\004\d8\06\df") + (data $38 (i32.const 4092) "\1c") + (data $38.1 (i32.const 4104) "\02\00\00\00\04\00\00\00h\00i") + (data $39 (i32.const 4124) "\1c") + (data $39.1 (i32.const 4136) "\02\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") + (data $40 (i32.const 4156) "\1c") + (data $40.1 (i32.const 4168) "\02\00\00\00\06\00\00\00I\00\'\00m") + (data $41 (i32.const 4188) "\1c") + (data $41.1 (i32.const 4200) "\02\00\00\00\02\00\00\00 ") + (data $42 (i32.const 4220) "\1c") + (data $42.1 (i32.const 4232) "\02\00\00\00\06\00\00\00 \00 \00 ") + (data $43 (i32.const 4252) "\1c") + (data $43.1 (i32.const 4264) "\02\00\00\00\06\00\00\00a\00b\00c") + (data $44 (i32.const 4284) "\1c") + (data $44.1 (i32.const 4296) "\02\00\00\00\n\00\00\00 \00 \00a\00b\00c") + (data $45 (i32.const 4316) "\1c") + (data $45.1 (i32.const 4328) "\02\00\00\00\06\00\00\001\002\003") + (data $46 (i32.const 4348) "\1c") + (data $46.1 (i32.const 4360) "\02\00\00\00\0c\00\00\001\002\003\00a\00b\00c") + (data $47 (i32.const 4380) ",") + (data $47.1 (i32.const 4392) "\02\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c") + (data $48 (i32.const 4428) "\1c") + (data $48.1 (i32.const 4440) "\02\00\00\00\n\00\00\00a\00b\00c\00 \00 ") + (data $49 (i32.const 4460) "\1c") + (data $49.1 (i32.const 4472) "\02\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c") + (data $50 (i32.const 4492) ",") + (data $50.1 (i32.const 4504) "\02\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b") + (data $51 (i32.const 4540) "\1c") + (data $51.1 (i32.const 4552) "\02\00\00\00\02\00\00\00,") + (data $52 (i32.const 4572) "\1c") + (data $52.1 (i32.const 4584) "\02\00\00\00\02\00\00\00x") + (data $53 (i32.const 4604) "\1c") + (data $53.1 (i32.const 4616) "\02\00\00\00\06\00\00\00,\00 \00I") + (data $54 (i32.const 4636) "\1c") + (data $54.1 (i32.const 4648) "\02\00\00\00\02\00\00\00g") + (data $55 (i32.const 4668) "\1c") + (data $55.1 (i32.const 4680) "\02\00\00\00\02\00\00\00i") + (data $56 (i32.const 4700) "\1c") + (data $56.1 (i32.const 4712) "\02\00\00\00\08\00\00\00n\00u\00l\00l") + (data $57 (i32.const 4732) "\1c") + (data $57.1 (i32.const 4744) "\02\00\00\00\06\00\00\00a\00b\00d") + (data $58 (i32.const 4764) "\1c") + (data $58.1 (i32.const 4776) "\02\00\00\00\06\00\00\00a\00b\00f") + (data $59 (i32.const 4796) "\1c") + (data $59.1 (i32.const 4808) "\02\00\00\00\06\00\00\00a\00b\00z") + (data $60 (i32.const 4828) "\1c") + (data $60.1 (i32.const 4840) "\02\00\00\00\08\00\00\00a\00b\00c\00d") + (data $61 (i32.const 4860) "\1c") + (data $61.1 (i32.const 4872) "\02\00\00\00\08\00\00\00a\00b\00d\00d") + (data $62 (i32.const 4892) "\1c") + (data $62.1 (i32.const 4904) "\02\00\00\00\08\00\00\00a\00b\00 \00c") + (data $63 (i32.const 4924) ",") + (data $63.1 (i32.const 4936) "\02\00\00\00\16\00\00\00 \00\n\00\t\00\r\00a\00b\00c\00 \00\t\00\r\00 ") + (data $64 (i32.const 4972) ",") + (data $64.1 (i32.const 4984) "\02\00\00\00\0e\00\00\00a\00b\00c\00 \00\t\00\r\00 ") + (data $65 (i32.const 5020) ",") + (data $65.1 (i32.const 5032) "\02\00\00\00\0e\00\00\00 \00\n\00\t\00\r\00a\00b\00c") + (data $66 (i32.const 5068) ",") + (data $66.1 (i32.const 5080) "\02\00\00\00\0e\00\00\00\t\00\n\00 \00t\00r\00u\00e") + (data $67 (i32.const 5116) ",") + (data $67.1 (i32.const 5128) "\02\00\00\00\14\00\00\00\t\00\n\00 \00t\00r\00u\00e\00\n\00\r\00 ") + (data $68 (i32.const 5164) ",") + (data $68.1 (i32.const 5176) "\02\00\00\00\12\00\00\00 \00 \00t\00r\00u\00e\00a\00b\00c") + (data $69 (i32.const 5212) "\1c") + (data $69.1 (i32.const 5224) "\02\00\00\00\06\00\00\00t\00r\00u") + (data $70 (i32.const 5244) "\1c") + (data $70.1 (i32.const 5256) "\02\00\00\00\08\00\00\00T\00r\00u\00e") + (data $71 (i32.const 5276) "\1c") + (data $71.1 (i32.const 5288) "\02\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data $72 (i32.const 5308) "\1c") + (data $72.1 (i32.const 5320) "\02\00\00\00\06\00\00\000\000\000") + (data $73 (i32.const 5340) "\1c") + (data $73.1 (i32.const 5352) "\02\00\00\00\02\00\00\001") + (data $74 (i32.const 5372) "\1c") + (data $74.1 (i32.const 5384) "\02\00\00\00\08\00\00\000\000\000\001") + (data $75 (i32.const 5404) "\1c") + (data $75.1 (i32.const 5416) "\02\00\00\00\n\00\00\000\00b\001\000\001") + (data $76 (i32.const 5436) "\1c") + (data $76.1 (i32.const 5448) "\02\00\00\00\n\00\00\000\00o\007\000\007") + (data $77 (i32.const 5468) "\1c") + (data $77.1 (i32.const 5480) "\02\00\00\00\n\00\00\000\00x\00f\000\00f") + (data $78 (i32.const 5500) "\1c") + (data $78.1 (i32.const 5512) "\02\00\00\00\n\00\00\000\00X\00F\000\00F") + (data $79 (i32.const 5532) "\1c") + (data $79.1 (i32.const 5544) "\02\00\00\00\06\00\00\000\001\001") + (data $80 (i32.const 5564) "\1c") + (data $80.1 (i32.const 5576) "\02\00\00\00\08\00\00\000\00x\001\00g") + (data $81 (i32.const 5596) "\1c") + (data $81.1 (i32.const 5608) "\02\00\00\00\08\00\00\00-\001\002\003") + (data $82 (i32.const 5628) "\1c") + (data $82.1 (i32.const 5640) "\02\00\00\00\08\00\00\00+\001\002\003") + (data $83 (i32.const 5660) "\1c") + (data $83.1 (i32.const 5672) "\02\00\00\00\n\00\00\00-\001\002\00.\003") + (data $84 (i32.const 5692) "\1c") + (data $84.1 (i32.const 5704) "\02\00\00\00\06\00\00\000\00x\000") + (data $85 (i32.const 5724) "\1c") + (data $85.1 (i32.const 5736) "\02\00\00\00\08\00\00\000\00b\001\001") + (data $86 (i32.const 5756) "\1c") + (data $86.1 (i32.const 5768) "\02\00\00\00\04\00\00\00\n\001") + (data $87 (i32.const 5788) "\1c") + (data $87.1 (i32.const 5800) "\02\00\00\00\04\00\00\00( 1") + (data $88 (i32.const 5820) "\1c") + (data $88.1 (i32.const 5832) "\02\00\00\00\04\00\00\00) 1") + (data $89 (i32.const 5852) "\1c") + (data $89.1 (i32.const 5864) "\02\00\00\00\04\00\00\00-\000") + (data $90 (i32.const 5884) ",") + (data $90.1 (i32.const 5896) "\02\00\00\00\10\00\00\000\00X\00A\00B\00C\00D\00E\00F") + (data $91 (i32.const 5932) "\1c") + (data $91.1 (i32.const 5944) "\02\00\00\00\0c\00\00\00A\00B\00C\00D\00E\00F") + (data $92 (i32.const 5964) "<") + (data $92.1 (i32.const 5976) "\02\00\00\00(\00\00\003\006\008\009\003\004\008\008\001\004\007\004\001\009\001\000\003\002\003\002") + (data $93 (i32.const 6028) "L") + (data $93.1 (i32.const 6040) "\02\00\00\004\00\00\00-\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") + (data $94 (i32.const 6108) "<") + (data $94.1 (i32.const 6120) "\02\00\00\00,\00\00\000\00x\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") + (data $95 (i32.const 6172) "\1c") + (data $95.1 (i32.const 6184) "\02\00\00\00\06\00\00\001\00=\d8%\dd") + (data $96 (i32.const 6204) ",") + (data $96.1 (i32.const 6216) "\02\00\00\00\0e\00\00\002\00b\00a\00d\00n\00u\00m") + (data $97 (i32.const 6252) "\1c") + (data $97.1 (i32.const 6264) "\02\00\00\00\08\00\00\00 \00\t\00\n\001") + (data $98 (i32.const 6284) ",") + (data $98.1 (i32.const 6296) "\02\00\00\00\0e\00\00\00 \00\t\00\n\000\00x\000\002") + (data $99 (i32.const 6332) "\1c") + (data $99.1 (i32.const 6344) "\02\00\00\00\n\00\00\000\00 \00a\00b\00c") + (data $100 (i32.const 6364) "\1c") + (data $100.1 (i32.const 6376) "\02\00\00\00\n\00\00\001\00 \00a\00b\00c") + (data $101 (i32.const 6396) ",") + (data $101.1 (i32.const 6408) "\02\00\00\00\10\00\00\00 \00\t\00\n\000\00 \00a\00b\00c") + (data $102 (i32.const 6444) "\1c") + (data $102.1 (i32.const 6456) "\02\00\00\00\02\00\00\00-") + (data $103 (i32.const 6476) "\1c") + (data $103.1 (i32.const 6488) "\02\00\00\00\02\00\00\00+") + (data $104 (i32.const 6508) "\1c") + (data $104.1 (i32.const 6520) "\02\00\00\00\04\00\00\00=\d8%\dd") + (data $105 (i32.const 6540) "\1c") + (data $105.1 (i32.const 6552) "\02\00\00\00\0c\00\00\00b\00a\00d\00n\00u\00m") + (data $106 (i32.const 6582) "\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") + (data $107 (i32.const 6764) ",") + (data $107.1 (i32.const 6776) "\02\00\00\00\14\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F") + (data $108 (i32.const 6812) "<") + (data $108.1 (i32.const 6824) "\02\00\00\00$\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F") + (data $109 (i32.const 6876) "\1c") + (data $109.1 (i32.const 6888) "\02\00\00\00\04\00\00\001\00.") + (data $110 (i32.const 6908) "\1c") + (data $110.1 (i32.const 6920) "\02\00\00\00\08\00\00\001\00.\000\000") + (data $111 (i32.const 6940) "\1c") + (data $111.1 (i32.const 6952) "\02\00\00\00\08\00\00\001\00e\00-\005") + (data $112 (i32.const 6972) "\1c") + (data $112.1 (i32.const 6984) "\02\00\00\00\n\00\00\00-\001\00e\00-\005") + (data $113 (i32.const 7004) ",") + (data $113.1 (i32.const 7016) "\02\00\00\00\10\00\00\00-\000\00.\003\00e\00-\002\002") + (data $114 (i32.const 7052) ",") + (data $114.1 (i32.const 7064) "\02\00\00\00\0e\00\00\000\00.\003\00e\00+\002\002") + (data $115 (i32.const 7100) "\1c") + (data $115.1 (i32.const 7112) "\02\00\00\00\08\00\00\001\00e\00-\001") + (data $116 (i32.const 7132) "\1c") + (data $116.1 (i32.const 7144) "\02\00\00\00\0c\00\00\000\00.\001\00e\00-\000") + (data $117 (i32.const 7164) "\1c") + (data $117.1 (i32.const 7176) "\02\00\00\00\06\00\00\000\00.\001") + (data $118 (i32.const 7196) "\1c") + (data $118.1 (i32.const 7208) "\02\00\00\00\06\00\00\00.\002\005") + (data $119 (i32.const 7228) "\1c") + (data $119.1 (i32.const 7240) "\02\00\00\00\0c\00\00\001\00.\00e\00+\003\00a") + (data $120 (i32.const 7260) ",") + (data $120.1 (i32.const 7272) "\02\00\00\00\0e\00\00\001\00.\000\00e\00-\001\000") + (data $121 (i32.const 7308) ",") + (data $121.1 (i32.const 7320) "\02\00\00\00\0e\00\00\001\00.\000\00e\00-\003\000") + (data $122 (i32.const 7356) ",") + (data $122.1 (i32.const 7368) "\02\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\003") + (data $123 (i32.const 7404) ",") + (data $123.1 (i32.const 7416) "\02\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\004") + (data $124 (i32.const 7452) "\1c") + (data $124.1 (i32.const 7464) "\02\00\00\00\0c\00\00\001\00e\00+\003\000\008") + (data $125 (i32.const 7484) "\1c") + (data $125.1 (i32.const 7496) "\02\00\00\00\0c\00\00\001\00e\00+\003\000\009") + (data $126 (i32.const 7516) ",") + (data $126.1 (i32.const 7528) "\02\00\00\00\10\00\00\001\00.\000\00e\00-\001\00_\000") + (data $127 (i32.const 7564) ",") + (data $127.1 (i32.const 7576) "\02\00\00\00\12\00\00\001\00.\000\00e\00-\001\000\00_\000") + (data $128 (i32.const 7612) ",") + (data $128.1 (i32.const 7624) "\02\00\00\00\10\00\00\001\00.\000\00e\00+\001\00_\000") + (data $129 (i32.const 7660) "\1c") + (data $129.1 (i32.const 7672) "\02\00\00\00\06\00\00\001\00_\000") + (data $130 (i32.const 7692) "\1c") + (data $130.1 (i32.const 7704) "\02\00\00\00\06\00\00\001\00_\001") + (data $131 (i32.const 7724) ",") + (data $131.1 (i32.const 7736) "\02\00\00\00\14\00\00\001\000\00.\000\000\00_\000\001\00e\002") + (data $132 (i32.const 7772) ",") + (data $132.1 (i32.const 7784) "\02\00\00\00\16\00\00\001\002\003\004\005\006\007\008\009\00_\004") + (data $133 (i32.const 7820) ",") + (data $133.1 (i32.const 7832) "\02\00\00\00\18\00\00\001\00_\000\001\002\003\004\005\006\007\008\009") + (data $134 (i32.const 7868) "\1c") + (data $134.1 (i32.const 7880) "\02\00\00\00\n\00\00\001\00e\00-\006\000") + (data $135 (i32.const 7900) "\1c") + (data $135.1 (i32.const 7912) "\02\00\00\00\08\00\00\001\00e\006\000") + (data $136 (i32.const 7932) "\1c") + (data $136.1 (i32.const 7944) "\02\00\00\00\0c\00\00\001\002\003\00.\004\00e") + (data $137 (i32.const 7964) "\1c") + (data $137.1 (i32.const 7976) "\02\00\00\00\04\00\00\001\00x") + (data $138 (i32.const 7996) ",") + (data $138.1 (i32.const 8008) "\02\00\00\00\18\00\00\00-\001\001\00e\00-\001\00s\00t\00r\00i\00n\00g") + (data $139 (i32.const 8044) ",") + (data $139.1 (i32.const 8056) "\02\00\00\00\14\00\00\000\001\00e\001\00s\00t\00r\00i\00n\00g") + (data $140 (i32.const 8092) ",") + (data $140.1 (i32.const 8104) "\02\00\00\00\12\00\00\000\001\000\00s\00t\00r\00i\00n\00g") + (data $141 (i32.const 8140) ",") + (data $141.1 (i32.const 8152) "\02\00\00\00\0e\00\00\00+\00.\002\002\00e\00-\001") + (data $142 (i32.const 8188) "\1c") + (data $142.1 (i32.const 8200) "\02\00\00\00\n\00\00\001\001\00.\00s\001") + (data $143 (i32.const 8220) "\1c") + (data $143.1 (i32.const 8232) "\02\00\00\00\06\00\00\000\00x\005") + (data $144 (i32.const 8252) "\1c") + (data $144.1 (i32.const 8264) "\02\00\00\00\06\00\00\000\00x\00D") + (data $145 (i32.const 8284) "\1c") + (data $145.1 (i32.const 8296) "\02\00\00\00\08\00\00\00\0b\001\00.\001") + (data $146 (i32.const 8316) "\1c") + (data $146.1 (i32.const 8328) "\02\00\00\00\0c\00\00\00\0b\00\0b\00-\001\00.\001") + (data $147 (i32.const 8348) "\1c") + (data $147.1 (i32.const 8360) "\02\00\00\00\0c\00\00\00\0c\00\0c\00-\001\00.\001") + (data $148 (i32.const 8380) "\1c") + (data $148.1 (i32.const 8392) "\02\00\00\00\0c\00\00\00( ( -\001\00.\001") + (data $149 (i32.const 8412) "\1c") + (data $149.1 (i32.const 8424) "\02\00\00\00\0c\00\00\00) ) -\001\00.\001") + (data $150 (i32.const 8444) "\1c") + (data $150.1 (i32.const 8456) "\02\00\00\00\n\00\00\000\000\000\000\000") + (data $151 (i32.const 8476) "\1c") + (data $151.1 (i32.const 8488) "\02\00\00\00\n\00\00\000\000\000\000\00a") + (data $152 (i32.const 8508) "\1c") + (data $152.1 (i32.const 8520) "\02\00\00\00\n\00\00\000\000\000\000\001") + (data $153 (i32.const 8540) "\1c") + (data $153.1 (i32.const 8552) "\02\00\00\00\n\00\00\000\000\00.\000\000") + (data $154 (i32.const 8572) "\1c") + (data $154.1 (i32.const 8584) "\02\00\00\00\n\00\00\000\000\00.\000\00a") + (data $155 (i32.const 8604) "\1c") + (data $155.1 (i32.const 8616) "\02\00\00\00\08\00\00\001\00e\001\00e") + (data $156 (i32.const 8636) ",") + (data $156.1 (i32.const 8648) "\02\00\00\00\0e\00\00\001\00e\00+\000\000\000\001") + (data $157 (i32.const 8684) "\1c") + (data $157.1 (i32.const 8696) "\02\00\00\00\0c\00\00\000\00e\00+\001\000\000") + (data $158 (i32.const 8716) "\1c") + (data $158.1 (i32.const 8728) "\02\00\00\00\n\00\00\001\00.\00-\001\00.") + (data $159 (i32.const 8748) "\1c") + (data $159.1 (i32.const 8760) "\02\00\00\00\0c\00\00\001\00e\00-\001\00.\002") + (data $160 (i32.const 8780) "\1c") + (data $160.1 (i32.const 8792) "\02\00\00\00\06\00\00\001\00e\00x") + (data $161 (i32.const 8812) "\1c") + (data $161.1 (i32.const 8824) "\02\00\00\00\08\00\00\001\00e\001\00x") + (data $162 (i32.const 8844) "\1c") + (data $162.1 (i32.const 8856) "\02\00\00\00\08\00\00\001\00e\00-\00x") + (data $163 (i32.const 8876) "\1c") + (data $163.1 (i32.const 8888) "\02\00\00\00\n\00\00\001\00e\00-\001\00x") + (data $164 (i32.const 8908) ",") + (data $164.1 (i32.const 8920) "\02\00\00\00\0e\00\00\000\00.\001\00e\00-\001\00x") + (data $165 (i32.const 8956) "\1c") + (data $165.1 (i32.const 8968) "\02\00\00\00\06\00\00\000\000\00.") + (data $166 (i32.const 8988) "\1c") + (data $166.1 (i32.const 9000) "\02\00\00\00\06\00\00\00.\000\000") + (data $167 (i32.const 9020) "\1c") + (data $167.1 (i32.const 9032) "\02\00\00\00\06\00\00\00.\000\00.") + (data $168 (i32.const 9052) "\1c") + (data $168.1 (i32.const 9064) "\02\00\00\00\06\00\00\00.\001\00.") + (data $169 (i32.const 9084) "\1c") + (data $169.1 (i32.const 9096) "\02\00\00\00\06\00\00\000\00.\00.") + (data $170 (i32.const 9116) "\1c") + (data $170.1 (i32.const 9128) "\02\00\00\00\06\00\00\000\00.\00a") + (data $171 (i32.const 9148) "\1c") + (data $171.1 (i32.const 9160) "\02\00\00\00\08\00\00\001\00.\00.\001") + (data $172 (i32.const 9180) "\1c") + (data $172.1 (i32.const 9192) "\02\00\00\00\n\00\00\000\00.\001\00.\001") + (data $173 (i32.const 9212) "\1c") + (data $173.1 (i32.const 9224) "\02\00\00\00\08\00\00\000\00.\00 \001") + (data $174 (i32.const 9244) "\1c") + (data $174.1 (i32.const 9256) "\02\00\00\00\08\00\00\00+\000\00.\000") + (data $175 (i32.const 9276) "\1c") + (data $175.1 (i32.const 9288) "\02\00\00\00\08\00\00\00-\000\00.\000") + (data $176 (i32.const 9308) "\1c") + (data $176.1 (i32.const 9320) "\02\00\00\00\04\00\00\00+\000") + (data $177 (i32.const 9340) ",") + (data $177.1 (i32.const 9352) "\02\00\00\00\0e\00\00\00-\00.\000\000\000\000\000") + (data $178 (i32.const 9388) "\1c") + (data $178.1 (i32.const 9400) "\02\00\00\00\06\00\00\00-\00-\000") + (data $179 (i32.const 9420) "\1c") + (data $179.1 (i32.const 9432) "\02\00\00\00\06\00\00\00+\00+\000") + (data $180 (i32.const 9452) "\1c") + (data $180.1 (i32.const 9464) "\02\00\00\00\04\00\00\00.\00a") + (data $181 (i32.const 9484) "\1c") + (data $181.1 (i32.const 9496) "\02\00\00\00\06\00\00\00.\00.\000") + (data $182 (i32.const 9516) "\1c") + (data $182.1 (i32.const 9528) "\02\00\00\00\02\00\00\00.") + (data $183 (i32.const 9548) "\1c") + (data $183.1 (i32.const 9560) "\02\00\00\00\04\00\00\00.\00.") + (data $184 (i32.const 9580) "\1c") + (data $184.1 (i32.const 9592) "\02\00\00\00\06\00\00\00N\00a\00N") + (data $185 (i32.const 9612) "\1c") + (data $185.1 (i32.const 9624) "\02\00\00\00\02\00\00\00\0b") + (data $186 (i32.const 9644) "\1c") + (data $186.1 (i32.const 9656) "\02\00\00\00\02\00\00\00\0e\18") + (data $187 (i32.const 9676) "\1c") + (data $187.1 (i32.const 9688) "\02\00\00\00\08\00\00\00\0e\181\00.\001") + (data $188 (i32.const 9708) "\1c") + (data $188.1 (i32.const 9720) "\02\00\00\00\n\00\00\00\0e\18\0e\181\00.\001") + (data $189 (i32.const 9740) "\1c") + (data $189.1 (i32.const 9752) "\02\00\00\00\02\00\00\00\0c") + (data $190 (i32.const 9772) "\1c") + (data $190.1 (i32.const 9784) "\02\00\00\00\08\00\00\00t\00r\00u\00e") + (data $191 (i32.const 9804) "\1c") + (data $191.1 (i32.const 9816) "\02\00\00\00\08\00\00\001\00e\002\002") + (data $192 (i32.const 9836) "\1c") + (data $192.1 (i32.const 9848) "\02\00\00\00\n\00\00\001\00e\00-\002\002") + (data $193 (i32.const 9868) "\1c") + (data $193.1 (i32.const 9880) "\02\00\00\00\08\00\00\001\00e\002\003") + (data $194 (i32.const 9900) "\1c") + (data $194.1 (i32.const 9912) "\02\00\00\00\n\00\00\001\00e\00-\002\003") + (data $195 (i32.const 9932) "\1c") + (data $195.1 (i32.const 9944) "\02\00\00\00\08\00\00\001\00e\003\007") + (data $196 (i32.const 9964) "\1c") + (data $196.1 (i32.const 9976) "\02\00\00\00\n\00\00\001\00e\00-\003\007") + (data $197 (i32.const 9996) "\1c") + (data $197.1 (i32.const 10008) "\02\00\00\00\08\00\00\001\00e\003\008") + (data $198 (i32.const 10028) "\1c") + (data $198.1 (i32.const 10040) "\02\00\00\00\n\00\00\001\00e\00-\003\008") + (data $199 (i32.const 10060) "<") + (data $199.1 (i32.const 10072) "\02\00\00\00*\00\00\002\00.\002\002\000\004\004\006\000\004\009\002\005\000\003\001\003\00e\00-\001\006") + (data $200 (i32.const 10124) "L") + (data $200.1 (i32.const 10136) "\02\00\00\00.\00\00\001\00.\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\007\00e\00+\003\000\008") + (data $201 (i32.const 10204) "\1c") + (data $201.1 (i32.const 10216) "\02\00\00\00\0c\00\00\005\00e\00-\003\002\004") + (data $202 (i32.const 10236) ",") + (data $202.1 (i32.const 10248) "\02\00\00\00\1a\00\00\000\00.\000\000\000\000\000\001\00e\00+\003\001\004") + (data $203 (i32.const 10284) "\8c") + (data $203.1 (i32.const 10296) "\02\00\00\00|\00\00\000\00.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\00e\00+\005\006") + (data $204 (i32.const 10428) ",") + (data $204.1 (i32.const 10440) "\02\00\00\00\0e\00\00\00+\001\00E\00-\003\002\005") + (data $205 (i32.const 10476) ",") + (data $205.1 (i32.const 10488) "\02\00\00\00\0e\00\00\00+\001\00E\00+\003\000\009") + (data $206 (i32.const 10524) ",") + (data $206.1 (i32.const 10536) "\02\00\00\00\0e\00\00\00-\001\00E\00-\003\002\005") + (data $207 (i32.const 10572) ",") + (data $207.1 (i32.const 10584) "\02\00\00\00\0e\00\00\00-\001\00E\00+\003\000\009") + (data $208 (i32.const 10620) ",") + (data $208.1 (i32.const 10632) "\02\00\00\00\14\00\00\001\00e\00-\001\000\000\000\000\000\000") + (data $209 (i32.const 10668) ",") + (data $209.1 (i32.const 10680) "\02\00\00\00\14\00\00\001\00e\00+\001\000\000\000\000\000\000") + (data $210 (i32.const 10716) "\1c") + (data $210.1 (i32.const 10728) "\02\00\00\00\0c\00\00\001\00.\00e\003\006\000") + (data $211 (i32.const 10748) ",") + (data $211.1 (i32.const 10760) "\02\00\00\00\12\00\00\00 \00I\00n\00f\00i\00n\00i\00t\00y") + (data $212 (i32.const 10796) ",") + (data $212.1 (i32.const 10808) "\02\00\00\00\12\00\00\00+\00I\00n\00f\00i\00n\00i\00t\00y") + (data $213 (i32.const 10844) ",") + (data $213.1 (i32.const 10856) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data $214 (i32.const 10892) ",") + (data $214.1 (i32.const 10904) "\02\00\00\00\12\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00x") + (data $215 (i32.const 10940) ",") + (data $215.1 (i32.const 10952) "\02\00\00\00\14\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00+\001") + (data $216 (i32.const 10988) "\1c") + (data $216.1 (i32.const 11000) "\02\00\00\00\08\00\00\00I\00n\00f\00i") + (data $217 (i32.const 11020) ",") + (data $217.1 (i32.const 11032) "\02\00\00\00\10\00\00\00+\00I\00n\00f\00i\00n\00i\00t") + (data $218 (i32.const 11068) ",") + (data $218.1 (i32.const 11080) "\02\00\00\00\10\00\00\00i\00n\00f\00i\00n\00i\00t\00y") + (data $219 (i32.const 11116) "\bc") + (data $219.1 (i32.const 11128) "\02\00\00\00\aa\00\00\00.\002\004\007\000\003\002\008\002\002\009\002\000\006\002\003\002\007\002\000\008\008\002\008\004\003\009\006\004\003\004\001\001\000\006\008\006\001\008\002\005\002\009\009\000\001\003\000\007\001\006\002\003\008\002\002\001\002\007\009\002\008\004\001\002\005\000\003\003\007\007\005\003\006\003\005\001\000\004\003\00e\00-\003\002\003") + (data $220 (i32.const 11308) "\bc") + (data $220.1 (i32.const 11320) "\02\00\00\00\aa\00\00\00.\007\004\001\000\009\008\004\006\008\007\006\001\008\006\009\008\001\006\002\006\004\008\005\003\001\008\009\003\000\002\003\003\002\000\005\008\005\004\007\005\008\009\007\000\003\009\002\001\004\008\007\001\004\006\006\003\008\003\007\008\005\002\003\007\005\001\000\001\003\002\006\000\009\000\005\003\001\003\002\00e\00-\003\002\003") + (data $221 (i32.const 11500) "\bc") + (data $221.1 (i32.const 11512) "\02\00\00\00\aa\00\00\00.\002\002\002\005\000\007\003\008\005\008\005\000\007\002\000\001\006\003\000\001\002\003\000\005\005\006\003\007\009\005\005\006\007\006\001\005\002\005\000\003\006\001\002\004\001\004\005\007\003\000\001\008\000\001\003\000\008\003\002\002\008\007\002\004\000\004\009\005\008\006\006\004\007\006\000\006\007\006\000\00e\00-\003\000\007") + (data $222 (i32.const 11692) "\9c") + (data $222.1 (i32.const 11704) "\02\00\00\00\88\00\00\001\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\008\000\007\009\003\007\002\008\009\007\001\004\000\005\003\000\003\004\001\005\000\007\009\009\003\004\001\003\002\007\001\000\000\003\007\008\002\006\009\003\006\001\007\003\007\007\008\009\008\000\004\004") + (data $223 (i32.const 11852) "\9c") + (data $223.1 (i32.const 11864) "\02\00\00\00\88\00\00\004\009\006\008\002\009\002\007\006\004\007\005\000\009\004\006\006\004\009\000\001\007\009\007\007\005\008\007\002\000\007\000\009\006\003\003\000\002\008\006\004\001\006\006\009\002\008\008\007\009\001\000\009\004\006\005\005\005\005\004\007\008\005\001\009\004\000\004") + (data $224 (i32.const 12012) "\9c") + (data $224.1 (i32.const 12024) "\02\00\00\00\88\00\00\000\002\006\003\000\006\005\007\004\008\008\006\007\001\005\000\005\008\002\000\006\008\001\009\000\008\009\000\002\000\000\000\007\000\008\003\008\003\006\007\006\002\007\003\008\005\004\008\004\005\008\001\007\007\001\001\005\003\001\007\006\004\004\007\005\007\003\000") + (data $225 (i32.const 12172) "\9c") + (data $225.1 (i32.const 12184) "\02\00\00\00\88\00\00\002\007\000\000\006\009\008\005\005\005\007\001\003\006\006\009\005\009\006\002\002\008\004\002\009\001\004\008\001\009\008\006\000\008\003\004\009\003\006\004\007\005\002\009\002\007\001\009\000\007\004\001\006\008\004\004\004\003\006\005\005\001\000\007\000\004\003\004") + (data $226 (i32.const 12332) "\9c") + (data $226.1 (i32.const 12344) "\02\00\00\00\88\00\00\002\007\001\001\005\005\009\006\009\009\005\000\008\000\009\003\000\004\002\008\008\000\001\007\007\009\000\004\001\007\004\004\009\007\007\009\001\00.\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009") + (data $227 (i32.const 12492) "l") + (data $227.1 (i32.const 12504) "\02\00\00\00\\\00\00\000\00.\009\007\005\003\005\003\001\008\008\008\007\009\009\005\000\002\006\001\003\008\000\007\001\003\005\002\007\006\001\004\007\001\006\004\004\000\004\003\009\00e\00-\001\000\003") + (data $228 (i32.const 12604) "l") + (data $228.1 (i32.const 12616) "\02\00\00\00X\00\00\00.\005\009\006\001\008\006\000\003\004\008\001\003\001\008\000\007\000\009\001\008\006\001\000\000\002\002\006\006\004\005\003\009\004\001\009\005\000\004\002\008\00e\000\000") + (data $229 (i32.const 12716) "l") + (data $229.1 (i32.const 12728) "\02\00\00\00X\00\00\001\00.\008\001\005\000\001\003\001\006\009\002\001\008\000\003\008\007\002\009\008\008\007\004\006\000\008\009\008\007\003\003\005\002\006\009\005\007\004\004\002\00e\00-\001") + (data $230 (i32.const 12828) "l") + (data $230.1 (i32.const 12840) "\02\00\00\00X\00\00\004\002\00.\000\007\000\008\002\003\005\007\005\003\004\004\005\003\006\000\000\006\008\001\006\001\008\006\008\005\006\008\002\002\005\007\005\009\000\007\007\002\00e\00-\002") + (data $231 (i32.const 12940) "l") + (data $231.1 (i32.const 12952) "\02\00\00\00X\00\00\006\006\005\00.\004\006\008\006\003\000\006\005\001\006\002\006\001\004\005\006\003\002\008\009\007\003\002\002\005\005\007\009\008\003\003\004\007\000\008\001\006\00e\00-\003") + (data $232 (i32.const 13052) "l") + (data $232.1 (i32.const 13064) "\02\00\00\00X\00\00\006\001\000\001\00.\008\005\002\009\002\002\009\007\000\008\006\008\006\002\001\007\008\006\006\009\000\004\009\005\004\008\005\004\004\009\008\003\001\007\005\003\00e\00-\004") + (data $233 (i32.const 13164) "l") + (data $233.1 (i32.const 13176) "\02\00\00\00X\00\00\007\006\009\006\006\00.\009\005\002\000\008\002\003\006\009\006\008\000\007\007\008\004\009\004\006\004\003\004\008\008\007\005\004\007\001\001\005\008\005\004\009\00e\00-\005") + (data $234 (i32.const 13276) "l") + (data $234.1 (i32.const 13288) "\02\00\00\00X\00\00\002\005\000\005\000\006\00.\005\003\002\002\002\002\008\006\008\002\004\009\006\001\003\002\006\000\004\008\000\007\002\002\002\009\002\003\007\000\002\003\000\004\00e\00-\006") + (data $235 (i32.const 13388) "l") + (data $235.1 (i32.const 13400) "\02\00\00\00X\00\00\002\007\004\000\000\003\007\00.\002\003\000\002\002\008\000\000\005\003\002\005\008\005\002\004\002\004\006\009\007\006\009\008\003\003\001\001\007\007\003\007\007\00e\00-\007") + (data $236 (i32.const 13500) "l") + (data $236.1 (i32.const 13512) "\02\00\00\00X\00\00\002\000\007\002\003\000\009\003\00.\005\000\000\004\009\007\004\002\006\004\005\009\004\001\005\002\009\002\006\008\007\001\005\004\002\008\003\002\004\004\009\000\00e\00-\008") + (data $237 (i32.const 13612) "l") + (data $237.1 (i32.const 13624) "\02\00\00\00X\00\00\000\00.\007\009\000\000\002\008\000\002\003\008\000\008\001\006\000\004\009\005\006\002\002\006\000\001\001\000\004\007\004\006\000\002\003\008\007\004\008\009\001\002\00e\001") + (data $238 (i32.const 13724) "l") + (data $238.1 (i32.const 13736) "\02\00\00\00X\00\00\000\00.\009\008\002\002\008\006\000\006\005\003\007\003\007\002\009\006\008\004\008\001\009\000\005\005\008\004\004\008\007\006\000\004\006\005\008\006\003\005\009\007\00e\002") + (data $239 (i32.const 13836) "l") + (data $239.1 (i32.const 13848) "\02\00\00\00X\00\00\000\00.\007\004\006\008\009\004\009\007\002\003\001\009\000\003\007\000\008\000\009\004\000\005\005\007\000\005\006\000\001\006\000\004\000\005\003\002\004\008\006\009\00e\003") + (data $240 (i32.const 13948) "l") + (data $240.1 (i32.const 13960) "\02\00\00\00X\00\00\000\00.\001\006\003\000\002\006\008\003\002\000\002\008\002\007\002\008\004\007\005\009\008\000\004\005\009\008\004\004\002\007\001\000\003\001\007\005\001\006\006\005\00e\004") + (data $241 (i32.const 14060) "l") + (data $241.1 (i32.const 14072) "\02\00\00\00X\00\00\000\00.\004\006\003\007\001\006\008\006\002\009\007\001\009\001\007\000\006\009\005\001\000\009\009\001\008\007\006\009\006\004\005\004\009\002\000\002\002\000\008\008\00e\005") + (data $242 (i32.const 14172) "l") + (data $242.1 (i32.const 14184) "\02\00\00\00X\00\00\000\00.\006\005\003\007\008\000\005\009\004\004\004\009\007\007\001\001\005\005\004\002\000\009\004\006\001\006\008\006\004\001\005\008\007\002\000\006\007\005\002\003\00e\006") + (data $243 (i32.const 14284) "l") + (data $243.1 (i32.const 14296) "\02\00\00\00X\00\00\000\00.\002\003\004\006\003\002\004\003\005\006\005\000\002\004\003\007\000\004\005\002\001\002\002\003\000\007\001\003\009\006\000\004\005\007\006\007\006\005\003\001\00e\006") + (data $244 (i32.const 14396) "l") + (data $244.1 (i32.const 14408) "\02\00\00\00X\00\00\000\00.\009\007\000\009\004\008\001\007\001\006\004\002\000\000\004\008\003\004\001\008\009\007\002\005\008\009\008\000\004\005\004\002\009\008\002\000\005\002\007\008\00e\008") + (data $245 (i32.const 14508) "l") + (data $245.1 (i32.const 14520) "\02\00\00\00X\00\00\000\00.\004\009\009\006\009\000\008\005\002\002\000\005\001\008\007\004\001\001\000\007\007\009\009\008\002\003\005\004\009\003\002\004\009\009\004\009\009\006\000\002\00e\009") + (data $246 (i32.const 14620) "l") + (data $246.1 (i32.const 14632) "\02\00\00\00Z\00\00\000\00.\007\009\002\005\002\000\001\002\000\000\005\005\007\002\004\005\008\006\001\009\004\004\000\001\001\002\006\007\000\004\001\007\008\007\005\000\005\001\004\009\00e\002\002") + (data $247 (i32.const 14732) "l") + (data $247.1 (i32.const 14744) "\02\00\00\00Z\00\00\000\00.\006\000\009\006\005\006\004\005\008\005\009\008\003\001\007\007\004\000\008\009\003\004\003\005\002\005\007\000\002\001\003\003\007\007\004\007\005\007\003\009\00e\003\000") + (data $248 (i32.const 14844) "l") + (data $248.1 (i32.const 14856) "\02\00\00\00Z\00\00\000\00.\004\008\000\000\004\001\006\001\001\007\004\007\007\000\002\008\007\008\007\008\007\004\003\006\000\002\000\005\000\002\003\005\004\009\004\009\007\001\002\008\00e\006\007") + (data $249 (i32.const 14956) "l") + (data $249.1 (i32.const 14968) "\02\00\00\00\\\00\00\000\00.\008\005\002\004\008\002\009\000\007\009\008\001\007\009\006\008\002\002\004\008\003\000\003\003\007\009\003\001\000\005\002\007\008\001\006\004\001\004\008\003\00e\001\000\005") + (data $250 (i32.const 15068) "l") + (data $250.1 (i32.const 15080) "\02\00\00\00\\\00\00\000\00.\000\003\002\007\001\002\003\009\002\009\001\007\000\009\007\008\002\001\001\005\004\004\007\000\006\009\003\007\002\007\004\008\009\005\006\000\008\004\002\005\00e\002\006\009") + (data $251 (i32.const 15180) "\1c") + (data $251.1 (i32.const 15192) "\02\00\00\00\06\00\00\00 \00\t\00\n") + (data $252 (i32.const 15212) "\1c") + (data $252.1 (i32.const 15224) "\02\00\00\00\0c\00\00\00 \00\t\00\n\00\r\00.\001") + (data $253 (i32.const 15244) "\1c") + (data $253.1 (i32.const 15256) "\02\00\00\00\02\00\00\00b") + (data $254 (i32.const 15276) "\1c") + (data $254.1 (i32.const 15288) "\02\00\00\00\04\00\00\00a\00b") + (data $255 (i32.const 15308) "\1c") + (data $255.1 (i32.const 15320) "\02\00\00\00\08\00\00\00k\00e\00y\001") + (data $256 (i32.const 15340) "\1c") + (data $256.1 (i32.const 15352) "\02\00\00\00\08\00\00\00k\00e\00y\002") + (data $257 (i32.const 15372) "\1c") + (data $257.1 (i32.const 15384) "\02\00\00\00\06\00\00\00k\00e\001") + (data $258 (i32.const 15404) "\1c") + (data $258.1 (i32.const 15416) "\02\00\00\00\06\00\00\00k\00e\002") + (data $259 (i32.const 15436) "\1c") + (data $259.1 (i32.const 15448) "\02\00\00\00\n\00\00\00k\00e\00y\001\002") + (data $260 (i32.const 15468) "\1c") + (data $260.1 (i32.const 15480) "\02\00\00\00\n\00\00\00k\00e\00y\001\001") + (data $261 (i32.const 15500) ",") + (data $261.1 (i32.const 15512) "\02\00\00\00\0e\00\00\00\a40\ed0\cf0\cb0\db0\d80\c80") + (data $262 (i32.const 15548) ",") + (data $262.1 (i32.const 15560) "\02\00\00\00\0e\00\00\00\a60\f00\ce0\aa0\af0\e40\de0") + (data $263 (i32.const 15596) ",") + (data $263.1 (i32.const 15608) "\02\00\00\00\16\00\00\00D\00\19 f\00h\00u\00a\00s\00c\00a\00i\00l") + (data $264 (i32.const 15644) ",") + (data $264.1 (i32.const 15656) "\02\00\00\00\14\00\00\00D\00\19 \1f\1eu\00a\00s\00c\00a\00i\00l") + (data $265 (i32.const 15692) "\1c") + (data $265.1 (i32.const 15704) "\02\00\00\00\04\00\00\00b\00a") + (data $266 (i32.const 15724) "\1c") + (data $266.1 (i32.const 15736) "\02\00\00\00\04\00\00\00a\00a") + (data $267 (i32.const 15756) "\1c") + (data $267.1 (i32.const 15768) "\02\00\00\00\04\00\00\001\000") + (data $268 (i32.const 15788) "\1c") + (data $268.1 (i32.const 15800) "\02\00\00\00\04\00\00\001\001") + (data $269 (i32.const 15820) "\1c") + (data $269.1 (i32.const 15832) "\02\00\00\00\06\00\00\001\000\001") + (data $270 (i32.const 15852) "\1c") + (data $270.1 (i32.const 15864) "\02\00\00\00\06\00\00\001\002\002") + (data $271 (i32.const 15884) "\1c") + (data $271.1 (i32.const 15896) "\02\00\00\00\08\00\00\001\002\003\004") + (data $272 (i32.const 15916) "\1c") + (data $272.1 (i32.const 15928) "\02\00\00\00\08\00\00\001\002\003\003") + (data $273 (i32.const 15948) ",") + (data $273.1 (i32.const 15960) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $274 (i32.const 15996) "\1c") + (data $274.1 (i32.const 16008) "\02\00\00\00\06\00\00\00a\00a\00a") + (data $275 (i32.const 16028) ",") + (data $275.1 (i32.const 16040) "\02\00\00\00\10\00\00\00a\00b\00a\00b\00a\00b\00a\00b") + (data $276 (i32.const 16076) "\1c") + (data $276.1 (i32.const 16088) "\02\00\00\00\n\00\00\00a\00a\00a\00a\00a") + (data $277 (i32.const 16108) "\1c") + (data $277.1 (i32.const 16120) "\02\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a") + (data $278 (i32.const 16140) ",") + (data $278.1 (i32.const 16152) "\02\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a") + (data $279 (i32.const 16188) "\1c") + (data $279.1 (i32.const 16200) "\02\00\00\00\n\00\00\00a\00-\00b\00-\00c") + (data $280 (i32.const 16220) "\1c") + (data $280.1 (i32.const 16232) "\02\00\00\00\n\00\00\00a\00+\00b\00-\00c") + (data $281 (i32.const 16252) "\1c") + (data $281.1 (i32.const 16264) "\02\00\00\00\08\00\00\00+\00a\00b\00c") + (data $282 (i32.const 16284) "\1c") + (data $282.1 (i32.const 16296) "\02\00\00\00\08\00\00\00\n\00a\00b\00c") + (data $283 (i32.const 16316) "\1c") + (data $283.1 (i32.const 16328) "\02\00\00\00\02\00\00\00\n") + (data $284 (i32.const 16348) "\1c") + (data $284.1 (i32.const 16360) "\02\00\00\00\02\00\00\00c") + (data $285 (i32.const 16380) "\1c") + (data $285.1 (i32.const 16392) "\02\00\00\00\04\00\00\00+\00+") + (data $286 (i32.const 16412) "\1c") + (data $286.1 (i32.const 16424) "\02\00\00\00\08\00\00\00a\00b\00+\00+") + (data $287 (i32.const 16444) ",") + (data $287.1 (i32.const 16456) "\02\00\00\00\12\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00c") + (data $288 (i32.const 16492) "\1c") + (data $288.1 (i32.const 16504) "\02\00\00\00\06\00\00\00+\00+\00+") + (data $289 (i32.const 16524) ",") + (data $289.1 (i32.const 16536) "\02\00\00\00\0e\00\00\00a\00b\00c\00a\00b\00c\00a") + (data $290 (i32.const 16572) ",") + (data $290.1 (i32.const 16584) "\02\00\00\00\1a\00\00\00+\00+\00+\00b\00c\00+\00+\00+\00b\00c\00+\00+\00+") + (data $291 (i32.const 16620) "\1c") + (data $291.1 (i32.const 16632) "\02\00\00\00\0c\00\00\00+\00+\00c\00+\00+\00c") + (data $292 (i32.const 16652) "\1c") + (data $292.1 (i32.const 16664) "\02\00\00\00\08\00\00\00c\00c\00c\00c") + (data $293 (i32.const 16684) "\1c") + (data $293.1 (i32.const 16696) "\02\00\00\00\04\00\00\00c\00c") + (data $294 (i32.const 16716) "\1c") + (data $294.1 (i32.const 16728) "\02\00\00\00\08\00\00\00+\00+\00+\00+") + (data $295 (i32.const 16748) "\1c") + (data $295.1 (i32.const 16760) "\02\00\00\00\02\00\00\00e") + (data $296 (i32.const 16780) "\1c") + (data $296.1 (i32.const 16792) "\02\00\00\00\04\00\00\00b\00c") + (data $297 (i32.const 16812) "\1c") + (data $297.1 (i32.const 16824) "\02\00\00\00\04\00\00\00a\00+") + (data $298 (i32.const 16844) "\1c") + (data $298.1 (i32.const 16856) "\02\00\00\00\n\00\00\00a\00+\00b\00+\00c") + (data $299 (i32.const 16876) ",") + (data $299.1 (i32.const 16888) "\02\00\00\00\0e\00\00\00+\00a\00+\00b\00+\00c\00+") + (data $300 (i32.const 16924) "\1c") + (data $300.1 (i32.const 16936) "\02\00\00\00\n\00\00\00a\00b\00c\00d\00e") + (data $301 (i32.const 16956) "\1c") + (data $301.1 (i32.const 16968) "\02\00\00\00\06\00\00\00-\00-\00-") + (data $302 (i32.const 16988) ",") + (data $302.1 (i32.const 17000) "\02\00\00\00\0e\00\00\00-\00-\00-\00b\00c\00d\00e") + (data $303 (i32.const 17036) "\1c") + (data $303.1 (i32.const 17048) "\02\00\00\00\n\00\00\00-\00-\00-\00-\00-") + (data $304 (i32.const 17068) "\1c") + (data $304.1 (i32.const 17080) "\02\00\00\00\08\00\00\00-\00-\00-\00-") + (data $305 (i32.const 17100) ",") + (data $305.1 (i32.const 17112) "\02\00\00\00\18\00\00\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-") + (data $306 (i32.const 17148) "\1c") + (data $306.1 (i32.const 17160) "\02\00\00\00\08\00\00\00-\00-\00-\00a") + (data $307 (i32.const 17180) ",") + (data $307.1 (i32.const 17192) "\02\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n") + (data $308 (i32.const 17228) "\1c") + (data $308.1 (i32.const 17240) "\02\00\00\00\02\00\00\00n") + (data $309 (i32.const 17260) "\1c") + (data $309.1 (i32.const 17272) "\02\00\00\00\n\00\00\00j\00k\00l\00m\00n") + (data $310 (i32.const 17292) "\1c") + (data $310.1 (i32.const 17304) "\02\00\00\00\n\00\00\00c\00d\00e\00f\00g") + (data $311 (i32.const 17324) "\1c") + (data $311.1 (i32.const 17336) "\02\00\00\00\n\00\00\00d\00e\00f\00g\00h") + (data $312 (i32.const 17356) ",") + (data $312.1 (i32.const 17368) "\02\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m") + (data $313 (i32.const 17404) ",") + (data $313.1 (i32.const 17416) "\02\00\00\00\0e\00\00\00c\00d\00e\00f\00g\00h\00i") + (data $314 (i32.const 17452) "\1c") + (data $314.1 (i32.const 17464) "\02\00\00\00\06\00\00\00e\00f\00g") + (data $315 (i32.const 17484) "\1c") + (data $315.1 (i32.const 17496) "\02\00\00\00\08\00\00\00e\00f\00g\00h") + (data $316 (i32.const 17516) "\1c") + (data $316.1 (i32.const 17528) "\02\00\00\00\02\00\00\00d") + (data $317 (i32.const 17548) ",") + (data $317.1 (i32.const 17560) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $318 (i32.const 17596) "|") + (data $318.1 (i32.const 17608) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $319 (i32.const 17724) "\1c") + (data $319.1 (i32.const 17736) "\02\00\00\00\n\00\00\00a\00,\00b\00,\00c") + (data $320 (i32.const 17756) ",") + (data $320.1 (i32.const 17768) "\02\00\00\00\0e\00\00\00a\00,\00 \00b\00,\00 \00c") + (data $321 (i32.const 17804) "\1c") + (data $321.1 (i32.const 17816) "\02\00\00\00\04\00\00\00,\00 ") + (data $322 (i32.const 17836) "\1c") + (data $322.1 (i32.const 17848) "\02\00\00\00\0c\00\00\00a\00,\00b\00,\00,\00c") + (data $323 (i32.const 17868) "\1c") + (data $323.1 (i32.const 17880) "\02\00\00\00\0c\00\00\00,\00a\00,\00b\00,\00c") + (data $324 (i32.const 17900) "\1c") + (data $324.1 (i32.const 17912) "\02\00\00\00\0c\00\00\00a\00,\00b\00,\00c\00,") + (data $325 (i32.const 17932) "\1c") + (data $325.1 (i32.const 17944) "\02\00\00\00\02\00\00\008") + (data $326 (i32.const 17964) "\1c") + (data $326.1 (i32.const 17976) "\02\00\00\00\04\00\00\001\002") + (data $327 (i32.const 17996) "\1c") + (data $327.1 (i32.const 18008) "\02\00\00\00\n\00\00\00-\001\000\000\000") + (data $328 (i32.const 18028) "\1c") + (data $328.1 (i32.const 18040) "\02\00\00\00\n\00\00\001\002\003\004\005") + (data $329 (i32.const 18060) "\1c") + (data $329.1 (i32.const 18072) "\02\00\00\00\0c\00\00\001\002\003\004\005\006") + (data $330 (i32.const 18092) ",") + (data $330.1 (i32.const 18104) "\02\00\00\00\0e\00\00\001\001\001\001\001\001\001") + (data $331 (i32.const 18140) ",") + (data $331.1 (i32.const 18152) "\02\00\00\00\0e\00\00\001\002\003\004\005\006\007") + (data $332 (i32.const 18188) ",") + (data $332.1 (i32.const 18200) "\02\00\00\00\10\00\00\001\002\003\004\005\006\007\008") + (data $333 (i32.const 18236) ",") + (data $333.1 (i32.const 18248) "\02\00\00\00\12\00\00\001\002\003\004\005\006\007\008\009") + (data $334 (i32.const 18284) ",") + (data $334.1 (i32.const 18296) "\02\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006") + (data $335 (i32.const 18332) ",") + (data $335.1 (i32.const 18344) "\02\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007") + (data $336 (i32.const 18380) ",") + (data $336.1 (i32.const 18392) "\02\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008") + (data $337 (i32.const 18428) "\1c") + (data $337.1 (i32.const 18440) "\02\00\00\00\04\00\00\00-\001") + (data $338 (i32.const 18460) "\1c") + (data $338.1 (i32.const 18472) "\02\00\00\00\08\00\00\00-\001\002\008") (data $339 (i32.const 18492) "\1c") - (data $339.1 (i32.const 18504) "\02\00\00\00\04\00\00\007\00b") + (data $339.1 (i32.const 18504) "\02\00\00\00\0c\00\00\00-\003\002\007\006\008") (data $340 (i32.const 18524) "\1c") - (data $340.1 (i32.const 18536) "\02\00\00\00\06\00\00\004\00d\002") - (data $341 (i32.const 18556) "\1c") - (data $341.1 (i32.const 18568) "\02\00\00\00\08\00\00\003\000\003\009") - (data $342 (i32.const 18588) "\1c") - (data $342.1 (i32.const 18600) "\02\00\00\00\n\00\00\001\00e\002\004\000") - (data $343 (i32.const 18620) "\1c") - (data $343.1 (i32.const 18632) "\02\00\00\00\0c\00\00\001\000\00f\004\004\007") - (data $344 (i32.const 18652) "\1c") - (data $344.1 (i32.const 18664) "\02\00\00\00\0c\00\00\001\002\00d\006\008\007") - (data $345 (i32.const 18684) "\1c") - (data $345.1 (i32.const 18696) "\02\00\00\00\0c\00\00\00b\00c\006\001\004\00e") - (data $346 (i32.const 18716) ",") - (data $346.1 (i32.const 18728) "\02\00\00\00\0e\00\00\007\005\00b\00c\00d\001\005") - (data $347 (i32.const 18764) ",") - (data $347.1 (i32.const 18776) "\02\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00e") - (data $348 (i32.const 18812) ",") - (data $348.1 (i32.const 18824) "\02\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00f") - (data $349 (i32.const 18860) ",") - (data $349.1 (i32.const 18872) "\02\00\00\00\10\00\00\008\000\000\000\000\000\000\000") - (data $350 (i32.const 18908) ",") - (data $350.1 (i32.const 18920) "\02\00\00\00\10\00\00\00f\00f\00f\00f\00f\00f\00f\00f") - (data $351 (i32.const 18956) ",") - (data $351.1 (i32.const 18968) "\02\00\00\00\12\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f") - (data $352 (i32.const 19004) ",") - (data $352.1 (i32.const 19016) "\02\00\00\00\10\00\00\00-\00f\00f\00f\00f\00f\00f\00f") - (data $353 (i32.const 19052) ",") - (data $353.1 (i32.const 19064) "\02\00\00\00\12\00\00\00-\008\000\000\000\000\000\000\000") - (data $354 (i32.const 19100) "\1c") - (data $354.1 (i32.const 19112) "\02\00\00\00\06\00\00\001\001\001") - (data $355 (i32.const 19132) "\1c") - (data $355.1 (i32.const 19144) "\02\00\00\00\08\00\00\001\001\001\000") - (data $356 (i32.const 19164) "\1c") - (data $356.1 (i32.const 19176) "\02\00\00\00\n\00\00\001\001\001\000\001") - (data $357 (i32.const 19196) "\1c") - (data $357.1 (i32.const 19208) "\02\00\00\00\0c\00\00\001\001\001\000\001\001") - (data $358 (i32.const 19228) ",") - (data $358.1 (i32.const 19240) "\02\00\00\00\18\00\00\001\001\001\001\001\001\001\001\001\001\001\001") - (data $359 (i32.const 19276) "L") - (data $359.1 (i32.const 19288) "\02\00\00\002\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data $360 (i32.const 19356) "\\") - (data $360.1 (i32.const 19368) "\02\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\001\000\000") - (data $361 (i32.const 19452) "\\") - (data $361.1 (i32.const 19464) "\02\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\000") - (data $362 (i32.const 19548) "\\") - (data $362.1 (i32.const 19560) "\02\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000") - (data $363 (i32.const 19644) "\\") - (data $363.1 (i32.const 19656) "\02\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data $364 (i32.const 19740) ",") - (data $364.1 (i32.const 19752) "\02\00\00\00\18\00\00\00-\001\001\001\001\001\001\001\001\001\001\001") - (data $365 (i32.const 19788) "<") - (data $365.1 (i32.const 19800) "\02\00\00\00*\00\00\001\000\002\000\000\002\000\002\002\002\000\001\002\002\001\001\001\001\002\001\000") - (data $366 (i32.const 19852) "<") - (data $366.1 (i32.const 19864) "\02\00\00\00 \00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003") - (data $367 (i32.const 19916) ",") - (data $367.1 (i32.const 19928) "\02\00\00\00\1c\00\00\003\002\002\004\004\000\000\002\004\002\003\001\004\000") - (data $368 (i32.const 19964) ",") - (data $368.1 (i32.const 19976) "\02\00\00\00\16\00\00\003\007\007\007\007\007\007\007\007\007\007") - (data $369 (i32.const 20012) ",") - (data $369.1 (i32.const 20024) "\02\00\00\00\14\00\00\001\009\000\004\004\004\000\005\005\003") - (data $370 (i32.const 20060) ",") - (data $370.1 (i32.const 20072) "\02\00\00\00\12\00\00\001\00a\002\000\00d\00c\00d\008\000") - (data $371 (i32.const 20108) ",") - (data $371.1 (i32.const 20120) "\02\00\00\00\10\00\00\00a\007\00f\00f\00d\00a\009\000") - (data $372 (i32.const 20156) ",") - (data $372.1 (i32.const 20168) "\02\00\00\00\10\00\00\002\008\001\00d\005\005\00i\003") - (data $373 (i32.const 20204) ",") - (data $373.1 (i32.const 20216) "\02\00\00\00\0e\00\00\00b\002\008\00j\00p\00d\00l") - (data $374 (i32.const 20252) ",") - (data $374.1 (i32.const 20264) "\02\00\00\00\0e\00\00\003\00v\00v\00v\00v\00v\00v") - (data $375 (i32.const 20300) ",") - (data $375.1 (i32.const 20312) "\02\00\00\00\0e\00\00\001\00z\001\004\001\00z\003") - (data $376 (i32.const 20348) ",") - (data $376.1 (i32.const 20360) "\02\00\00\00\10\00\00\009\009\009\009\009\009\009\009") - (data $377 (i32.const 20396) ",") - (data $377.1 (i32.const 20408) "\02\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000") - (data $378 (i32.const 20444) ",") - (data $378.1 (i32.const 20456) "\02\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\007") - (data $379 (i32.const 20492) ",") - (data $379.1 (i32.const 20504) "\02\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005") - (data $380 (i32.const 20540) ",") - (data $380.1 (i32.const 20552) "\02\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005") - (data $381 (i32.const 20588) ",") - (data $381.1 (i32.const 20600) "\02\00\00\00\1a\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000") - (data $382 (i32.const 20636) ",") - (data $382.1 (i32.const 20648) "\02\00\00\00\1c\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000\001") - (data $383 (i32.const 20684) "<") - (data $383.1 (i32.const 20696) "\02\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data $384 (i32.const 20748) "<") - (data $384.1 (i32.const 20760) "\02\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data $385 (i32.const 20812) "<") - (data $385.1 (i32.const 20824) "\02\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data $386 (i32.const 20876) "<") - (data $386.1 (i32.const 20888) "\02\00\00\00$\00\00\001\002\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data $387 (i32.const 20940) "<") - (data $387.1 (i32.const 20952) "\02\00\00\00&\00\00\001\002\003\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data $388 (i32.const 21004) "<") - (data $388.1 (i32.const 21016) "\02\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005") - (data $389 (i32.const 21068) "\1c") - (data $389.1 (i32.const 21080) "\02\00\00\00\n\00\00\00-\001\002\003\004") - (data $390 (i32.const 21100) ",") - (data $390.1 (i32.const 21112) "\02\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005") - (data $391 (i32.const 21148) ",") - (data $391.1 (i32.const 21160) "\02\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005") - (data $392 (i32.const 21196) ",") - (data $392.1 (i32.const 21208) "\02\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005") - (data $393 (i32.const 21244) "<") - (data $393.1 (i32.const 21256) "\02\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data $394 (i32.const 21308) "<") - (data $394.1 (i32.const 21320) "\02\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data $395 (i32.const 21372) "<") - (data $395.1 (i32.const 21384) "\02\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data $396 (i32.const 21436) "<") - (data $396.1 (i32.const 21448) "\02\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008") - (data $397 (i32.const 21500) ",") - (data $397.1 (i32.const 21512) "\02\00\00\00\12\00\00\001\00f\00f\00f\00f\00f\00f\00f\00f") - (data $398 (i32.const 21548) ",") - (data $398.1 (i32.const 21560) "\02\00\00\00\16\00\00\005\006\007\008\009\00a\00b\00c\00d\00e\001") - (data $399 (i32.const 21596) ",") - (data $399.1 (i32.const 21608) "\02\00\00\00\18\00\00\004\005\006\007\008\009\00a\00b\00c\00d\00e\001") - (data $400 (i32.const 21644) ",") - (data $400.1 (i32.const 21656) "\02\00\00\00\1a\00\00\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") - (data $401 (i32.const 21692) ",") - (data $401.1 (i32.const 21704) "\02\00\00\00\1c\00\00\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") - (data $402 (i32.const 21740) "<") - (data $402.1 (i32.const 21752) "\02\00\00\00\1e\00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") - (data $403 (i32.const 21804) "<") - (data $403.1 (i32.const 21816) "\02\00\00\00 \00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\000") - (data $404 (i32.const 21868) "<") - (data $404.1 (i32.const 21880) "\02\00\00\00 \00\00\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") - (data $405 (i32.const 21932) "<") - (data $405.1 (i32.const 21944) "\02\00\00\00 \00\00\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") - (data $406 (i32.const 21996) "<") - (data $406.1 (i32.const 22008) "\02\00\00\00\"\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") - (data $407 (i32.const 22060) "<") - (data $407.1 (i32.const 22072) "\02\00\00\00\"\00\00\00-\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") - (data $408 (i32.const 22124) "|") - (data $408.1 (i32.const 22136) "\02\00\00\00b\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data $409 (i32.const 22252) "\9c") - (data $409.1 (i32.const 22264) "\02\00\00\00\80\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data $410 (i32.const 22412) "\\") - (data $410.1 (i32.const 22424) "\02\00\00\00D\00\00\00-\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data $411 (i32.const 22508) "l") - (data $411.1 (i32.const 22520) "\02\00\00\00R\00\00\001\001\001\001\002\002\002\000\000\002\002\001\002\002\001\002\000\001\000\001\002\001\001\000\002\000\001\002\000\002\001\000\002\001\000\002\001\001\002\002\000") - (data $412 (i32.const 22620) "\\") - (data $412.1 (i32.const 22632) "\02\00\00\00@\00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003") - (data $413 (i32.const 22716) "L") - (data $413.1 (i32.const 22728) "\02\00\00\008\00\00\002\002\001\004\002\002\000\003\000\003\001\001\004\004\000\000\004\002\004\001\002\001\001\002\002\004\003\000") - (data $414 (i32.const 22796) "<") - (data $414.1 (i32.const 22808) "\02\00\00\00,\00\00\001\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007") - (data $415 (i32.const 22860) "<") - (data $415.1 (i32.const 22872) "\02\00\00\00&\00\00\003\003\005\005\000\000\005\001\006\00a\004\002\009\000\007\001\002\008\004") - (data $416 (i32.const 22924) "<") - (data $416.1 (i32.const 22936) "\02\00\00\00\"\00\00\002\00c\001\00d\005\006\00b\006\004\008\00c\006\00c\00d\001\001\000") - (data $417 (i32.const 22988) "<") - (data $417.1 (i32.const 23000) "\02\00\00\00 \00\00\006\007\009\007\009\00g\006\000\00f\005\004\002\008\000\001\000") - (data $418 (i32.const 23052) "<") - (data $418.1 (i32.const 23064) "\02\00\00\00\1e\00\00\005\00e\008\00g\004\00g\00g\00g\007\00g\005\006\00d\00i\00f") - (data $419 (i32.const 23116) ",") - (data $419.1 (i32.const 23128) "\02\00\00\00\1c\00\00\004\00e\00o\008\00h\00f\00a\00m\006\00f\00l\00l\00m\00o") - (data $420 (i32.const 23164) ",") - (data $420.1 (i32.const 23176) "\02\00\00\00\1a\00\00\00f\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v") - (data $421 (i32.const 23212) ",") - (data $421.1 (i32.const 23224) "\02\00\00\00\1a\00\00\003\00w\005\00e\001\001\002\006\004\00s\00g\00s\00f") - (data $422 (i32.const 23260) "\1c") - (data $422.1 (i32.const 23272) "\02\00\00\00\06\00\00\000\00.\000") - (data $423 (i32.const 23292) ",") - (data $423.1 (i32.const 23304) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data $425 (i32.const 23400) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array<~lib/string/String> $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - br $folding-inner1 - end - unreachable - end - i32.const 59424 - i32.const 59472 + (func $~start + call $start:std/string + ) + (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26796 + i32.lt_s + if + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.load - call $~lib/rt/itcms/__visit + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $3 + local.get $2 + i32.add + local.tee $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1184 + return + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $0 + local.get $2 + memory.copy + local.get $2 + local.get $4 + i32.add + local.get $1 + local.get $3 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26796 + i32.lt_s + if + i32.const 59584 + i32.const 59632 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/string/String#concat + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~start - call $start:std/string + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26796 + i32.lt_s + if + i32.const 59584 + i32.const 59632 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1120 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1152 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1616 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + i32.const 10 + call $~lib/util/number/utoa32 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1616 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + i32.const 10 + call $~lib/util/number/utoa32 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3424 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -4382,11 +4486,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4466,11 +4570,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4500,8 +4604,8 @@ local.get $2 i32.ge_u if - i32.const 1264 - i32.const 1328 + i32.const 1408 + i32.const 3632 i32.const 57 i32.const 31 call $~lib/builtins/abort @@ -4531,11 +4635,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4560,7 +4664,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1712 + i32.const 1184 return end global.get $~lib/memory/__stack_pointer @@ -4589,11 +4693,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4628,11 +4732,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4660,11 +4764,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4733,11 +4837,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4851,11 +4955,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4977,11 +5081,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5108,11 +5212,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5228,11 +5332,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5277,11 +5381,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5365,11 +5469,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5491,7 +5595,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1712 + i32.const 1184 return end global.get $~lib/memory/__stack_pointer @@ -5521,11 +5625,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5635,7 +5739,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1712 + i32.const 1184 return end local.get $1 @@ -5675,11 +5779,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5878,7 +5982,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1712 + i32.const 1184 return end local.get $2 @@ -5924,11 +6028,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6162,11 +6266,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6504,11 +6608,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6548,11 +6652,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7076,7 +7180,7 @@ local.get $0 i32.const 3 i32.shl - i32.const 4496 + i32.const 6400 i32.add f64.load f64.mul @@ -7110,7 +7214,7 @@ local.get $0 i32.const 3 i32.shl - i32.const 4672 + i32.const 6576 i32.add f64.load f64.mul @@ -7123,7 +7227,7 @@ i32.sub i32.const 3 i32.shl - i32.const 4672 + i32.const 6576 i32.add f64.load f64.div @@ -7372,11 +7476,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7404,18 +7508,18 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 4880 + i32.const 6784 local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7425,17 +7529,17 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4880 + i32.const 6784 i32.store block $folding-inner0 - i32.const 4876 + i32.const 6780 i32.load i32.const 1 i32.shr_u local.tee $0 i32.eqz br_if $folding-inner0 - i32.const 4880 + i32.const 6784 i32.load16_u local.set $1 loop $while-continue|0 @@ -7707,18 +7811,18 @@ (local $5 i64) (local $6 i32) (local $7 i32) - i32.const 4928 + i32.const 6832 local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7728,17 +7832,17 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4928 + i32.const 6832 i32.store block $folding-inner0 - i32.const 4924 + i32.const 6828 i32.load i32.const 1 i32.shr_u local.tee $0 i32.eqz br_if $folding-inner0 - i32.const 4928 + i32.const 6832 i32.load16_u local.set $1 loop $while-continue|0 @@ -7976,141 +8080,32 @@ i64.extend_i32_u local.get $5 local.get $6 - i64.extend_i32_s - i64.mul - i64.add - local.set $5 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - i64.mul - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i64.const 0 - ) - (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $3 - local.get $2 - i32.add - local.tee $4 - i32.eqz - if + i64.extend_i32_s + i64.mul + i64.add + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|2 + end + end + end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1712 + local.get $4 + local.get $5 + i64.mul return end global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 - local.get $0 - local.get $2 - memory.copy - local.get $2 - local.get $4 - i32.add - local.get $1 - local.get $3 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/string/String#concat - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -8118,11 +8113,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8154,11 +8149,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8248,11 +8243,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8339,11 +8334,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8373,11 +8368,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8410,11 +8405,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8448,8 +8443,8 @@ i64.gt_u end if - i32.const 14064 - i32.const 1328 + i32.const 15968 + i32.const 3632 i32.const 334 i32.const 7 call $~lib/builtins/abort @@ -8465,7 +8460,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1712 + i32.const 1184 return end local.get $1 @@ -8531,11 +8526,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8698,11 +8693,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9062,11 +9057,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9138,7 +9133,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1712 + i32.const 1184 return end global.get $~lib/memory/__stack_pointer @@ -9171,11 +9166,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9216,11 +9211,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9278,7 +9273,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1712 + i32.const 1184 return end global.get $~lib/memory/__stack_pointer @@ -9308,11 +9303,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9354,11 +9349,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9427,7 +9422,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1712 + i32.const 1184 return end local.get $4 @@ -9471,11 +9466,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9517,11 +9512,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9545,8 +9540,8 @@ i32.const 268435455 i32.gt_u if - i32.const 14064 - i32.const 15664 + i32.const 15968 + i32.const 17568 i32.const 19 i32.const 48 call $~lib/builtins/abort @@ -9615,11 +9610,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9683,7 +9678,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -9708,7 +9703,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -9791,7 +9786,7 @@ i32.store offset=4 local.get $2 i32.load offset=4 - i32.const 1712 + i32.const 1184 i32.store br $folding-inner4 end @@ -9919,7 +9914,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 1712 + i32.const 1184 call $~lib/array/Array<~lib/string/String>#push end local.get $5 @@ -9988,13 +9983,13 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 1712 + i32.const 1184 call $~lib/array/Array<~lib/string/String>#push end br $folding-inner4 end - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10027,11 +10022,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10076,11 +10071,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10097,8 +10092,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1264 - i32.const 15664 + i32.const 1408 + i32.const 17568 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -10120,8 +10115,8 @@ local.get $0 i32.eqz if - i32.const 15712 - i32.const 15664 + i32.const 17616 + i32.const 17568 i32.const 118 i32.const 40 call $~lib/builtins/abort @@ -10147,55 +10142,87 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 76 memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 59564 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/pinSpace + i32.const 1364 + i32.const 1360 + i32.store + i32.const 1368 + i32.const 1360 + i32.store + i32.const 1360 + global.set $~lib/rt/itcms/toSpace + i32.const 1508 + i32.const 1504 + i32.store + i32.const 1512 + i32.const 1504 + i32.store + i32.const 1504 + global.set $~lib/rt/itcms/fromSpace global.get $std/string/str i32.const 1056 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 8 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1168 - i32.const 1168 + i32.const 3536 + i32.const 3536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1200 - i32.const 1200 + i32.const 3568 + i32.const 3568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1232 - i32.const 1232 + i32.const 3600 + i32.const 3600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -10215,7 +10242,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -10230,7 +10257,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -10239,7 +10266,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $__inlined_func$~lib/string/String#charCodeAt$294 + block $__inlined_func$~lib/string/String#charCodeAt$295 local.get $0 i32.const 20 i32.sub @@ -10254,7 +10281,7 @@ global.set $~lib/memory/__stack_pointer i32.const -1 local.set $0 - br $__inlined_func$~lib/string/String#charCodeAt$294 + br $__inlined_func$~lib/string/String#charCodeAt$295 end local.get $0 i32.load16_u @@ -10269,7 +10296,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -10284,7 +10311,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -10293,7 +10320,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store - block $__inlined_func$~lib/string/String#codePointAt$295 + block $__inlined_func$~lib/string/String#codePointAt$296 local.get $4 i32.const 20 i32.sub @@ -10310,7 +10337,7 @@ global.set $~lib/memory/__stack_pointer i32.const -1 local.set $0 - br $__inlined_func$~lib/string/String#codePointAt$295 + br $__inlined_func$~lib/string/String#codePointAt$296 end local.get $0 i32.const 2 @@ -10328,7 +10355,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/string/String#codePointAt$295 + br $__inlined_func$~lib/string/String#codePointAt$296 end local.get $4 i32.load16_u offset=4 @@ -10342,7 +10369,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/string/String#codePointAt$295 + br $__inlined_func$~lib/string/String#codePointAt$296 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -10362,44 +10389,12 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - i32.const 59404 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1492 - i32.const 1488 - i32.store - i32.const 1496 - i32.const 1488 - i32.store - i32.const 1488 - global.set $~lib/rt/itcms/pinSpace - i32.const 1524 - i32.const 1520 - i32.store - i32.const 1528 - i32.const 1520 - i32.store - i32.const 1520 - global.set $~lib/rt/itcms/toSpace - i32.const 1604 - i32.const 1600 - i32.store - i32.const 1608 - i32.const 1600 - i32.store - i32.const 1600 - global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer global.get $std/string/str local.tee $0 @@ -10428,7 +10423,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 17 i32.const 1 call $~lib/builtins/abort @@ -10473,7 +10468,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -10502,43 +10497,43 @@ local.get $0 i32.store local.get $0 - i32.const 1744 + i32.const 3680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 + i32.const 1184 call $~lib/string/String.__not i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1776 + i32.const 3712 call $~lib/string/String.__not if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 3744 call $~lib/string/String.__not if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -10553,12 +10548,12 @@ local.get $0 i32.store local.get $0 - i32.const 1776 + i32.const 3712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -10573,12 +10568,12 @@ local.get $0 i32.store local.get $0 - i32.const 1840 + i32.const 3776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -10593,12 +10588,12 @@ local.get $0 i32.store local.get $0 - i32.const 1872 + i32.const 3808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -10613,12 +10608,12 @@ local.get $0 i32.store local.get $0 - i32.const 1872 + i32.const 3808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -10632,12 +10627,12 @@ local.get $0 i32.store local.get $0 - i32.const 1904 + i32.const 3840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -10645,7 +10640,7 @@ end i32.const 2 i32.const 4 - i32.const 1936 + i32.const 3872 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -10658,12 +10653,12 @@ local.get $0 i32.store local.get $0 - i32.const 1968 + i32.const 3904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -10671,7 +10666,7 @@ end i32.const 3 i32.const 4 - i32.const 2000 + i32.const 3936 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -10684,12 +10679,12 @@ local.get $0 i32.store local.get $0 - i32.const 2032 + i32.const 3968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -10697,7 +10692,7 @@ end i32.const 5 i32.const 4 - i32.const 2064 + i32.const 4000 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -10710,12 +10705,12 @@ local.get $0 i32.store local.get $0 - i32.const 2112 + i32.const 4048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 32 i32.const 1 call $~lib/builtins/abort @@ -10728,12 +10723,12 @@ local.get $0 i32.store local.get $0 - i32.const 1776 + i32.const 3712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -10746,12 +10741,12 @@ local.get $0 i32.store local.get $0 - i32.const 1872 + i32.const 3808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -10764,12 +10759,12 @@ local.get $0 i32.store local.get $0 - i32.const 2144 + i32.const 4080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 36 i32.const 1 call $~lib/builtins/abort @@ -10784,7 +10779,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -10801,11 +10796,11 @@ i32.shr_u local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 2176 + i32.const 4112 i32.store - block $__inlined_func$~lib/string/String#startsWith$296 + block $__inlined_func$~lib/string/String#startsWith$297 local.get $4 - i32.const 2172 + i32.const 4108 i32.load i32.const 1 i32.shr_u @@ -10818,17 +10813,17 @@ global.set $~lib/memory/__stack_pointer i32.const 0 local.set $0 - br $__inlined_func$~lib/string/String#startsWith$296 + br $__inlined_func$~lib/string/String#startsWith$297 end global.get $~lib/memory/__stack_pointer local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 2176 + i32.const 4112 i32.store offset=4 local.get $0 i32.const 0 - i32.const 2176 + i32.const 4112 local.get $4 call $~lib/util/string/compareImpl i32.eqz @@ -10842,7 +10837,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -10859,7 +10854,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -10869,14 +10864,14 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 2208 + i32.const 4144 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -10893,16 +10888,16 @@ i32.shr_u local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 2208 + i32.const 4144 i32.store - block $__inlined_func$~lib/string/String#endsWith$297 + block $__inlined_func$~lib/string/String#endsWith$298 i32.const 536870910 local.get $4 local.get $4 i32.const 536870910 i32.gt_s select - i32.const 2204 + i32.const 4140 i32.load i32.const 1 i32.shr_u @@ -10918,17 +10913,17 @@ global.set $~lib/memory/__stack_pointer i32.const 0 local.set $0 - br $__inlined_func$~lib/string/String#endsWith$297 + br $__inlined_func$~lib/string/String#endsWith$298 end global.get $~lib/memory/__stack_pointer local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 2208 + i32.const 4144 i32.store offset=4 local.get $0 local.get $5 - i32.const 2208 + i32.const 4144 local.get $4 call $~lib/util/string/compareImpl i32.eqz @@ -10946,7 +10941,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 39 i32.const 1 call $~lib/builtins/abort @@ -10961,7 +10956,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -10971,10 +10966,10 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 2240 + i32.const 4176 i32.store offset=4 local.get $0 - i32.const 2240 + i32.const 4176 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -10986,7 +10981,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -10998,7 +10993,7 @@ i32.store offset=8 local.get $0 i32.const 0 - i32.const 2272 + i32.const 4208 call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer @@ -11014,7 +11009,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -11026,7 +11021,7 @@ i32.store offset=8 local.get $0 i32.const 15 - i32.const 2272 + i32.const 4208 call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer @@ -11042,127 +11037,127 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 43 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 + i32.const 1184 i32.const 3 - i32.const 2272 + i32.const 4208 call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2304 + i32.const 4240 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 44 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 + i32.const 1184 i32.const 10 - i32.const 1712 + i32.const 1184 call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 45 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 3744 i32.const 100 - i32.const 1712 + i32.const 1184 call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1808 + i32.const 3744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 + i32.const 4272 i32.const 5 - i32.const 2272 + i32.const 4208 call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2368 + i32.const 4304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 47 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 + i32.const 4272 i32.const 6 - i32.const 2400 + i32.const 4336 call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2432 + i32.const 4368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 48 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 + i32.const 4272 i32.const 8 - i32.const 2400 + i32.const 4336 call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2464 + i32.const 4400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 49 i32.const 1 call $~lib/builtins/abort @@ -11174,7 +11169,7 @@ i32.store offset=8 local.get $0 i32.const 0 - i32.const 2272 + i32.const 4208 call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer @@ -11190,7 +11185,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 51 i32.const 1 call $~lib/builtins/abort @@ -11202,7 +11197,7 @@ i32.store offset=8 local.get $0 i32.const 15 - i32.const 2272 + i32.const 4208 call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer @@ -11218,165 +11213,165 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 52 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 + i32.const 1184 i32.const 3 - i32.const 2272 + i32.const 4208 call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2304 + i32.const 4240 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 53 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 + i32.const 1184 i32.const 10 - i32.const 1712 + i32.const 1184 call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 54 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 3744 i32.const 100 - i32.const 1712 + i32.const 1184 call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1808 + i32.const 3744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 55 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 + i32.const 4272 i32.const 5 - i32.const 2272 + i32.const 4208 call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2512 + i32.const 4448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 56 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 + i32.const 4272 i32.const 6 - i32.const 2336 + i32.const 4272 call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2544 + i32.const 4480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 57 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 + i32.const 4272 i32.const 8 - i32.const 2336 + i32.const 4272 call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2576 + i32.const 4512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 58 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 + i32.const 1184 + i32.const 1184 i32.const 0 call $~lib/string/String#indexOf if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 60 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 2176 + i32.const 1184 + i32.const 4112 i32.const 0 call $~lib/string/String#indexOf i32.const -1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 61 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1808 + i32.const 3744 + i32.const 3744 i32.const 0 call $~lib/string/String#indexOf if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 62 i32.const 1 call $~lib/builtins/abort @@ -11396,7 +11391,7 @@ call $~lib/string/String#indexOf if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 63 i32.const 1 call $~lib/builtins/abort @@ -11407,12 +11402,12 @@ local.tee $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 i32.const 0 call $~lib/string/String#indexOf if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 64 i32.const 1 call $~lib/builtins/abort @@ -11423,14 +11418,14 @@ local.tee $0 i32.store local.get $0 - i32.const 2624 + i32.const 4560 i32.const 0 call $~lib/string/String#indexOf i32.const 2 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 65 i32.const 1 call $~lib/builtins/abort @@ -11441,14 +11436,14 @@ local.tee $0 i32.store local.get $0 - i32.const 2656 + i32.const 4592 i32.const 0 call $~lib/string/String#indexOf i32.const -1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 66 i32.const 1 call $~lib/builtins/abort @@ -11459,14 +11454,14 @@ local.tee $0 i32.store local.get $0 - i32.const 2624 + i32.const 4560 i32.const 2 call $~lib/string/String#indexOf i32.const 2 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 67 i32.const 1 call $~lib/builtins/abort @@ -11477,14 +11472,14 @@ local.tee $0 i32.store local.get $0 - i32.const 2624 + i32.const 4560 i32.const 3 call $~lib/string/String#indexOf i32.const -1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 68 i32.const 1 call $~lib/builtins/abort @@ -11495,14 +11490,14 @@ local.tee $0 i32.store local.get $0 - i32.const 2688 + i32.const 4624 i32.const -1 call $~lib/string/String#indexOf i32.const 2 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 69 i32.const 1 call $~lib/builtins/abort @@ -11510,12 +11505,12 @@ end i32.const 1 global.set $~argumentsLength - i32.const 1712 - i32.const 1712 + i32.const 1184 + i32.const 1184 call $~lib/string/String#lastIndexOf@varargs if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 71 i32.const 1 call $~lib/builtins/abort @@ -11523,14 +11518,14 @@ end i32.const 1 global.set $~argumentsLength - i32.const 1712 - i32.const 2176 + i32.const 1184 + i32.const 4112 call $~lib/string/String#lastIndexOf@varargs i32.const -1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 72 i32.const 1 call $~lib/builtins/abort @@ -11543,7 +11538,7 @@ i32.const 1 global.set $~argumentsLength local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String#lastIndexOf@varargs global.get $~lib/memory/__stack_pointer global.get $std/string/str @@ -11558,7 +11553,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 73 i32.const 1 call $~lib/builtins/abort @@ -11571,13 +11566,13 @@ i32.const 1 global.set $~argumentsLength local.get $0 - i32.const 2624 + i32.const 4560 call $~lib/string/String#lastIndexOf@varargs i32.const 2 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 74 i32.const 1 call $~lib/builtins/abort @@ -11590,13 +11585,13 @@ i32.const 1 global.set $~argumentsLength local.get $0 - i32.const 2656 + i32.const 4592 call $~lib/string/String#lastIndexOf@varargs i32.const -1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 75 i32.const 1 call $~lib/builtins/abort @@ -11609,13 +11604,13 @@ i32.const 1 global.set $~argumentsLength local.get $0 - i32.const 2720 + i32.const 4656 call $~lib/string/String#lastIndexOf@varargs i32.const 15 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 76 i32.const 1 call $~lib/builtins/abort @@ -11626,14 +11621,14 @@ local.tee $0 i32.store local.get $0 - i32.const 2624 + i32.const 4560 i32.const 2 call $~lib/string/String#lastIndexOf i32.const 2 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 77 i32.const 1 call $~lib/builtins/abort @@ -11644,14 +11639,14 @@ local.tee $0 i32.store local.get $0 - i32.const 2624 + i32.const 4560 i32.const 3 call $~lib/string/String#lastIndexOf i32.const 2 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 78 i32.const 1 call $~lib/builtins/abort @@ -11662,14 +11657,14 @@ local.tee $0 i32.store local.get $0 - i32.const 2688 + i32.const 4624 i32.const -1 call $~lib/string/String#lastIndexOf i32.const -1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 79 i32.const 1 call $~lib/builtins/abort @@ -11680,14 +11675,14 @@ local.tee $0 i32.store local.get $0 - i32.const 2752 + i32.const 4688 i32.const 0 call $~lib/string/String#lastIndexOf i32.const -1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 80 i32.const 1 call $~lib/builtins/abort @@ -11698,719 +11693,719 @@ local.tee $0 i32.store local.get $0 - i32.const 2176 + i32.const 4112 i32.const 0 call $~lib/string/String#lastIndexOf if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 81 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 + i32.const 1184 + i32.const 1184 call $~lib/string/String#localeCompare if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 83 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1712 + i32.const 3744 + i32.const 1184 call $~lib/string/String#localeCompare i32.const 1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 84 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1808 + i32.const 1184 + i32.const 3744 call $~lib/string/String#localeCompare i32.const -1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 85 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2784 - i32.const 2784 + i32.const 4720 + i32.const 4720 call $~lib/string/String#localeCompare if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 86 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2816 + i32.const 4272 + i32.const 4752 call $~lib/string/String#localeCompare i32.const -1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 87 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2848 + i32.const 4272 + i32.const 4784 call $~lib/string/String#localeCompare i32.const -1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 88 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2816 - i32.const 2336 + i32.const 4752 + i32.const 4272 call $~lib/string/String#localeCompare i32.const 1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 89 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2880 - i32.const 2336 + i32.const 4816 + i32.const 4272 call $~lib/string/String#localeCompare i32.const 1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 90 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2912 - i32.const 2336 + i32.const 4848 + i32.const 4272 call $~lib/string/String#localeCompare i32.const 1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2880 - i32.const 2944 + i32.const 4816 + i32.const 4880 call $~lib/string/String#localeCompare i32.const 1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 92 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2912 + i32.const 4272 + i32.const 4848 call $~lib/string/String#localeCompare i32.const -1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 93 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2944 - i32.const 2880 + i32.const 4880 + i32.const 4816 call $~lib/string/String#localeCompare i32.const -1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 94 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 2304 + i32.const 1184 + i32.const 4240 call $~lib/string/String#localeCompare i32.const -1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 95 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1776 - i32.const 1712 + i32.const 3712 + i32.const 1184 call $~lib/string/String#localeCompare i32.const 1 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 96 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 + i32.const 1184 call $~lib/string/String#trimStart local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 98 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2976 + i32.const 4912 call $~lib/string/String#trimStart local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2976 + i32.const 4912 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 99 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3008 + i32.const 4944 call $~lib/string/String#trimStart local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3056 + i32.const 4992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 100 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 + i32.const 1184 call $~lib/string/String#trimEnd local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 102 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2976 + i32.const 4912 call $~lib/string/String#trimEnd local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2976 + i32.const 4912 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 103 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3008 + i32.const 4944 call $~lib/string/String#trimEnd local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3104 + i32.const 5040 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 104 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 + i32.const 1184 call $~lib/string/String#trim local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 106 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2976 + i32.const 4912 call $~lib/string/String#trim local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2976 + i32.const 4912 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 107 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3008 + i32.const 4944 call $~lib/string/String#trim local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2336 + i32.const 4272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 108 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 3152 + i32.const 5088 i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 3152 + i32.const 5088 i32.store - i32.const 3152 + i32.const 5088 call $~lib/util/string/strtob i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 111 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 3200 + i32.const 5136 i32.store offset=20 global.get $~lib/memory/__stack_pointer - i32.const 3200 + i32.const 5136 i32.store - i32.const 3200 + i32.const 5136 call $~lib/util/string/strtob i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 112 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 3248 + i32.const 5184 i32.store offset=24 global.get $~lib/memory/__stack_pointer - i32.const 3248 + i32.const 5184 i32.store - i32.const 3248 + i32.const 5184 call $~lib/util/string/strtob if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 113 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1712 + i32.const 1184 i32.store offset=28 global.get $~lib/memory/__stack_pointer - i32.const 1712 + i32.const 1184 i32.store - i32.const 1712 + i32.const 1184 call $~lib/util/string/strtob if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 114 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 3296 + i32.const 5232 i32.store offset=32 global.get $~lib/memory/__stack_pointer - i32.const 3296 + i32.const 5232 i32.store - i32.const 3296 + i32.const 5232 call $~lib/util/string/strtob if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 115 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 3328 + i32.const 5264 i32.store offset=36 global.get $~lib/memory/__stack_pointer - i32.const 3328 + i32.const 5264 i32.store - i32.const 3328 + i32.const 5264 call $~lib/util/string/strtob if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 116 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 3360 + i32.const 5296 i32.store offset=40 global.get $~lib/memory/__stack_pointer - i32.const 3360 + i32.const 5296 i32.store - i32.const 3360 + i32.const 5296 call $~lib/util/string/strtob if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 117 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3392 + i32.const 1840 i32.const 0 call $~lib/string/parseInt f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 119 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3424 + i32.const 5328 i32.const 0 call $~lib/string/parseInt f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 120 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3456 + i32.const 5360 i32.const 0 call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 121 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3488 + i32.const 5392 i32.const 0 call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 122 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3520 + i32.const 5424 i32.const 0 call $~lib/string/parseInt f64.const 5 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 123 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3552 + i32.const 5456 i32.const 0 call $~lib/string/parseInt f64.const 455 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 124 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3584 + i32.const 5488 i32.const 0 call $~lib/string/parseInt f64.const 3855 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 125 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3616 + i32.const 5520 i32.const 0 call $~lib/string/parseInt f64.const 3855 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 126 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3648 + i32.const 5552 i32.const 0 call $~lib/string/parseInt f64.const 11 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 127 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3680 + i32.const 5584 i32.const 0 call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 128 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3712 + i32.const 5616 i32.const 0 call $~lib/string/parseInt f64.const -123 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 129 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3744 + i32.const 5648 i32.const 0 call $~lib/string/parseInt f64.const 123 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 130 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3776 + i32.const 5680 i32.const 0 call $~lib/string/parseInt f64.const -12 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 131 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3392 + i32.const 1840 i32.const 0 call $~lib/string/parseInt f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 132 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3808 + i32.const 5712 i32.const 0 call $~lib/string/parseInt f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 133 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3840 + i32.const 5744 i32.const 16 call $~lib/string/parseInt f64.const 2833 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 134 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3872 + i32.const 5776 i32.const 0 call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 135 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3904 + i32.const 5808 i32.const 0 call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 136 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3936 + i32.const 5840 i32.const 0 call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 137 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3968 + i32.const 5872 i32.const 0 call $~lib/string/parseInt i64.reinterpret_f64 @@ -12419,171 +12414,171 @@ i64.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 138 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4000 + i32.const 5904 i32.const 0 call $~lib/string/parseInt - i32.const 4048 + i32.const 5952 i32.const 16 call $~lib/string/parseInt f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 139 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4080 + i32.const 5984 i32.const 0 call $~lib/string/parseInt f64.const 36893488147419103232 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 140 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4080 + i32.const 5984 i32.const 13 call $~lib/string/parseInt f64.const 5135857308667095285760 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 141 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4144 + i32.const 6048 i32.const 10 call $~lib/string/parseInt f64.const -1.e+24 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 142 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4224 + i32.const 6128 i32.const 16 call $~lib/string/parseInt f64.const 75557863725914323419136 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 143 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4288 + i32.const 6192 i32.const 0 call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 144 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4320 + i32.const 6224 i32.const 0 call $~lib/string/parseInt f64.const 2 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 145 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4368 + i32.const 6272 i32.const 0 call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 147 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4400 + i32.const 6304 i32.const 0 call $~lib/string/parseInt f64.const 2 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 148 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4448 + i32.const 6352 i32.const 0 call $~lib/string/parseInt f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 149 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4480 + i32.const 6384 i32.const 0 call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 150 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4512 + i32.const 6416 i32.const 0 call $~lib/string/parseInt f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 151 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 + i32.const 1184 i32.const 0 call $~lib/string/parseInt local.tee $1 @@ -12591,13 +12586,13 @@ f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 152 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4560 + i32.const 6464 i32.const 0 call $~lib/string/parseInt local.tee $1 @@ -12605,13 +12600,13 @@ f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 153 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 + i32.const 6496 i32.const 0 call $~lib/string/parseInt local.tee $1 @@ -12619,13 +12614,13 @@ f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 154 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2400 + i32.const 4336 i32.const 37 call $~lib/string/parseInt local.tee $1 @@ -12633,13 +12628,13 @@ f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 155 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4624 + i32.const 6528 i32.const 0 call $~lib/string/parseInt local.tee $1 @@ -12647,13 +12642,13 @@ f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 156 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4656 + i32.const 6560 i32.const 0 call $~lib/string/parseInt local.tee $1 @@ -12661,7 +12656,7 @@ f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 157 i32.const 1 call $~lib/builtins/abort @@ -12672,16 +12667,16 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4656 + i32.const 6560 i32.store - i32.const 4656 + i32.const 6560 call $~lib/util/string/strtod f32.demote_f64 local.set $2 @@ -12694,32 +12689,32 @@ f32.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 158 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4656 + i32.const 6560 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 159 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4656 + i32.const 6560 i32.store offset=44 global.get $~lib/memory/__stack_pointer - i32.const 4656 + i32.const 6560 i32.store - i32.const 4656 + i32.const 6560 call $~lib/util/string/strtod f32.demote_f64 local.tee $2 @@ -12727,26 +12722,26 @@ f32.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 160 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4656 + i32.const 6560 i32.store offset=48 global.get $~lib/memory/__stack_pointer - i32.const 4656 + i32.const 6560 i32.store - i32.const 4656 + i32.const 6560 call $~lib/util/string/strtod local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 161 i32.const 1 call $~lib/builtins/abort @@ -12757,14 +12752,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4880 + i32.const 6784 i32.store call $~lib/util/string/strtol global.get $~lib/memory/__stack_pointer @@ -12775,24 +12770,24 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 163 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4880 + i32.const 6784 i32.store offset=52 global.get $~lib/memory/__stack_pointer - i32.const 4880 + i32.const 6784 i32.store call $~lib/util/string/strtol i32.const 2147483647 i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 164 i32.const 1 call $~lib/builtins/abort @@ -12803,14 +12798,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4928 + i32.const 6832 i32.store call $~lib/util/string/strtol global.get $~lib/memory/__stack_pointer @@ -12821,1529 +12816,1529 @@ i64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 165 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4928 + i32.const 6832 i32.store offset=56 global.get $~lib/memory/__stack_pointer - i32.const 4928 + i32.const 6832 i32.store call $~lib/util/string/strtol i64.const 9223372036854775807 i64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 166 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3392 + i32.const 1840 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 169 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3456 + i32.const 5360 call $~lib/number/F64.parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 170 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4992 + i32.const 6896 call $~lib/number/F64.parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 171 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5024 + i32.const 6928 call $~lib/number/F64.parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 172 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5056 + i32.const 6960 call $~lib/number/F64.parseFloat f64.const 1e-05 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 173 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5088 + i32.const 6992 call $~lib/number/F64.parseFloat f64.const -1e-05 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 174 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5120 + i32.const 7024 call $~lib/number/F64.parseFloat f64.const -3e-23 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 175 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5168 + i32.const 7072 call $~lib/number/F64.parseFloat f64.const 3e21 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 176 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5216 + i32.const 7120 call $~lib/number/F64.parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 177 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5248 + i32.const 7152 call $~lib/number/F64.parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 178 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5280 + i32.const 7184 call $~lib/number/F64.parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 179 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5312 + i32.const 7216 call $~lib/number/F64.parseFloat f64.const 0.25 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 180 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5344 + i32.const 7248 call $~lib/number/F64.parseFloat f64.const 1e3 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 181 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5376 + i32.const 7280 call $~lib/number/F64.parseFloat f64.const 1e-10 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 182 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5424 + i32.const 7328 call $~lib/number/F64.parseFloat f64.const 1e-30 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 183 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5472 + i32.const 7376 call $~lib/number/F64.parseFloat f64.const 1e-323 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 184 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5520 + i32.const 7424 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 185 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5568 + i32.const 7472 call $~lib/number/F64.parseFloat f64.const 1.e+308 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 186 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5600 + i32.const 7504 call $~lib/number/F64.parseFloat f64.const inf f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 187 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 + i32.const 1184 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 188 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5632 + i32.const 7536 call $~lib/number/F64.parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 191 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5680 + i32.const 7584 call $~lib/number/F64.parseFloat f64.const 1e-10 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 192 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5728 + i32.const 7632 call $~lib/number/F64.parseFloat f64.const 10 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 193 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5776 + i32.const 7680 call $~lib/number/F64.parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 194 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5808 + i32.const 7712 call $~lib/number/F64.parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 195 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5840 + i32.const 7744 call $~lib/number/F64.parseFloat f64.const 10 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 196 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5888 + i32.const 7792 call $~lib/number/F64.parseFloat f64.const 123456789 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 197 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5936 + i32.const 7840 call $~lib/number/F64.parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 198 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5984 + i32.const 7888 call $~lib/number/F64.parseFloat f64.const 1e-60 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 200 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6016 + i32.const 7920 call $~lib/number/F64.parseFloat f64.const 1.e+60 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 201 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6048 + i32.const 7952 call $~lib/number/F64.parseFloat f64.const 123.4 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 204 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6080 + i32.const 7984 call $~lib/number/F64.parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 205 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6112 + i32.const 8016 call $~lib/number/F64.parseFloat f64.const -1.1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 206 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6160 + i32.const 8064 call $~lib/number/F64.parseFloat f64.const 10 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 207 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6208 + i32.const 8112 call $~lib/number/F64.parseFloat f64.const 10 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 208 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6256 + i32.const 8160 call $~lib/number/F64.parseFloat f64.const 0.022 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 209 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6304 + i32.const 8208 call $~lib/number/F64.parseFloat f64.const 11 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 210 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3808 + i32.const 5712 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 211 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6336 + i32.const 8240 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 212 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6368 + i32.const 8272 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 213 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6400 + i32.const 8304 call $~lib/number/F64.parseFloat f64.const 1.1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 214 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6432 + i32.const 8336 call $~lib/number/F64.parseFloat f64.const -1.1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 215 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6464 + i32.const 8368 call $~lib/number/F64.parseFloat f64.const -1.1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 216 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6496 + i32.const 8400 call $~lib/number/F64.parseFloat f64.const -1.1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 217 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6528 + i32.const 8432 call $~lib/number/F64.parseFloat f64.const -1.1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 218 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6560 + i32.const 8464 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 219 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6592 + i32.const 8496 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 220 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6624 + i32.const 8528 call $~lib/number/F64.parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 221 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6656 + i32.const 8560 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 222 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6688 + i32.const 8592 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 223 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6720 + i32.const 8624 call $~lib/number/F64.parseFloat f64.const 10 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 224 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6752 + i32.const 8656 call $~lib/number/F64.parseFloat f64.const 10 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 225 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6800 + i32.const 8704 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 226 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6832 + i32.const 8736 call $~lib/number/F64.parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 227 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6864 + i32.const 8768 call $~lib/number/F64.parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 228 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6896 + i32.const 8800 call $~lib/number/F64.parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 229 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6928 + i32.const 8832 call $~lib/number/F64.parseFloat f64.const 10 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 230 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6960 + i32.const 8864 call $~lib/number/F64.parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 231 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6992 + i32.const 8896 call $~lib/number/F64.parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 232 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7024 + i32.const 8928 call $~lib/number/F64.parseFloat f64.const 0.01 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 233 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7072 + i32.const 8976 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 234 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7104 + i32.const 9008 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 235 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7136 + i32.const 9040 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 236 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7168 + i32.const 9072 call $~lib/number/F64.parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 237 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7200 + i32.const 9104 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 238 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7232 + i32.const 9136 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 239 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7264 + i32.const 9168 call $~lib/number/F64.parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 240 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7296 + i32.const 9200 call $~lib/number/F64.parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 241 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7328 + i32.const 9232 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 242 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7360 + i32.const 9264 call $~lib/number/F64.parseFloat i64.reinterpret_f64 i64.const 0 i64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 243 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7392 + i32.const 9296 call $~lib/number/F64.parseFloat i64.reinterpret_f64 i64.const -9223372036854775808 i64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 244 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7424 + i32.const 9328 call $~lib/number/F64.parseFloat i64.reinterpret_f64 i64.const 0 i64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 245 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3968 + i32.const 5872 call $~lib/number/F64.parseFloat i64.reinterpret_f64 i64.const -9223372036854775808 i64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 246 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7456 + i32.const 9360 call $~lib/number/F64.parseFloat i64.reinterpret_f64 i64.const -9223372036854775808 i64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 247 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 + i32.const 6496 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 248 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4560 + i32.const 6464 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 249 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7504 + i32.const 9408 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 250 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7536 + i32.const 9440 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 251 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7568 + i32.const 9472 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 252 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7600 + i32.const 9504 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 253 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7632 + i32.const 9536 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 254 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7664 + i32.const 9568 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 255 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7696 + i32.const 9600 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 256 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7728 + i32.const 9632 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 257 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7760 + i32.const 9664 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 258 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7792 + i32.const 9696 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 259 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7824 + i32.const 9728 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 260 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7856 + i32.const 9760 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 261 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7888 + i32.const 9792 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 262 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3360 + i32.const 5296 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 263 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7920 + i32.const 9824 call $~lib/number/F64.parseFloat f64.const 1e22 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 264 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7952 + i32.const 9856 call $~lib/number/F64.parseFloat f64.const 1e-22 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 265 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7984 + i32.const 9888 call $~lib/number/F64.parseFloat f64.const 1.e+23 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 266 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8016 + i32.const 9920 call $~lib/number/F64.parseFloat f64.const 1e-23 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 267 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8048 + i32.const 9952 call $~lib/number/F64.parseFloat f64.const 1.e+37 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 268 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8080 + i32.const 9984 call $~lib/number/F64.parseFloat f64.const 1e-37 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 269 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8112 + i32.const 10016 call $~lib/number/F64.parseFloat f64.const 1.e+38 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 270 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8144 + i32.const 10048 call $~lib/number/F64.parseFloat f64.const 1e-38 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 271 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8176 + i32.const 10080 call $~lib/number/F64.parseFloat f64.const 2.220446049250313e-16 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 272 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8240 + i32.const 10144 call $~lib/number/F64.parseFloat f64.const 1797693134862315708145274e284 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 273 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8320 + i32.const 10224 call $~lib/number/F64.parseFloat f64.const 5e-324 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 274 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8352 + i32.const 10256 call $~lib/number/F64.parseFloat f64.const 1.e+308 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 275 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8400 + i32.const 10304 call $~lib/number/F64.parseFloat f64.const 1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 276 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8544 + i32.const 10448 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 277 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8592 + i32.const 10496 call $~lib/number/F64.parseFloat f64.const inf f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 278 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8640 + i32.const 10544 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 279 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8688 + i32.const 10592 call $~lib/number/F64.parseFloat f64.const -inf f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 280 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8736 + i32.const 10640 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 281 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8784 + i32.const 10688 call $~lib/number/F64.parseFloat f64.const inf f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 282 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8832 + i32.const 10736 call $~lib/number/F64.parseFloat f64.const inf f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 283 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8864 + i32.const 10768 call $~lib/number/F64.parseFloat f64.const inf f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 284 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8912 + i32.const 10816 call $~lib/number/F64.parseFloat f64.const inf f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 285 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8960 + i32.const 10864 call $~lib/number/F64.parseFloat f64.const -inf f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 286 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9008 + i32.const 10912 call $~lib/number/F64.parseFloat f64.const inf f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 287 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9056 + i32.const 10960 call $~lib/number/F64.parseFloat f64.const inf f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 288 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9104 + i32.const 11008 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 289 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9136 + i32.const 11040 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 290 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9184 + i32.const 11088 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 291 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9232 + i32.const 11136 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 295 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9424 + i32.const 11328 call $~lib/number/F64.parseFloat f64.const 1e-323 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 308 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9616 + i32.const 11520 call $~lib/number/F64.parseFloat f64.const 2.225073858507202e-308 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 312 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9808 - i32.const 9968 + i32.const 11712 + i32.const 11872 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=12 local.get $0 - i32.const 10128 + i32.const 12032 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.const 10288 + i32.const 12192 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 10448 + i32.const 12352 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer @@ -14355,328 +14350,328 @@ f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 315 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10608 + i32.const 12512 call $~lib/number/F64.parseFloat f64.const 9.753531888799502e-104 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 333 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10720 + i32.const 12624 call $~lib/number/F64.parseFloat f64.const 0.5961860348131807 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 334 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10832 + i32.const 12736 call $~lib/number/F64.parseFloat f64.const 0.18150131692180388 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 335 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10944 + i32.const 12848 call $~lib/number/F64.parseFloat f64.const 0.42070823575344535 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 336 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11056 + i32.const 12960 call $~lib/number/F64.parseFloat f64.const 0.6654686306516261 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 337 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11168 + i32.const 13072 call $~lib/number/F64.parseFloat f64.const 0.6101852922970868 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 338 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11280 + i32.const 13184 call $~lib/number/F64.parseFloat f64.const 0.7696695208236968 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 339 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11392 + i32.const 13296 call $~lib/number/F64.parseFloat f64.const 0.25050653222286823 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 340 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11504 + i32.const 13408 call $~lib/number/F64.parseFloat f64.const 0.2740037230228005 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 341 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11616 + i32.const 13520 call $~lib/number/F64.parseFloat f64.const 0.20723093500497428 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 342 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11728 + i32.const 13632 call $~lib/number/F64.parseFloat f64.const 7.900280238081605 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 343 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11840 + i32.const 13744 call $~lib/number/F64.parseFloat f64.const 98.22860653737297 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 344 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11952 + i32.const 13856 call $~lib/number/F64.parseFloat f64.const 746.894972319037 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 345 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12064 + i32.const 13968 call $~lib/number/F64.parseFloat f64.const 1630.2683202827284 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 346 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12176 + i32.const 14080 call $~lib/number/F64.parseFloat f64.const 46371.68629719171 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 347 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12288 + i32.const 14192 call $~lib/number/F64.parseFloat f64.const 653780.5944497711 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 348 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12400 + i32.const 14304 call $~lib/number/F64.parseFloat f64.const 234632.43565024371 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 349 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12512 + i32.const 14416 call $~lib/number/F64.parseFloat f64.const 97094817.16420048 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 350 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12624 + i32.const 14528 call $~lib/number/F64.parseFloat f64.const 499690852.20518744 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 351 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12736 + i32.const 14640 call $~lib/number/F64.parseFloat f64.const 7925201200557245595648 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 352 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12848 + i32.const 14752 call $~lib/number/F64.parseFloat f64.const 6096564585983177528398588e5 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 353 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12960 + i32.const 14864 call $~lib/number/F64.parseFloat f64.const 4800416117477028695992383e42 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 354 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13072 + i32.const 14976 call $~lib/number/F64.parseFloat f64.const 8524829079817968137287277e80 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 355 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13184 + i32.const 15088 call $~lib/number/F64.parseFloat f64.const 3271239291709782092398754e243 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 356 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13296 + i32.const 15200 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 f64.eq if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 359 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13328 + i32.const 15232 call $~lib/number/F64.parseFloat f64.const 0.1 f64.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 360 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1808 - i32.const 13360 + i32.const 3744 + i32.const 15264 call $~lib/string/String.__concat local.tee $0 i32.store offset=60 @@ -14684,12 +14679,12 @@ local.get $0 i32.store local.get $0 - i32.const 13392 + i32.const 15296 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 364 i32.const 3 call $~lib/builtins/abort @@ -14699,24 +14694,24 @@ local.get $0 i32.store local.get $0 - i32.const 1808 + i32.const 3744 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 365 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 + i32.const 1184 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 367 i32.const 1 call $~lib/builtins/abort @@ -14731,7 +14726,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 369 i32.const 1 call $~lib/builtins/abort @@ -14740,13 +14735,13 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1712 + i32.const 1184 i32.const 0 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 371 i32.const 1 call $~lib/builtins/abort @@ -14756,518 +14751,518 @@ i32.const 0 i32.store i32.const 0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 373 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 13360 + i32.const 3744 + i32.const 15264 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 375 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1808 + i32.const 3744 + i32.const 3744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 376 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13424 - i32.const 13456 + i32.const 15328 + i32.const 15360 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 378 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13424 - i32.const 13424 + i32.const 15328 + i32.const 15328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 379 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13488 - i32.const 13520 + i32.const 15392 + i32.const 15424 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 381 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13552 - i32.const 13584 + i32.const 15456 + i32.const 15488 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 383 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13616 - i32.const 13616 + i32.const 15520 + i32.const 15520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 384 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13616 - i32.const 13664 + i32.const 15520 + i32.const 15568 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 386 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13712 - i32.const 13760 + i32.const 15616 + i32.const 15664 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 388 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13360 - i32.const 1808 + i32.const 15264 + i32.const 3744 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 390 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13808 - i32.const 1808 + i32.const 15712 + i32.const 3744 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 391 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13808 - i32.const 13840 + i32.const 15712 + i32.const 15744 call $~lib/string/String.__gte i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 392 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13808 - i32.const 13392 + i32.const 15712 + i32.const 15296 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 393 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13808 - i32.const 13392 + i32.const 15712 + i32.const 15296 call $~lib/string/String.__lt if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 394 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 1712 + i32.const 4272 + i32.const 1184 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 396 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 2336 + i32.const 1184 + i32.const 4272 call $~lib/string/String.__lt i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 397 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 1712 + i32.const 4272 + i32.const 1184 call $~lib/string/String.__gte i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 398 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 2336 + i32.const 1184 + i32.const 4272 call $~lib/string/String.__lte i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 399 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 1712 + i32.const 4272 + i32.const 1184 call $~lib/string/String.__lt if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 400 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 2336 + i32.const 1184 + i32.const 4272 call $~lib/string/String.__gt if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 401 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 + i32.const 1184 + i32.const 1184 call $~lib/string/String.__lt if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 402 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 + i32.const 1184 + i32.const 1184 call $~lib/string/String.__gt if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 403 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 + i32.const 1184 + i32.const 1184 call $~lib/string/String.__gte i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 404 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 + i32.const 1184 + i32.const 1184 call $~lib/string/String.__lte i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 405 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3456 - i32.const 13872 + i32.const 5360 + i32.const 15776 call $~lib/string/String.__lt i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 407 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13872 - i32.const 3456 + i32.const 15776 + i32.const 5360 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 408 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13872 + i32.const 15808 + i32.const 15776 call $~lib/string/String.__lt if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 409 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13872 - i32.const 13904 + i32.const 15776 + i32.const 15808 call $~lib/string/String.__gt if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 410 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13872 + i32.const 15808 + i32.const 15776 call $~lib/string/String.__gt i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 411 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13872 - i32.const 13904 + i32.const 15776 + i32.const 15808 call $~lib/string/String.__lt i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 412 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13904 + i32.const 15808 + i32.const 15808 call $~lib/string/String.__lt if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 413 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13904 + i32.const 15808 + i32.const 15808 call $~lib/string/String.__gt if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 414 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13904 + i32.const 15808 + i32.const 15808 call $~lib/string/String.__lte i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 415 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13904 + i32.const 15808 + i32.const 15808 call $~lib/string/String.__gte i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 416 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13872 - i32.const 13936 + i32.const 15776 + i32.const 15840 call $~lib/string/String.__gte if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 417 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13936 - i32.const 13872 + i32.const 15840 + i32.const 15776 call $~lib/string/String.__gte i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 418 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13872 - i32.const 13936 + i32.const 15776 + i32.const 15840 call $~lib/string/String.__lte i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 419 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3456 - i32.const 3456 + i32.const 5360 + i32.const 5360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 420 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13904 + i32.const 15808 + i32.const 15808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 421 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2400 - i32.const 2400 + i32.const 4336 + i32.const 4336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 422 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2400 - i32.const 13968 + i32.const 4336 + i32.const 15872 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 424 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14000 - i32.const 14000 + i32.const 15904 + i32.const 15904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 425 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14032 - i32.const 14000 + i32.const 15936 + i32.const 15904 call $~lib/string/String.__ne i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 427 i32.const 1 call $~lib/builtins/abort @@ -15308,13 +15303,13 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 432 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 2396 + i32.const 4332 i32.load i32.const 1 i32.shr_u @@ -15322,13 +15317,13 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 435 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 + i32.const 1184 i32.const 100 call $~lib/string/String#repeat local.set $0 @@ -15336,18 +15331,18 @@ local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 437 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 3744 i32.const 0 call $~lib/string/String#repeat local.set $0 @@ -15355,18 +15350,18 @@ local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 438 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 3744 i32.const 1 call $~lib/string/String#repeat local.set $0 @@ -15374,18 +15369,18 @@ local.get $0 i32.store local.get $0 - i32.const 1808 + i32.const 3744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 439 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 3744 i32.const 2 call $~lib/string/String#repeat local.set $0 @@ -15393,18 +15388,18 @@ local.get $0 i32.store local.get $0 - i32.const 13840 + i32.const 15744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 440 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 3744 i32.const 3 call $~lib/string/String#repeat local.set $0 @@ -15412,18 +15407,18 @@ local.get $0 i32.store local.get $0 - i32.const 14112 + i32.const 16016 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 441 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13392 + i32.const 15296 i32.const 4 call $~lib/string/String#repeat local.set $0 @@ -15431,18 +15426,18 @@ local.get $0 i32.store local.get $0 - i32.const 14144 + i32.const 16048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 442 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 3744 i32.const 5 call $~lib/string/String#repeat local.set $0 @@ -15450,18 +15445,18 @@ local.get $0 i32.store local.get $0 - i32.const 14192 + i32.const 16096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 443 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 3744 i32.const 6 call $~lib/string/String#repeat local.set $0 @@ -15469,18 +15464,18 @@ local.get $0 i32.store local.get $0 - i32.const 14224 + i32.const 16128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 444 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 3744 i32.const 7 call $~lib/string/String#repeat local.set $0 @@ -15488,785 +15483,785 @@ local.get $0 i32.store local.get $0 - i32.const 14256 + i32.const 16160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 445 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - i32.const 1712 + i32.const 1184 + i32.const 1184 + i32.const 1184 call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 447 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - i32.const 4592 + i32.const 1184 + i32.const 1184 + i32.const 6496 call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4592 + i32.const 6496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 448 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 - i32.const 4592 - i32.const 1712 + i32.const 6496 + i32.const 6496 + i32.const 1184 call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 449 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 - i32.const 1712 - i32.const 1712 + i32.const 6496 + i32.const 1184 + i32.const 1184 call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4592 + i32.const 6496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 450 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 4560 - i32.const 4592 + i32.const 4272 + i32.const 6464 + i32.const 6496 call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2336 + i32.const 4272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 451 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2336 - i32.const 4592 + i32.const 4272 + i32.const 4272 + i32.const 6496 call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4592 + i32.const 6496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 452 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2912 - i32.const 4592 + i32.const 4272 + i32.const 4848 + i32.const 6496 call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2336 + i32.const 4272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 453 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 13392 - i32.const 13392 + i32.const 4272 + i32.const 15296 + i32.const 15296 call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2336 + i32.const 4272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 454 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14304 - i32.const 4560 - i32.const 4592 + i32.const 16208 + i32.const 6464 + i32.const 6496 call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14336 + i32.const 16240 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 455 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 1712 - i32.const 4592 + i32.const 4272 + i32.const 1184 + i32.const 6496 call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14368 + i32.const 16272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 456 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14400 - i32.const 14432 - i32.const 4592 + i32.const 16304 + i32.const 16336 + i32.const 6496 call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14368 + i32.const 16272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 457 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 14464 - i32.const 14496 + i32.const 4272 + i32.const 16368 + i32.const 16400 call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14528 + i32.const 16432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 458 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 14464 - i32.const 1712 + i32.const 4272 + i32.const 16368 + i32.const 1184 call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 13392 + i32.const 15296 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 459 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - i32.const 2336 + i32.const 1184 + i32.const 1184 + i32.const 4272 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2336 + i32.const 4272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 461 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 4560 - i32.const 4592 + i32.const 4272 + i32.const 6464 + i32.const 6496 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2336 + i32.const 4272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 462 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2544 - i32.const 2336 - i32.const 4592 + i32.const 4480 + i32.const 4272 + i32.const 6496 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14496 + i32.const 16400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 464 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14560 - i32.const 2336 - i32.const 4592 + i32.const 16464 + i32.const 4272 + i32.const 6496 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14608 + i32.const 16512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 465 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2544 - i32.const 13392 - i32.const 13392 + i32.const 4480 + i32.const 15296 + i32.const 15296 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2544 + i32.const 4480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 466 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14640 - i32.const 1808 - i32.const 14608 + i32.const 16544 + i32.const 3744 + i32.const 16512 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14688 + i32.const 16592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 467 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2544 - i32.const 13392 - i32.const 14496 + i32.const 4480 + i32.const 15296 + i32.const 16400 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14736 + i32.const 16640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 468 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14768 - i32.const 14800 - i32.const 14496 + i32.const 16672 + i32.const 16704 + i32.const 16400 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14832 + i32.const 16736 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 469 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2912 - i32.const 4592 + i32.const 4272 + i32.const 4848 + i32.const 6496 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2336 + i32.const 4272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 470 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2912 - i32.const 14864 - i32.const 14496 + i32.const 4848 + i32.const 16768 + i32.const 16400 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2912 + i32.const 4848 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 471 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 14896 - i32.const 4592 + i32.const 4272 + i32.const 16800 + i32.const 6496 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14928 + i32.const 16832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 472 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13392 - i32.const 13392 - i32.const 4592 + i32.const 15296 + i32.const 15296 + i32.const 6496 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4592 + i32.const 6496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 473 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14304 - i32.const 4560 - i32.const 4592 + i32.const 16208 + i32.const 6464 + i32.const 6496 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14960 + i32.const 16864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 474 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - i32.const 1712 + i32.const 1184 + i32.const 1184 + i32.const 1184 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 476 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - i32.const 4592 + i32.const 1184 + i32.const 1184 + i32.const 6496 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4592 + i32.const 6496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 477 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 - i32.const 4592 - i32.const 1712 + i32.const 6496 + i32.const 6496 + i32.const 1184 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 478 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 - i32.const 1712 - i32.const 1712 + i32.const 6496 + i32.const 1184 + i32.const 1184 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4592 + i32.const 6496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 479 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2336 - i32.const 4560 + i32.const 4272 + i32.const 4272 + i32.const 6464 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4560 + i32.const 6464 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 480 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2816 - i32.const 4560 + i32.const 4272 + i32.const 4752 + i32.const 6464 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2336 + i32.const 4272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 481 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 1712 - i32.const 4592 + i32.const 4272 + i32.const 1184 + i32.const 6496 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14992 + i32.const 16896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 482 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 1712 - i32.const 1712 + i32.const 4272 + i32.const 1184 + i32.const 1184 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2336 + i32.const 4272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 483 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15040 - i32.const 1808 - i32.const 15072 + i32.const 16944 + i32.const 3744 + i32.const 16976 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15104 + i32.const 17008 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 486 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13392 - i32.const 13392 - i32.const 15152 + i32.const 15296 + i32.const 15296 + i32.const 17056 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15152 + i32.const 17056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 487 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14112 - i32.const 1808 - i32.const 15184 + i32.const 16016 + i32.const 3744 + i32.const 17088 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15216 + i32.const 17120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 488 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14112 - i32.const 13840 - i32.const 15072 + i32.const 16016 + i32.const 15744 + i32.const 16976 call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15264 + i32.const 17168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 489 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15296 + i32.const 17200 global.set $std/string/str global.get $~lib/memory/__stack_pointer - i32.const 15296 + i32.const 17200 i32.store offset=4 i32.const 1 global.set $~argumentsLength - i32.const 15296 + i32.const 17200 i32.const 0 call $~lib/string/String#slice@varargs local.set $0 @@ -16274,12 +16269,12 @@ local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 17200 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 493 i32.const 1 call $~lib/builtins/abort @@ -16299,12 +16294,12 @@ local.get $0 i32.store local.get $0 - i32.const 15344 + i32.const 17248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 494 i32.const 1 call $~lib/builtins/abort @@ -16324,12 +16319,12 @@ local.get $0 i32.store local.get $0 - i32.const 15376 + i32.const 17280 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 495 i32.const 1 call $~lib/builtins/abort @@ -16348,12 +16343,12 @@ local.get $0 i32.store local.get $0 - i32.const 15408 + i32.const 17312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 496 i32.const 1 call $~lib/builtins/abort @@ -16372,12 +16367,12 @@ local.get $0 i32.store local.get $0 - i32.const 15440 + i32.const 17344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 497 i32.const 1 call $~lib/builtins/abort @@ -16396,12 +16391,12 @@ local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 498 i32.const 1 call $~lib/builtins/abort @@ -16420,12 +16415,12 @@ local.get $0 i32.store local.get $0 - i32.const 15472 + i32.const 17376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 499 i32.const 1 call $~lib/builtins/abort @@ -16445,12 +16440,12 @@ local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 17200 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 501 i32.const 1 call $~lib/builtins/abort @@ -16470,12 +16465,12 @@ local.get $0 i32.store local.get $0 - i32.const 15344 + i32.const 17248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 502 i32.const 1 call $~lib/builtins/abort @@ -16495,12 +16490,12 @@ local.get $0 i32.store local.get $0 - i32.const 15376 + i32.const 17280 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 503 i32.const 1 call $~lib/builtins/abort @@ -16519,12 +16514,12 @@ local.get $0 i32.store local.get $0 - i32.const 15520 + i32.const 17424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 504 i32.const 1 call $~lib/builtins/abort @@ -16543,12 +16538,12 @@ local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 505 i32.const 1 call $~lib/builtins/abort @@ -16567,12 +16562,12 @@ local.get $0 i32.store local.get $0 - i32.const 15568 + i32.const 17472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 506 i32.const 1 call $~lib/builtins/abort @@ -16591,12 +16586,12 @@ local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 507 i32.const 1 call $~lib/builtins/abort @@ -16615,12 +16610,12 @@ local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 17200 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 508 i32.const 1 call $~lib/builtins/abort @@ -16639,12 +16634,12 @@ local.get $0 i32.store local.get $0 - i32.const 15600 + i32.const 17504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 509 i32.const 1 call $~lib/builtins/abort @@ -16663,12 +16658,12 @@ local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 510 i32.const 1 call $~lib/builtins/abort @@ -16688,12 +16683,12 @@ local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 17200 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 512 i32.const 1 call $~lib/builtins/abort @@ -16713,12 +16708,12 @@ local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 17200 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 513 i32.const 1 call $~lib/builtins/abort @@ -16738,12 +16733,12 @@ local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 17200 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 514 i32.const 1 call $~lib/builtins/abort @@ -16762,12 +16757,12 @@ local.get $0 i32.store local.get $0 - i32.const 15408 + i32.const 17312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 515 i32.const 1 call $~lib/builtins/abort @@ -16786,12 +16781,12 @@ local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 516 i32.const 1 call $~lib/builtins/abort @@ -16810,12 +16805,12 @@ local.get $0 i32.store local.get $0 - i32.const 15632 + i32.const 17536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 517 i32.const 1 call $~lib/builtins/abort @@ -16834,12 +16829,12 @@ local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 518 i32.const 1 call $~lib/builtins/abort @@ -16858,12 +16853,12 @@ local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 17200 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 519 i32.const 1 call $~lib/builtins/abort @@ -16882,12 +16877,12 @@ local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 520 i32.const 1 call $~lib/builtins/abort @@ -16906,12 +16901,12 @@ local.get $0 i32.store local.get $0 - i32.const 2912 + i32.const 4848 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 521 i32.const 1 call $~lib/builtins/abort @@ -16920,7 +16915,7 @@ i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 1712 + i32.const 1184 i32.const 0 call $~lib/string/String#split@varargs local.tee $0 @@ -16944,7 +16939,7 @@ local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq else i32.const 0 @@ -16952,7 +16947,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 527 i32.const 3 call $~lib/builtins/abort @@ -16961,8 +16956,8 @@ i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 1712 - i32.const 1712 + i32.const 1184 + i32.const 1184 call $~lib/string/String#split@varargs local.tee $0 i32.store offset=72 @@ -16973,7 +16968,7 @@ call $~lib/array/Array#get:length if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -16982,8 +16977,8 @@ i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 1712 - i32.const 2624 + i32.const 1184 + i32.const 4560 call $~lib/string/String#split@varargs local.tee $0 i32.store offset=72 @@ -17006,7 +17001,7 @@ local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq else i32.const 0 @@ -17014,7 +17009,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 531 i32.const 3 call $~lib/builtins/abort @@ -17023,8 +17018,8 @@ i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 15840 - i32.const 7632 + i32.const 17744 + i32.const 9536 call $~lib/string/String#split@varargs local.tee $0 i32.store offset=72 @@ -17047,7 +17042,7 @@ local.get $0 i32.store local.get $0 - i32.const 15840 + i32.const 17744 call $~lib/string/String.__eq else i32.const 0 @@ -17055,7 +17050,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 533 i32.const 3 call $~lib/builtins/abort @@ -17064,8 +17059,8 @@ i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 15840 - i32.const 2624 + i32.const 17744 + i32.const 4560 call $~lib/string/String#split@varargs local.tee $0 i32.store offset=72 @@ -17088,7 +17083,7 @@ local.get $4 i32.store local.get $4 - i32.const 1808 + i32.const 3744 call $~lib/string/String.__eq else i32.const 0 @@ -17105,7 +17100,7 @@ local.get $4 i32.store local.get $4 - i32.const 13360 + i32.const 15264 call $~lib/string/String.__eq else i32.const 0 @@ -17122,7 +17117,7 @@ local.get $0 i32.store local.get $0 - i32.const 14464 + i32.const 16368 call $~lib/string/String.__eq else i32.const 0 @@ -17130,7 +17125,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 535 i32.const 3 call $~lib/builtins/abort @@ -17139,8 +17134,8 @@ i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 15872 - i32.const 15920 + i32.const 17776 + i32.const 17824 call $~lib/string/String#split@varargs local.tee $0 i32.store offset=72 @@ -17163,7 +17158,7 @@ local.get $4 i32.store local.get $4 - i32.const 1808 + i32.const 3744 call $~lib/string/String.__eq else i32.const 0 @@ -17180,7 +17175,7 @@ local.get $4 i32.store local.get $4 - i32.const 13360 + i32.const 15264 call $~lib/string/String.__eq else i32.const 0 @@ -17197,7 +17192,7 @@ local.get $0 i32.store local.get $0 - i32.const 14464 + i32.const 16368 call $~lib/string/String.__eq else i32.const 0 @@ -17205,7 +17200,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 537 i32.const 3 call $~lib/builtins/abort @@ -17214,8 +17209,8 @@ i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 15952 - i32.const 2624 + i32.const 17856 + i32.const 4560 call $~lib/string/String#split@varargs local.tee $0 i32.store offset=72 @@ -17238,7 +17233,7 @@ local.get $4 i32.store local.get $4 - i32.const 1808 + i32.const 3744 call $~lib/string/String.__eq else i32.const 0 @@ -17255,7 +17250,7 @@ local.get $4 i32.store local.get $4 - i32.const 13360 + i32.const 15264 call $~lib/string/String.__eq else i32.const 0 @@ -17272,7 +17267,7 @@ local.get $4 i32.store local.get $4 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq else i32.const 0 @@ -17289,7 +17284,7 @@ local.get $0 i32.store local.get $0 - i32.const 14464 + i32.const 16368 call $~lib/string/String.__eq else i32.const 0 @@ -17297,7 +17292,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 539 i32.const 3 call $~lib/builtins/abort @@ -17306,8 +17301,8 @@ i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 15984 - i32.const 2624 + i32.const 17888 + i32.const 4560 call $~lib/string/String#split@varargs local.tee $0 i32.store offset=72 @@ -17330,7 +17325,7 @@ local.get $4 i32.store local.get $4 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq else i32.const 0 @@ -17347,7 +17342,7 @@ local.get $4 i32.store local.get $4 - i32.const 1808 + i32.const 3744 call $~lib/string/String.__eq else i32.const 0 @@ -17364,7 +17359,7 @@ local.get $4 i32.store local.get $4 - i32.const 13360 + i32.const 15264 call $~lib/string/String.__eq else i32.const 0 @@ -17381,7 +17376,7 @@ local.get $0 i32.store local.get $0 - i32.const 14464 + i32.const 16368 call $~lib/string/String.__eq else i32.const 0 @@ -17389,7 +17384,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 541 i32.const 3 call $~lib/builtins/abort @@ -17398,8 +17393,8 @@ i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 16016 - i32.const 2624 + i32.const 17920 + i32.const 4560 call $~lib/string/String#split@varargs local.tee $0 i32.store offset=72 @@ -17422,7 +17417,7 @@ local.get $4 i32.store local.get $4 - i32.const 1808 + i32.const 3744 call $~lib/string/String.__eq else i32.const 0 @@ -17439,7 +17434,7 @@ local.get $4 i32.store local.get $4 - i32.const 13360 + i32.const 15264 call $~lib/string/String.__eq else i32.const 0 @@ -17456,7 +17451,7 @@ local.get $4 i32.store local.get $4 - i32.const 14464 + i32.const 16368 call $~lib/string/String.__eq else i32.const 0 @@ -17473,7 +17468,7 @@ local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq else i32.const 0 @@ -17481,7 +17476,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 543 i32.const 3 call $~lib/builtins/abort @@ -17490,8 +17485,8 @@ i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 2336 - i32.const 1712 + i32.const 4272 + i32.const 1184 call $~lib/string/String#split@varargs local.tee $0 i32.store offset=72 @@ -17514,7 +17509,7 @@ local.get $4 i32.store local.get $4 - i32.const 1808 + i32.const 3744 call $~lib/string/String.__eq else i32.const 0 @@ -17531,7 +17526,7 @@ local.get $4 i32.store local.get $4 - i32.const 13360 + i32.const 15264 call $~lib/string/String.__eq else i32.const 0 @@ -17548,7 +17543,7 @@ local.get $0 i32.store local.get $0 - i32.const 14464 + i32.const 16368 call $~lib/string/String.__eq else i32.const 0 @@ -17556,15 +17551,15 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 545 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 2336 - i32.const 1712 + i32.const 4272 + i32.const 1184 i32.const 0 call $~lib/string/String#split local.tee $0 @@ -17576,15 +17571,15 @@ call $~lib/array/Array#get:length if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 547 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 2336 - i32.const 1712 + i32.const 4272 + i32.const 1184 i32.const 1 call $~lib/string/String#split local.tee $0 @@ -17608,7 +17603,7 @@ local.get $0 i32.store local.get $0 - i32.const 1808 + i32.const 3744 call $~lib/string/String.__eq else i32.const 0 @@ -17616,15 +17611,15 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 549 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 15840 - i32.const 2624 + i32.const 17744 + i32.const 4560 i32.const 1 call $~lib/string/String#split local.tee $0 @@ -17648,7 +17643,7 @@ local.get $0 i32.store local.get $0 - i32.const 1808 + i32.const 3744 call $~lib/string/String.__eq else i32.const 0 @@ -17656,15 +17651,15 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 551 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 2336 - i32.const 1712 + i32.const 4272 + i32.const 1184 i32.const 4 call $~lib/string/String#split local.tee $0 @@ -17688,7 +17683,7 @@ local.get $4 i32.store local.get $4 - i32.const 1808 + i32.const 3744 call $~lib/string/String.__eq else i32.const 0 @@ -17705,7 +17700,7 @@ local.get $4 i32.store local.get $4 - i32.const 13360 + i32.const 15264 call $~lib/string/String.__eq else i32.const 0 @@ -17722,7 +17717,7 @@ local.get $0 i32.store local.get $0 - i32.const 14464 + i32.const 16368 call $~lib/string/String.__eq else i32.const 0 @@ -17730,15 +17725,15 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 553 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 2336 - i32.const 1712 + i32.const 4272 + i32.const 1184 i32.const -1 call $~lib/string/String#split local.tee $0 @@ -17762,7 +17757,7 @@ local.get $4 i32.store local.get $4 - i32.const 1808 + i32.const 3744 call $~lib/string/String.__eq else i32.const 0 @@ -17779,7 +17774,7 @@ local.get $4 i32.store local.get $4 - i32.const 13360 + i32.const 15264 call $~lib/string/String.__eq else i32.const 0 @@ -17796,7 +17791,7 @@ local.get $0 i32.store local.get $0 - i32.const 14464 + i32.const 16368 call $~lib/string/String.__eq else i32.const 0 @@ -17804,15 +17799,15 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 555 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 15840 - i32.const 2624 + i32.const 17744 + i32.const 4560 i32.const -1 call $~lib/string/String#split local.tee $0 @@ -17836,7 +17831,7 @@ local.get $4 i32.store local.get $4 - i32.const 1808 + i32.const 3744 call $~lib/string/String.__eq else i32.const 0 @@ -17853,7 +17848,7 @@ local.get $4 i32.store local.get $4 - i32.const 13360 + i32.const 15264 call $~lib/string/String.__eq else i32.const 0 @@ -17870,7 +17865,7 @@ local.get $0 i32.store local.get $0 - i32.const 14464 + i32.const 16368 call $~lib/string/String.__eq else i32.const 0 @@ -17878,7 +17873,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -17892,12 +17887,12 @@ local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 1840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 562 i32.const 1 call $~lib/builtins/abort @@ -17911,12 +17906,12 @@ local.get $0 i32.store local.get $0 - i32.const 3456 + i32.const 5360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 563 i32.const 1 call $~lib/builtins/abort @@ -17930,12 +17925,12 @@ local.get $0 i32.store local.get $0 - i32.const 17792 + i32.const 17952 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 564 i32.const 1 call $~lib/builtins/abort @@ -17949,12 +17944,12 @@ local.get $0 i32.store local.get $0 - i32.const 17824 + i32.const 17984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 565 i32.const 1 call $~lib/builtins/abort @@ -17968,12 +17963,12 @@ local.get $0 i32.store local.get $0 - i32.const 2400 + i32.const 4336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 566 i32.const 1 call $~lib/builtins/abort @@ -17987,12 +17982,12 @@ local.get $0 i32.store local.get $0 - i32.const 17856 + i32.const 18016 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 567 i32.const 1 call $~lib/builtins/abort @@ -18006,12 +18001,12 @@ local.get $0 i32.store local.get $0 - i32.const 14000 + i32.const 15904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 568 i32.const 1 call $~lib/builtins/abort @@ -18025,12 +18020,12 @@ local.get $0 i32.store local.get $0 - i32.const 17888 + i32.const 18048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 569 i32.const 1 call $~lib/builtins/abort @@ -18044,12 +18039,12 @@ local.get $0 i32.store local.get $0 - i32.const 17920 + i32.const 18080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 570 i32.const 1 call $~lib/builtins/abort @@ -18063,12 +18058,12 @@ local.get $0 i32.store local.get $0 - i32.const 17952 + i32.const 18112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 571 i32.const 1 call $~lib/builtins/abort @@ -18082,12 +18077,12 @@ local.get $0 i32.store local.get $0 - i32.const 18000 + i32.const 18160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 572 i32.const 1 call $~lib/builtins/abort @@ -18101,12 +18096,12 @@ local.get $0 i32.store local.get $0 - i32.const 18048 + i32.const 18208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 573 i32.const 1 call $~lib/builtins/abort @@ -18120,12 +18115,12 @@ local.get $0 i32.store local.get $0 - i32.const 18096 + i32.const 18256 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 574 i32.const 1 call $~lib/builtins/abort @@ -18139,12 +18134,12 @@ local.get $0 i32.store local.get $0 - i32.const 18144 + i32.const 18304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 575 i32.const 1 call $~lib/builtins/abort @@ -18158,12 +18153,12 @@ local.get $0 i32.store local.get $0 - i32.const 18192 + i32.const 18352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 576 i32.const 1 call $~lib/builtins/abort @@ -18177,12 +18172,12 @@ local.get $0 i32.store local.get $0 - i32.const 18240 + i32.const 18400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 577 i32.const 1 call $~lib/builtins/abort @@ -18196,12 +18191,12 @@ local.get $0 i32.store local.get $0 - i32.const 18288 + i32.const 18448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 578 i32.const 1 call $~lib/builtins/abort @@ -18215,12 +18210,12 @@ local.get $0 i32.store local.get $0 - i32.const 18320 + i32.const 18480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 580 i32.const 1 call $~lib/builtins/abort @@ -18234,12 +18229,12 @@ local.get $0 i32.store local.get $0 - i32.const 18352 + i32.const 18512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 581 i32.const 1 call $~lib/builtins/abort @@ -18253,12 +18248,12 @@ local.get $0 i32.store local.get $0 - i32.const 18240 + i32.const 18400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 582 i32.const 1 call $~lib/builtins/abort @@ -18272,12 +18267,12 @@ local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 1840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 584 i32.const 1 call $~lib/builtins/abort @@ -18291,12 +18286,12 @@ local.get $0 i32.store local.get $0 - i32.const 18384 + i32.const 18544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 585 i32.const 1 call $~lib/builtins/abort @@ -18310,12 +18305,12 @@ local.get $0 i32.store local.get $0 - i32.const 18192 + i32.const 18352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 586 i32.const 1 call $~lib/builtins/abort @@ -18329,12 +18324,12 @@ local.get $0 i32.store local.get $0 - i32.const 18416 + i32.const 18576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 587 i32.const 1 call $~lib/builtins/abort @@ -18348,12 +18343,12 @@ local.get $0 i32.store local.get $0 - i32.const 18464 + i32.const 18624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 588 i32.const 1 call $~lib/builtins/abort @@ -18367,12 +18362,12 @@ local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 1840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 592 i32.const 1 call $~lib/builtins/abort @@ -18386,12 +18381,12 @@ local.get $0 i32.store local.get $0 - i32.const 3456 + i32.const 5360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 593 i32.const 1 call $~lib/builtins/abort @@ -18405,12 +18400,12 @@ local.get $0 i32.store local.get $0 - i32.const 17792 + i32.const 17952 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 594 i32.const 1 call $~lib/builtins/abort @@ -18424,12 +18419,12 @@ local.get $0 i32.store local.get $0 - i32.const 14464 + i32.const 16368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 595 i32.const 1 call $~lib/builtins/abort @@ -18443,12 +18438,12 @@ local.get $0 i32.store local.get $0 - i32.const 18512 + i32.const 18672 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 596 i32.const 1 call $~lib/builtins/abort @@ -18462,12 +18457,12 @@ local.get $0 i32.store local.get $0 - i32.const 18544 + i32.const 18704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 597 i32.const 1 call $~lib/builtins/abort @@ -18481,12 +18476,12 @@ local.get $0 i32.store local.get $0 - i32.const 18576 + i32.const 18736 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 598 i32.const 1 call $~lib/builtins/abort @@ -18500,12 +18495,12 @@ local.get $0 i32.store local.get $0 - i32.const 18608 + i32.const 18768 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 599 i32.const 1 call $~lib/builtins/abort @@ -18519,12 +18514,12 @@ local.get $0 i32.store local.get $0 - i32.const 18640 + i32.const 18800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 600 i32.const 1 call $~lib/builtins/abort @@ -18538,12 +18533,12 @@ local.get $0 i32.store local.get $0 - i32.const 18672 + i32.const 18832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 601 i32.const 1 call $~lib/builtins/abort @@ -18557,12 +18552,12 @@ local.get $0 i32.store local.get $0 - i32.const 18704 + i32.const 18864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 602 i32.const 1 call $~lib/builtins/abort @@ -18576,12 +18571,12 @@ local.get $0 i32.store local.get $0 - i32.const 18736 + i32.const 18896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 603 i32.const 1 call $~lib/builtins/abort @@ -18595,12 +18590,12 @@ local.get $0 i32.store local.get $0 - i32.const 18784 + i32.const 18944 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 604 i32.const 1 call $~lib/builtins/abort @@ -18614,12 +18609,12 @@ local.get $0 i32.store local.get $0 - i32.const 18832 + i32.const 18992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 605 i32.const 1 call $~lib/builtins/abort @@ -18633,12 +18628,12 @@ local.get $0 i32.store local.get $0 - i32.const 18880 + i32.const 19040 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 606 i32.const 1 call $~lib/builtins/abort @@ -18652,12 +18647,12 @@ local.get $0 i32.store local.get $0 - i32.const 18928 + i32.const 19088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 607 i32.const 1 call $~lib/builtins/abort @@ -18671,12 +18666,12 @@ local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 1840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 609 i32.const 1 call $~lib/builtins/abort @@ -18690,12 +18685,12 @@ local.get $0 i32.store local.get $0 - i32.const 17856 + i32.const 18016 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 610 i32.const 1 call $~lib/builtins/abort @@ -18709,12 +18704,12 @@ local.get $0 i32.store local.get $0 - i32.const 18832 + i32.const 18992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 611 i32.const 1 call $~lib/builtins/abort @@ -18728,12 +18723,12 @@ local.get $0 i32.store local.get $0 - i32.const 18976 + i32.const 19136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 612 i32.const 1 call $~lib/builtins/abort @@ -18747,12 +18742,12 @@ local.get $0 i32.store local.get $0 - i32.const 19024 + i32.const 19184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 613 i32.const 1 call $~lib/builtins/abort @@ -18766,12 +18761,12 @@ local.get $0 i32.store local.get $0 - i32.const 19072 + i32.const 19232 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 614 i32.const 1 call $~lib/builtins/abort @@ -18785,12 +18780,12 @@ local.get $0 i32.store local.get $0 - i32.const 19072 + i32.const 19232 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 615 i32.const 1 call $~lib/builtins/abort @@ -18804,12 +18799,12 @@ local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 1840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 619 i32.const 1 call $~lib/builtins/abort @@ -18823,12 +18818,12 @@ local.get $0 i32.store local.get $0 - i32.const 3456 + i32.const 5360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 620 i32.const 1 call $~lib/builtins/abort @@ -18842,12 +18837,12 @@ local.get $0 i32.store local.get $0 - i32.const 13904 + i32.const 15808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 621 i32.const 1 call $~lib/builtins/abort @@ -18861,12 +18856,12 @@ local.get $0 i32.store local.get $0 - i32.const 19120 + i32.const 19280 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 622 i32.const 1 call $~lib/builtins/abort @@ -18880,12 +18875,12 @@ local.get $0 i32.store local.get $0 - i32.const 19152 + i32.const 19312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 623 i32.const 1 call $~lib/builtins/abort @@ -18899,12 +18894,12 @@ local.get $0 i32.store local.get $0 - i32.const 19184 + i32.const 19344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 624 i32.const 1 call $~lib/builtins/abort @@ -18918,12 +18913,12 @@ local.get $0 i32.store local.get $0 - i32.const 19216 + i32.const 19376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 625 i32.const 1 call $~lib/builtins/abort @@ -18937,12 +18932,12 @@ local.get $0 i32.store local.get $0 - i32.const 19248 + i32.const 19408 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 626 i32.const 1 call $~lib/builtins/abort @@ -18956,12 +18951,12 @@ local.get $0 i32.store local.get $0 - i32.const 19296 + i32.const 19456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 627 i32.const 1 call $~lib/builtins/abort @@ -18975,12 +18970,12 @@ local.get $0 i32.store local.get $0 - i32.const 19376 + i32.const 19536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 628 i32.const 1 call $~lib/builtins/abort @@ -18994,12 +18989,12 @@ local.get $0 i32.store local.get $0 - i32.const 19472 + i32.const 19632 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 629 i32.const 1 call $~lib/builtins/abort @@ -19013,12 +19008,12 @@ local.get $0 i32.store local.get $0 - i32.const 19568 + i32.const 19728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 630 i32.const 1 call $~lib/builtins/abort @@ -19032,12 +19027,12 @@ local.get $0 i32.store local.get $0 - i32.const 19664 + i32.const 19824 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 631 i32.const 1 call $~lib/builtins/abort @@ -19051,12 +19046,12 @@ local.get $0 i32.store local.get $0 - i32.const 19760 + i32.const 19920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 633 i32.const 1 call $~lib/builtins/abort @@ -19070,12 +19065,12 @@ local.get $0 i32.store local.get $0 - i32.const 19808 + i32.const 19968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 637 i32.const 1 call $~lib/builtins/abort @@ -19089,12 +19084,12 @@ local.get $0 i32.store local.get $0 - i32.const 19872 + i32.const 20032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 638 i32.const 1 call $~lib/builtins/abort @@ -19108,12 +19103,12 @@ local.get $0 i32.store local.get $0 - i32.const 19936 + i32.const 20096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 639 i32.const 1 call $~lib/builtins/abort @@ -19127,12 +19122,12 @@ local.get $0 i32.store local.get $0 - i32.const 19984 + i32.const 20144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 640 i32.const 1 call $~lib/builtins/abort @@ -19146,12 +19141,12 @@ local.get $0 i32.store local.get $0 - i32.const 20032 + i32.const 20192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 641 i32.const 1 call $~lib/builtins/abort @@ -19165,12 +19160,12 @@ local.get $0 i32.store local.get $0 - i32.const 20080 + i32.const 20240 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 642 i32.const 1 call $~lib/builtins/abort @@ -19184,12 +19179,12 @@ local.get $0 i32.store local.get $0 - i32.const 20128 + i32.const 20288 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 643 i32.const 1 call $~lib/builtins/abort @@ -19203,12 +19198,12 @@ local.get $0 i32.store local.get $0 - i32.const 20176 + i32.const 20336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 644 i32.const 1 call $~lib/builtins/abort @@ -19222,12 +19217,12 @@ local.get $0 i32.store local.get $0 - i32.const 20224 + i32.const 20384 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 645 i32.const 1 call $~lib/builtins/abort @@ -19241,12 +19236,12 @@ local.get $0 i32.store local.get $0 - i32.const 20272 + i32.const 20432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 646 i32.const 1 call $~lib/builtins/abort @@ -19260,12 +19255,12 @@ local.get $0 i32.store local.get $0 - i32.const 20320 + i32.const 20480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 647 i32.const 1 call $~lib/builtins/abort @@ -19279,12 +19274,12 @@ local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 1840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 651 i32.const 1 call $~lib/builtins/abort @@ -19298,12 +19293,12 @@ local.get $0 i32.store local.get $0 - i32.const 17824 + i32.const 17984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 652 i32.const 1 call $~lib/builtins/abort @@ -19317,12 +19312,12 @@ local.get $0 i32.store local.get $0 - i32.const 2400 + i32.const 4336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 653 i32.const 1 call $~lib/builtins/abort @@ -19336,12 +19331,12 @@ local.get $0 i32.store local.get $0 - i32.const 14000 + i32.const 15904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 654 i32.const 1 call $~lib/builtins/abort @@ -19355,12 +19350,12 @@ local.get $0 i32.store local.get $0 - i32.const 17888 + i32.const 18048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 655 i32.const 1 call $~lib/builtins/abort @@ -19374,12 +19369,12 @@ local.get $0 i32.store local.get $0 - i32.const 17920 + i32.const 18080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 656 i32.const 1 call $~lib/builtins/abort @@ -19393,12 +19388,12 @@ local.get $0 i32.store local.get $0 - i32.const 18000 + i32.const 18160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 657 i32.const 1 call $~lib/builtins/abort @@ -19412,12 +19407,12 @@ local.get $0 i32.store local.get $0 - i32.const 20368 + i32.const 20528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 658 i32.const 1 call $~lib/builtins/abort @@ -19431,12 +19426,12 @@ local.get $0 i32.store local.get $0 - i32.const 20416 + i32.const 20576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 659 i32.const 1 call $~lib/builtins/abort @@ -19450,12 +19445,12 @@ local.get $0 i32.store local.get $0 - i32.const 18464 + i32.const 18624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 660 i32.const 1 call $~lib/builtins/abort @@ -19469,12 +19464,12 @@ local.get $0 i32.store local.get $0 - i32.const 20464 + i32.const 20624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 661 i32.const 1 call $~lib/builtins/abort @@ -19488,12 +19483,12 @@ local.get $0 i32.store local.get $0 - i32.const 20512 + i32.const 20672 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 662 i32.const 1 call $~lib/builtins/abort @@ -19507,12 +19502,12 @@ local.get $0 i32.store local.get $0 - i32.const 20560 + i32.const 20720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 663 i32.const 1 call $~lib/builtins/abort @@ -19526,12 +19521,12 @@ local.get $0 i32.store local.get $0 - i32.const 20608 + i32.const 20768 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 664 i32.const 1 call $~lib/builtins/abort @@ -19545,12 +19540,12 @@ local.get $0 i32.store local.get $0 - i32.const 20656 + i32.const 20816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 665 i32.const 1 call $~lib/builtins/abort @@ -19564,12 +19559,12 @@ local.get $0 i32.store local.get $0 - i32.const 20704 + i32.const 20864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 666 i32.const 1 call $~lib/builtins/abort @@ -19583,12 +19578,12 @@ local.get $0 i32.store local.get $0 - i32.const 20768 + i32.const 20928 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 667 i32.const 1 call $~lib/builtins/abort @@ -19602,12 +19597,12 @@ local.get $0 i32.store local.get $0 - i32.const 20832 + i32.const 20992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 668 i32.const 1 call $~lib/builtins/abort @@ -19621,12 +19616,12 @@ local.get $0 i32.store local.get $0 - i32.const 20896 + i32.const 21056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 669 i32.const 1 call $~lib/builtins/abort @@ -19640,12 +19635,12 @@ local.get $0 i32.store local.get $0 - i32.const 20960 + i32.const 21120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 670 i32.const 1 call $~lib/builtins/abort @@ -19659,12 +19654,12 @@ local.get $0 i32.store local.get $0 - i32.const 21024 + i32.const 21184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 671 i32.const 1 call $~lib/builtins/abort @@ -19678,12 +19673,12 @@ local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 1840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 673 i32.const 1 call $~lib/builtins/abort @@ -19697,12 +19692,12 @@ local.get $0 i32.store local.get $0 - i32.const 21088 + i32.const 21248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 674 i32.const 1 call $~lib/builtins/abort @@ -19716,12 +19711,12 @@ local.get $0 i32.store local.get $0 - i32.const 18464 + i32.const 18624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 675 i32.const 1 call $~lib/builtins/abort @@ -19735,12 +19730,12 @@ local.get $0 i32.store local.get $0 - i32.const 20464 + i32.const 20624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 676 i32.const 1 call $~lib/builtins/abort @@ -19754,12 +19749,12 @@ local.get $0 i32.store local.get $0 - i32.const 21120 + i32.const 21280 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 677 i32.const 1 call $~lib/builtins/abort @@ -19773,12 +19768,12 @@ local.get $0 i32.store local.get $0 - i32.const 20512 + i32.const 20672 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 678 i32.const 1 call $~lib/builtins/abort @@ -19792,12 +19787,12 @@ local.get $0 i32.store local.get $0 - i32.const 21168 + i32.const 21328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 679 i32.const 1 call $~lib/builtins/abort @@ -19811,12 +19806,12 @@ local.get $0 i32.store local.get $0 - i32.const 21216 + i32.const 21376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 680 i32.const 1 call $~lib/builtins/abort @@ -19830,12 +19825,12 @@ local.get $0 i32.store local.get $0 - i32.const 21264 + i32.const 21424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 681 i32.const 1 call $~lib/builtins/abort @@ -19849,12 +19844,12 @@ local.get $0 i32.store local.get $0 - i32.const 21328 + i32.const 21488 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 682 i32.const 1 call $~lib/builtins/abort @@ -19868,12 +19863,12 @@ local.get $0 i32.store local.get $0 - i32.const 21392 + i32.const 21552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 683 i32.const 1 call $~lib/builtins/abort @@ -19887,12 +19882,12 @@ local.get $0 i32.store local.get $0 - i32.const 21456 + i32.const 21616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 684 i32.const 1 call $~lib/builtins/abort @@ -19906,12 +19901,12 @@ local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 1840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 688 i32.const 1 call $~lib/builtins/abort @@ -19925,12 +19920,12 @@ local.get $0 i32.store local.get $0 - i32.const 3456 + i32.const 5360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 689 i32.const 1 call $~lib/builtins/abort @@ -19944,12 +19939,12 @@ local.get $0 i32.store local.get $0 - i32.const 14464 + i32.const 16368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 690 i32.const 1 call $~lib/builtins/abort @@ -19963,12 +19958,12 @@ local.get $0 i32.store local.get $0 - i32.const 18544 + i32.const 18704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 691 i32.const 1 call $~lib/builtins/abort @@ -19982,12 +19977,12 @@ local.get $0 i32.store local.get $0 - i32.const 18640 + i32.const 18800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 692 i32.const 1 call $~lib/builtins/abort @@ -20001,12 +19996,12 @@ local.get $0 i32.store local.get $0 - i32.const 21520 + i32.const 21680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 693 i32.const 1 call $~lib/builtins/abort @@ -20020,12 +20015,12 @@ local.get $0 i32.store local.get $0 - i32.const 21568 + i32.const 21728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 694 i32.const 1 call $~lib/builtins/abort @@ -20039,12 +20034,12 @@ local.get $0 i32.store local.get $0 - i32.const 21616 + i32.const 21776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 695 i32.const 1 call $~lib/builtins/abort @@ -20058,12 +20053,12 @@ local.get $0 i32.store local.get $0 - i32.const 21664 + i32.const 21824 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 696 i32.const 1 call $~lib/builtins/abort @@ -20077,12 +20072,12 @@ local.get $0 i32.store local.get $0 - i32.const 21712 + i32.const 21872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 697 i32.const 1 call $~lib/builtins/abort @@ -20096,12 +20091,12 @@ local.get $0 i32.store local.get $0 - i32.const 21760 + i32.const 21920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 698 i32.const 1 call $~lib/builtins/abort @@ -20115,12 +20110,12 @@ local.get $0 i32.store local.get $0 - i32.const 21824 + i32.const 21984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 699 i32.const 1 call $~lib/builtins/abort @@ -20134,12 +20129,12 @@ local.get $0 i32.store local.get $0 - i32.const 21888 + i32.const 22048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 700 i32.const 1 call $~lib/builtins/abort @@ -20153,12 +20148,12 @@ local.get $0 i32.store local.get $0 - i32.const 21952 + i32.const 22112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 701 i32.const 1 call $~lib/builtins/abort @@ -20172,12 +20167,12 @@ local.get $0 i32.store local.get $0 - i32.const 22016 + i32.const 22176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 703 i32.const 1 call $~lib/builtins/abort @@ -20191,12 +20186,12 @@ local.get $0 i32.store local.get $0 - i32.const 22080 + i32.const 22240 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 704 i32.const 1 call $~lib/builtins/abort @@ -20210,12 +20205,12 @@ local.get $0 i32.store local.get $0 - i32.const 22080 + i32.const 22240 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 705 i32.const 1 call $~lib/builtins/abort @@ -20229,12 +20224,12 @@ local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 1840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 709 i32.const 1 call $~lib/builtins/abort @@ -20248,12 +20243,12 @@ local.get $0 i32.store local.get $0 - i32.const 3456 + i32.const 5360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 710 i32.const 1 call $~lib/builtins/abort @@ -20267,12 +20262,12 @@ local.get $0 i32.store local.get $0 - i32.const 19120 + i32.const 19280 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 711 i32.const 1 call $~lib/builtins/abort @@ -20286,12 +20281,12 @@ local.get $0 i32.store local.get $0 - i32.const 19152 + i32.const 19312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 712 i32.const 1 call $~lib/builtins/abort @@ -20305,12 +20300,12 @@ local.get $0 i32.store local.get $0 - i32.const 19216 + i32.const 19376 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 713 i32.const 1 call $~lib/builtins/abort @@ -20324,12 +20319,12 @@ local.get $0 i32.store local.get $0 - i32.const 19248 + i32.const 19408 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 714 i32.const 1 call $~lib/builtins/abort @@ -20343,12 +20338,12 @@ local.get $0 i32.store local.get $0 - i32.const 19664 + i32.const 19824 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 715 i32.const 1 call $~lib/builtins/abort @@ -20362,12 +20357,12 @@ local.get $0 i32.store local.get $0 - i32.const 22144 + i32.const 22304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 716 i32.const 1 call $~lib/builtins/abort @@ -20381,12 +20376,12 @@ local.get $0 i32.store local.get $0 - i32.const 22272 + i32.const 22432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 717 i32.const 1 call $~lib/builtins/abort @@ -20400,12 +20395,12 @@ local.get $0 i32.store local.get $0 - i32.const 22432 + i32.const 22592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 719 i32.const 1 call $~lib/builtins/abort @@ -20419,12 +20414,12 @@ local.get $0 i32.store local.get $0 - i32.const 22528 + i32.const 22688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 723 i32.const 1 call $~lib/builtins/abort @@ -20438,12 +20433,12 @@ local.get $0 i32.store local.get $0 - i32.const 22640 + i32.const 22800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 724 i32.const 1 call $~lib/builtins/abort @@ -20457,12 +20452,12 @@ local.get $0 i32.store local.get $0 - i32.const 22736 + i32.const 22896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 725 i32.const 1 call $~lib/builtins/abort @@ -20476,12 +20471,12 @@ local.get $0 i32.store local.get $0 - i32.const 22816 + i32.const 22976 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 726 i32.const 1 call $~lib/builtins/abort @@ -20495,12 +20490,12 @@ local.get $0 i32.store local.get $0 - i32.const 22880 + i32.const 23040 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 727 i32.const 1 call $~lib/builtins/abort @@ -20514,12 +20509,12 @@ local.get $0 i32.store local.get $0 - i32.const 22944 + i32.const 23104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 728 i32.const 1 call $~lib/builtins/abort @@ -20533,12 +20528,12 @@ local.get $0 i32.store local.get $0 - i32.const 23008 + i32.const 23168 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 729 i32.const 1 call $~lib/builtins/abort @@ -20552,12 +20547,12 @@ local.get $0 i32.store local.get $0 - i32.const 23072 + i32.const 23232 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 730 i32.const 1 call $~lib/builtins/abort @@ -20571,12 +20566,12 @@ local.get $0 i32.store local.get $0 - i32.const 23136 + i32.const 23296 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 731 i32.const 1 call $~lib/builtins/abort @@ -20590,12 +20585,12 @@ local.get $0 i32.store local.get $0 - i32.const 23184 + i32.const 23344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 732 i32.const 1 call $~lib/builtins/abort @@ -20609,12 +20604,12 @@ local.get $0 i32.store local.get $0 - i32.const 23232 + i32.const 23392 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 733 i32.const 1 call $~lib/builtins/abort @@ -20627,12 +20622,12 @@ local.get $0 i32.store local.get $0 - i32.const 23280 + i32.const 23440 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 736 i32.const 1 call $~lib/builtins/abort @@ -20645,12 +20640,12 @@ local.get $0 i32.store local.get $0 - i32.const 23280 + i32.const 23440 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 737 i32.const 1 call $~lib/builtins/abort @@ -20663,12 +20658,12 @@ local.get $0 i32.store local.get $0 - i32.const 7696 + i32.const 9600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 738 i32.const 1 call $~lib/builtins/abort @@ -20681,12 +20676,12 @@ local.get $0 i32.store local.get $0 - i32.const 23312 + i32.const 23472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 739 i32.const 1 call $~lib/builtins/abort @@ -20699,12 +20694,12 @@ local.get $0 i32.store local.get $0 - i32.const 8960 + i32.const 10864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 740 i32.const 1 call $~lib/builtins/abort @@ -20717,12 +20712,12 @@ local.get $0 i32.store local.get $0 - i32.const 8176 + i32.const 10080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 741 i32.const 1 call $~lib/builtins/abort @@ -20735,12 +20730,12 @@ local.get $0 i32.store local.get $0 - i32.const 24336 + i32.const 24496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 742 i32.const 1 call $~lib/builtins/abort @@ -20753,12 +20748,12 @@ local.get $0 i32.store local.get $0 - i32.const 8240 + i32.const 10144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 743 i32.const 1 call $~lib/builtins/abort @@ -20771,12 +20766,12 @@ local.get $0 i32.store local.get $0 - i32.const 24400 + i32.const 24560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 744 i32.const 1 call $~lib/builtins/abort @@ -20789,12 +20784,12 @@ local.get $0 i32.store local.get $0 - i32.const 24480 + i32.const 24640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 745 i32.const 1 call $~lib/builtins/abort @@ -20807,12 +20802,12 @@ local.get $0 i32.store local.get $0 - i32.const 24528 + i32.const 24688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 746 i32.const 1 call $~lib/builtins/abort @@ -20825,12 +20820,12 @@ local.get $0 i32.store local.get $0 - i32.const 24576 + i32.const 24736 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 747 i32.const 1 call $~lib/builtins/abort @@ -20843,12 +20838,12 @@ local.get $0 i32.store local.get $0 - i32.const 24624 + i32.const 24784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 748 i32.const 1 call $~lib/builtins/abort @@ -20861,12 +20856,12 @@ local.get $0 i32.store local.get $0 - i32.const 24672 + i32.const 24832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 749 i32.const 1 call $~lib/builtins/abort @@ -20879,12 +20874,12 @@ local.get $0 i32.store local.get $0 - i32.const 24736 + i32.const 24896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 750 i32.const 1 call $~lib/builtins/abort @@ -20897,12 +20892,12 @@ local.get $0 i32.store local.get $0 - i32.const 24816 + i32.const 24976 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 751 i32.const 1 call $~lib/builtins/abort @@ -20915,12 +20910,12 @@ local.get $0 i32.store local.get $0 - i32.const 24864 + i32.const 25024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 752 i32.const 1 call $~lib/builtins/abort @@ -20933,12 +20928,12 @@ local.get $0 i32.store local.get $0 - i32.const 24928 + i32.const 25088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 753 i32.const 1 call $~lib/builtins/abort @@ -20951,12 +20946,12 @@ local.get $0 i32.store local.get $0 - i32.const 24992 + i32.const 25152 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 754 i32.const 1 call $~lib/builtins/abort @@ -20969,12 +20964,12 @@ local.get $0 i32.store local.get $0 - i32.const 8320 + i32.const 10224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 755 i32.const 1 call $~lib/builtins/abort @@ -20987,12 +20982,12 @@ local.get $0 i32.store local.get $0 - i32.const 25056 + i32.const 25216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 757 i32.const 1 call $~lib/builtins/abort @@ -21005,12 +21000,12 @@ local.get $0 i32.store local.get $0 - i32.const 5280 + i32.const 7184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 758 i32.const 1 call $~lib/builtins/abort @@ -21023,12 +21018,12 @@ local.get $0 i32.store local.get $0 - i32.const 25088 + i32.const 25248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 759 i32.const 1 call $~lib/builtins/abort @@ -21041,12 +21036,12 @@ local.get $0 i32.store local.get $0 - i32.const 25120 + i32.const 25280 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 760 i32.const 1 call $~lib/builtins/abort @@ -21059,12 +21054,12 @@ local.get $0 i32.store local.get $0 - i32.const 25152 + i32.const 25312 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 762 i32.const 1 call $~lib/builtins/abort @@ -21077,12 +21072,12 @@ local.get $0 i32.store local.get $0 - i32.const 25200 + i32.const 25360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 763 i32.const 1 call $~lib/builtins/abort @@ -21095,12 +21090,12 @@ local.get $0 i32.store local.get $0 - i32.const 25248 + i32.const 25408 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 764 i32.const 1 call $~lib/builtins/abort @@ -21113,12 +21108,12 @@ local.get $0 i32.store local.get $0 - i32.const 25296 + i32.const 25456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 765 i32.const 1 call $~lib/builtins/abort @@ -21131,12 +21126,12 @@ local.get $0 i32.store local.get $0 - i32.const 25344 + i32.const 25504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 766 i32.const 1 call $~lib/builtins/abort @@ -21149,12 +21144,12 @@ local.get $0 i32.store local.get $0 - i32.const 25392 + i32.const 25552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 767 i32.const 1 call $~lib/builtins/abort @@ -21167,12 +21162,12 @@ local.get $0 i32.store local.get $0 - i32.const 5568 + i32.const 7472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 769 i32.const 1 call $~lib/builtins/abort @@ -21185,12 +21180,12 @@ local.get $0 i32.store local.get $0 - i32.const 25424 + i32.const 25584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 770 i32.const 1 call $~lib/builtins/abort @@ -21203,12 +21198,12 @@ local.get $0 i32.store local.get $0 - i32.const 23312 + i32.const 23472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 771 i32.const 1 call $~lib/builtins/abort @@ -21221,12 +21216,12 @@ local.get $0 i32.store local.get $0 - i32.const 8960 + i32.const 10864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 772 i32.const 1 call $~lib/builtins/abort @@ -21239,12 +21234,12 @@ local.get $0 i32.store local.get $0 - i32.const 25472 + i32.const 25632 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 773 i32.const 1 call $~lib/builtins/abort @@ -21257,12 +21252,12 @@ local.get $0 i32.store local.get $0 - i32.const 25504 + i32.const 25664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 774 i32.const 1 call $~lib/builtins/abort @@ -21275,12 +21270,12 @@ local.get $0 i32.store local.get $0 - i32.const 25552 + i32.const 25712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 775 i32.const 1 call $~lib/builtins/abort @@ -21293,12 +21288,12 @@ local.get $0 i32.store local.get $0 - i32.const 25584 + i32.const 25744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 776 i32.const 1 call $~lib/builtins/abort @@ -21311,12 +21306,12 @@ local.get $0 i32.store local.get $0 - i32.const 23280 + i32.const 23440 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 777 i32.const 1 call $~lib/builtins/abort @@ -21327,7 +21322,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -21346,7 +21341,7 @@ local.tee $4 i32.store local.get $4 - i32.const 23344 + i32.const 23504 local.get $0 memory.copy global.get $~lib/memory/__stack_pointer @@ -21357,12 +21352,12 @@ local.get $4 i32.store local.get $4 - i32.const 25632 + i32.const 25792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 779 i32.const 1 call $~lib/builtins/abort @@ -21375,12 +21370,12 @@ local.get $0 i32.store local.get $0 - i32.const 25680 + i32.const 25840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 780 i32.const 1 call $~lib/builtins/abort @@ -21393,12 +21388,12 @@ local.get $0 i32.store local.get $0 - i32.const 25744 + i32.const 25904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 781 i32.const 1 call $~lib/builtins/abort @@ -21411,12 +21406,12 @@ local.get $0 i32.store local.get $0 - i32.const 25808 + i32.const 25968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 782 i32.const 1 call $~lib/builtins/abort @@ -21429,12 +21424,12 @@ local.get $0 i32.store local.get $0 - i32.const 25056 + i32.const 25216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 783 i32.const 1 call $~lib/builtins/abort @@ -21447,12 +21442,12 @@ local.get $0 i32.store local.get $0 - i32.const 25872 + i32.const 26032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 784 i32.const 1 call $~lib/builtins/abort @@ -21465,12 +21460,12 @@ local.get $0 i32.store local.get $0 - i32.const 25904 + i32.const 26064 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 785 i32.const 1 call $~lib/builtins/abort @@ -21483,12 +21478,12 @@ local.get $0 i32.store local.get $0 - i32.const 25968 + i32.const 26128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 786 i32.const 1 call $~lib/builtins/abort @@ -21501,12 +21496,12 @@ local.get $0 i32.store local.get $0 - i32.const 26048 + i32.const 26208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 787 i32.const 1 call $~lib/builtins/abort @@ -21519,12 +21514,12 @@ local.get $0 i32.store local.get $0 - i32.const 26096 + i32.const 26256 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 788 i32.const 1 call $~lib/builtins/abort @@ -21537,12 +21532,12 @@ local.get $0 i32.store local.get $0 - i32.const 26144 + i32.const 26304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 789 i32.const 1 call $~lib/builtins/abort @@ -21555,12 +21550,12 @@ local.get $0 i32.store local.get $0 - i32.const 26192 + i32.const 26352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 790 i32.const 1 call $~lib/builtins/abort @@ -21573,12 +21568,12 @@ local.get $0 i32.store local.get $0 - i32.const 26240 + i32.const 26400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 791 i32.const 1 call $~lib/builtins/abort @@ -21591,12 +21586,12 @@ local.get $0 i32.store local.get $0 - i32.const 26288 + i32.const 26448 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 792 i32.const 1 call $~lib/builtins/abort @@ -21609,136 +21604,136 @@ local.get $0 i32.store local.get $0 - i32.const 26336 + i32.const 26496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 793 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26384 - i32.const 26416 + i32.const 26544 + i32.const 26576 call $~lib/string/String#concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26448 + i32.const 26608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 820 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 26496 + i32.const 1184 + i32.const 26656 call $~lib/string/String#concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26496 + i32.const 26656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 821 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26496 - i32.const 1712 + i32.const 26656 + i32.const 1184 call $~lib/string/String#concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26496 + i32.const 26656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 822 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 + i32.const 1184 + i32.const 1184 call $~lib/string/String#concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 823 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26528 - i32.const 26528 + i32.const 26688 + i32.const 26688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 831 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26528 - i32.const 26528 + i32.const 26688 + i32.const 26688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 832 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26560 - i32.const 26560 + i32.const 26720 + i32.const 26720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 833 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26592 - i32.const 26592 + i32.const 26752 + i32.const 26752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 834 i32.const 1 call $~lib/builtins/abort @@ -21746,7 +21741,7 @@ end i32.const 0 global.set $std/string/str - i32.const 59404 + i32.const 59564 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 @@ -21787,215 +21782,29 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~lib/string/String.fromCharCode (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2 - local.get $1 - i32.const 0 - i32.gt_s - local.tee $3 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.get $0 - i32.store16 - local.get $3 - if - local.get $2 - local.get $1 - i32.store16 offset=2 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - i32.shl - local.tee $4 - i32.const 1 - call $~lib/rt/itcms/__new - local.set $3 - local.get $2 - if - local.get $3 - local.get $2 - local.get $4 - memory.copy - end - local.get $3 - i32.store - i32.const 16 - local.get $1 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $3 - i32.store - local.get $1 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $3 - i32.store offset=4 - local.get $1 - local.get $4 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2 - local.get $0 - i32.const 65535 - i32.gt_u - local.tee $2 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $2 - if - local.get $0 - i32.const 1114111 - i32.gt_u - if - i32.const 0 - i32.const 1328 - i32.const 39 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.const 65536 - i32.sub - local.tee $0 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.get $0 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - i32.const 16 - i32.shl - i32.or - i32.store - else - local.get $1 - local.get $0 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/util/number/itoa32 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i64) - (local $4 i32) + (local $4 i64) (local $5 i64) - (local $6 i64) - (local $7 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 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22012,9 +21821,9 @@ i32.gt_s i32.or if - i32.const 16048 - i32.const 16176 - i32.const 373 + i32.const 1648 + i32.const 1776 + i32.const 350 i32.const 5 call $~lib/builtins/abort unreachable @@ -22026,67 +21835,55 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 3392 + i32.const 1840 return end - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - i32.const 1 - i32.shl - local.tee $4 - select - local.set $2 local.get $1 i32.const 10 i32.eq if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $2 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add @@ -22095,16 +21892,12 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 - i32.add i32.const 2 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store - local.get $0 - local.get $4 - i32.add local.get $2 + local.get $0 local.get $1 call $~lib/util/number/utoa32_dec_lut else @@ -22114,7 +21907,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 31 - local.get $2 + local.get $0 i32.clz i32.sub i32.const 2 @@ -22124,17 +21917,11 @@ local.tee $1 i32.const 1 i32.shl - local.get $4 - i32.add i32.const 2 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store local.get $0 - local.get $4 - i32.add - local.set $7 - local.get $2 i64.extend_i32_u local.set $3 loop $while-continue|0 @@ -22142,7 +21929,7 @@ i32.const 2 i32.ge_u if - local.get $7 + local.get $2 local.get $1 i32.const 2 i32.sub @@ -22156,7 +21943,7 @@ i32.and i32.const 2 i32.shl - i32.const 16640 + i32.const 2272 i32.add i32.load i32.store @@ -22171,29 +21958,29 @@ i32.const 1 i32.and if - local.get $7 + local.get $2 local.get $3 i32.wrap_i64 i32.const 6 i32.shl - i32.const 16640 + i32.const 2272 i32.add i32.load16_u i32.store16 end else global.get $~lib/memory/__stack_pointer - block $__inlined_func$~lib/util/number/ulog_base$171 (result i32) - local.get $2 + block $__inlined_func$~lib/util/number/ulog_base$165 (result i32) + local.get $0 i64.extend_i32_u - local.set $5 + local.set $4 local.get $1 i32.popcnt i32.const 1 i32.eq if i32.const 63 - local.get $5 + local.get $4 i64.clz i32.wrap_i64 i32.sub @@ -22204,101 +21991,277 @@ i32.div_u i32.const 1 i32.add - br $__inlined_func$~lib/util/number/ulog_base$171 + br $__inlined_func$~lib/util/number/ulog_base$165 end local.get $1 i64.extend_i32_s - local.tee $6 + local.tee $5 local.set $3 i32.const 1 - local.set $0 + local.set $2 loop $while-continue|01 local.get $3 - local.get $5 + local.get $4 i64.le_u if - local.get $5 + local.get $4 local.get $3 i64.div_u - local.set $5 + local.set $4 local.get $3 local.get $3 i64.mul local.set $3 - local.get $0 + local.get $2 i32.const 1 i32.shl - local.set $0 + local.set $2 br $while-continue|01 end end loop $while-continue|1 - local.get $5 + local.get $4 i64.const 0 i64.ne if + local.get $4 local.get $5 - local.get $6 i64.div_u - local.set $5 - local.get $0 + local.set $4 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $while-continue|1 end end - local.get $0 + local.get $2 i32.const 1 i32.sub end - local.tee $7 + local.tee $6 i32.const 1 i32.shl - local.get $4 - i32.add i32.const 2 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store - local.get $0 - local.get $4 - i32.add local.get $2 + local.get $0 i64.extend_i32_u - local.get $7 + local.get $6 local.get $1 call $~lib/util/number/utoa64_any_core end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String.fromCharCode (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26796 + i32.lt_s + if + i32.const 59584 + i32.const 59632 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $1 + i32.const 0 + i32.gt_s + local.tee $3 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.store16 + local.get $3 + if + local.get $2 + local.get $1 + i32.store16 offset=2 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26796 + i32.lt_s + if + i32.const 59584 + i32.const 59632 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.set $3 + local.get $2 + if + local.get $3 + local.get $2 + local.get $4 + memory.copy + end + local.get $3 + i32.store + i32.const 16 + local.get $1 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26796 + i32.lt_s if + i32.const 59584 + i32.const 59632 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $0 + i32.const 65535 + i32.gt_u + local.tee $2 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $2 + if + local.get $0 + i32.const 1114111 + i32.gt_u + if + i32.const 0 + i32.const 3632 + i32.const 39 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.const 65536 + i32.sub + local.tee $0 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $0 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.const 16 + i32.shl + i32.or + i32.store + else + local.get $1 local.get $0 - i32.const 45 i32.store16 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) - (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/number/itoa32 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i64) - (local $4 i64) + (local $4 i32) (local $5 i64) - (local $6 i32) + (local $6 i64) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22315,9 +22278,9 @@ i32.gt_s i32.or if - i32.const 16048 - i32.const 16176 - i32.const 350 + i32.const 1648 + i32.const 1776 + i32.const 373 i32.const 5 call $~lib/builtins/abort unreachable @@ -22329,55 +22292,67 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 3392 + i32.const 1840 return end + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $4 + select + local.set $2 local.get $1 i32.const 10 i32.eq if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $2 i32.const 100000000 i32.ge_u i32.add @@ -22386,12 +22361,16 @@ local.tee $1 i32.const 1 i32.shl + local.get $4 + i32.add i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store - local.get $2 local.get $0 + local.get $4 + i32.add + local.get $2 local.get $1 call $~lib/util/number/utoa32_dec_lut else @@ -22401,7 +22380,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 31 - local.get $0 + local.get $2 i32.clz i32.sub i32.const 2 @@ -22411,11 +22390,17 @@ local.tee $1 i32.const 1 i32.shl + local.get $4 + i32.add i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store local.get $0 + local.get $4 + i32.add + local.set $7 + local.get $2 i64.extend_i32_u local.set $3 loop $while-continue|0 @@ -22423,7 +22408,7 @@ i32.const 2 i32.ge_u if - local.get $2 + local.get $7 local.get $1 i32.const 2 i32.sub @@ -22437,7 +22422,7 @@ i32.and i32.const 2 i32.shl - i32.const 16640 + i32.const 2272 i32.add i32.load i32.store @@ -22452,29 +22437,29 @@ i32.const 1 i32.and if - local.get $2 + local.get $7 local.get $3 i32.wrap_i64 i32.const 6 i32.shl - i32.const 16640 + i32.const 2272 i32.add i32.load16_u i32.store16 end else global.get $~lib/memory/__stack_pointer - block $__inlined_func$~lib/util/number/ulog_base$175 (result i32) - local.get $0 + block $__inlined_func$~lib/util/number/ulog_base$173 (result i32) + local.get $2 i64.extend_i32_u - local.set $4 + local.set $5 local.get $1 i32.popcnt i32.const 1 i32.eq if i32.const 63 - local.get $4 + local.get $5 i64.clz i32.wrap_i64 i32.sub @@ -22485,74 +22470,84 @@ i32.div_u i32.const 1 i32.add - br $__inlined_func$~lib/util/number/ulog_base$175 + br $__inlined_func$~lib/util/number/ulog_base$173 end local.get $1 i64.extend_i32_s - local.tee $5 + local.tee $6 local.set $3 i32.const 1 - local.set $2 + local.set $0 loop $while-continue|01 local.get $3 - local.get $4 + local.get $5 i64.le_u if - local.get $4 + local.get $5 local.get $3 i64.div_u - local.set $4 + local.set $5 local.get $3 local.get $3 i64.mul local.set $3 - local.get $2 + local.get $0 i32.const 1 i32.shl - local.set $2 + local.set $0 br $while-continue|01 end end loop $while-continue|1 - local.get $4 + local.get $5 i64.const 0 i64.ne if - local.get $4 local.get $5 + local.get $6 i64.div_u - local.set $4 - local.get $2 + local.set $5 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $while-continue|1 end end - local.get $2 + local.get $0 i32.const 1 i32.sub end - local.tee $6 + local.tee $7 i32.const 1 i32.shl + local.get $4 + i32.add i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store - local.get $2 local.get $0 + local.get $4 + i32.add + local.get $2 i64.extend_i32_u - local.get $6 + local.get $7 local.get $1 call $~lib/util/number/utoa64_any_core end end + local.get $4 + if + local.get $0 + i32.const 45 + i32.store16 + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 ) (func $~lib/util/number/utoa64 (param $0 i64) (param $1 i32) (result i32) (local $2 i64) @@ -22565,11 +22560,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22586,8 +22581,8 @@ i32.gt_s i32.or if - i32.const 16048 - i32.const 16176 + i32.const 1648 + i32.const 1776 i32.const 401 i32.const 5 call $~lib/builtins/abort @@ -22600,7 +22595,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 3392 + i32.const 1840 return end local.get $1 @@ -22776,7 +22771,7 @@ i32.and i32.const 2 i32.shl - i32.const 16640 + i32.const 2272 i32.add i32.load i32.store @@ -22796,14 +22791,14 @@ i32.wrap_i64 i32.const 6 i32.shl - i32.const 16640 + i32.const 2272 i32.add i32.load16_u i32.store16 end else global.get $~lib/memory/__stack_pointer - block $__inlined_func$~lib/util/number/ulog_base$180 (result i32) + block $__inlined_func$~lib/util/number/ulog_base$178 (result i32) local.get $0 local.set $2 local.get $1 @@ -22823,7 +22818,7 @@ i32.div_u i32.const 1 i32.add - br $__inlined_func$~lib/util/number/ulog_base$180 + br $__inlined_func$~lib/util/number/ulog_base$178 end local.get $1 i64.extend_i32_s @@ -22903,11 +22898,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22924,8 +22919,8 @@ i32.gt_s i32.or if - i32.const 16048 - i32.const 16176 + i32.const 1648 + i32.const 1776 i32.const 431 i32.const 5 call $~lib/builtins/abort @@ -22938,7 +22933,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 3392 + i32.const 1840 return end i64.const 0 @@ -23141,7 +23136,7 @@ i32.and i32.const 2 i32.shl - i32.const 16640 + i32.const 2272 i32.add i32.load i32.store @@ -23161,14 +23156,14 @@ i32.wrap_i64 i32.const 6 i32.shl - i32.const 16640 + i32.const 2272 i32.add i32.load16_u i32.store16 end else global.get $~lib/memory/__stack_pointer - block $__inlined_func$~lib/util/number/ulog_base$185 (result i32) + block $__inlined_func$~lib/util/number/ulog_base$183 (result i32) local.get $0 local.set $2 local.get $1 @@ -23188,7 +23183,7 @@ i32.div_u i32.const 1 i32.add - br $__inlined_func$~lib/util/number/ulog_base$185 + br $__inlined_func$~lib/util/number/ulog_base$183 end local.get $1 i64.extend_i32_s @@ -23274,11 +23269,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23287,7 +23282,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 23280 + i32.const 23440 local.set $1 block $~lib/util/number/dtoa_impl|inlined.0 local.get $0 @@ -23300,14 +23295,14 @@ f64.const 0 f64.ne if - i32.const 7696 + i32.const 9600 local.set $1 local.get $0 local.get $0 f64.ne br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 8960 - i32.const 23312 + i32.const 10864 + i32.const 23472 local.get $0 f64.const 0 f64.lt @@ -23328,7 +23323,7 @@ local.tee $1 i32.store local.get $1 - i32.const 23344 + i32.const 23504 local.get $2 memory.copy end @@ -23347,11 +23342,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 26636 + i32.const 26796 i32.lt_s if - i32.const 59424 - i32.const 59472 + i32.const 59584 + i32.const 59632 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23360,7 +23355,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 23280 + i32.const 23440 local.set $2 block $~lib/util/number/dtoa_impl|inlined.1 local.get $0 @@ -23375,14 +23370,14 @@ f64.const 0 f64.ne if - i32.const 7696 + i32.const 9600 local.set $2 local.get $1 local.get $1 f64.ne br_if $~lib/util/number/dtoa_impl|inlined.1 - i32.const 8960 - i32.const 23312 + i32.const 10864 + i32.const 23472 local.get $1 f64.const 0 f64.lt @@ -23403,7 +23398,7 @@ local.tee $2 i32.store local.get $2 - i32.const 23344 + i32.const 23504 local.get $3 memory.copy end @@ -23413,4 +23408,115 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/array/Array<~lib/string/String> + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array<~lib/string/String> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26796 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26796 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner1 + end + unreachable + end + i32.const 59584 + i32.const 59632 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/std/symbol.debug.wat b/tests/compiler/std/symbol.debug.wat index 9baedf249c..8daaf15faf 100644 --- a/tests/compiler/std/symbol.debug.wat +++ b/tests/compiler/std/symbol.debug.wat @@ -4,16 +4,21 @@ (type $2 (func (param i32 i32) (result i32))) (type $3 (func (param i32))) (type $4 (func)) - (type $5 (func (param i32 i32 i32) (result i32))) - (type $6 (func (param i32 i32 i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (type $9 (func (result i32))) - (type $10 (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $13 (func (param i32 i32 i32 i32))) (global $~lib/symbol/nextId (mut i32) (i32.const 12)) (global $std/symbol/sym1 (mut i32) (i32.const 0)) (global $std/symbol/sym2 (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/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,15 +27,12 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/symbol/stringToId (mut i32) (i32.const 0)) - (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (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)) @@ -42,46 +44,56 @@ (global $std/symbol/hasInstance (mut i32) (i32.const 0)) (global $~lib/symbol/_Symbol.isConcatSpreadable i32 (i32.const 2)) (global $std/symbol/isConcatSpreadable (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1696)) - (global $~lib/memory/__data_end i32 (i32.const 1724)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34492)) - (global $~lib/memory/__heap_base i32 (i32.const 34492)) + (global $~lib/rt/__rtti_base i32 (i32.const 3632)) + (global $~lib/memory/__data_end i32 (i32.const 3660)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36428)) + (global $~lib/memory/__heap_base i32 (i32.const 36428)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\002\003\00\00\00\00\00\00\00") - (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s\00\00\00") - (data $2 (i32.const 92) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $3 (i32.const 156) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 284) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $11 (i32.const 540) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $12 (i32.const 604) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 668) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00\00\00\00\00\00\00") - (data $14 (i32.const 716) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 844) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 876) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00\00\00\00\00\00\00") - (data $17 (i32.const 924) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00\00\00\00\00\00\00\00\00") - (data $18 (i32.const 988) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00i\00s\00R\00e\00g\00E\00x\00p\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $19 (i32.const 1036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00m\00a\00t\00c\00h\00\00\00") - (data $20 (i32.const 1068) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00r\00e\00p\00l\00a\00c\00e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $21 (i32.const 1116) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00s\00e\00a\00r\00c\00h\00") - (data $22 (i32.const 1148) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00s\00p\00e\00c\00i\00e\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $23 (i32.const 1196) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00s\00p\00l\00i\00t\00\00\00") - (data $24 (i32.const 1228) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e\00\00\00\00\00\00\00") - (data $25 (i32.const 1276) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g\00\00\00\00\00\00\00") - (data $26 (i32.const 1324) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s\00\00\00\00\00\00\00") - (data $27 (i32.const 1372) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00S\00y\00m\00b\00o\00l\00(\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $28 (i32.const 1420) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00)\00\00\00\00\00\00\00\00\00\00\00") - (data $29 (i32.const 1452) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00S\00y\00m\00b\00o\00l\00(\00)\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $30 (i32.const 1500) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)\00\00\00\00\00\00\00") - (data $31 (i32.const 1548) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)\00\00\00\00\00\00\00") - (data $32 (i32.const 1612) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)\00\00\00\00\00\00\00\00\00") - (data $33 (i32.const 1696) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\10\01\82\00\10A\02\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $5 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 572) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 796) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $17 (i32.const 1196) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2252) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $19 (i32.const 2348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s\00\00\00") + (data $21 (i32.const 2460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $22 (i32.const 2508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $23 (i32.const 2572) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2636) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00\00\00\00\00\00\00") + (data $25 (i32.const 2684) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 2812) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00\00\00\00\00\00\00") + (data $27 (i32.const 2860) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2924) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00i\00s\00R\00e\00g\00E\00x\00p\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 2972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00m\00a\00t\00c\00h\00\00\00") + (data $30 (i32.const 3004) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00r\00e\00p\00l\00a\00c\00e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 3052) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00s\00e\00a\00r\00c\00h\00") + (data $32 (i32.const 3084) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00s\00p\00e\00c\00i\00e\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 3132) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00s\00p\00l\00i\00t\00\00\00") + (data $34 (i32.const 3164) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e\00\00\00\00\00\00\00") + (data $35 (i32.const 3212) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g\00\00\00\00\00\00\00") + (data $36 (i32.const 3260) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s\00\00\00\00\00\00\00") + (data $37 (i32.const 3308) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00S\00y\00m\00b\00o\00l\00(\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $38 (i32.const 3356) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00)\00\00\00\00\00\00\00\00\00\00\00") + (data $39 (i32.const 3388) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00S\00y\00m\00b\00o\00l\00(\00)\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $40 (i32.const 3436) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)\00\00\00\00\00\00\00") + (data $41 (i32.const 3484) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)\00\00\00\00\00\00\00") + (data $42 (i32.const 3548) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)\00\00\00\00\00\00\00\00\00") + (data $43 (i32.const 3632) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\10\01\82\00\10A\02\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -104,6 +116,19 @@ local.get $id return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -168,7 +193,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 224 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -238,7 +263,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 224 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -255,7 +280,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 224 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -285,8 +310,8 @@ i32.load i32.gt_u if - i32.const 304 - i32.const 368 + i32.const 352 + i32.const 416 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -354,7 +379,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 176 + i32.const 224 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -506,7 +531,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 496 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -526,7 +551,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 496 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -589,7 +614,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 496 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -742,7 +767,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 496 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -759,7 +784,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 496 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -848,7 +873,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 496 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -891,7 +916,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 496 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -909,7 +934,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 496 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -977,7 +1002,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 496 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1094,7 +1119,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 496 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1140,7 +1165,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 496 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1172,7 +1197,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 496 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1416,7 +1441,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 496 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1636,7 +1661,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 224 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1744,8 +1769,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 112 - i32.const 448 + i32.const 160 + i32.const 496 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1847,7 +1872,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 496 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1918,7 +1943,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 496 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2075,7 +2100,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 496 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2190,7 +2215,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 496 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2210,7 +2235,7 @@ i32.eqz if i32.const 0 - i32.const 448 + i32.const 496 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2258,8 +2283,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 112 - i32.const 176 + i32.const 160 + i32.const 224 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2304,6 +2329,422 @@ local.get $ptr return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 796 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 796 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) (local $child i32) (local $parent i32) @@ -2319,7 +2760,7 @@ i32.eqz if i32.const 0 - i32.const 176 + i32.const 224 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -2410,19 +2851,6 @@ local.get $entriesCount i32.store offset=20 ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u - return - ) (func $"~lib/map/Map<~lib/string/String,usize>#get:buckets" (param $this i32) (result i32) local.get $this i32.load @@ -2735,149 +3163,232 @@ local.get $taggedNext i32.store offset=8 ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $~lib/symbol/stringToId - local.tee $1 + (func $~start + global.get $~started if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + return end - global.get $~lib/symbol/idToString - local.tee $1 + i32.const 1 + global.set $~started + call $start:std/symbol + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 36448 + i32.const 36496 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $std/symbol/key1 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/symbol/key2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/symbol/key3 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/symbol/key4 - local.tee $1 + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 128 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - i32.const 304 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 512 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 624 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 112 - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $"~lib/map/Map<~lib/string/String,usize>~visit" (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $"~lib/map/Map<~lib/string/String,usize>#__visit" - ) - (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $"~lib/map/Map#__visit" - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 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 - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"~lib/map/Map<~lib/string/String,usize>" $"~lib/map/Map" $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map<~lib/string/String,usize>~visit" - return - end - local.get $0 - local.get $1 - call $"~lib/map/Map~visit" - return - end - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return ) - (func $~start - global.get $~started - if - return - end + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill i32.const 1 - global.set $~started - call $start:std/symbol - ) - (func $~stack_check + drop global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName if - i32.const 34512 - i32.const 34560 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end + local.get $fullMessage + i32.const 2368 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $"~lib/map/Map<~lib/string/String,usize>#constructor" (param $this i32) (result i32) (local $1 i32) @@ -3536,8 +4047,8 @@ local.get $entry i32.eqz if - i32.const 624 - i32.const 688 + i32.const 2592 + i32.const 2656 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -4745,8 +5256,8 @@ local.get $entry i32.eqz if - i32.const 624 - i32.const 688 + i32.const 2592 + i32.const 2656 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -4800,120 +5311,13 @@ local.get $1 return ) - (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) - (local $thisSize i32) - (local $otherSize i32) - (local $outSize i32) - (local $out i32) - (local $6 i32) + (func $~lib/symbol/_Symbol#toString (param $this i32) (result i32) + (local $id i32) + (local $str i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $thisSize - local.get $other - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $otherSize - local.get $thisSize - local.get $otherSize - i32.add - local.set $outSize - local.get $outSize - i32.const 0 - i32.eq - if - i32.const 864 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - global.get $~lib/memory/__stack_pointer - local.get $outSize - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store offset=4 - local.get $out - local.get $this - local.get $thisSize - memory.copy - local.get $out - local.get $thisSize - i32.add - local.get $other - local.get $otherSize - memory.copy - local.get $out - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - ) - (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $left - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $right - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/string/String#concat - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - ) - (func $~lib/symbol/_Symbol#toString (param $this i32) (result i32) - (local $id i32) - (local $str i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -4926,7 +5330,7 @@ local.get $this local.set $id global.get $~lib/memory/__stack_pointer - i32.const 864 + i32.const 128 local.tee $str i32.store block $break|0 @@ -4991,67 +5395,67 @@ br $case11|0 end global.get $~lib/memory/__stack_pointer - i32.const 896 + i32.const 2832 local.tee $str i32.store br $break|0 end global.get $~lib/memory/__stack_pointer - i32.const 944 + i32.const 2880 local.tee $str i32.store br $break|0 end global.get $~lib/memory/__stack_pointer - i32.const 1008 + i32.const 2944 local.tee $str i32.store br $break|0 end global.get $~lib/memory/__stack_pointer - i32.const 1056 + i32.const 2992 local.tee $str i32.store br $break|0 end global.get $~lib/memory/__stack_pointer - i32.const 1088 + i32.const 3024 local.tee $str i32.store br $break|0 end global.get $~lib/memory/__stack_pointer - i32.const 1136 + i32.const 3072 local.tee $str i32.store br $break|0 end global.get $~lib/memory/__stack_pointer - i32.const 1168 + i32.const 3104 local.tee $str i32.store br $break|0 end global.get $~lib/memory/__stack_pointer - i32.const 1216 + i32.const 3152 local.tee $str i32.store br $break|0 end global.get $~lib/memory/__stack_pointer - i32.const 1248 + i32.const 3184 local.tee $str i32.store br $break|0 end global.get $~lib/memory/__stack_pointer - i32.const 1296 + i32.const 3232 local.tee $str i32.store br $break|0 end global.get $~lib/memory/__stack_pointer - i32.const 1344 + i32.const 3280 local.tee $str i32.store br $break|0 @@ -5086,7 +5490,7 @@ end br $break|0 end - i32.const 1392 + i32.const 3328 local.get $str local.set $4 global.get $~lib/memory/__stack_pointer @@ -5099,7 +5503,7 @@ local.get $4 i32.store offset=4 local.get $4 - i32.const 1440 + i32.const 3376 call $~lib/string/String.__concat local.set $4 global.get $~lib/memory/__stack_pointer @@ -5130,18 +5534,6 @@ i32.const 32 call $~lib/symbol/Symbol global.set $std/symbol/sym2 - global.get $std/symbol/sym1 - global.get $std/symbol/sym2 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end memory.size i32.const 16 i32.shl @@ -5150,15 +5542,27 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 224 + i32.const 272 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 256 + i32.const 304 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 400 + i32.const 448 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace + global.get $std/symbol/sym1 + global.get $std/symbol/sym2 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 2432 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 0 call $"~lib/map/Map<~lib/string/String,usize>#constructor" global.set $~lib/symbol/stringToId @@ -5177,7 +5581,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -5200,7 +5604,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -5217,7 +5621,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -5232,8 +5636,8 @@ if (result i32) local.get $0 else - i32.const 736 - i32.const 64 + i32.const 2704 + i32.const 2432 i32.const 17 i32.const 12 call $~lib/builtins/abort @@ -5249,8 +5653,8 @@ if (result i32) local.get $1 else - i32.const 736 - i32.const 64 + i32.const 2704 + i32.const 2432 i32.const 18 i32.const 12 call $~lib/builtins/abort @@ -5268,7 +5672,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -5290,7 +5694,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -5304,12 +5708,12 @@ local.get $2 i32.store local.get $2 - i32.const 1472 + i32.const 3408 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -5322,12 +5726,12 @@ local.get $2 i32.store local.get $2 - i32.const 1520 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -5344,12 +5748,12 @@ local.get $2 i32.store local.get $2 - i32.const 1568 + i32.const 3504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -5362,12 +5766,12 @@ local.get $2 i32.store local.get $2 - i32.const 1632 + i32.const 3568 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -5382,6 +5786,322 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 592 + i32.const 720 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 784 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) + (local $buffer i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.gt_u + if + i32.const 2480 + i32.const 2528 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $~lib/symbol/stringToId + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/symbol/idToString + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key3 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key4 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 352 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2480 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2592 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 160 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1216 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2272 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $"~lib/map/Map<~lib/string/String,usize>~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map<~lib/string/String,usize>#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 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 + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"~lib/map/Map<~lib/string/String,usize>" $"~lib/map/Map" $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map<~lib/string/String,usize>~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + unreachable + ) (func $"~lib/map/Map<~lib/string/String,usize>#__visit" (param $this i32) (param $cookie i32) (local $entries i32) (local $cur i32) @@ -5572,45 +6292,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) - (local $buffer i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $length - i32.const 1073741820 - i32.gt_u - if - i32.const 512 - i32.const 560 - i32.const 52 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $length - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $buffer - i32.store - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $buffer - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) ) diff --git a/tests/compiler/std/symbol.release.wat b/tests/compiler/std/symbol.release.wat index 39b4ead273..b96b9d6abe 100644 --- a/tests/compiler/std/symbol.release.wat +++ b/tests/compiler/std/symbol.release.wat @@ -1,15 +1,14 @@ (module (type $0 (func (param i32 i32) (result i32))) - (type $1 (func)) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32) (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func)) + (type $3 (func (param i32 i32))) (type $4 (func (param i32))) (type $5 (func (result i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (param i32 i32 i32))) + (type $8 (func (param i32 i32 i32 i32))) (type $9 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/symbol/nextId (mut i32) (i32.const 12)) (global $std/symbol/sym1 (mut i32) (i32.const 0)) (global $std/symbol/sym2 (mut i32) (i32.const 0)) @@ -32,70 +31,89 @@ (global $std/symbol/key3 (mut i32) (i32.const 0)) (global $std/symbol/key4 (mut i32) (i32.const 0)) (global $std/symbol/isConcatSpreadable (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35516)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37452)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02\00\00\00\06\00\00\001\002\003") - (data $1 (i32.const 1068) ",") - (data $1.1 (i32.const 1080) "\02\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s") - (data $2 (i32.const 1116) "<") - (data $2.1 (i32.const 1128) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $3 (i32.const 1180) "<") - (data $3.1 (i32.const 1192) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $6 (i32.const 1308) "<") - (data $6.1 (i32.const 1320) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $7 (i32.const 1372) ",") - (data $7.1 (i32.const 1384) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $9 (i32.const 1452) "<") - (data $9.1 (i32.const 1464) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $10 (i32.const 1516) ",") - (data $10.1 (i32.const 1528) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $11 (i32.const 1564) "<") - (data $11.1 (i32.const 1576) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data $12 (i32.const 1628) "<") - (data $12.1 (i32.const 1640) "\02\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") - (data $13 (i32.const 1692) ",") - (data $13.1 (i32.const 1704) "\02\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") - (data $14 (i32.const 1740) "|") - (data $14.1 (i32.const 1752) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") - (data $15 (i32.const 1868) "\1c") - (data $15.1 (i32.const 1880) "\02") - (data $16 (i32.const 1900) ",") - (data $16.1 (i32.const 1912) "\02\00\00\00\16\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e") - (data $17 (i32.const 1948) "<") - (data $17.1 (i32.const 1960) "\02\00\00\00$\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e") - (data $18 (i32.const 2012) ",") - (data $18.1 (i32.const 2024) "\02\00\00\00\10\00\00\00i\00s\00R\00e\00g\00E\00x\00p") - (data $19 (i32.const 2060) "\1c") - (data $19.1 (i32.const 2072) "\02\00\00\00\n\00\00\00m\00a\00t\00c\00h") - (data $20 (i32.const 2092) ",") - (data $20.1 (i32.const 2104) "\02\00\00\00\0e\00\00\00r\00e\00p\00l\00a\00c\00e") - (data $21 (i32.const 2140) "\1c") - (data $21.1 (i32.const 2152) "\02\00\00\00\0c\00\00\00s\00e\00a\00r\00c\00h") - (data $22 (i32.const 2172) ",") - (data $22.1 (i32.const 2184) "\02\00\00\00\0e\00\00\00s\00p\00e\00c\00i\00e\00s") - (data $23 (i32.const 2220) "\1c") - (data $23.1 (i32.const 2232) "\02\00\00\00\n\00\00\00s\00p\00l\00i\00t") - (data $24 (i32.const 2252) ",") - (data $24.1 (i32.const 2264) "\02\00\00\00\16\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e") - (data $25 (i32.const 2300) ",") - (data $25.1 (i32.const 2312) "\02\00\00\00\16\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g") - (data $26 (i32.const 2348) ",") - (data $26.1 (i32.const 2360) "\02\00\00\00\16\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s") - (data $27 (i32.const 2396) ",") - (data $27.1 (i32.const 2408) "\02\00\00\00\0e\00\00\00S\00y\00m\00b\00o\00l\00(") - (data $28 (i32.const 2444) "\1c") - (data $28.1 (i32.const 2456) "\02\00\00\00\02\00\00\00)") - (data $29 (i32.const 2476) ",") - (data $29.1 (i32.const 2488) "\02\00\00\00\10\00\00\00S\00y\00m\00b\00o\00l\00(\00)") - (data $30 (i32.const 2524) ",") - (data $30.1 (i32.const 2536) "\02\00\00\00\16\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)") - (data $31 (i32.const 2572) "<") - (data $31.1 (i32.const 2584) "\02\00\00\00&\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)") - (data $32 (i32.const 2636) "L") - (data $32.1 (i32.const 2648) "\02\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)") - (data $33 (i32.const 2720) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\10\01\82\00\10A\02") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02") + (data $4 (i32.const 1164) "<") + (data $4.1 (i32.const 1176) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1228) "<") + (data $5.1 (i32.const 1240) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1356) "<") + (data $8.1 (i32.const 1368) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1420) ",") + (data $9.1 (i32.const 1432) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1500) "<") + (data $11.1 (i32.const 1512) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1564) "\1c") + (data $12.1 (i32.const 1576) "\02\00\00\00\02\00\00\00:") + (data $13 (i32.const 1596) "|") + (data $13.1 (i32.const 1608) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $14 (i32.const 1724) "<") + (data $14.1 (i32.const 1736) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $15 (i32.const 1788) "\1c") + (data $15.1 (i32.const 1800) "\02\00\00\00\02\00\00\000") + (data $16 (i32.const 1820) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $17 (i32.const 2220) "\1c\04") + (data $17.1 (i32.const 2232) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $18 (i32.const 3276) "\\") + (data $18.1 (i32.const 3288) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $19 (i32.const 3372) "<") + (data $19.1 (i32.const 3384) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $20 (i32.const 3436) ",") + (data $20.1 (i32.const 3448) "\02\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s") + (data $21 (i32.const 3484) ",") + (data $21.1 (i32.const 3496) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $22 (i32.const 3532) "<") + (data $22.1 (i32.const 3544) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $23 (i32.const 3596) "<") + (data $23.1 (i32.const 3608) "\02\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") + (data $24 (i32.const 3660) ",") + (data $24.1 (i32.const 3672) "\02\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") + (data $25 (i32.const 3708) "|") + (data $25.1 (i32.const 3720) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") + (data $26 (i32.const 3836) ",") + (data $26.1 (i32.const 3848) "\02\00\00\00\16\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e") + (data $27 (i32.const 3884) "<") + (data $27.1 (i32.const 3896) "\02\00\00\00$\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e") + (data $28 (i32.const 3948) ",") + (data $28.1 (i32.const 3960) "\02\00\00\00\10\00\00\00i\00s\00R\00e\00g\00E\00x\00p") + (data $29 (i32.const 3996) "\1c") + (data $29.1 (i32.const 4008) "\02\00\00\00\n\00\00\00m\00a\00t\00c\00h") + (data $30 (i32.const 4028) ",") + (data $30.1 (i32.const 4040) "\02\00\00\00\0e\00\00\00r\00e\00p\00l\00a\00c\00e") + (data $31 (i32.const 4076) "\1c") + (data $31.1 (i32.const 4088) "\02\00\00\00\0c\00\00\00s\00e\00a\00r\00c\00h") + (data $32 (i32.const 4108) ",") + (data $32.1 (i32.const 4120) "\02\00\00\00\0e\00\00\00s\00p\00e\00c\00i\00e\00s") + (data $33 (i32.const 4156) "\1c") + (data $33.1 (i32.const 4168) "\02\00\00\00\n\00\00\00s\00p\00l\00i\00t") + (data $34 (i32.const 4188) ",") + (data $34.1 (i32.const 4200) "\02\00\00\00\16\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e") + (data $35 (i32.const 4236) ",") + (data $35.1 (i32.const 4248) "\02\00\00\00\16\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g") + (data $36 (i32.const 4284) ",") + (data $36.1 (i32.const 4296) "\02\00\00\00\16\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s") + (data $37 (i32.const 4332) ",") + (data $37.1 (i32.const 4344) "\02\00\00\00\0e\00\00\00S\00y\00m\00b\00o\00l\00(") + (data $38 (i32.const 4380) "\1c") + (data $38.1 (i32.const 4392) "\02\00\00\00\02\00\00\00)") + (data $39 (i32.const 4412) ",") + (data $39.1 (i32.const 4424) "\02\00\00\00\10\00\00\00S\00y\00m\00b\00o\00l\00(\00)") + (data $40 (i32.const 4460) ",") + (data $40.1 (i32.const 4472) "\02\00\00\00\16\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)") + (data $41 (i32.const 4508) "<") + (data $41.1 (i32.const 4520) "\02\00\00\00&\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)") + (data $42 (i32.const 4572) "L") + (data $42.1 (i32.const 4584) "\02\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)") + (data $43 (i32.const 4656) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\10\01\82\00\10A\02") (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/rt/itcms/visitRoots @@ -137,13 +155,17 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1328 + i32.const 1376 call $~lib/rt/itcms/__visit - i32.const 1536 + i32.const 3504 call $~lib/rt/itcms/__visit - i32.const 1648 + i32.const 3616 call $~lib/rt/itcms/__visit - i32.const 1136 + i32.const 1184 + call $~lib/rt/itcms/__visit + i32.const 2240 + call $~lib/rt/itcms/__visit + i32.const 3296 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -164,7 +186,7 @@ i32.ne if i32.const 0 - i32.const 1200 + i32.const 1248 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -197,7 +219,7 @@ i32.eqz if i32.const 0 - i32.const 1200 + i32.const 1248 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -206,7 +228,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$246 + block $__inlined_func$~lib/rt/itcms/Object#unlink$254 local.get $0 i32.load offset=4 i32.const -4 @@ -218,19 +240,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 35516 + i32.const 37452 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1200 + i32.const 1248 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$246 + br $__inlined_func$~lib/rt/itcms/Object#unlink$254 end local.get $0 i32.load offset=8 @@ -238,7 +260,7 @@ i32.eqz if i32.const 0 - i32.const 1200 + i32.const 1248 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -267,12 +289,12 @@ i32.const 1 else local.get $1 - i32.const 2720 + i32.const 4656 i32.load i32.gt_u if - i32.const 1328 - i32.const 1392 + i32.const 1376 + i32.const 1440 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -281,7 +303,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 2724 + i32.const 4660 i32.add i32.load i32.const 32 @@ -352,7 +374,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1520 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -366,7 +388,7 @@ i32.lt_u if i32.const 0 - i32.const 1472 + i32.const 1520 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -412,7 +434,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1520 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -495,7 +517,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1520 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -509,7 +531,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1520 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -570,7 +592,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1520 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -603,7 +625,7 @@ i32.lt_u if i32.const 0 - i32.const 1472 + i32.const 1520 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -618,7 +640,7 @@ i32.ne if i32.const 0 - i32.const 1472 + i32.const 1520 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -669,7 +691,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1520 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -741,7 +763,7 @@ i64.lt_u if i32.const 0 - i32.const 1472 + i32.const 1520 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -766,7 +788,7 @@ i32.gt_u if i32.const 0 - i32.const 1472 + i32.const 1520 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -793,7 +815,7 @@ i32.gt_u if i32.const 0 - i32.const 1472 + i32.const 1520 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -865,10 +887,10 @@ if unreachable end - i32.const 35520 + i32.const 37456 i32.const 0 i32.store - i32.const 37088 + i32.const 39024 i32.const 0 i32.store loop $for-loop|0 @@ -879,7 +901,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 35520 + i32.const 37456 i32.add i32.const 0 i32.store offset=4 @@ -897,7 +919,7 @@ i32.add i32.const 2 i32.shl - i32.const 35520 + i32.const 37456 i32.add i32.const 0 i32.store offset=96 @@ -915,14 +937,14 @@ br $for-loop|0 end end - i32.const 35520 - i32.const 37092 + i32.const 37456 + i32.const 39028 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 35520 + i32.const 37456 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -1007,7 +1029,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 35516 + i32.const 37452 i32.lt_u if local.get $0 @@ -1096,14 +1118,14 @@ i32.ne if i32.const 0 - i32.const 1200 + i32.const 1248 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 35516 + i32.const 37452 i32.lt_u if local.get $0 @@ -1126,7 +1148,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 35516 + i32.const 37452 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1155,7 +1177,7 @@ end if i32.const 0 - i32.const 1472 + i32.const 1520 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1239,7 +1261,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1520 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1291,7 +1313,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1520 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1323,8 +1345,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1136 - i32.const 1200 + i32.const 1184 + i32.const 1248 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1334,7 +1356,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1355,7 +1377,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end local.get $2 i32.const 0 @@ -1388,8 +1410,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1136 - i32.const 1472 + i32.const 1184 + i32.const 1520 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1491,7 +1513,7 @@ i32.eqz if i32.const 0 - i32.const 1472 + i32.const 1520 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1506,7 +1528,7 @@ i32.gt_u if i32.const 0 - i32.const 1472 + i32.const 1520 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1525,7 +1547,7 @@ i32.and if i32.const 0 - i32.const 1472 + i32.const 1520 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1630,6 +1652,204 @@ memory.fill local.get $1 ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 4684 + i32.lt_s + if + i32.const 37472 + i32.const 37520 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa32$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1808 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 @@ -1641,7 +1861,7 @@ i32.eqz if i32.const 0 - i32.const 1200 + i32.const 1248 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -1689,175 +1909,214 @@ end end ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/symbol + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $folding-inner1 - 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 - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"~lib/map/Map<~lib/string/String,usize>" $"~lib/map/Map" $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - local.tee $2 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.gt_u - if - local.get $1 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $1 - i32.load - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 12 - i32.add - local.set $1 - br $while-continue|0 - end - end - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - local.tee $2 - local.set $1 + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4684 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4684 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$259 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1152 local.set $0 - loop $while-continue|01 - local.get $0 - local.get $1 - i32.gt_u - if - local.get $1 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $1 - i32.load offset=4 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 12 - i32.add - local.set $1 - br $while-continue|01 - end - end - br $folding-inner1 + br $__inlined_func$~lib/string/String#concat$259 end - unreachable + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - i32.const 35536 - i32.const 35584 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 37472 + i32.const 37520 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4684 + i32.lt_s + if + i32.const 37472 + i32.const 37520 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~start - global.get $~started + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1088 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 if - return + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1120 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store end - i32.const 1 - global.set $~started - call $start:std/symbol + local.get $0 + i32.const 3392 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/util/hash/HASH<~lib/string/String> (param $0 i32) (result i32) (local $1 i32) @@ -1872,11 +2131,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s if - i32.const 35536 - i32.const 35584 + i32.const 37472 + i32.const 37520 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2090,11 +2349,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s if - i32.const 35536 - i32.const 35584 + i32.const 37472 + i32.const 37520 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2193,7 +2452,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$88 + block $__inlined_func$~lib/util/string/compareImpl$87 loop $while-continue|1 local.get $0 local.tee $3 @@ -2213,7 +2472,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$88 + br_if $__inlined_func$~lib/util/string/compareImpl$87 local.get $2 i32.const 2 i32.add @@ -2249,11 +2508,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s if - i32.const 35536 - i32.const 35584 + i32.const 37472 + i32.const 37520 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2339,7 +2598,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2422,7 +2681,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2660,8 +2919,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 35536 - i32.const 35584 + i32.const 37472 + i32.const 37520 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2674,11 +2933,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s if - i32.const 35536 - i32.const 35584 + i32.const 37472 + i32.const 37520 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2758,7 +3017,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -2868,7 +3127,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3129,8 +3388,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 35536 - i32.const 35584 + i32.const 37472 + i32.const 37520 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3146,7 +3405,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3164,7 +3423,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3205,7 +3464,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3230,8 +3489,8 @@ local.tee $0 i32.eqz if - i32.const 1648 - i32.const 1712 + i32.const 3616 + i32.const 3680 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -3278,8 +3537,8 @@ call $"~lib/map/Map#set" br $folding-inner1 end - i32.const 35536 - i32.const 35584 + i32.const 37472 + i32.const 37520 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3297,11 +3556,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s if - i32.const 35536 - i32.const 35584 + i32.const 37472 + i32.const 37520 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3357,11 +3616,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s if - i32.const 35536 - i32.const 35584 + i32.const 37472 + i32.const 37520 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3407,8 +3666,8 @@ local.tee $0 i32.eqz if - i32.const 1648 - i32.const 1712 + i32.const 3616 + i32.const 3680 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -3428,11 +3687,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s if - i32.const 35536 - i32.const 35584 + i32.const 37472 + i32.const 37520 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3464,109 +3723,6 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.tee $2 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $__inlined_func$~lib/string/String#concat$253 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $4 - local.get $3 - i32.add - local.tee $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1888 - local.set $0 - br $__inlined_func$~lib/string/String#concat$253 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $3 - memory.copy - local.get $0 - local.get $3 - i32.add - local.get $1 - local.get $4 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 35536 - i32.const 35584 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) (func $~lib/symbol/_Symbol#toString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -3575,11 +3731,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s if - i32.const 35536 - i32.const 35584 + i32.const 37472 + i32.const 37520 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3591,10 +3747,10 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - i32.const 1888 + i32.const 1152 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 1888 + i32.const 1152 i32.store block $break|0 block $case11|0 @@ -3614,80 +3770,80 @@ i32.sub br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 $case6|0 $case7|0 $case8|0 $case9|0 $case10|0 $case11|0 end - i32.const 1920 + i32.const 3856 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 1920 + i32.const 3856 i32.store br $break|0 end - i32.const 1968 + i32.const 3904 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 1968 + i32.const 3904 i32.store br $break|0 end - i32.const 2032 + i32.const 3968 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 2032 + i32.const 3968 i32.store br $break|0 end - i32.const 2080 + i32.const 4016 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 2080 + i32.const 4016 i32.store br $break|0 end - i32.const 2112 + i32.const 4048 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 2112 + i32.const 4048 i32.store br $break|0 end - i32.const 2160 + i32.const 4096 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 2160 + i32.const 4096 i32.store br $break|0 end - i32.const 2192 + i32.const 4128 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 2192 + i32.const 4128 i32.store br $break|0 end - i32.const 2240 + i32.const 4176 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 2240 + i32.const 4176 i32.store br $break|0 end - i32.const 2272 + i32.const 4208 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 2272 + i32.const 4208 i32.store br $break|0 end - i32.const 2320 + i32.const 4256 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 2320 + i32.const 4256 i32.store br $break|0 end - i32.const 2368 + i32.const 4304 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 2368 + i32.const 4304 i32.store br $break|0 end @@ -3719,7 +3875,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - i32.const 2416 + i32.const 4352 local.get $1 call $~lib/string/String.__concat local.set $0 @@ -3727,7 +3883,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 2464 + i32.const 4400 call $~lib/string/String.__concat global.get $~lib/memory/__stack_pointer i32.const 12 @@ -3743,7 +3899,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3776,55 +3932,55 @@ end local.get $0 global.set $std/symbol/sym2 - global.get $std/symbol/sym1 - global.get $std/symbol/sym2 - i32.eq - if - i32.const 0 - i32.const 1088 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end memory.size i32.const 16 i32.shl - i32.const 35516 + i32.const 37452 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1252 - i32.const 1248 + i32.const 1300 + i32.const 1296 i32.store - i32.const 1256 - i32.const 1248 + i32.const 1304 + i32.const 1296 i32.store - i32.const 1248 + i32.const 1296 global.set $~lib/rt/itcms/pinSpace - i32.const 1284 - i32.const 1280 + i32.const 1332 + i32.const 1328 i32.store - i32.const 1288 - i32.const 1280 + i32.const 1336 + i32.const 1328 i32.store - i32.const 1280 + i32.const 1328 global.set $~lib/rt/itcms/toSpace - i32.const 1428 - i32.const 1424 + i32.const 1476 + i32.const 1472 i32.store - i32.const 1432 - i32.const 1424 + i32.const 1480 + i32.const 1472 i32.store - i32.const 1424 + i32.const 1472 global.set $~lib/rt/itcms/fromSpace + global.get $std/symbol/sym1 + global.get $std/symbol/sym2 + i32.eq + if + i32.const 0 + i32.const 3456 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3906,7 +4062,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3992,7 +4148,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 9 i32.const 1 call $~lib/builtins/abort @@ -4014,7 +4170,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -4030,7 +4186,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -4044,8 +4200,8 @@ local.get $0 i32.eqz if - i32.const 1760 - i32.const 1088 + i32.const 3728 + i32.const 3456 i32.const 17 i32.const 12 call $~lib/builtins/abort @@ -4061,8 +4217,8 @@ local.get $0 i32.eqz if - i32.const 1760 - i32.const 1088 + i32.const 3728 + i32.const 3456 i32.const 18 i32.const 12 call $~lib/builtins/abort @@ -4080,7 +4236,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -4100,7 +4256,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -4123,12 +4279,12 @@ local.get $0 i32.store local.get $0 - i32.const 2496 + i32.const 4432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -4141,12 +4297,12 @@ local.get $0 i32.store local.get $0 - i32.const 2544 + i32.const 4480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -4161,12 +4317,12 @@ local.get $0 i32.store local.get $0 - i32.const 2592 + i32.const 4528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -4179,12 +4335,12 @@ local.get $0 i32.store local.get $0 - i32.const 2656 + i32.const 4592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -4196,8 +4352,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 35536 - i32.const 35584 + i32.const 37472 + i32.const 37520 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4209,11 +4365,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2748 + i32.const 4684 i32.lt_s if - i32.const 35536 - i32.const 35584 + i32.const 37472 + i32.const 37520 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4226,8 +4382,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1536 - i32.const 1584 + i32.const 3504 + i32.const 3552 i32.const 52 i32.const 43 call $~lib/builtins/abort @@ -4245,4 +4401,165 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner1 + 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 + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"~lib/map/Map<~lib/string/String,usize>" $"~lib/map/Map" $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4684 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.tee $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $1 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + i32.load + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 12 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4684 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.tee $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $0 + loop $while-continue|01 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $1 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + i32.load offset=4 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 12 + i32.add + local.set $1 + br $while-continue|01 + end + end + br $folding-inner1 + end + unreachable + end + i32.const 37472 + i32.const 37520 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/std/typedarray.debug.wat b/tests/compiler/std/typedarray.debug.wat index 9b7671a355..41e9bec92d 100644 --- a/tests/compiler/std/typedarray.debug.wat +++ b/tests/compiler/std/typedarray.debug.wat @@ -28,33 +28,32 @@ (type $26 (func (param i64 i32 i32))) (type $27 (func (param i32 f32 i32) (result i32))) (type $28 (func (param i64 i32) (result i32))) - (type $29 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $30 (func (param f32 i32 i32) (result f32))) - (type $31 (func (param f64 i32 i32) (result f64))) - (type $32 (func (param i32 i64 i32))) + (type $29 (func (param i32 i64 i32))) + (type $30 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $31 (func (param f32 i32 i32) (result f32))) + (type $32 (func (param f64 i32 i32) (result f64))) (type $33 (func (param i32 i64) (result i32))) (type $34 (func (param i32 i32 i64))) (type $35 (func (param i32 i32 f32) (result f32))) (type $36 (func (param i32 i32 f64) (result f64))) (type $37 (func (param f32 i32 i32))) (type $38 (func (param f64 i32 i32))) - (type $39 (func (param i32 i32 i32 i32))) - (type $40 (func (param i32 i32 i64) (result i32))) - (type $41 (func (result i32))) + (type $39 (func (param i32 i32 i64) (result i32))) + (type $40 (func (result i32))) + (type $41 (func (param i32 i64 i32 i32))) (type $42 (func (param f32 f32) (result f32))) (type $43 (func (param f64 f64) (result f64))) (type $44 (func (param i64) (result i64))) - (type $45 (func (param i32 i64 i32 i32))) - (type $46 (func (param i64) (result i32))) - (type $47 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $48 (func (param i32 f32) (result i32))) - (type $49 (func (param i32 f64) (result i32))) - (type $50 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $45 (func (param i64) (result i32))) + (type $46 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $47 (func (param i32 f32) (result i32))) + (type $48 (func (param i32 f64) (result i32))) + (type $49 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $50 (func (param i32 i32 i32 i32))) (type $51 (func (param i32 i32 f64))) (type $52 (func (param i32 i32 f32))) (type $53 (func (param f32) (result i32))) (type $54 (func (param f64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (global $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) (global $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) @@ -81,341 +80,358 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/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)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) - (global $std/typedarray/forEachValues i32 (i32.const 6128)) - (global $std/typedarray/testArrayReverseValues i32 (i32.const 6592)) - (global $std/typedarray/testArrayIndexOfAndLastIndexOfValues i32 (i32.const 6704)) + (global $std/typedarray/forEachValues i32 (i32.const 8096)) + (global $std/typedarray/testArrayReverseValues i32 (i32.const 8560)) + (global $std/typedarray/testArrayIndexOfAndLastIndexOfValues i32 (i32.const 8672)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) (global $~lib/util/number/_exp (mut i32) (i32.const 0)) (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $std/typedarray/testArrayWrapValues i32 (i32.const 9904)) - (global $std/typedarray/setSource1 (mut i32) (i32.const 9984)) - (global $std/typedarray/setSource2 (mut i32) (i32.const 10064)) - (global $std/typedarray/setSource3 (mut i32) (i32.const 10160)) - (global $std/typedarray/setSource7 (mut i32) (i32.const 10240)) - (global $~lib/rt/__rtti_base i32 (i32.const 14976)) - (global $~lib/memory/__data_end i32 (i32.const 15296)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 48064)) - (global $~lib/memory/__heap_base i32 (i32.const 48064)) + (global $std/typedarray/testArrayWrapValues i32 (i32.const 10064)) + (global $std/typedarray/setSource1 (mut i32) (i32.const 10144)) + (global $std/typedarray/setSource2 (mut i32) (i32.const 10224)) + (global $std/typedarray/setSource3 (mut i32) (i32.const 10320)) + (global $std/typedarray/setSource7 (mut i32) (i32.const 10400)) + (global $~lib/rt/__rtti_base i32 (i32.const 15136)) + (global $~lib/memory/__data_end i32 (i32.const 15456)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 48224)) + (global $~lib/memory/__heap_base i32 (i32.const 48224)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $3 (i32.const 188) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 460) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 524) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 588) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 652) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 684) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\01\04\05\00\00\00\00\00\00\00") - (data $14 (i32.const 716) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data $15 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 796) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\00\00\00\00\00\00\00\00\00\00") - (data $17 (i32.const 828) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\00\02\02\00\00\00\00\00\00\00") - (data $18 (i32.const 860) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\00\02\02\00\00\00\00\00\00\00") - (data $19 (i32.const 892) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $20 (i32.const 924) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") - (data $21 (i32.const 956) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $22 (i32.const 1004) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $23 (i32.const 1052) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $24 (i32.const 1100) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data $25 (i32.const 1148) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data $26 (i32.const 1196) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $27 (i32.const 1228) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data $28 (i32.const 1276) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $29 (i32.const 1324) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $30 (i32.const 1372) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $31 (i32.const 1420) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $32 (i32.const 1468) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $33 (i32.const 1516) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $34 (i32.const 1564) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $35 (i32.const 1612) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $36 (i32.const 1660) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $37 (i32.const 1708) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $38 (i32.const 1756) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $39 (i32.const 1804) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $40 (i32.const 1852) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data $41 (i32.const 1884) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") - (data $42 (i32.const 1916) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") - (data $43 (i32.const 1948) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data $44 (i32.const 1980) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") - (data $45 (i32.const 2012) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") - (data $46 (i32.const 2044) "\1c\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") - (data $47 (i32.const 2076) "\1c\00\00\00\00\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $48 (i32.const 2108) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") - (data $49 (i32.const 2140) "\1c\00\00\00\00\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") - (data $50 (i32.const 2172) "\1c\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") - (data $51 (i32.const 2204) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\r\00\00\00\00\00\00\00\00\00\00\00") - (data $52 (i32.const 2236) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") - (data $53 (i32.const 2268) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") - (data $54 (i32.const 2300) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") - (data $55 (i32.const 2332) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") - (data $56 (i32.const 2364) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00") - (data $57 (i32.const 2396) "\1c\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00\00\00\00\00") - (data $58 (i32.const 2428) "\1c\00\00\00\00\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00") - (data $59 (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00\00\00\00\00") - (data $60 (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00") - (data $61 (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00\00\00\00\00") - (data $62 (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\1d\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00") - (data $63 (i32.const 2588) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00\00\00\00\00") - (data $64 (i32.const 2620) "\1c\00\00\00\00\00\00\00\00\00\00\00\1f\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00") - (data $65 (i32.const 2652) "\1c\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00") - (data $66 (i32.const 2684) "\1c\00\00\00\00\00\00\00\00\00\00\00!\00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00") - (data $67 (i32.const 2716) "\1c\00\00\00\00\00\00\00\00\00\00\00\"\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00\00\00\00\00") - (data $68 (i32.const 2748) "\1c\00\00\00\00\00\00\00\00\00\00\00#\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00") - (data $69 (i32.const 2780) "\1c\00\00\00\00\00\00\00\00\00\00\00$\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00") - (data $70 (i32.const 2812) "\1c\00\00\00\00\00\00\00\00\00\00\00%\00\00\00\08\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") - (data $71 (i32.const 2844) "\1c\00\00\00\00\00\00\00\00\00\00\00&\00\00\00\08\00\00\00!\00\00\00\00\00\00\00\00\00\00\00") - (data $72 (i32.const 2876) "\1c\00\00\00\00\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00") - (data $73 (i32.const 2908) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00#\00\00\00\00\00\00\00\00\00\00\00") - (data $74 (i32.const 2940) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00$\00\00\00\00\00\00\00\00\00\00\00") - (data $75 (i32.const 2972) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00%\00\00\00\00\00\00\00\00\00\00\00") - (data $76 (i32.const 3004) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00&\00\00\00\00\00\00\00\00\00\00\00") - (data $77 (i32.const 3036) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00\00\00\00\00") - (data $78 (i32.const 3068) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00(\00\00\00\00\00\00\00\00\00\00\00") - (data $79 (i32.const 3100) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00)\00\00\00\00\00\00\00\00\00\00\00") - (data $80 (i32.const 3132) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00*\00\00\00\00\00\00\00\00\00\00\00") - (data $81 (i32.const 3164) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") - (data $82 (i32.const 3196) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") - (data $83 (i32.const 3228) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") - (data $84 (i32.const 3260) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") - (data $85 (i32.const 3292) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00/\00\00\00\00\00\00\00\00\00\00\00") - (data $86 (i32.const 3324) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data $87 (i32.const 3356) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\001\00\00\00\00\00\00\00\00\00\00\00") - (data $88 (i32.const 3388) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\002\00\00\00\00\00\00\00\00\00\00\00") - (data $89 (i32.const 3420) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\003\00\00\00\00\00\00\00\00\00\00\00") - (data $90 (i32.const 3452) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\004\00\00\00\00\00\00\00\00\00\00\00") - (data $91 (i32.const 3484) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\005\00\00\00\00\00\00\00\00\00\00\00") - (data $92 (i32.const 3516) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\006\00\00\00\00\00\00\00\00\00\00\00") - (data $93 (i32.const 3548) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\007\00\00\00\00\00\00\00\00\00\00\00") - (data $94 (i32.const 3580) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\008\00\00\00\00\00\00\00\00\00\00\00") - (data $95 (i32.const 3612) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\009\00\00\00\00\00\00\00\00\00\00\00") - (data $96 (i32.const 3644) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") - (data $97 (i32.const 3676) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00;\00\00\00\00\00\00\00\00\00\00\00") - (data $98 (i32.const 3708) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00<\00\00\00\00\00\00\00\00\00\00\00") - (data $99 (i32.const 3740) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00=\00\00\00\00\00\00\00\00\00\00\00") - (data $100 (i32.const 3772) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00>\00\00\00\00\00\00\00\00\00\00\00") - (data $101 (i32.const 3804) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00?\00\00\00\00\00\00\00\00\00\00\00") - (data $102 (i32.const 3836) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00@\00\00\00\00\00\00\00\00\00\00\00") - (data $103 (i32.const 3868) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00A\00\00\00\00\00\00\00\00\00\00\00") - (data $104 (i32.const 3900) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00B\00\00\00\00\00\00\00\00\00\00\00") - (data $105 (i32.const 3932) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00C\00\00\00\00\00\00\00\00\00\00\00") - (data $106 (i32.const 3964) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00D\00\00\00\00\00\00\00\00\00\00\00") - (data $107 (i32.const 3996) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00E\00\00\00\00\00\00\00\00\00\00\00") - (data $108 (i32.const 4028) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00F\00\00\00\00\00\00\00\00\00\00\00") - (data $109 (i32.const 4060) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00G\00\00\00\00\00\00\00\00\00\00\00") - (data $110 (i32.const 4092) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00H\00\00\00\00\00\00\00\00\00\00\00") - (data $111 (i32.const 4124) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00I\00\00\00\00\00\00\00\00\00\00\00") - (data $112 (i32.const 4156) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00J\00\00\00\00\00\00\00\00\00\00\00") - (data $113 (i32.const 4188) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00K\00\00\00\00\00\00\00\00\00\00\00") - (data $114 (i32.const 4220) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00L\00\00\00\00\00\00\00\00\00\00\00") - (data $115 (i32.const 4252) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00M\00\00\00\00\00\00\00\00\00\00\00") - (data $116 (i32.const 4284) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00N\00\00\00\00\00\00\00\00\00\00\00") - (data $117 (i32.const 4316) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00O\00\00\00\00\00\00\00\00\00\00\00") - (data $118 (i32.const 4348) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00P\00\00\00\00\00\00\00\00\00\00\00") - (data $119 (i32.const 4380) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00Q\00\00\00\00\00\00\00\00\00\00\00") - (data $120 (i32.const 4412) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00R\00\00\00\00\00\00\00\00\00\00\00") - (data $121 (i32.const 4444) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00S\00\00\00\00\00\00\00\00\00\00\00") - (data $122 (i32.const 4476) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00T\00\00\00\00\00\00\00\00\00\00\00") - (data $123 (i32.const 4508) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00U\00\00\00\00\00\00\00\00\00\00\00") - (data $124 (i32.const 4540) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00V\00\00\00\00\00\00\00\00\00\00\00") - (data $125 (i32.const 4572) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00W\00\00\00\00\00\00\00\00\00\00\00") - (data $126 (i32.const 4604) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00X\00\00\00\00\00\00\00\00\00\00\00") - (data $127 (i32.const 4636) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00Y\00\00\00\00\00\00\00\00\00\00\00") - (data $128 (i32.const 4668) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00Z\00\00\00\00\00\00\00\00\00\00\00") - (data $129 (i32.const 4700) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00[\00\00\00\00\00\00\00\00\00\00\00") - (data $130 (i32.const 4732) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00\\\00\00\00\00\00\00\00\00\00\00\00") - (data $131 (i32.const 4764) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00]\00\00\00\00\00\00\00\00\00\00\00") - (data $132 (i32.const 4796) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00^\00\00\00\00\00\00\00\00\00\00\00") - (data $133 (i32.const 4828) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00_\00\00\00\00\00\00\00\00\00\00\00") - (data $134 (i32.const 4860) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00`\00\00\00\00\00\00\00\00\00\00\00") - (data $135 (i32.const 4892) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") - (data $136 (i32.const 4924) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") - (data $137 (i32.const 4956) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00c\00\00\00\00\00\00\00\00\00\00\00") - (data $138 (i32.const 4988) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00d\00\00\00\00\00\00\00\00\00\00\00") - (data $139 (i32.const 5020) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00e\00\00\00\00\00\00\00\00\00\00\00") - (data $140 (i32.const 5052) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00f\00\00\00\00\00\00\00\00\00\00\00") - (data $141 (i32.const 5084) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00g\00\00\00\00\00\00\00\00\00\00\00") - (data $142 (i32.const 5116) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00h\00\00\00\00\00\00\00\00\00\00\00") - (data $143 (i32.const 5148) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00i\00\00\00\00\00\00\00\00\00\00\00") - (data $144 (i32.const 5180) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00j\00\00\00\00\00\00\00\00\00\00\00") - (data $145 (i32.const 5212) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00k\00\00\00\00\00\00\00\00\00\00\00") - (data $146 (i32.const 5244) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00l\00\00\00\00\00\00\00\00\00\00\00") - (data $147 (i32.const 5276) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00m\00\00\00\00\00\00\00\00\00\00\00") - (data $148 (i32.const 5308) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00n\00\00\00\00\00\00\00\00\00\00\00") - (data $149 (i32.const 5340) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00o\00\00\00\00\00\00\00\00\00\00\00") - (data $150 (i32.const 5372) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00p\00\00\00\00\00\00\00\00\00\00\00") - (data $151 (i32.const 5404) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00q\00\00\00\00\00\00\00\00\00\00\00") - (data $152 (i32.const 5436) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00r\00\00\00\00\00\00\00\00\00\00\00") - (data $153 (i32.const 5468) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00s\00\00\00\00\00\00\00\00\00\00\00") - (data $154 (i32.const 5500) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00t\00\00\00\00\00\00\00\00\00\00\00") - (data $155 (i32.const 5532) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00u\00\00\00\00\00\00\00\00\00\00\00") - (data $156 (i32.const 5564) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00v\00\00\00\00\00\00\00\00\00\00\00") - (data $157 (i32.const 5596) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00w\00\00\00\00\00\00\00\00\00\00\00") - (data $158 (i32.const 5628) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00x\00\00\00\00\00\00\00\00\00\00\00") - (data $159 (i32.const 5660) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00y\00\00\00\00\00\00\00\00\00\00\00") - (data $160 (i32.const 5692) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00z\00\00\00\00\00\00\00\00\00\00\00") - (data $161 (i32.const 5724) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00{\00\00\00\00\00\00\00\00\00\00\00") - (data $162 (i32.const 5756) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00|\00\00\00\00\00\00\00\00\00\00\00") - (data $163 (i32.const 5788) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00}\00\00\00\00\00\00\00\00\00\00\00") - (data $164 (i32.const 5820) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00~\00\00\00\00\00\00\00\00\00\00\00") - (data $165 (i32.const 5852) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00\7f\00\00\00\00\00\00\00\00\00\00\00") - (data $166 (i32.const 5884) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00\80\00\00\00\00\00\00\00\00\00\00\00") - (data $167 (i32.const 5916) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00\81\00\00\00\00\00\00\00\00\00\00\00") - (data $168 (i32.const 5948) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00\82\00\00\00\00\00\00\00\00\00\00\00") - (data $169 (i32.const 5980) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00\83\00\00\00\00\00\00\00\00\00\00\00") - (data $170 (i32.const 6012) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00\84\00\00\00\00\00\00\00\00\00\00\00") - (data $171 (i32.const 6044) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00\85\00\00\00\00\00\00\00\00\00\00\00") - (data $172 (i32.const 6076) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e\00\00\00") - (data $173 (i32.const 6108) ",\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\10\00\00\00\d0\17\00\00\d0\17\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $174 (i32.const 6156) "\1c\00\00\00\00\00\00\00\00\00\00\003\00\00\00\08\00\00\00\86\00\00\00\00\00\00\00\00\00\00\00") - (data $175 (i32.const 6188) "\1c\00\00\00\00\00\00\00\00\00\00\004\00\00\00\08\00\00\00\87\00\00\00\00\00\00\00\00\00\00\00") - (data $176 (i32.const 6220) "\1c\00\00\00\00\00\00\00\00\00\00\005\00\00\00\08\00\00\00\88\00\00\00\00\00\00\00\00\00\00\00") - (data $177 (i32.const 6252) "\1c\00\00\00\00\00\00\00\00\00\00\006\00\00\00\08\00\00\00\89\00\00\00\00\00\00\00\00\00\00\00") - (data $178 (i32.const 6284) "\1c\00\00\00\00\00\00\00\00\00\00\007\00\00\00\08\00\00\00\8a\00\00\00\00\00\00\00\00\00\00\00") - (data $179 (i32.const 6316) "\1c\00\00\00\00\00\00\00\00\00\00\008\00\00\00\08\00\00\00\8b\00\00\00\00\00\00\00\00\00\00\00") - (data $180 (i32.const 6348) "\1c\00\00\00\00\00\00\00\00\00\00\009\00\00\00\08\00\00\00\8c\00\00\00\00\00\00\00\00\00\00\00") - (data $181 (i32.const 6380) "\1c\00\00\00\00\00\00\00\00\00\00\00:\00\00\00\08\00\00\00\8d\00\00\00\00\00\00\00\00\00\00\00") - (data $182 (i32.const 6412) "\1c\00\00\00\00\00\00\00\00\00\00\00;\00\00\00\08\00\00\00\8e\00\00\00\00\00\00\00\00\00\00\00") - (data $183 (i32.const 6444) "\1c\00\00\00\00\00\00\00\00\00\00\00<\00\00\00\08\00\00\00\8f\00\00\00\00\00\00\00\00\00\00\00") - (data $184 (i32.const 6476) "\1c\00\00\00\00\00\00\00\00\00\00\00=\00\00\00\08\00\00\00\90\00\00\00\00\00\00\00\00\00\00\00") - (data $185 (i32.const 6508) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $186 (i32.const 6572) ",\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\10\00\00\00\80\19\00\00\80\19\00\00$\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $187 (i32.const 6620) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n\00\00\00") - (data $188 (i32.const 6684) ",\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\10\00\00\00\f0\19\00\00\f0\19\00\00,\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $189 (i32.const 6732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $190 (i32.const 6764) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") - (data $191 (i32.const 6892) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $192 (i32.const 6956) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data $193 (i32.const 6988) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data $194 (i32.const 7388) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $195 (i32.const 8444) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") - (data $196 (i32.const 8540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") - (data $197 (i32.const 8572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\00,\002\00,\003\00,\004\00,\005\00\00\00\00\00\00\00\00\00\00\00") - (data $198 (i32.const 8620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") - (data $199 (i32.const 8652) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") - (data $200 (i32.const 8684) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") - (data $201 (i32.const 8732) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $202 (i32.const 8784) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $203 (i32.const 8840) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00\10\00\00\000\'\00\000\'\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $213 (i32.const 10092) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00") - (data $214 (i32.const 10140) ",\00\00\00\00\00\00\00\00\00\00\00?\00\00\00\10\00\00\00\80\'\00\00\80\'\00\00\18\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $215 (i32.const 10188) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\92\91\90\00\00\00\00\00\00\00\00\00") - (data $216 (i32.const 10220) ",\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00\e0\'\00\00\e0\'\00\00\03\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $217 (i32.const 10268) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") - (data $218 (i32.const 10300) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00\00\00") - (data $219 (i32.const 10348) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00\00\00") - (data $220 (i32.const 10380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00\00\00") - (data $221 (i32.const 10412) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00\00\00") - (data $222 (i32.const 10444) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90\00\00") - (data $223 (i32.const 10476) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") - (data $224 (i32.const 10508) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") - (data $225 (i32.const 10556) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00\00\00") - (data $226 (i32.const 10588) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00\00\00") - (data $227 (i32.const 10620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00\00\00") - (data $228 (i32.const 10652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90\00\00") - (data $229 (i32.const 10684) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") - (data $230 (i32.const 10716) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00\00\00") - (data $231 (i32.const 10780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00\00\00") - (data $232 (i32.const 10812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00\00\00") - (data $233 (i32.const 10844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00\00\00") - (data $234 (i32.const 10876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00defg\ff\ff\ff\00\00\00\00\00") - (data $235 (i32.const 10908) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $236 (i32.const 10956) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") - (data $237 (i32.const 11004) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $238 (i32.const 11052) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $239 (i32.const 11100) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $240 (i32.const 11148) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff\00\00\00\00\00\00\00\00") - (data $241 (i32.const 11196) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $242 (i32.const 11244) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y\00\00\00\00\00\00\00") - (data $243 (i32.const 11292) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $244 (i32.const 11340) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $245 (i32.const 11388) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $246 (i32.const 11436) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff\00\00\00\00\00\00\00\00") - (data $247 (i32.const 11484) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $248 (i32.const 11548) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") - (data $249 (i32.const 11596) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $250 (i32.const 11660) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $251 (i32.const 11724) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $252 (i32.const 11788) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff\00\00\00\00") - (data $253 (i32.const 11852) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $254 (i32.const 11916) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y\00\00\00\00\00\00\00") - (data $255 (i32.const 11964) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $256 (i32.const 12028) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $257 (i32.const 12092) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data $258 (i32.const 12156) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff\00\00\00\00") - (data $259 (i32.const 12220) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $260 (i32.const 12332) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") - (data $261 (i32.const 12380) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $262 (i32.const 12492) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $263 (i32.const 12604) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $264 (i32.const 12716) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") - (data $265 (i32.const 12828) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $266 (i32.const 12940) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y\00\00\00\00\00\00\00") - (data $267 (i32.const 12988) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $268 (i32.const 13100) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $269 (i32.const 13212) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $270 (i32.const 13324) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") - (data $271 (i32.const 13436) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $272 (i32.const 13500) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y\00\00\00\00\00") - (data $273 (i32.const 13548) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $274 (i32.const 13612) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A\00\00\00\00\00\00\00\00") - (data $275 (i32.const 13676) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2\00\00\00\00") - (data $276 (i32.const 13740) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $277 (i32.const 13852) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y\00\00\00\00\00") - (data $278 (i32.const 13900) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $279 (i32.const 14012) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\1c@\00\00\00\00\00\00 @\00\00\00\00\00\00\"@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $280 (i32.const 14124) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00Y@\00\00\00\00\00@Y@\00\00\00\00\00\80Y@\00\00\00\00\00\c0Y@\00\00\00\00\00@\8f@\00\00\00\00\00H\8f@\00\00\00\00\00P\8f@\00\00\00\00\00\80[\c0\00\00\00\00\00\c0[\c0\00\00\00\00\00\00\\\c0\00\00\00\00\00\00\00\00\00\00\00\00") - (data $281 (i32.const 14236) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\00\ff\00\00\00d\n\ff\ff\00\00\00") - (data $282 (i32.const 14268) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\ffd\ff\00\00d\n\ff\00\00\00") - (data $283 (i32.const 14300) "\1c\00\00\00\00\00\00\00\00\00\00\00F\00\00\00\08\00\00\00\91\00\00\00\00\00\00\00\00\00\00\00") - (data $284 (i32.const 14332) "\1c\00\00\00\00\00\00\00\00\00\00\00F\00\00\00\08\00\00\00\92\00\00\00\00\00\00\00\00\00\00\00") - (data $285 (i32.const 14364) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\93\00\00\00\00\00\00\00\00\00\00\00") - (data $286 (i32.const 14396) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\94\00\00\00\00\00\00\00\00\00\00\00") - (data $287 (i32.const 14428) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\95\00\00\00\00\00\00\00\00\00\00\00") - (data $288 (i32.const 14460) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\96\00\00\00\00\00\00\00\00\00\00\00") - (data $289 (i32.const 14492) "\1c\00\00\00\00\00\00\00\00\00\00\00H\00\00\00\08\00\00\00\97\00\00\00\00\00\00\00\00\00\00\00") - (data $290 (i32.const 14524) "\1c\00\00\00\00\00\00\00\00\00\00\00H\00\00\00\08\00\00\00\98\00\00\00\00\00\00\00\00\00\00\00") - (data $291 (i32.const 14556) "\1c\00\00\00\00\00\00\00\00\00\00\00I\00\00\00\08\00\00\00\99\00\00\00\00\00\00\00\00\00\00\00") - (data $292 (i32.const 14588) "\1c\00\00\00\00\00\00\00\00\00\00\00I\00\00\00\08\00\00\00\9a\00\00\00\00\00\00\00\00\00\00\00") - (data $293 (i32.const 14620) "\1c\00\00\00\00\00\00\00\00\00\00\00J\00\00\00\08\00\00\00\9b\00\00\00\00\00\00\00\00\00\00\00") - (data $294 (i32.const 14652) "\1c\00\00\00\00\00\00\00\00\00\00\00J\00\00\00\08\00\00\00\9c\00\00\00\00\00\00\00\00\00\00\00") - (data $295 (i32.const 14684) "\1c\00\00\00\00\00\00\00\00\00\00\00K\00\00\00\08\00\00\00\9d\00\00\00\00\00\00\00\00\00\00\00") - (data $296 (i32.const 14716) "\1c\00\00\00\00\00\00\00\00\00\00\00K\00\00\00\08\00\00\00\9e\00\00\00\00\00\00\00\00\00\00\00") - (data $297 (i32.const 14748) "\1c\00\00\00\00\00\00\00\00\00\00\00L\00\00\00\08\00\00\00\9f\00\00\00\00\00\00\00\00\00\00\00") - (data $298 (i32.const 14780) "\1c\00\00\00\00\00\00\00\00\00\00\00L\00\00\00\08\00\00\00\a0\00\00\00\00\00\00\00\00\00\00\00") - (data $299 (i32.const 14812) "\1c\00\00\00\00\00\00\00\00\00\00\00M\00\00\00\08\00\00\00\a1\00\00\00\00\00\00\00\00\00\00\00") - (data $300 (i32.const 14844) "\1c\00\00\00\00\00\00\00\00\00\00\00M\00\00\00\08\00\00\00\a2\00\00\00\00\00\00\00\00\00\00\00") - (data $301 (i32.const 14876) "\1c\00\00\00\00\00\00\00\00\00\00\00N\00\00\00\08\00\00\00\a3\00\00\00\00\00\00\00\00\00\00\00") - (data $302 (i32.const 14908) "\1c\00\00\00\00\00\00\00\00\00\00\00N\00\00\00\08\00\00\00\a4\00\00\00\00\00\00\00\00\00\00\00") - (data $303 (i32.const 14940) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\a5\00\00\00\00\00\00\00\00\00\00\00") - (data $304 (i32.const 14976) "O\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00\00\00\00\00B\08\00\00\02\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\19\00\00\02\1a\00\00B\00\00\00\82\08\00\00\82\00\00\00\02\01\00\00\02\n\00\00\02\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $20 (i32.const 2428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $21 (i32.const 2492) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2556) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2620) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\01\04\05\00\00\00\00\00\00\00") + (data $25 (i32.const 2684) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $26 (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2764) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2796) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\00\02\02\00\00\00\00\00\00\00") + (data $29 (i32.const 2828) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\00\02\02\00\00\00\00\00\00\00") + (data $30 (i32.const 2860) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 2892) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data $32 (i32.const 2924) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 2972) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $34 (i32.const 3020) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $35 (i32.const 3068) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 3116) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $37 (i32.const 3164) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $38 (i32.const 3196) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $39 (i32.const 3244) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $40 (i32.const 3292) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $41 (i32.const 3340) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $42 (i32.const 3388) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $43 (i32.const 3436) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $44 (i32.const 3484) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $45 (i32.const 3532) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $46 (i32.const 3580) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $47 (i32.const 3628) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $48 (i32.const 3676) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $49 (i32.const 3724) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $50 (i32.const 3772) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $51 (i32.const 3820) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $52 (i32.const 3852) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $53 (i32.const 3884) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $54 (i32.const 3916) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $55 (i32.const 3948) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data $56 (i32.const 3980) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data $57 (i32.const 4012) "\1c\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $58 (i32.const 4044) "\1c\00\00\00\00\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $59 (i32.const 4076) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data $60 (i32.const 4108) "\1c\00\00\00\00\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data $61 (i32.const 4140) "\1c\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data $62 (i32.const 4172) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\r\00\00\00\00\00\00\00\00\00\00\00") + (data $63 (i32.const 4204) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") + (data $64 (i32.const 4236) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") + (data $65 (i32.const 4268) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") + (data $66 (i32.const 4300) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") + (data $67 (i32.const 4332) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00") + (data $68 (i32.const 4364) "\1c\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00\00\00\00\00") + (data $69 (i32.const 4396) "\1c\00\00\00\00\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00") + (data $70 (i32.const 4428) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00\00\00\00\00") + (data $71 (i32.const 4460) "\1c\00\00\00\00\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00") + (data $72 (i32.const 4492) "\1c\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00\00\00\00\00") + (data $73 (i32.const 4524) "\1c\00\00\00\00\00\00\00\00\00\00\00\1d\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00") + (data $74 (i32.const 4556) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00\00\00\00\00") + (data $75 (i32.const 4588) "\1c\00\00\00\00\00\00\00\00\00\00\00\1f\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00") + (data $76 (i32.const 4620) "\1c\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00") + (data $77 (i32.const 4652) "\1c\00\00\00\00\00\00\00\00\00\00\00!\00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00") + (data $78 (i32.const 4684) "\1c\00\00\00\00\00\00\00\00\00\00\00\"\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00\00\00\00\00") + (data $79 (i32.const 4716) "\1c\00\00\00\00\00\00\00\00\00\00\00#\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00") + (data $80 (i32.const 4748) "\1c\00\00\00\00\00\00\00\00\00\00\00$\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00") + (data $81 (i32.const 4780) "\1c\00\00\00\00\00\00\00\00\00\00\00%\00\00\00\08\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $82 (i32.const 4812) "\1c\00\00\00\00\00\00\00\00\00\00\00&\00\00\00\08\00\00\00!\00\00\00\00\00\00\00\00\00\00\00") + (data $83 (i32.const 4844) "\1c\00\00\00\00\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00") + (data $84 (i32.const 4876) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00#\00\00\00\00\00\00\00\00\00\00\00") + (data $85 (i32.const 4908) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00$\00\00\00\00\00\00\00\00\00\00\00") + (data $86 (i32.const 4940) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00%\00\00\00\00\00\00\00\00\00\00\00") + (data $87 (i32.const 4972) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00&\00\00\00\00\00\00\00\00\00\00\00") + (data $88 (i32.const 5004) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00\00\00\00\00") + (data $89 (i32.const 5036) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00(\00\00\00\00\00\00\00\00\00\00\00") + (data $90 (i32.const 5068) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00)\00\00\00\00\00\00\00\00\00\00\00") + (data $91 (i32.const 5100) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00*\00\00\00\00\00\00\00\00\00\00\00") + (data $92 (i32.const 5132) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") + (data $93 (i32.const 5164) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data $94 (i32.const 5196) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data $95 (i32.const 5228) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") + (data $96 (i32.const 5260) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00/\00\00\00\00\00\00\00\00\00\00\00") + (data $97 (i32.const 5292) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $98 (i32.const 5324) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $99 (i32.const 5356) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $100 (i32.const 5388) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data $101 (i32.const 5420) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data $102 (i32.const 5452) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\005\00\00\00\00\00\00\00\00\00\00\00") + (data $103 (i32.const 5484) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\006\00\00\00\00\00\00\00\00\00\00\00") + (data $104 (i32.const 5516) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\007\00\00\00\00\00\00\00\00\00\00\00") + (data $105 (i32.const 5548) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\008\00\00\00\00\00\00\00\00\00\00\00") + (data $106 (i32.const 5580) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\009\00\00\00\00\00\00\00\00\00\00\00") + (data $107 (i32.const 5612) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $108 (i32.const 5644) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00;\00\00\00\00\00\00\00\00\00\00\00") + (data $109 (i32.const 5676) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00<\00\00\00\00\00\00\00\00\00\00\00") + (data $110 (i32.const 5708) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00=\00\00\00\00\00\00\00\00\00\00\00") + (data $111 (i32.const 5740) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00>\00\00\00\00\00\00\00\00\00\00\00") + (data $112 (i32.const 5772) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00?\00\00\00\00\00\00\00\00\00\00\00") + (data $113 (i32.const 5804) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00@\00\00\00\00\00\00\00\00\00\00\00") + (data $114 (i32.const 5836) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00A\00\00\00\00\00\00\00\00\00\00\00") + (data $115 (i32.const 5868) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00B\00\00\00\00\00\00\00\00\00\00\00") + (data $116 (i32.const 5900) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00C\00\00\00\00\00\00\00\00\00\00\00") + (data $117 (i32.const 5932) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00D\00\00\00\00\00\00\00\00\00\00\00") + (data $118 (i32.const 5964) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00E\00\00\00\00\00\00\00\00\00\00\00") + (data $119 (i32.const 5996) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00F\00\00\00\00\00\00\00\00\00\00\00") + (data $120 (i32.const 6028) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00G\00\00\00\00\00\00\00\00\00\00\00") + (data $121 (i32.const 6060) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00H\00\00\00\00\00\00\00\00\00\00\00") + (data $122 (i32.const 6092) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00I\00\00\00\00\00\00\00\00\00\00\00") + (data $123 (i32.const 6124) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00J\00\00\00\00\00\00\00\00\00\00\00") + (data $124 (i32.const 6156) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00K\00\00\00\00\00\00\00\00\00\00\00") + (data $125 (i32.const 6188) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00L\00\00\00\00\00\00\00\00\00\00\00") + (data $126 (i32.const 6220) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00M\00\00\00\00\00\00\00\00\00\00\00") + (data $127 (i32.const 6252) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00N\00\00\00\00\00\00\00\00\00\00\00") + (data $128 (i32.const 6284) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00O\00\00\00\00\00\00\00\00\00\00\00") + (data $129 (i32.const 6316) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00P\00\00\00\00\00\00\00\00\00\00\00") + (data $130 (i32.const 6348) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00Q\00\00\00\00\00\00\00\00\00\00\00") + (data $131 (i32.const 6380) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00R\00\00\00\00\00\00\00\00\00\00\00") + (data $132 (i32.const 6412) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00S\00\00\00\00\00\00\00\00\00\00\00") + (data $133 (i32.const 6444) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00T\00\00\00\00\00\00\00\00\00\00\00") + (data $134 (i32.const 6476) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00U\00\00\00\00\00\00\00\00\00\00\00") + (data $135 (i32.const 6508) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00V\00\00\00\00\00\00\00\00\00\00\00") + (data $136 (i32.const 6540) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00W\00\00\00\00\00\00\00\00\00\00\00") + (data $137 (i32.const 6572) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00X\00\00\00\00\00\00\00\00\00\00\00") + (data $138 (i32.const 6604) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00Y\00\00\00\00\00\00\00\00\00\00\00") + (data $139 (i32.const 6636) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00Z\00\00\00\00\00\00\00\00\00\00\00") + (data $140 (i32.const 6668) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00[\00\00\00\00\00\00\00\00\00\00\00") + (data $141 (i32.const 6700) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00\\\00\00\00\00\00\00\00\00\00\00\00") + (data $142 (i32.const 6732) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00]\00\00\00\00\00\00\00\00\00\00\00") + (data $143 (i32.const 6764) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00^\00\00\00\00\00\00\00\00\00\00\00") + (data $144 (i32.const 6796) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00_\00\00\00\00\00\00\00\00\00\00\00") + (data $145 (i32.const 6828) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00`\00\00\00\00\00\00\00\00\00\00\00") + (data $146 (i32.const 6860) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $147 (i32.const 6892) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data $148 (i32.const 6924) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00c\00\00\00\00\00\00\00\00\00\00\00") + (data $149 (i32.const 6956) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00d\00\00\00\00\00\00\00\00\00\00\00") + (data $150 (i32.const 6988) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00e\00\00\00\00\00\00\00\00\00\00\00") + (data $151 (i32.const 7020) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00f\00\00\00\00\00\00\00\00\00\00\00") + (data $152 (i32.const 7052) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00g\00\00\00\00\00\00\00\00\00\00\00") + (data $153 (i32.const 7084) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00h\00\00\00\00\00\00\00\00\00\00\00") + (data $154 (i32.const 7116) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00i\00\00\00\00\00\00\00\00\00\00\00") + (data $155 (i32.const 7148) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00j\00\00\00\00\00\00\00\00\00\00\00") + (data $156 (i32.const 7180) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00k\00\00\00\00\00\00\00\00\00\00\00") + (data $157 (i32.const 7212) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00l\00\00\00\00\00\00\00\00\00\00\00") + (data $158 (i32.const 7244) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00m\00\00\00\00\00\00\00\00\00\00\00") + (data $159 (i32.const 7276) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00n\00\00\00\00\00\00\00\00\00\00\00") + (data $160 (i32.const 7308) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00o\00\00\00\00\00\00\00\00\00\00\00") + (data $161 (i32.const 7340) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00p\00\00\00\00\00\00\00\00\00\00\00") + (data $162 (i32.const 7372) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00q\00\00\00\00\00\00\00\00\00\00\00") + (data $163 (i32.const 7404) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00r\00\00\00\00\00\00\00\00\00\00\00") + (data $164 (i32.const 7436) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $165 (i32.const 7468) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00t\00\00\00\00\00\00\00\00\00\00\00") + (data $166 (i32.const 7500) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00u\00\00\00\00\00\00\00\00\00\00\00") + (data $167 (i32.const 7532) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00v\00\00\00\00\00\00\00\00\00\00\00") + (data $168 (i32.const 7564) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00w\00\00\00\00\00\00\00\00\00\00\00") + (data $169 (i32.const 7596) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00x\00\00\00\00\00\00\00\00\00\00\00") + (data $170 (i32.const 7628) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $171 (i32.const 7660) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00z\00\00\00\00\00\00\00\00\00\00\00") + (data $172 (i32.const 7692) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00{\00\00\00\00\00\00\00\00\00\00\00") + (data $173 (i32.const 7724) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00|\00\00\00\00\00\00\00\00\00\00\00") + (data $174 (i32.const 7756) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00}\00\00\00\00\00\00\00\00\00\00\00") + (data $175 (i32.const 7788) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00~\00\00\00\00\00\00\00\00\00\00\00") + (data $176 (i32.const 7820) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00\7f\00\00\00\00\00\00\00\00\00\00\00") + (data $177 (i32.const 7852) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00\80\00\00\00\00\00\00\00\00\00\00\00") + (data $178 (i32.const 7884) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00\81\00\00\00\00\00\00\00\00\00\00\00") + (data $179 (i32.const 7916) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00\82\00\00\00\00\00\00\00\00\00\00\00") + (data $180 (i32.const 7948) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00\83\00\00\00\00\00\00\00\00\00\00\00") + (data $181 (i32.const 7980) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00\84\00\00\00\00\00\00\00\00\00\00\00") + (data $182 (i32.const 8012) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00\85\00\00\00\00\00\00\00\00\00\00\00") + (data $183 (i32.const 8044) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e\00\00\00") + (data $184 (i32.const 8076) ",\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\10\00\00\00\80\1f\00\00\80\1f\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $185 (i32.const 8124) "\1c\00\00\00\00\00\00\00\00\00\00\003\00\00\00\08\00\00\00\86\00\00\00\00\00\00\00\00\00\00\00") + (data $186 (i32.const 8156) "\1c\00\00\00\00\00\00\00\00\00\00\004\00\00\00\08\00\00\00\87\00\00\00\00\00\00\00\00\00\00\00") + (data $187 (i32.const 8188) "\1c\00\00\00\00\00\00\00\00\00\00\005\00\00\00\08\00\00\00\88\00\00\00\00\00\00\00\00\00\00\00") + (data $188 (i32.const 8220) "\1c\00\00\00\00\00\00\00\00\00\00\006\00\00\00\08\00\00\00\89\00\00\00\00\00\00\00\00\00\00\00") + (data $189 (i32.const 8252) "\1c\00\00\00\00\00\00\00\00\00\00\007\00\00\00\08\00\00\00\8a\00\00\00\00\00\00\00\00\00\00\00") + (data $190 (i32.const 8284) "\1c\00\00\00\00\00\00\00\00\00\00\008\00\00\00\08\00\00\00\8b\00\00\00\00\00\00\00\00\00\00\00") + (data $191 (i32.const 8316) "\1c\00\00\00\00\00\00\00\00\00\00\009\00\00\00\08\00\00\00\8c\00\00\00\00\00\00\00\00\00\00\00") + (data $192 (i32.const 8348) "\1c\00\00\00\00\00\00\00\00\00\00\00:\00\00\00\08\00\00\00\8d\00\00\00\00\00\00\00\00\00\00\00") + (data $193 (i32.const 8380) "\1c\00\00\00\00\00\00\00\00\00\00\00;\00\00\00\08\00\00\00\8e\00\00\00\00\00\00\00\00\00\00\00") + (data $194 (i32.const 8412) "\1c\00\00\00\00\00\00\00\00\00\00\00<\00\00\00\08\00\00\00\8f\00\00\00\00\00\00\00\00\00\00\00") + (data $195 (i32.const 8444) "\1c\00\00\00\00\00\00\00\00\00\00\00=\00\00\00\08\00\00\00\90\00\00\00\00\00\00\00\00\00\00\00") + (data $196 (i32.const 8476) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $197 (i32.const 8540) ",\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\10\00\00\000!\00\000!\00\00$\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $198 (i32.const 8588) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n\00\00\00") + (data $199 (i32.const 8652) ",\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\10\00\00\00\a0!\00\00\a0!\00\00,\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $200 (i32.const 8700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data $201 (i32.const 8732) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\00,\002\00,\003\00,\004\00,\005\00\00\00\00\00\00\00\00\00\00\00") + (data $202 (i32.const 8780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") + (data $203 (i32.const 8812) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") + (data $204 (i32.const 8844) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $205 (i32.const 8892) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $206 (i32.const 8944) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $207 (i32.const 9000) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00\10\00\00\00\d0\'\00\00\d0\'\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $217 (i32.const 10252) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00") + (data $218 (i32.const 10300) ",\00\00\00\00\00\00\00\00\00\00\00?\00\00\00\10\00\00\00 (\00\00 (\00\00\18\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $219 (i32.const 10348) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\92\91\90\00\00\00\00\00\00\00\00\00") + (data $220 (i32.const 10380) ",\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00\80(\00\00\80(\00\00\03\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $221 (i32.const 10428) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") + (data $222 (i32.const 10460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $223 (i32.const 10508) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00\00\00") + (data $224 (i32.const 10540) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00\00\00") + (data $225 (i32.const 10572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00\00\00") + (data $226 (i32.const 10604) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90\00\00") + (data $227 (i32.const 10636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") + (data $228 (i32.const 10668) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") + (data $229 (i32.const 10716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00\00\00") + (data $230 (i32.const 10748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00\00\00") + (data $231 (i32.const 10780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00\00\00") + (data $232 (i32.const 10812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90\00\00") + (data $233 (i32.const 10844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") + (data $234 (i32.const 10876) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $235 (i32.const 10940) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00\00\00") + (data $236 (i32.const 10972) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00\00\00") + (data $237 (i32.const 11004) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00\00\00") + (data $238 (i32.const 11036) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00defg\ff\ff\ff\00\00\00\00\00") + (data $239 (i32.const 11068) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $240 (i32.const 11116) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") + (data $241 (i32.const 11164) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $242 (i32.const 11212) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $243 (i32.const 11260) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $244 (i32.const 11308) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff\00\00\00\00\00\00\00\00") + (data $245 (i32.const 11356) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $246 (i32.const 11404) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y\00\00\00\00\00\00\00") + (data $247 (i32.const 11452) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $248 (i32.const 11500) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $249 (i32.const 11548) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $250 (i32.const 11596) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff\00\00\00\00\00\00\00\00") + (data $251 (i32.const 11644) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $252 (i32.const 11708) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") + (data $253 (i32.const 11756) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $254 (i32.const 11820) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $255 (i32.const 11884) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $256 (i32.const 11948) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff\00\00\00\00") + (data $257 (i32.const 12012) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $258 (i32.const 12076) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y\00\00\00\00\00\00\00") + (data $259 (i32.const 12124) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $260 (i32.const 12188) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $261 (i32.const 12252) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $262 (i32.const 12316) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff\00\00\00\00") + (data $263 (i32.const 12380) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $264 (i32.const 12492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") + (data $265 (i32.const 12540) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $266 (i32.const 12652) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $267 (i32.const 12764) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $268 (i32.const 12876) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") + (data $269 (i32.const 12988) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $270 (i32.const 13100) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y\00\00\00\00\00\00\00") + (data $271 (i32.const 13148) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $272 (i32.const 13260) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $273 (i32.const 13372) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $274 (i32.const 13484) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") + (data $275 (i32.const 13596) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $276 (i32.const 13660) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y\00\00\00\00\00") + (data $277 (i32.const 13708) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $278 (i32.const 13772) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A\00\00\00\00\00\00\00\00") + (data $279 (i32.const 13836) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2\00\00\00\00") + (data $280 (i32.const 13900) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $281 (i32.const 14012) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y\00\00\00\00\00") + (data $282 (i32.const 14060) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $283 (i32.const 14172) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\1c@\00\00\00\00\00\00 @\00\00\00\00\00\00\"@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $284 (i32.const 14284) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00Y@\00\00\00\00\00@Y@\00\00\00\00\00\80Y@\00\00\00\00\00\c0Y@\00\00\00\00\00@\8f@\00\00\00\00\00H\8f@\00\00\00\00\00P\8f@\00\00\00\00\00\80[\c0\00\00\00\00\00\c0[\c0\00\00\00\00\00\00\\\c0\00\00\00\00\00\00\00\00\00\00\00\00") + (data $285 (i32.const 14396) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\00\ff\00\00\00d\n\ff\ff\00\00\00") + (data $286 (i32.const 14428) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\ffd\ff\00\00d\n\ff\00\00\00") + (data $287 (i32.const 14460) "\1c\00\00\00\00\00\00\00\00\00\00\00F\00\00\00\08\00\00\00\91\00\00\00\00\00\00\00\00\00\00\00") + (data $288 (i32.const 14492) "\1c\00\00\00\00\00\00\00\00\00\00\00F\00\00\00\08\00\00\00\92\00\00\00\00\00\00\00\00\00\00\00") + (data $289 (i32.const 14524) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\93\00\00\00\00\00\00\00\00\00\00\00") + (data $290 (i32.const 14556) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\94\00\00\00\00\00\00\00\00\00\00\00") + (data $291 (i32.const 14588) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\95\00\00\00\00\00\00\00\00\00\00\00") + (data $292 (i32.const 14620) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\96\00\00\00\00\00\00\00\00\00\00\00") + (data $293 (i32.const 14652) "\1c\00\00\00\00\00\00\00\00\00\00\00H\00\00\00\08\00\00\00\97\00\00\00\00\00\00\00\00\00\00\00") + (data $294 (i32.const 14684) "\1c\00\00\00\00\00\00\00\00\00\00\00H\00\00\00\08\00\00\00\98\00\00\00\00\00\00\00\00\00\00\00") + (data $295 (i32.const 14716) "\1c\00\00\00\00\00\00\00\00\00\00\00I\00\00\00\08\00\00\00\99\00\00\00\00\00\00\00\00\00\00\00") + (data $296 (i32.const 14748) "\1c\00\00\00\00\00\00\00\00\00\00\00I\00\00\00\08\00\00\00\9a\00\00\00\00\00\00\00\00\00\00\00") + (data $297 (i32.const 14780) "\1c\00\00\00\00\00\00\00\00\00\00\00J\00\00\00\08\00\00\00\9b\00\00\00\00\00\00\00\00\00\00\00") + (data $298 (i32.const 14812) "\1c\00\00\00\00\00\00\00\00\00\00\00J\00\00\00\08\00\00\00\9c\00\00\00\00\00\00\00\00\00\00\00") + (data $299 (i32.const 14844) "\1c\00\00\00\00\00\00\00\00\00\00\00K\00\00\00\08\00\00\00\9d\00\00\00\00\00\00\00\00\00\00\00") + (data $300 (i32.const 14876) "\1c\00\00\00\00\00\00\00\00\00\00\00K\00\00\00\08\00\00\00\9e\00\00\00\00\00\00\00\00\00\00\00") + (data $301 (i32.const 14908) "\1c\00\00\00\00\00\00\00\00\00\00\00L\00\00\00\08\00\00\00\9f\00\00\00\00\00\00\00\00\00\00\00") + (data $302 (i32.const 14940) "\1c\00\00\00\00\00\00\00\00\00\00\00L\00\00\00\08\00\00\00\a0\00\00\00\00\00\00\00\00\00\00\00") + (data $303 (i32.const 14972) "\1c\00\00\00\00\00\00\00\00\00\00\00M\00\00\00\08\00\00\00\a1\00\00\00\00\00\00\00\00\00\00\00") + (data $304 (i32.const 15004) "\1c\00\00\00\00\00\00\00\00\00\00\00M\00\00\00\08\00\00\00\a2\00\00\00\00\00\00\00\00\00\00\00") + (data $305 (i32.const 15036) "\1c\00\00\00\00\00\00\00\00\00\00\00N\00\00\00\08\00\00\00\a3\00\00\00\00\00\00\00\00\00\00\00") + (data $306 (i32.const 15068) "\1c\00\00\00\00\00\00\00\00\00\00\00N\00\00\00\08\00\00\00\a4\00\00\00\00\00\00\00\00\00\00\00") + (data $307 (i32.const 15100) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\a5\00\00\00\00\00\00\00\00\00\00\00") + (data $308 (i32.const 15136) "O\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00\00\00\00\00B\08\00\00\02\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\19\00\00\02\1a\00\00B\00\00\00\82\08\00\00\82\00\00\00\02\01\00\00\02\n\00\00\02\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 166 166 funcref) (elem $0 (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|1 $"std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0") (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -480,7 +496,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 192 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -550,7 +566,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 192 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -567,7 +583,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 192 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -597,8 +613,8 @@ i32.load i32.gt_u if - i32.const 336 - i32.const 400 + i32.const 320 + i32.const 384 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -666,7 +682,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 208 + i32.const 192 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -818,7 +834,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -838,7 +854,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -901,7 +917,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -1054,7 +1070,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -1071,7 +1087,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -1160,7 +1176,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -1203,7 +1219,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -1221,7 +1237,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -1289,7 +1305,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1406,7 +1422,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1452,7 +1468,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1484,7 +1500,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1728,7 +1744,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1948,7 +1964,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 192 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -2056,8 +2072,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 144 - i32.const 480 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -2159,7 +2175,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -2230,7 +2246,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2387,7 +2403,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2502,7 +2518,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2522,7 +2538,7 @@ i32.eqz if i32.const 0 - i32.const 480 + i32.const 464 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2570,8 +2586,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 144 - i32.const 208 + i32.const 128 + i32.const 192 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2616,6 +2632,422 @@ local.get $ptr return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) (local $child i32) (local $parent i32) @@ -2631,7 +3063,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 192 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -5382,429 +5814,6 @@ end end ) - (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) - local.get $value - i32.const 100000 - i32.lt_u - if - local.get $value - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $value - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $value - i32.const 10000 - i32.ge_u - i32.add - local.get $value - i32.const 1000 - i32.ge_u - i32.add - return - end - unreachable - else - local.get $value - i32.const 10000000 - i32.lt_u - if - i32.const 6 - local.get $value - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $value - i32.const 1000000000 - i32.ge_u - i32.add - local.get $value - i32.const 100000000 - i32.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) - (local $t i32) - (local $r i32) - (local $d1 i32) - (local $d2 i32) - (local $digits1 i64) - (local $digits2 i64) - (local $t|9 i32) - (local $d1|10 i32) - (local $digits i32) - (local $digits|12 i32) - (local $digit i32) - loop $while-continue|0 - local.get $num - i32.const 10000 - i32.ge_u - if - local.get $num - i32.const 10000 - i32.div_u - local.set $t - local.get $num - i32.const 10000 - i32.rem_u - local.set $r - local.get $t - local.set $num - local.get $r - i32.const 100 - i32.div_u - local.set $d1 - local.get $r - i32.const 100 - i32.rem_u - local.set $d2 - i32.const 6988 - local.get $d1 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits1 - i32.const 6988 - local.get $d2 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $digits2 - local.get $offset - i32.const 4 - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits1 - local.get $digits2 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $num - i32.const 100 - i32.ge_u - if - local.get $num - i32.const 100 - i32.div_u - local.set $t|9 - local.get $num - i32.const 100 - i32.rem_u - local.set $d1|10 - local.get $t|9 - local.set $num - local.get $offset - i32.const 2 - i32.sub - local.set $offset - i32.const 6988 - local.get $d1|10 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $digits - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits - i32.store - end - local.get $num - i32.const 10 - i32.ge_u - if - local.get $offset - i32.const 2 - i32.sub - local.set $offset - i32.const 6988 - local.get $num - i32.const 2 - i32.shl - i32.add - i32.load - local.set $digits|12 - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digits|12 - i32.store - else - local.get $offset - i32.const 1 - i32.sub - local.set $offset - i32.const 48 - local.get $num - i32.add - local.set $digit - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - local.get $digit - i32.store16 - end - ) - (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) - loop $while-continue|0 - local.get $offset - i32.const 2 - i32.ge_u - if - local.get $offset - i32.const 2 - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - i32.const 7408 - local.get $num - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $num - i64.const 8 - i64.shr_u - local.set $num - br $while-continue|0 - end - end - local.get $offset - i32.const 1 - i32.and - if - local.get $buffer - i32.const 7408 - local.get $num - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 - end - ) - (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) - (local $value i32) - (local $b64 i64) - (local $b i64) - (local $e i32) - block $~lib/util/number/isPowerOf2|inlined.0 (result i32) - local.get $base - local.set $value - local.get $value - i32.popcnt - i32.const 1 - i32.eq - br $~lib/util/number/isPowerOf2|inlined.0 - end - if - i32.const 63 - local.get $num - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $base - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - return - end - local.get $base - i64.extend_i32_s - local.set $b64 - local.get $b64 - local.set $b - i32.const 1 - local.set $e - loop $while-continue|0 - local.get $num - local.get $b - i64.ge_u - if - local.get $num - local.get $b - i64.div_u - local.set $num - local.get $b - local.get $b - i64.mul - local.set $b - local.get $e - i32.const 1 - i32.shl - local.set $e - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $num - i64.const 1 - i64.ge_u - if - local.get $num - local.get $b64 - i64.div_u - local.set $num - local.get $e - i32.const 1 - i32.add - local.set $e - br $while-continue|1 - end - end - local.get $e - i32.const 1 - i32.sub - return - ) - (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) - (local $base i64) - (local $shift i64) - (local $mask i64) - (local $q i64) - local.get $radix - i64.extend_i32_s - local.set $base - local.get $radix - local.get $radix - i32.const 1 - i32.sub - i32.and - i32.const 0 - i32.eq - if - local.get $radix - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s - local.set $shift - local.get $base - i64.const 1 - i64.sub - local.set $mask - loop $do-loop|0 - local.get $offset - i32.const 1 - i32.sub - local.set $offset - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - i32.const 8464 - local.get $num - local.get $mask - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $num - local.get $shift - i64.shr_u - local.set $num - local.get $num - i64.const 0 - i64.ne - br_if $do-loop|0 - end - else - loop $do-loop|1 - local.get $offset - i32.const 1 - i32.sub - local.set $offset - local.get $num - local.get $base - i64.div_u - local.set $q - local.get $buffer - local.get $offset - i32.const 1 - i32.shl - i32.add - i32.const 8464 - local.get $num - local.get $q - local.get $base - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $q - local.set $num - local.get $num - i64.const 0 - i64.ne - br_if $do-loop|1 - end - end - ) - (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) - local.get $this - i32.load offset=16 - ) - (func $~lib/string/String#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 1 - i32.shr_u - return - ) (func $~lib/util/number/itoa_buffered (param $buffer i32) (param $value i32) (result i32) (local $sign i32) (local $dest i32) @@ -6602,14 +6611,14 @@ i32.const 100 i32.rem_u local.set $c2 - i32.const 6988 + i32.const 764 local.get $c1 i32.const 2 i32.shl i32.add i64.load32_u local.set $digits1 - i32.const 6988 + i32.const 764 local.get $c2 i32.const 2 i32.shl @@ -6631,14 +6640,14 @@ i64.shl i64.or i64.store - i32.const 6988 + i32.const 764 local.get $b1 i32.const 2 i32.shl i32.add i64.load32_u local.set $digits1 - i32.const 6988 + i32.const 764 local.get $b2 i32.const 2 i32.shl @@ -7166,7 +7175,7 @@ local.set $delta|21 local.get $tmp local.set $rest - i32.const 9712 + i32.const 9872 local.get $kappa i32.const 2 i32.shl @@ -7303,7 +7312,7 @@ i32.add global.set $~lib/util/number/_K local.get $wp_w_frc - i32.const 9712 + i32.const 9872 i32.const 0 local.get $kappa i32.sub @@ -7982,14 +7991,14 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 8840 + i32.const 9000 local.get $index i32.const 3 i32.shl i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 9536 + i32.const 9696 local.get $index i32.const 1 i32.shl @@ -13081,2280 +13090,1101 @@ i32.const 0 drop ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $std/typedarray/forEachValues - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/typedarray/testArrayReverseValues - local.tee $1 + (func $~start + call $start:std/typedarray + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 48256 + i32.const 48304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - local.tee $1 + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - global.get $std/typedarray/testArrayWrapValues - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 end - global.get $std/typedarray/setSource1 - local.tee $1 + local.tee $fullMessage + i32.store + local.get $fileName if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store end - global.get $std/typedarray/setSource2 - local.tee $1 + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $this i32) (param $length i32) (param $alignLog2 i32) (result i32) + (local $buffer i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $this + i32.store end - global.get $std/typedarray/setSource3 - local.tee $1 + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $length + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 2400 + i32.const 2448 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable end - global.get $std/typedarray/setSource7 - local.tee $1 + global.get $~lib/memory/__stack_pointer + local.get $length + local.get $alignLog2 + i32.shl + local.tee $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $length + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Int8Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store end - i32.const 336 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 144 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 7408 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 8464 - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load + i32.store local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/typedarray/Int8Array~visit (param $0 i32) (param $1 i32) - local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.store local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint8ClampedArray~visit (param $0 i32) (param $1 i32) - local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + i32.sub + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit + return ) - (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) - local.get $0 + (func $~lib/typedarray/Int8Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint16Array~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.store local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Int32Array~visit (param $0 i32) (param $1 i32) - local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit + return ) - (func $~lib/typedarray/Uint32Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit + (func $~lib/typedarray/Uint8Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/typedarray/Int64Array~visit (param $0 i32) (param $1 i32) - local.get $0 + (func $~lib/typedarray/Uint8Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint64Array~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.store local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) - local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit + return ) - (func $~lib/typedarray/Float64Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/function/Function<%28f64%2Cf64%29=>i32>#get:_env (param $this i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#get:_env (param $this i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit - ) - (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.store local.get $1 - call $~lib/object/Object~visit - local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit + return ) - (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#get:_env (param $this i32) (result i32) + (func $~lib/typedarray/Int16Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit - ) - (func $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#get:_env (param $this i32) (result i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit - ) - (func $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#get:_env (param $this i32) (result i32) + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__visit + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#get:_env (param $this i32) (result i32) + (func $~lib/typedarray/Int16Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit - ) - (func $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.store local.get $1 - call $~lib/object/Object~visit - local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit + return ) - (func $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#get:_env (param $this i32) (result i32) + (func $~lib/typedarray/Uint16Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit - ) - (func $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#get:_env (param $this i32) (result i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit - ) - (func $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#get:_env (param $this i32) (result i32) + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#get:_env (param $this i32) (result i32) + (func $~lib/typedarray/Uint16Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit - ) - (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.store local.get $1 - call $~lib/object/Object~visit - local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit + return ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#get:_env (param $this i32) (result i32) + (func $~lib/typedarray/Int32Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#get:_env (param $this i32) (result i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit - ) - (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#get:_env (param $this i32) (result i32) + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#get:_env (param $this i32) (result i32) + (func $~lib/typedarray/Int32Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.store local.get $1 - call $~lib/object/Object~visit - local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit + return ) - (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#get:_env (param $this i32) (result i32) + (func $~lib/typedarray/Uint32Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit - ) - (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#get:_env (param $this i32) (result i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer local.get $this - i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit (param $0 i32) (param $1 i32) - local.get $0 + (func $~lib/typedarray/Uint32Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/object/Object~visit - local.get $0 + i32.store local.get $1 - call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit - ) - (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit - ) - (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit - ) - (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit - ) - (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>#__visit + return ) - (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>#get:_env (param $this i32) (result i32) + (func $~lib/typedarray/Int64Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>#get:_env (param $this i32) (result i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>#get:_env (param $this i32) (result i32) + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>#__visit + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>#get:_env (param $this i32) (result i32) + (func $~lib/typedarray/Int64Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.store local.get $1 - call $~lib/object/Object~visit - local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>#__visit + return ) - (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>#get:_env (param $this i32) (result i32) + (func $~lib/typedarray/Uint64Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>#get:_env (param $this i32) (result i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>#get:_env (param $this i32) (result i32) + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>#__visit + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>#get:_env (param $this i32) (result i32) + (func $~lib/typedarray/Uint64Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>#__visit - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.store local.get $1 - call $~lib/object/Object~visit - local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>#__visit + return ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>#get:_env (param $this i32) (result i32) + (func $~lib/typedarray/Float32Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>#__visit - ) - (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>#get:_env (param $this i32) (result i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>#__visit - ) - (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>#get:_env (param $this i32) (result i32) + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>#__visit + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>#get:_env (param $this i32) (result i32) + (func $~lib/typedarray/Float32Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>#__visit - ) - (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.store local.get $1 - call $~lib/object/Object~visit - local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>#__visit + return ) - (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>#get:_env (param $this i32) (result i32) + (func $~lib/typedarray/Float64Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>#__visit - ) - (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>#get:_env (param $this i32) (result i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>#__visit - ) - (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>#get:_env (param $this i32) (result i32) + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>#__visit + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>#get:_env (param $this i32) (result i32) + (func $~lib/typedarray/Float64Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.store local.get $1 - call $~lib/object/Object~visit - local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#get:buffer (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/function/Function<%28i8%2Ci8%29=>i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i8%2Ci8%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i8%2Ci8%29=>i32>#__visit - ) - (func $~lib/function/Function<%28u8%2Cu8%29=>i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u8%2Cu8%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Cu8%29=>i32>#__visit - ) - (func $~lib/function/Function<%28i16%2Ci16%29=>i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i16%2Ci16%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci16%29=>i32>#__visit - ) - (func $~lib/function/Function<%28u16%2Cu16%29=>i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u16%2Cu16%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Cu16%29=>i32>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit - ) - (func $~lib/function/Function<%28u32%2Cu32%29=>i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u32%2Cu32%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Cu32%29=>i32>#__visit - ) - (func $~lib/function/Function<%28i64%2Ci64%29=>i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28i64%2Ci64%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci64%29=>i32>#__visit - ) - (func $~lib/function/Function<%28u64%2Cu64%29=>i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28u64%2Cu64%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Cu64%29=>i32>#__visit - ) - (func $~lib/function/Function<%28f32%2Cf32%29=>i32>#get:_env (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28f32%2Cf32%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/function/Function<%28f32%2Cf32%29=>i32> - block $~lib/function/Function<%28u64%2Cu64%29=>i32> - block $~lib/function/Function<%28i64%2Ci64%29=>i32> - block $~lib/function/Function<%28u32%2Cu32%29=>i32> - block $~lib/function/Function<%28i32%2Ci32%29=>i32> - block $~lib/function/Function<%28u16%2Cu16%29=>i32> - block $~lib/function/Function<%28i16%2Ci16%29=>i32> - block $~lib/function/Function<%28u8%2Cu8%29=>i32> - block $~lib/function/Function<%28i8%2Ci8%29=>i32> - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void> - block $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void> - block $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void> - block $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void> - block $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void> - block $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void> - block $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void> - block $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void> - block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void> - block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void> - block $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void> - block $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool> - block $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool> - block $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool> - block $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool> - block $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool> - block $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool> - block $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool> - block $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool> - block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool> - block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool> - block $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool> - block $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> - block $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> - block $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> - block $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> - block $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> - block $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> - block $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> - block $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> - block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> - block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> - block $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> - block $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> - block $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> - block $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> - block $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> - block $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> - block $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> - block $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> - block $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> - block $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> - block $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> - block $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> - block $~lib/array/Array - block $~lib/array/Array - block $~lib/function/Function<%28f64%2Cf64%29=>i32> - block $~lib/typedarray/Float64Array - block $~lib/typedarray/Float32Array - block $~lib/typedarray/Uint64Array - block $~lib/typedarray/Int64Array - block $~lib/typedarray/Uint32Array - block $~lib/typedarray/Int32Array - block $~lib/typedarray/Uint16Array - block $~lib/typedarray/Int16Array - block $~lib/typedarray/Uint8ClampedArray - block $~lib/typedarray/Uint8Array - block $~lib/typedarray/Int8Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Int8Array $~lib/typedarray/Uint8Array $~lib/typedarray/Uint8ClampedArray $~lib/typedarray/Int16Array $~lib/typedarray/Uint16Array $~lib/typedarray/Int32Array $~lib/typedarray/Uint32Array $~lib/typedarray/Int64Array $~lib/typedarray/Uint64Array $~lib/typedarray/Float32Array $~lib/typedarray/Float64Array $~lib/function/Function<%28f64%2Cf64%29=>i32> $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool> $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool> $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool> $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool> $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool> $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool> $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool> $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool> $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool> $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void> $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void> $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void> $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void> $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void> $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void> $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void> $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void> $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void> $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i8%2Ci8%29=>i32> $~lib/function/Function<%28u8%2Cu8%29=>i32> $~lib/function/Function<%28i16%2Ci16%29=>i32> $~lib/function/Function<%28u16%2Cu16%29=>i32> $~lib/function/Function<%28i32%2Ci32%29=>i32> $~lib/function/Function<%28u32%2Cu32%29=>i32> $~lib/function/Function<%28i64%2Ci64%29=>i32> $~lib/function/Function<%28u64%2Cu64%29=>i32> $~lib/function/Function<%28f32%2Cf32%29=>i32> $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Int8Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Int16Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint16Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Int32Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint32Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Int64Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint64Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Float32Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Float64Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i8%2Ci8%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Cu8%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci16%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Cu16%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Cu32%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci64%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Cu64%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Cf32%29=>i32>~visit - return - end - unreachable - ) - (func $~start - call $start:std/typedarray - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 48096 - i32.const 48144 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (param $this i32) (param $length i32) (param $alignLog2 i32) (result i32) - (local $buffer i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:dataStart - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:byteLength - local.get $length - i32.const 1073741820 - local.get $alignLog2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 19 - i32.const 57 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $length - local.get $alignLog2 - i32.shl - local.tee $length - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $buffer - i32.store offset=8 - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $buffer - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $buffer - call $~lib/arraybuffer/ArrayBufferView#set:dataStart - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $length - call $~lib/arraybuffer/ArrayBufferView#set:byteLength - local.get $this - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/typedarray/Int8Array#constructor (param $this i32) (param $length i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $length - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $this - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:dataStart - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:buffer - i32.sub - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/typedarray/Int8Array#get:length (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/typedarray/Uint8Array#constructor (param $this i32) (param $length i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $length - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $this - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/typedarray/Uint8Array#get:length (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/typedarray/Uint8ClampedArray#constructor (param $this i32) (param $length i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $length - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $this - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/typedarray/Uint8ClampedArray#get:length (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/typedarray/Int16Array#constructor (param $this i32) (param $length i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $length - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $this - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/typedarray/Int16Array#get:length (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 1 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/typedarray/Uint16Array#constructor (param $this i32) (param $length i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $length - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $this - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/typedarray/Uint16Array#get:length (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 1 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/typedarray/Int32Array#constructor (param $this i32) (param $length i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $length - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $this - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/typedarray/Int32Array#get:length (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 2 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/typedarray/Uint32Array#constructor (param $this i32) (param $length i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $length - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $this - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/typedarray/Uint32Array#get:length (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 2 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/typedarray/Int64Array#constructor (param $this i32) (param $length i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $length - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $this - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/typedarray/Int64Array#get:length (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/typedarray/Uint64Array#constructor (param $this i32) (param $length i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $length - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $this - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/typedarray/Uint64Array#get:length (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/typedarray/Float32Array#constructor (param $this i32) (param $length i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $length - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $this - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/typedarray/Float32Array#get:length (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 2 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - ) - (func $~lib/typedarray/Float64Array#constructor (param $this i32) (param $length i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $this - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $length - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $this - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/typedarray/Float64Array#get:length (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return + return ) (func $std/typedarray/testInstantiate (param $len i32) (local $i8a i32) @@ -15396,7 +14226,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 32 i32.const 3 call $~lib/builtins/abort @@ -15416,7 +14246,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -15434,7 +14264,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 34 i32.const 3 call $~lib/builtins/abort @@ -15458,7 +14288,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -15478,7 +14308,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 38 i32.const 3 call $~lib/builtins/abort @@ -15496,7 +14326,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 39 i32.const 3 call $~lib/builtins/abort @@ -15520,7 +14350,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -15540,7 +14370,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -15558,7 +14388,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -15582,7 +14412,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 47 i32.const 3 call $~lib/builtins/abort @@ -15602,7 +14432,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 48 i32.const 3 call $~lib/builtins/abort @@ -15620,7 +14450,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -15644,7 +14474,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 52 i32.const 3 call $~lib/builtins/abort @@ -15664,7 +14494,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 53 i32.const 3 call $~lib/builtins/abort @@ -15682,7 +14512,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 54 i32.const 3 call $~lib/builtins/abort @@ -15706,7 +14536,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 57 i32.const 3 call $~lib/builtins/abort @@ -15726,7 +14556,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 58 i32.const 3 call $~lib/builtins/abort @@ -15744,7 +14574,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 59 i32.const 3 call $~lib/builtins/abort @@ -15768,7 +14598,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 62 i32.const 3 call $~lib/builtins/abort @@ -15788,7 +14618,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -15806,7 +14636,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -15830,7 +14660,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -15850,7 +14680,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -15868,7 +14698,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 69 i32.const 3 call $~lib/builtins/abort @@ -15892,7 +14722,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 72 i32.const 3 call $~lib/builtins/abort @@ -15912,7 +14742,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 73 i32.const 3 call $~lib/builtins/abort @@ -15930,7 +14760,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 74 i32.const 3 call $~lib/builtins/abort @@ -15954,7 +14784,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 77 i32.const 3 call $~lib/builtins/abort @@ -15974,7 +14804,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 78 i32.const 3 call $~lib/builtins/abort @@ -15992,7 +14822,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 79 i32.const 3 call $~lib/builtins/abort @@ -16016,7 +14846,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 82 i32.const 3 call $~lib/builtins/abort @@ -16036,7 +14866,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -16054,7 +14884,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -16087,8 +14917,8 @@ i32.shr_u i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 747 i32.const 64 call $~lib/builtins/abort @@ -16134,8 +14964,8 @@ i32.shr_u i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 736 i32.const 64 call $~lib/builtins/abort @@ -16340,8 +15170,8 @@ i32.shr_u i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1457 i32.const 64 call $~lib/builtins/abort @@ -17067,7 +15897,7 @@ i32.const 4 i32.eq drop - i32.const 672 + i32.const 2640 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator @@ -17116,8 +15946,8 @@ i32.shr_u i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1446 i32.const 64 call $~lib/builtins/abort @@ -17163,8 +15993,8 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 320 i32.const 45 call $~lib/builtins/abort @@ -17218,8 +16048,8 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 309 i32.const 45 call $~lib/builtins/abort @@ -17263,8 +16093,8 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 36 i32.const 45 call $~lib/builtins/abort @@ -17368,8 +16198,8 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 25 i32.const 45 call $~lib/builtins/abort @@ -17414,8 +16244,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 336 - i32.const 736 + i32.const 320 + i32.const 2704 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -17824,8 +16654,8 @@ call $~lib/array/Array#get:length_ i32.ge_u if - i32.const 336 - i32.const 736 + i32.const 320 + i32.const 2704 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -18550,7 +17380,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 1872 + i32.const 3840 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -18566,7 +17396,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -18597,8 +17427,8 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 178 i32.const 45 call $~lib/builtins/abort @@ -18765,7 +17595,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 1904 + i32.const 3872 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -18782,7 +17612,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -18938,7 +17768,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 1936 + i32.const 3904 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -18955,7 +17785,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -18988,8 +17818,8 @@ i32.shr_u i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 463 i32.const 64 call $~lib/builtins/abort @@ -19158,7 +17988,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 1968 + i32.const 3936 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -19174,7 +18004,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -19207,8 +18037,8 @@ i32.shr_u i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 605 i32.const 64 call $~lib/builtins/abort @@ -19377,7 +18207,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2000 + i32.const 3968 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -19394,7 +18224,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -19550,7 +18380,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2032 + i32.const 4000 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -19565,7 +18395,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -19598,8 +18428,8 @@ i32.shr_u i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 889 i32.const 64 call $~lib/builtins/abort @@ -19768,7 +18598,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2064 + i32.const 4032 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -19783,7 +18613,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -19816,8 +18646,8 @@ i32.shr_u i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1031 i32.const 64 call $~lib/builtins/abort @@ -19987,7 +18817,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2096 + i32.const 4064 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -20002,7 +18832,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -20035,8 +18865,8 @@ i32.shr_u i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1173 i32.const 64 call $~lib/builtins/abort @@ -20206,7 +19036,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2128 + i32.const 4096 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -20221,7 +19051,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -20254,8 +19084,8 @@ i32.shr_u i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1315 i32.const 64 call $~lib/builtins/abort @@ -20425,7 +19255,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2160 + i32.const 4128 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -20440,7 +19270,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -20597,7 +19427,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2192 + i32.const 4160 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -20612,7 +19442,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 323 i32.const 3 call $~lib/builtins/abort @@ -20655,8 +19485,8 @@ local.get $len i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 48 i32.const 33 call $~lib/builtins/abort @@ -20737,7 +19567,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -20756,7 +19586,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 345 i32.const 3 call $~lib/builtins/abort @@ -20775,7 +19605,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 346 i32.const 3 call $~lib/builtins/abort @@ -20818,8 +19648,8 @@ local.get $len i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 190 i32.const 33 call $~lib/builtins/abort @@ -20900,7 +19730,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -20919,7 +19749,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 345 i32.const 3 call $~lib/builtins/abort @@ -20938,7 +19768,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 346 i32.const 3 call $~lib/builtins/abort @@ -20981,8 +19811,8 @@ local.get $len i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 332 i32.const 33 call $~lib/builtins/abort @@ -21063,7 +19893,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -21082,7 +19912,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 345 i32.const 3 call $~lib/builtins/abort @@ -21101,7 +19931,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 346 i32.const 3 call $~lib/builtins/abort @@ -21146,8 +19976,8 @@ local.get $len i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 475 i32.const 33 call $~lib/builtins/abort @@ -21230,7 +20060,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -21249,7 +20079,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 345 i32.const 3 call $~lib/builtins/abort @@ -21268,7 +20098,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 346 i32.const 3 call $~lib/builtins/abort @@ -21313,8 +20143,8 @@ local.get $len i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 617 i32.const 33 call $~lib/builtins/abort @@ -21397,7 +20227,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -21416,7 +20246,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 345 i32.const 3 call $~lib/builtins/abort @@ -21435,7 +20265,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 346 i32.const 3 call $~lib/builtins/abort @@ -21480,8 +20310,8 @@ local.get $len i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 759 i32.const 33 call $~lib/builtins/abort @@ -21564,7 +20394,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -21583,7 +20413,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 345 i32.const 3 call $~lib/builtins/abort @@ -21602,7 +20432,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 346 i32.const 3 call $~lib/builtins/abort @@ -21647,8 +20477,8 @@ local.get $len i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 901 i32.const 33 call $~lib/builtins/abort @@ -21731,7 +20561,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -21750,7 +20580,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 345 i32.const 3 call $~lib/builtins/abort @@ -21769,7 +20599,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 346 i32.const 3 call $~lib/builtins/abort @@ -21815,8 +20645,8 @@ local.get $len i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1043 i32.const 33 call $~lib/builtins/abort @@ -21899,7 +20729,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -21918,7 +20748,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 345 i32.const 3 call $~lib/builtins/abort @@ -21937,7 +20767,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 346 i32.const 3 call $~lib/builtins/abort @@ -21983,8 +20813,8 @@ local.get $len i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1185 i32.const 33 call $~lib/builtins/abort @@ -22067,7 +20897,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -22086,7 +20916,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 345 i32.const 3 call $~lib/builtins/abort @@ -22105,7 +20935,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 346 i32.const 3 call $~lib/builtins/abort @@ -22151,8 +20981,8 @@ local.get $len i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1327 i32.const 33 call $~lib/builtins/abort @@ -22235,7 +21065,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -22254,7 +21084,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 345 i32.const 3 call $~lib/builtins/abort @@ -22273,7 +21103,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 346 i32.const 3 call $~lib/builtins/abort @@ -22319,8 +21149,8 @@ local.get $len i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1469 i32.const 33 call $~lib/builtins/abort @@ -22403,7 +21233,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 344 i32.const 3 call $~lib/builtins/abort @@ -22422,7 +21252,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 345 i32.const 3 call $~lib/builtins/abort @@ -22441,7 +21271,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 346 i32.const 3 call $~lib/builtins/abort @@ -22596,7 +21426,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2224 + i32.const 4192 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -22612,7 +21442,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -22767,7 +21597,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2256 + i32.const 4224 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -22784,7 +21614,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -22939,7 +21769,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2288 + i32.const 4256 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -22956,7 +21786,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -23111,7 +21941,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2320 + i32.const 4288 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -23127,7 +21957,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -23282,7 +22112,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2352 + i32.const 4320 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -23299,7 +22129,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -23454,7 +22284,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2384 + i32.const 4352 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -23469,7 +22299,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -23624,7 +22454,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2416 + i32.const 4384 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -23639,7 +22469,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -23795,7 +22625,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2448 + i32.const 4416 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -23810,7 +22640,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -23966,7 +22796,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2480 + i32.const 4448 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -23981,7 +22811,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -24137,7 +22967,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2512 + i32.const 4480 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -24152,7 +22982,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -24308,7 +23138,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2544 + i32.const 4512 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -24323,7 +23153,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 367 i32.const 3 call $~lib/builtins/abort @@ -24511,7 +23341,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2576 + i32.const 4544 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -24533,7 +23363,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -24552,7 +23382,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -24571,7 +23401,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -24724,8 +23554,8 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 167 i32.const 45 call $~lib/builtins/abort @@ -24804,7 +23634,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2608 + i32.const 4576 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -24826,7 +23656,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -24845,7 +23675,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -24864,7 +23694,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -25052,7 +23882,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2640 + i32.const 4608 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -25074,7 +23904,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -25093,7 +23923,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -25112,7 +23942,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -25267,8 +24097,8 @@ i32.shr_u i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 452 i32.const 64 call $~lib/builtins/abort @@ -25349,7 +24179,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2672 + i32.const 4640 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -25371,7 +24201,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -25390,7 +24220,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -25409,7 +24239,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -25564,8 +24394,8 @@ i32.shr_u i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 594 i32.const 64 call $~lib/builtins/abort @@ -25646,7 +24476,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2704 + i32.const 4672 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -25668,7 +24498,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -25687,7 +24517,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -25706,7 +24536,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -25894,7 +24724,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2736 + i32.const 4704 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -25916,7 +24746,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -25935,7 +24765,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -25954,7 +24784,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -26109,8 +24939,8 @@ i32.shr_u i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 878 i32.const 64 call $~lib/builtins/abort @@ -26191,7 +25021,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2768 + i32.const 4736 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -26213,7 +25043,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -26232,7 +25062,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -26251,7 +25081,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -26407,8 +25237,8 @@ i32.shr_u i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1020 i32.const 64 call $~lib/builtins/abort @@ -26489,7 +25319,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2800 + i32.const 4768 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -26511,7 +25341,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -26530,7 +25360,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -26549,7 +25379,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -26705,8 +25535,8 @@ i32.shr_u i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1162 i32.const 64 call $~lib/builtins/abort @@ -26787,7 +25617,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2832 + i32.const 4800 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -26809,7 +25639,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -26828,7 +25658,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -26847,7 +25677,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -26947,7 +25777,7 @@ global.set $~argumentsLength local.get $fn|3 i32.load - call_indirect (type $30) + call_indirect (type $31) f32.store local.get $i i32.const 1 @@ -27003,8 +25833,8 @@ i32.shr_u i32.ge_u if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1304 i32.const 64 call $~lib/builtins/abort @@ -27085,7 +25915,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2864 + i32.const 4832 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -27107,7 +25937,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -27126,7 +25956,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -27145,7 +25975,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -27245,7 +26075,7 @@ global.set $~argumentsLength local.get $fn|3 i32.load - call_indirect (type $31) + call_indirect (type $32) f64.store local.get $i i32.const 1 @@ -27333,7 +26163,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2896 + i32.const 4864 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -27355,7 +26185,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -27374,7 +26204,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -27393,7 +26223,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -27621,7 +26451,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2928 + i32.const 4896 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -27642,7 +26472,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -27660,7 +26490,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -27679,7 +26509,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -27698,7 +26528,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -27717,7 +26547,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -27945,7 +26775,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2960 + i32.const 4928 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -27966,7 +26796,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -27984,7 +26814,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -28003,7 +26833,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -28022,7 +26852,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -28041,7 +26871,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -28269,7 +27099,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 2992 + i32.const 4960 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -28290,7 +27120,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -28308,7 +27138,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -28327,7 +27157,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -28346,7 +27176,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -28365,7 +27195,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -28593,7 +27423,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 3024 + i32.const 4992 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -28614,7 +27444,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -28632,7 +27462,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -28651,7 +27481,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -28670,7 +27500,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -28689,7 +27519,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -28917,7 +27747,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 3056 + i32.const 5024 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -28938,7 +27768,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -28956,7 +27786,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -28975,7 +27805,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -28994,7 +27824,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -29013,7 +27843,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -29241,7 +28071,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 3088 + i32.const 5056 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -29262,7 +28092,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -29280,7 +28110,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -29299,7 +28129,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -29318,7 +28148,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -29337,7 +28167,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -29565,7 +28395,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 3120 + i32.const 5088 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -29586,7 +28416,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -29604,7 +28434,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -29623,7 +28453,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -29642,7 +28472,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -29661,7 +28491,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -29889,7 +28719,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 3152 + i32.const 5120 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -29910,7 +28740,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -29928,7 +28758,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -29947,7 +28777,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -29966,7 +28796,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -29985,7 +28815,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -30213,7 +29043,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 3184 + i32.const 5152 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -30234,7 +29064,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -30252,7 +29082,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -30271,7 +29101,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -30290,7 +29120,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -30309,7 +29139,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -30537,7 +29367,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 3216 + i32.const 5184 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -30558,7 +29388,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -30576,7 +29406,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -30595,7 +29425,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -30614,7 +29444,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -30633,7 +29463,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -30861,7 +29691,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 3248 + i32.const 5216 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -30882,7 +29712,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -30900,7 +29730,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -30919,7 +29749,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -30938,7 +29768,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -30957,7 +29787,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -31113,7 +29943,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3280 + i32.const 5248 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -31127,7 +29957,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 438 i32.const 3 call $~lib/builtins/abort @@ -31139,7 +29969,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3312 + i32.const 5280 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -31152,7 +29982,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -31308,7 +30138,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3344 + i32.const 5312 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -31322,7 +30152,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 438 i32.const 3 call $~lib/builtins/abort @@ -31334,7 +30164,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3376 + i32.const 5344 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -31347,7 +30177,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -31503,7 +30333,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3408 + i32.const 5376 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -31517,7 +30347,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 438 i32.const 3 call $~lib/builtins/abort @@ -31529,7 +30359,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3440 + i32.const 5408 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -31542,7 +30372,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -31698,7 +30528,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3472 + i32.const 5440 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -31712,7 +30542,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 438 i32.const 3 call $~lib/builtins/abort @@ -31724,7 +30554,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3504 + i32.const 5472 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -31737,7 +30567,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -31893,7 +30723,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3536 + i32.const 5504 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -31907,7 +30737,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 438 i32.const 3 call $~lib/builtins/abort @@ -31919,7 +30749,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3568 + i32.const 5536 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -31932,7 +30762,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -32088,7 +30918,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3600 + i32.const 5568 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -32102,7 +30932,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 438 i32.const 3 call $~lib/builtins/abort @@ -32114,7 +30944,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3632 + i32.const 5600 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -32127,7 +30957,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -32283,7 +31113,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3664 + i32.const 5632 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -32297,7 +31127,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 438 i32.const 3 call $~lib/builtins/abort @@ -32309,7 +31139,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3696 + i32.const 5664 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -32322,7 +31152,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -32478,7 +31308,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3728 + i32.const 5696 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -32492,7 +31322,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 438 i32.const 3 call $~lib/builtins/abort @@ -32504,7 +31334,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3760 + i32.const 5728 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -32517,7 +31347,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -32673,7 +31503,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3792 + i32.const 5760 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -32687,7 +31517,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 438 i32.const 3 call $~lib/builtins/abort @@ -32699,7 +31529,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3824 + i32.const 5792 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -32712,7 +31542,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -32868,7 +31698,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3856 + i32.const 5824 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -32882,7 +31712,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 438 i32.const 3 call $~lib/builtins/abort @@ -32894,7 +31724,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3888 + i32.const 5856 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -32907,7 +31737,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -33063,7 +31893,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3920 + i32.const 5888 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -33077,7 +31907,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 438 i32.const 3 call $~lib/builtins/abort @@ -33089,7 +31919,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3952 + i32.const 5920 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -33102,7 +31932,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -33258,7 +32088,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 3984 + i32.const 5952 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -33272,7 +32102,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 461 i32.const 3 call $~lib/builtins/abort @@ -33284,7 +32114,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4016 + i32.const 5984 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -33298,7 +32128,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -33454,7 +32284,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4048 + i32.const 6016 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -33468,7 +32298,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 461 i32.const 3 call $~lib/builtins/abort @@ -33480,7 +32310,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4080 + i32.const 6048 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -33494,7 +32324,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -33650,7 +32480,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4112 + i32.const 6080 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -33664,7 +32494,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 461 i32.const 3 call $~lib/builtins/abort @@ -33676,7 +32506,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4144 + i32.const 6112 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -33690,7 +32520,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -33846,7 +32676,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4176 + i32.const 6144 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -33860,7 +32690,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 461 i32.const 3 call $~lib/builtins/abort @@ -33872,7 +32702,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4208 + i32.const 6176 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -33886,7 +32716,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -34042,7 +32872,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4240 + i32.const 6208 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -34056,7 +32886,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 461 i32.const 3 call $~lib/builtins/abort @@ -34068,7 +32898,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4272 + i32.const 6240 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -34082,7 +32912,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -34238,7 +33068,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4304 + i32.const 6272 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -34252,7 +33082,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 461 i32.const 3 call $~lib/builtins/abort @@ -34264,7 +33094,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4336 + i32.const 6304 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -34278,7 +33108,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -34434,7 +33264,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4368 + i32.const 6336 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -34448,7 +33278,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 461 i32.const 3 call $~lib/builtins/abort @@ -34460,7 +33290,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4400 + i32.const 6368 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -34474,7 +33304,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -34630,7 +33460,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4432 + i32.const 6400 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -34644,7 +33474,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 461 i32.const 3 call $~lib/builtins/abort @@ -34656,7 +33486,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4464 + i32.const 6432 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -34670,7 +33500,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -34826,7 +33656,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4496 + i32.const 6464 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -34840,7 +33670,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 461 i32.const 3 call $~lib/builtins/abort @@ -34852,7 +33682,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4528 + i32.const 6496 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -34866,7 +33696,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -35022,7 +33852,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4560 + i32.const 6528 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -35036,7 +33866,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 461 i32.const 3 call $~lib/builtins/abort @@ -35048,7 +33878,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4592 + i32.const 6560 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -35062,7 +33892,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -35218,7 +34048,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4624 + i32.const 6592 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -35232,7 +34062,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 461 i32.const 3 call $~lib/builtins/abort @@ -35244,7 +34074,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4656 + i32.const 6624 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -35258,7 +34088,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 463 i32.const 3 call $~lib/builtins/abort @@ -35413,7 +34243,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4688 + i32.const 6656 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -35427,7 +34257,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 484 i32.const 3 call $~lib/builtins/abort @@ -35439,7 +34269,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4720 + i32.const 6688 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -35453,7 +34283,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 486 i32.const 3 call $~lib/builtins/abort @@ -35608,7 +34438,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4752 + i32.const 6720 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -35622,7 +34452,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 484 i32.const 3 call $~lib/builtins/abort @@ -35634,7 +34464,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4784 + i32.const 6752 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -35648,7 +34478,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 486 i32.const 3 call $~lib/builtins/abort @@ -35803,7 +34633,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4816 + i32.const 6784 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -35817,7 +34647,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 484 i32.const 3 call $~lib/builtins/abort @@ -35829,7 +34659,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4848 + i32.const 6816 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -35843,7 +34673,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 486 i32.const 3 call $~lib/builtins/abort @@ -35998,7 +34828,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4880 + i32.const 6848 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -36012,7 +34842,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 484 i32.const 3 call $~lib/builtins/abort @@ -36024,7 +34854,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4912 + i32.const 6880 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -36038,7 +34868,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 486 i32.const 3 call $~lib/builtins/abort @@ -36193,7 +35023,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4944 + i32.const 6912 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -36207,7 +35037,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 484 i32.const 3 call $~lib/builtins/abort @@ -36219,7 +35049,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4976 + i32.const 6944 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -36233,7 +35063,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 486 i32.const 3 call $~lib/builtins/abort @@ -36388,7 +35218,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5008 + i32.const 6976 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -36402,7 +35232,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 484 i32.const 3 call $~lib/builtins/abort @@ -36414,7 +35244,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5040 + i32.const 7008 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -36428,7 +35258,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 486 i32.const 3 call $~lib/builtins/abort @@ -36583,7 +35413,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5072 + i32.const 7040 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -36597,7 +35427,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 484 i32.const 3 call $~lib/builtins/abort @@ -36609,7 +35439,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5104 + i32.const 7072 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -36623,7 +35453,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 486 i32.const 3 call $~lib/builtins/abort @@ -36778,7 +35608,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5136 + i32.const 7104 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -36792,7 +35622,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 484 i32.const 3 call $~lib/builtins/abort @@ -36804,7 +35634,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5168 + i32.const 7136 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -36818,7 +35648,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 486 i32.const 3 call $~lib/builtins/abort @@ -36973,7 +35803,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5200 + i32.const 7168 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -36987,7 +35817,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 484 i32.const 3 call $~lib/builtins/abort @@ -36999,7 +35829,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5232 + i32.const 7200 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -37013,7 +35843,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 486 i32.const 3 call $~lib/builtins/abort @@ -37168,7 +35998,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5264 + i32.const 7232 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -37182,7 +36012,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 484 i32.const 3 call $~lib/builtins/abort @@ -37194,7 +36024,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5296 + i32.const 7264 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -37208,7 +36038,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 486 i32.const 3 call $~lib/builtins/abort @@ -37363,7 +36193,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5328 + i32.const 7296 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -37377,7 +36207,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 484 i32.const 3 call $~lib/builtins/abort @@ -37389,7 +36219,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5360 + i32.const 7328 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -37403,7 +36233,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 486 i32.const 3 call $~lib/builtins/abort @@ -37562,7 +36392,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5392 + i32.const 7360 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -37576,7 +36406,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 507 i32.const 3 call $~lib/builtins/abort @@ -37588,7 +36418,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5424 + i32.const 7392 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -37601,7 +36431,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 509 i32.const 3 call $~lib/builtins/abort @@ -37760,7 +36590,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5456 + i32.const 7424 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -37774,7 +36604,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 507 i32.const 3 call $~lib/builtins/abort @@ -37786,7 +36616,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5488 + i32.const 7456 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -37799,7 +36629,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 509 i32.const 3 call $~lib/builtins/abort @@ -37958,7 +36788,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5520 + i32.const 7488 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -37972,7 +36802,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 507 i32.const 3 call $~lib/builtins/abort @@ -37984,7 +36814,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5552 + i32.const 7520 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -37997,7 +36827,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 509 i32.const 3 call $~lib/builtins/abort @@ -38156,7 +36986,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5584 + i32.const 7552 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -38170,7 +37000,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 507 i32.const 3 call $~lib/builtins/abort @@ -38182,7 +37012,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5616 + i32.const 7584 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -38195,7 +37025,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 509 i32.const 3 call $~lib/builtins/abort @@ -38354,7 +37184,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5648 + i32.const 7616 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -38368,7 +37198,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 507 i32.const 3 call $~lib/builtins/abort @@ -38380,7 +37210,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5680 + i32.const 7648 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -38393,7 +37223,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 509 i32.const 3 call $~lib/builtins/abort @@ -38552,7 +37382,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5712 + i32.const 7680 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -38566,7 +37396,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 507 i32.const 3 call $~lib/builtins/abort @@ -38578,7 +37408,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5744 + i32.const 7712 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -38591,7 +37421,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 509 i32.const 3 call $~lib/builtins/abort @@ -38750,7 +37580,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5776 + i32.const 7744 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -38764,7 +37594,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 507 i32.const 3 call $~lib/builtins/abort @@ -38776,7 +37606,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5808 + i32.const 7776 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -38789,7 +37619,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 509 i32.const 3 call $~lib/builtins/abort @@ -38948,7 +37778,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5840 + i32.const 7808 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -38962,7 +37792,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 507 i32.const 3 call $~lib/builtins/abort @@ -38974,7 +37804,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5872 + i32.const 7840 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -38987,7 +37817,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 509 i32.const 3 call $~lib/builtins/abort @@ -39146,7 +37976,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5904 + i32.const 7872 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -39160,7 +37990,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 507 i32.const 3 call $~lib/builtins/abort @@ -39172,7 +38002,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5936 + i32.const 7904 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -39185,7 +38015,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 509 i32.const 3 call $~lib/builtins/abort @@ -39344,7 +38174,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 5968 + i32.const 7936 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -39358,7 +38188,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 507 i32.const 3 call $~lib/builtins/abort @@ -39370,7 +38200,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 6000 + i32.const 7968 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -39383,7 +38213,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 509 i32.const 3 call $~lib/builtins/abort @@ -39542,7 +38372,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 6032 + i32.const 8000 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -39556,7 +38386,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 507 i32.const 3 call $~lib/builtins/abort @@ -39568,7 +38398,7 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 6064 + i32.const 8032 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -39581,7 +38411,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 509 i32.const 3 call $~lib/builtins/abort @@ -39620,7 +38450,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 536 i32.const 5 call $~lib/builtins/abort @@ -39632,7 +38462,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 537 i32.const 5 call $~lib/builtins/abort @@ -39644,7 +38474,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 538 i32.const 5 call $~lib/builtins/abort @@ -39819,7 +38649,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 6176 + i32.const 8144 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -39832,7 +38662,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 541 i32.const 3 call $~lib/builtins/abort @@ -39873,7 +38703,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 536 i32.const 5 call $~lib/builtins/abort @@ -39885,7 +38715,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 537 i32.const 5 call $~lib/builtins/abort @@ -39897,7 +38727,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 538 i32.const 5 call $~lib/builtins/abort @@ -40075,7 +38905,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 6208 + i32.const 8176 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -40088,7 +38918,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 541 i32.const 3 call $~lib/builtins/abort @@ -40129,7 +38959,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 536 i32.const 5 call $~lib/builtins/abort @@ -40141,7 +38971,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 537 i32.const 5 call $~lib/builtins/abort @@ -40153,7 +38983,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 538 i32.const 5 call $~lib/builtins/abort @@ -40331,7 +39161,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 6240 + i32.const 8208 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -40344,7 +39174,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 541 i32.const 3 call $~lib/builtins/abort @@ -40383,7 +39213,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 536 i32.const 5 call $~lib/builtins/abort @@ -40395,7 +39225,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 537 i32.const 5 call $~lib/builtins/abort @@ -40407,7 +39237,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 538 i32.const 5 call $~lib/builtins/abort @@ -40582,7 +39412,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 6272 + i32.const 8240 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -40595,7 +39425,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 541 i32.const 3 call $~lib/builtins/abort @@ -40636,7 +39466,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 536 i32.const 5 call $~lib/builtins/abort @@ -40648,7 +39478,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 537 i32.const 5 call $~lib/builtins/abort @@ -40660,7 +39490,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 538 i32.const 5 call $~lib/builtins/abort @@ -40838,7 +39668,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 6304 + i32.const 8272 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -40851,7 +39681,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 541 i32.const 3 call $~lib/builtins/abort @@ -40888,7 +39718,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 536 i32.const 5 call $~lib/builtins/abort @@ -40900,7 +39730,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 537 i32.const 5 call $~lib/builtins/abort @@ -40912,7 +39742,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 538 i32.const 5 call $~lib/builtins/abort @@ -41084,7 +39914,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 6336 + i32.const 8304 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -41097,7 +39927,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 541 i32.const 3 call $~lib/builtins/abort @@ -41134,7 +39964,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 536 i32.const 5 call $~lib/builtins/abort @@ -41146,7 +39976,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 537 i32.const 5 call $~lib/builtins/abort @@ -41158,7 +39988,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 538 i32.const 5 call $~lib/builtins/abort @@ -41330,7 +40160,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 6368 + i32.const 8336 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -41343,7 +40173,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 541 i32.const 3 call $~lib/builtins/abort @@ -41381,7 +40211,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 536 i32.const 5 call $~lib/builtins/abort @@ -41393,7 +40223,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 537 i32.const 5 call $~lib/builtins/abort @@ -41405,7 +40235,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 538 i32.const 5 call $~lib/builtins/abort @@ -41580,7 +40410,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 6400 + i32.const 8368 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -41593,7 +40423,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 541 i32.const 3 call $~lib/builtins/abort @@ -41631,7 +40461,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 536 i32.const 5 call $~lib/builtins/abort @@ -41643,7 +40473,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 537 i32.const 5 call $~lib/builtins/abort @@ -41655,7 +40485,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 538 i32.const 5 call $~lib/builtins/abort @@ -41830,7 +40660,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 6432 + i32.const 8400 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -41843,7 +40673,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 541 i32.const 3 call $~lib/builtins/abort @@ -41881,7 +40711,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 536 i32.const 5 call $~lib/builtins/abort @@ -41893,7 +40723,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 537 i32.const 5 call $~lib/builtins/abort @@ -41905,7 +40735,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 538 i32.const 5 call $~lib/builtins/abort @@ -42080,7 +40910,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 6464 + i32.const 8432 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -42093,7 +40923,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 541 i32.const 3 call $~lib/builtins/abort @@ -42131,7 +40961,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 536 i32.const 5 call $~lib/builtins/abort @@ -42143,7 +40973,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 537 i32.const 5 call $~lib/builtins/abort @@ -42155,7 +40985,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 538 i32.const 5 call $~lib/builtins/abort @@ -42330,7 +41160,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 6496 + i32.const 8464 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -42343,7 +41173,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 541 i32.const 3 call $~lib/builtins/abort @@ -42518,7 +41348,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -42562,7 +41392,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -42581,7 +41411,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -42600,7 +41430,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -42619,7 +41449,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -42954,7 +41784,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -42998,7 +41828,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -43017,7 +41847,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -43036,7 +41866,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -43055,7 +41885,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -43390,7 +42220,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -43434,7 +42264,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -43453,7 +42283,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -43472,7 +42302,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -43491,7 +42321,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -43823,7 +42653,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -43867,7 +42697,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -43886,7 +42716,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -43905,7 +42735,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -43924,7 +42754,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -44259,7 +43089,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -44303,7 +43133,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -44322,7 +43152,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -44341,7 +43171,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -44360,7 +43190,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -44532,7 +43362,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -44576,7 +43406,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -44595,7 +43425,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -44614,7 +43444,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -44633,7 +43463,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -44962,7 +43792,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -45006,7 +43836,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -45025,7 +43855,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -45044,7 +43874,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -45063,7 +43893,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -45395,7 +44225,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -45439,7 +44269,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -45458,7 +44288,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -45477,7 +44307,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -45496,7 +44326,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -45828,7 +44658,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -45872,7 +44702,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -45891,7 +44721,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -45910,7 +44740,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -45929,7 +44759,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -46261,7 +45091,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -46305,7 +45135,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -46324,7 +45154,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -46343,7 +45173,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -46362,7 +45192,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -46537,7 +45367,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -46581,7 +45411,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -46600,7 +45430,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -46619,7 +45449,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -46638,7 +45468,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -46989,7 +45819,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -47009,7 +45839,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -47029,7 +45859,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -47049,7 +45879,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -47069,7 +45899,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -47089,7 +45919,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -47109,7 +45939,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -47129,7 +45959,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -47149,7 +45979,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -47171,7 +46001,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -47193,7 +46023,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -47215,7 +46045,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -47237,7 +46067,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -47257,7 +46087,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -47277,7 +46107,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -47297,7 +46127,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -47317,7 +46147,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -47337,7 +46167,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -47357,7 +46187,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -47389,7 +46219,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -47411,7 +46241,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -47433,7 +46263,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -47453,7 +46283,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -47473,7 +46303,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -47493,7 +46323,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -47515,7 +46345,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -47535,7 +46365,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -47889,7 +46719,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -47909,7 +46739,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -47929,7 +46759,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -47949,7 +46779,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -47969,7 +46799,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -47989,7 +46819,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -48009,7 +46839,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -48029,7 +46859,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -48049,7 +46879,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -48071,7 +46901,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -48093,7 +46923,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -48115,7 +46945,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -48137,7 +46967,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -48157,7 +46987,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -48177,7 +47007,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -48197,7 +47027,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -48217,7 +47047,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -48237,7 +47067,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -48257,7 +47087,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -48289,7 +47119,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -48311,7 +47141,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -48333,7 +47163,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -48353,7 +47183,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -48373,7 +47203,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -48393,7 +47223,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -48415,7 +47245,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -48435,7 +47265,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -48789,7 +47619,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -48809,7 +47639,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -48829,7 +47659,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -48849,7 +47679,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -48869,7 +47699,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -48889,7 +47719,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -48909,7 +47739,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -48929,7 +47759,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -48949,7 +47779,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -48971,7 +47801,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -48993,7 +47823,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -49015,7 +47845,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -49037,7 +47867,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -49057,7 +47887,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -49077,7 +47907,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -49097,7 +47927,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -49117,7 +47947,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -49137,7 +47967,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -49157,7 +47987,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -49189,7 +48019,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -49211,7 +48041,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -49233,7 +48063,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -49253,7 +48083,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -49273,7 +48103,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -49293,7 +48123,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -49315,7 +48145,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -49335,7 +48165,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -49686,7 +48516,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -49706,7 +48536,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -49726,7 +48556,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -49746,7 +48576,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -49766,7 +48596,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -49786,7 +48616,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -49806,7 +48636,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -49826,7 +48656,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -49846,7 +48676,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -49868,7 +48698,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -49890,7 +48720,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -49912,7 +48742,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -49934,7 +48764,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -49954,7 +48784,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -49974,7 +48804,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -49994,7 +48824,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -50014,7 +48844,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -50034,7 +48864,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -50054,7 +48884,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -50086,7 +48916,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -50108,7 +48938,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -50130,7 +48960,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -50150,7 +48980,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -50170,7 +49000,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -50190,7 +49020,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -50212,7 +49042,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -50232,7 +49062,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -50586,7 +49416,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -50606,7 +49436,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -50626,7 +49456,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -50646,7 +49476,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -50666,7 +49496,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -50686,7 +49516,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -50706,7 +49536,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -50726,7 +49556,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -50746,7 +49576,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -50768,7 +49598,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -50790,7 +49620,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -50812,7 +49642,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -50834,7 +49664,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -50854,7 +49684,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -50874,7 +49704,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -50894,7 +49724,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -50914,7 +49744,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -50934,7 +49764,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -50954,7 +49784,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -50986,7 +49816,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -51008,7 +49838,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -51030,7 +49860,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -51050,7 +49880,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -51070,7 +49900,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -51090,7 +49920,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -51112,7 +49942,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -51132,7 +49962,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -51480,7 +50310,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -51500,7 +50330,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -51520,7 +50350,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -51540,7 +50370,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -51560,7 +50390,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -51580,7 +50410,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -51600,7 +50430,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -51620,7 +50450,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -51640,7 +50470,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -51662,7 +50492,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -51684,7 +50514,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -51706,7 +50536,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -51728,7 +50558,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -51748,7 +50578,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -51768,7 +50598,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -51788,7 +50618,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -51808,7 +50638,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -51828,7 +50658,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -51848,7 +50678,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -51880,7 +50710,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -51902,7 +50732,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -51924,7 +50754,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -51944,7 +50774,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -51964,7 +50794,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -51984,7 +50814,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -52006,7 +50836,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -52026,7 +50856,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -52374,7 +51204,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -52394,7 +51224,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -52414,7 +51244,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -52434,7 +51264,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -52454,7 +51284,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -52474,7 +51304,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -52494,7 +51324,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -52514,7 +51344,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -52534,7 +51364,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -52556,7 +51386,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -52578,7 +51408,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -52600,7 +51430,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -52622,7 +51452,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -52642,7 +51472,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -52662,7 +51492,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -52682,7 +51512,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -52702,7 +51532,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -52722,7 +51552,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -52742,7 +51572,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -52774,7 +51604,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -52796,7 +51626,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -52818,7 +51648,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -52838,7 +51668,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -52858,7 +51688,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -52878,7 +51708,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -52900,7 +51730,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -52920,7 +51750,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -53269,7 +52099,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -53289,7 +52119,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -53309,7 +52139,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -53329,7 +52159,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -53349,7 +52179,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -53369,7 +52199,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -53389,7 +52219,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -53409,7 +52239,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -53429,7 +52259,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -53451,7 +52281,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -53473,7 +52303,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -53495,7 +52325,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -53517,7 +52347,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -53537,7 +52367,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -53557,7 +52387,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -53577,7 +52407,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -53597,7 +52427,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -53617,7 +52447,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -53637,7 +52467,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -53669,7 +52499,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -53691,7 +52521,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -53713,7 +52543,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -53733,7 +52563,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -53753,7 +52583,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -53773,7 +52603,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -53795,7 +52625,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -53815,7 +52645,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -54164,7 +52994,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -54184,7 +53014,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -54204,7 +53034,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -54224,7 +53054,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -54244,7 +53074,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -54264,7 +53094,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -54284,7 +53114,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -54304,7 +53134,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -54324,7 +53154,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -54346,7 +53176,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -54368,7 +53198,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -54390,7 +53220,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -54412,7 +53242,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -54432,7 +53262,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -54452,7 +53282,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -54472,7 +53302,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -54492,7 +53322,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -54512,7 +53342,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -54532,7 +53362,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -54564,7 +53394,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -54586,7 +53416,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -54608,7 +53438,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -54628,7 +53458,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -54648,7 +53478,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -54668,7 +53498,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -54690,7 +53520,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -54710,7 +53540,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -55059,7 +53889,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -55079,7 +53909,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -55099,7 +53929,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -55119,7 +53949,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -55139,7 +53969,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -55159,7 +53989,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -55179,7 +54009,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -55199,7 +54029,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -55219,7 +54049,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -55241,7 +54071,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -55263,7 +54093,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -55285,7 +54115,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -55307,7 +54137,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -55327,7 +54157,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -55347,7 +54177,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -55367,7 +54197,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -55387,7 +54217,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -55407,7 +54237,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -55427,7 +54257,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -55459,7 +54289,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -55481,7 +54311,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -55503,7 +54333,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -55523,7 +54353,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -55543,7 +54373,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -55563,7 +54393,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -55585,7 +54415,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -55605,7 +54435,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -55954,7 +54784,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -55974,7 +54804,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -55994,7 +54824,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -56014,7 +54844,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -56034,7 +54864,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -56054,7 +54884,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -56074,7 +54904,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -56094,7 +54924,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -56114,7 +54944,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -56136,7 +54966,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -56158,7 +54988,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -56180,7 +55010,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -56202,7 +55032,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -56222,7 +55052,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -56242,7 +55072,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -56262,7 +55092,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -56282,7 +55112,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -56302,7 +55132,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -56322,7 +55152,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -56354,7 +55184,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -56376,7 +55206,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -56398,7 +55228,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -56418,7 +55248,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -56438,7 +55268,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -56458,7 +55288,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -56480,7 +55310,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -56500,7 +55330,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -56861,7 +55691,7 @@ local.get $size i32.eqz if - i32.const 6752 + i32.const 96 local.set $22 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -56938,7 +55768,7 @@ i32.const 0 i32.lt_s if - i32.const 6752 + i32.const 96 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -57242,7 +56072,7 @@ local.get $1 i32.store local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Int8Array#join local.set $1 global.get $~lib/memory/__stack_pointer @@ -57325,19 +56155,19 @@ local.get $1 i32.store offset=8 local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Int8Array#join local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - i32.const 8592 + i32.const 8752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 675 i32.const 5 call $~lib/builtins/abort @@ -57355,12 +56185,12 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 8592 + i32.const 8752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 676 i32.const 5 call $~lib/builtins/abort @@ -57397,7 +56227,7 @@ i32.const 0 i32.lt_s if - i32.const 6752 + i32.const 96 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -57605,7 +56435,7 @@ local.get $1 i32.store local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Uint8Array#join local.set $1 global.get $~lib/memory/__stack_pointer @@ -57688,19 +56518,19 @@ local.get $1 i32.store offset=8 local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Uint8Array#join local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - i32.const 8592 + i32.const 8752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 675 i32.const 5 call $~lib/builtins/abort @@ -57718,12 +56548,12 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 8592 + i32.const 8752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 676 i32.const 5 call $~lib/builtins/abort @@ -57789,7 +56619,7 @@ local.get $1 i32.store local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Uint8ClampedArray#join local.set $1 global.get $~lib/memory/__stack_pointer @@ -57872,19 +56702,19 @@ local.get $1 i32.store offset=8 local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Uint8ClampedArray#join local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - i32.const 8592 + i32.const 8752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 675 i32.const 5 call $~lib/builtins/abort @@ -57902,12 +56732,12 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 8592 + i32.const 8752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 676 i32.const 5 call $~lib/builtins/abort @@ -57944,7 +56774,7 @@ i32.const 0 i32.lt_s if - i32.const 6752 + i32.const 96 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -58152,7 +56982,7 @@ local.get $1 i32.store local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Int16Array#join local.set $1 global.get $~lib/memory/__stack_pointer @@ -58235,19 +57065,19 @@ local.get $1 i32.store offset=8 local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Int16Array#join local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - i32.const 8592 + i32.const 8752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 675 i32.const 5 call $~lib/builtins/abort @@ -58265,12 +57095,12 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 8592 + i32.const 8752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 676 i32.const 5 call $~lib/builtins/abort @@ -58307,7 +57137,7 @@ i32.const 0 i32.lt_s if - i32.const 6752 + i32.const 96 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -58515,7 +57345,7 @@ local.get $1 i32.store local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Uint16Array#join local.set $1 global.get $~lib/memory/__stack_pointer @@ -58598,19 +57428,19 @@ local.get $1 i32.store offset=8 local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Uint16Array#join local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - i32.const 8592 + i32.const 8752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 675 i32.const 5 call $~lib/builtins/abort @@ -58628,12 +57458,12 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 8592 + i32.const 8752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 676 i32.const 5 call $~lib/builtins/abort @@ -58670,7 +57500,7 @@ i32.const 0 i32.lt_s if - i32.const 6752 + i32.const 96 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -58878,7 +57708,7 @@ local.get $1 i32.store local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Int32Array#join local.set $1 global.get $~lib/memory/__stack_pointer @@ -58961,19 +57791,19 @@ local.get $1 i32.store offset=8 local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Int32Array#join local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - i32.const 8592 + i32.const 8752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 675 i32.const 5 call $~lib/builtins/abort @@ -58991,12 +57821,12 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 8592 + i32.const 8752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 676 i32.const 5 call $~lib/builtins/abort @@ -59033,7 +57863,7 @@ i32.const 0 i32.lt_s if - i32.const 6752 + i32.const 96 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -59241,7 +58071,7 @@ local.get $1 i32.store local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Uint32Array#join local.set $1 global.get $~lib/memory/__stack_pointer @@ -59324,19 +58154,19 @@ local.get $1 i32.store offset=8 local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Uint32Array#join local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - i32.const 8592 + i32.const 8752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 675 i32.const 5 call $~lib/builtins/abort @@ -59354,12 +58184,12 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 8592 + i32.const 8752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 676 i32.const 5 call $~lib/builtins/abort @@ -59396,7 +58226,7 @@ i32.const 0 i32.lt_s if - i32.const 6752 + i32.const 96 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -59606,7 +58436,7 @@ local.get $1 i32.store local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Int64Array#join local.set $1 global.get $~lib/memory/__stack_pointer @@ -59689,19 +58519,19 @@ local.get $1 i32.store offset=8 local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Int64Array#join local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - i32.const 8592 + i32.const 8752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 675 i32.const 5 call $~lib/builtins/abort @@ -59719,12 +58549,12 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 8592 + i32.const 8752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 676 i32.const 5 call $~lib/builtins/abort @@ -59761,7 +58591,7 @@ i32.const 0 i32.lt_s if - i32.const 6752 + i32.const 96 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -59969,7 +58799,7 @@ local.get $1 i32.store local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Uint64Array#join local.set $1 global.get $~lib/memory/__stack_pointer @@ -60052,19 +58882,19 @@ local.get $1 i32.store offset=8 local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Uint64Array#join local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - i32.const 8592 + i32.const 8752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 675 i32.const 5 call $~lib/builtins/abort @@ -60082,12 +58912,12 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 8592 + i32.const 8752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 676 i32.const 5 call $~lib/builtins/abort @@ -60123,7 +58953,7 @@ i32.const 0 i32.lt_s if - i32.const 6752 + i32.const 96 local.set $10 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -60322,7 +59152,7 @@ local.get $1 i32.store local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Float32Array#join local.set $1 global.get $~lib/memory/__stack_pointer @@ -60405,19 +59235,19 @@ local.get $1 i32.store offset=8 local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Float32Array#join local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - i32.const 9776 + i32.const 9936 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 672 i32.const 5 call $~lib/builtins/abort @@ -60435,12 +59265,12 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 9776 + i32.const 9936 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 673 i32.const 5 call $~lib/builtins/abort @@ -60476,7 +59306,7 @@ i32.const 0 i32.lt_s if - i32.const 6752 + i32.const 96 local.set $10 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -60675,7 +59505,7 @@ local.get $1 i32.store local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Float64Array#join local.set $1 global.get $~lib/memory/__stack_pointer @@ -60758,19 +59588,19 @@ local.get $1 i32.store offset=8 local.get $1 - i32.const 8560 + i32.const 8720 call $~lib/typedarray/Float64Array#join local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - i32.const 9776 + i32.const 9936 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 672 i32.const 5 call $~lib/builtins/abort @@ -60788,12 +59618,12 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 9776 + i32.const 9936 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 673 i32.const 5 call $~lib/builtins/abort @@ -60848,8 +59678,8 @@ i32.and i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1860 i32.const 5 call $~lib/builtins/abort @@ -60867,8 +59697,8 @@ i32.const 0 i32.and if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -60879,8 +59709,8 @@ i32.sub local.set $byteLength else - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1869 i32.const 7 call $~lib/builtins/abort @@ -60897,8 +59727,8 @@ local.get $bufferByteLength i32.gt_s if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1874 i32.const 7 call $~lib/builtins/abort @@ -61137,8 +59967,8 @@ i32.and i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1860 i32.const 5 call $~lib/builtins/abort @@ -61156,8 +59986,8 @@ i32.const 0 i32.and if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -61168,8 +59998,8 @@ i32.sub local.set $byteLength else - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1869 i32.const 7 call $~lib/builtins/abort @@ -61186,8 +60016,8 @@ local.get $bufferByteLength i32.gt_s if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1874 i32.const 7 call $~lib/builtins/abort @@ -61417,7 +60247,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -61586,7 +60416,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -61648,8 +60478,8 @@ i32.and i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1860 i32.const 5 call $~lib/builtins/abort @@ -61667,8 +60497,8 @@ i32.const 0 i32.and if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -61679,8 +60509,8 @@ i32.sub local.set $byteLength else - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1869 i32.const 7 call $~lib/builtins/abort @@ -61697,8 +60527,8 @@ local.get $bufferByteLength i32.gt_s if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1874 i32.const 7 call $~lib/builtins/abort @@ -61933,7 +60763,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -61995,8 +60825,8 @@ i32.and i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1860 i32.const 5 call $~lib/builtins/abort @@ -62014,8 +60844,8 @@ i32.const 1 i32.and if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -62026,8 +60856,8 @@ i32.sub local.set $byteLength else - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1869 i32.const 7 call $~lib/builtins/abort @@ -62044,8 +60874,8 @@ local.get $bufferByteLength i32.gt_s if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1874 i32.const 7 call $~lib/builtins/abort @@ -62281,7 +61111,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -62343,8 +61173,8 @@ i32.and i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1860 i32.const 5 call $~lib/builtins/abort @@ -62362,8 +61192,8 @@ i32.const 1 i32.and if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -62374,8 +61204,8 @@ i32.sub local.set $byteLength else - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1869 i32.const 7 call $~lib/builtins/abort @@ -62392,8 +61222,8 @@ local.get $bufferByteLength i32.gt_s if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1874 i32.const 7 call $~lib/builtins/abort @@ -62632,7 +61462,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -62694,8 +61524,8 @@ i32.and i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1860 i32.const 5 call $~lib/builtins/abort @@ -62713,8 +61543,8 @@ i32.const 3 i32.and if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -62725,8 +61555,8 @@ i32.sub local.set $byteLength else - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1869 i32.const 7 call $~lib/builtins/abort @@ -62743,8 +61573,8 @@ local.get $bufferByteLength i32.gt_s if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1874 i32.const 7 call $~lib/builtins/abort @@ -62983,7 +61813,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -63045,8 +61875,8 @@ i32.and i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1860 i32.const 5 call $~lib/builtins/abort @@ -63064,8 +61894,8 @@ i32.const 3 i32.and if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -63076,8 +61906,8 @@ i32.sub local.set $byteLength else - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1869 i32.const 7 call $~lib/builtins/abort @@ -63094,8 +61924,8 @@ local.get $bufferByteLength i32.gt_s if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1874 i32.const 7 call $~lib/builtins/abort @@ -63336,7 +62166,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -63398,8 +62228,8 @@ i32.and i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1860 i32.const 5 call $~lib/builtins/abort @@ -63417,8 +62247,8 @@ i32.const 7 i32.and if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -63429,8 +62259,8 @@ i32.sub local.set $byteLength else - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1869 i32.const 7 call $~lib/builtins/abort @@ -63447,8 +62277,8 @@ local.get $bufferByteLength i32.gt_s if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1874 i32.const 7 call $~lib/builtins/abort @@ -63692,7 +62522,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -63754,8 +62584,8 @@ i32.and i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1860 i32.const 5 call $~lib/builtins/abort @@ -63773,8 +62603,8 @@ i32.const 7 i32.and if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -63785,8 +62615,8 @@ i32.sub local.set $byteLength else - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1869 i32.const 7 call $~lib/builtins/abort @@ -63803,8 +62633,8 @@ local.get $bufferByteLength i32.gt_s if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1874 i32.const 7 call $~lib/builtins/abort @@ -64050,7 +62880,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -64112,8 +62942,8 @@ i32.and i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1860 i32.const 5 call $~lib/builtins/abort @@ -64131,8 +62961,8 @@ i32.const 3 i32.and if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -64143,8 +62973,8 @@ i32.sub local.set $byteLength else - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1869 i32.const 7 call $~lib/builtins/abort @@ -64161,8 +62991,8 @@ local.get $bufferByteLength i32.gt_s if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1874 i32.const 7 call $~lib/builtins/abort @@ -64410,7 +63240,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -64472,8 +63302,8 @@ i32.and i32.or if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1860 i32.const 5 call $~lib/builtins/abort @@ -64491,8 +63321,8 @@ i32.const 7 i32.and if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -64503,8 +63333,8 @@ i32.sub local.set $byteLength else - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1869 i32.const 7 call $~lib/builtins/abort @@ -64521,8 +63351,8 @@ local.get $bufferByteLength i32.gt_s if - i32.const 32 - i32.const 608 + i32.const 2400 + i32.const 2576 i32.const 1874 i32.const 7 call $~lib/builtins/abort @@ -64772,7 +63602,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -64851,8 +63681,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -65013,7 +63843,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -65048,7 +63878,7 @@ local.get $valb i32.ne if - i32.const 10320 + i32.const 10480 i32.const 3 local.get $i f64.convert_i32_s @@ -65063,7 +63893,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -65168,8 +63998,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -65310,8 +64140,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -65467,8 +64297,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -65606,8 +64436,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -65708,8 +64538,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -65836,8 +64666,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -66034,7 +64864,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 10288 + i32.const 10448 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -66065,7 +64895,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 10368 + i32.const 10528 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -66096,7 +64926,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 10400 + i32.const 10560 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -66129,7 +64959,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 10432 + i32.const 10592 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -66190,7 +65020,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 10464 + i32.const 10624 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -66264,8 +65094,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -66451,7 +65281,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -66486,7 +65316,7 @@ local.get $valb i32.ne if - i32.const 10528 + i32.const 10688 i32.const 3 local.get $i f64.convert_i32_s @@ -66501,7 +65331,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -66581,8 +65411,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -66723,8 +65553,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -66855,8 +65685,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -66994,8 +65824,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -67096,8 +65926,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -67224,8 +66054,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -67422,7 +66252,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10496 + i32.const 10656 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -67453,7 +66283,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10576 + i32.const 10736 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -67484,7 +66314,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10608 + i32.const 10768 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -67517,7 +66347,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10640 + i32.const 10800 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -67578,7 +66408,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10672 + i32.const 10832 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -67652,8 +66482,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -67803,7 +66633,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -67838,7 +66668,7 @@ local.get $valb i32.ne if - i32.const 10736 + i32.const 10896 i32.const 3 local.get $i f64.convert_i32_s @@ -67853,7 +66683,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -67933,8 +66763,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -68078,8 +66908,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -68232,8 +67062,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -68374,8 +67204,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -68476,8 +67306,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -68626,8 +67456,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -68871,7 +67701,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10704 + i32.const 10864 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -68902,7 +67732,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10800 + i32.const 10960 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -68933,7 +67763,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10832 + i32.const 10992 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -68966,7 +67796,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10864 + i32.const 11024 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -69027,7 +67857,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 10896 + i32.const 11056 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -69101,8 +67931,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -69290,7 +68120,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -69325,7 +68155,7 @@ local.get $valb i32.ne if - i32.const 10976 + i32.const 11136 i32.const 3 local.get $i f64.convert_i32_s @@ -69340,7 +68170,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -69420,8 +68250,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -69562,8 +68392,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -69694,8 +68524,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -69836,8 +68666,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -69964,8 +68794,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -70066,8 +68896,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -70293,7 +69123,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 10928 + i32.const 11088 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -70324,7 +69154,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 11024 + i32.const 11184 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -70355,7 +69185,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 11072 + i32.const 11232 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -70388,7 +69218,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 11120 + i32.const 11280 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -70449,7 +69279,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 11168 + i32.const 11328 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -70523,8 +69353,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -70712,7 +69542,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -70747,7 +69577,7 @@ local.get $valb i32.ne if - i32.const 11264 + i32.const 11424 i32.const 3 local.get $i f64.convert_i32_s @@ -70762,7 +69592,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -70842,8 +69672,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -70984,8 +69814,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -71116,8 +69946,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -71258,8 +70088,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -71386,8 +70216,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -71488,8 +70318,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -71715,7 +70545,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 11216 + i32.const 11376 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -71746,7 +70576,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 11312 + i32.const 11472 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -71777,7 +70607,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 11360 + i32.const 11520 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -71810,7 +70640,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 11408 + i32.const 11568 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -71871,7 +70701,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 11456 + i32.const 11616 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -71942,8 +70772,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -72077,7 +70907,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -72112,7 +70942,7 @@ local.get $valb i32.ne if - i32.const 11568 + i32.const 11728 i32.const 3 local.get $i f64.convert_i32_s @@ -72127,7 +70957,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -72207,8 +71037,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -72349,8 +71179,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -72481,8 +71311,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -72623,8 +71453,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -72754,8 +71584,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -72885,8 +71715,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -73112,7 +71942,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 11504 + i32.const 11664 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -73143,7 +71973,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 11616 + i32.const 11776 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -73174,7 +72004,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 11680 + i32.const 11840 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -73207,7 +72037,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 11744 + i32.const 11904 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -73268,7 +72098,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 11808 + i32.const 11968 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -73339,8 +72169,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -73499,7 +72329,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -73534,7 +72364,7 @@ local.get $valb i32.ne if - i32.const 11936 + i32.const 12096 i32.const 3 local.get $i f64.convert_i32_s @@ -73549,7 +72379,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -73629,8 +72459,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -73771,8 +72601,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -73903,8 +72733,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -74045,8 +72875,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -74176,8 +73006,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -74307,8 +73137,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -74534,7 +73364,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 11872 + i32.const 12032 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -74565,7 +73395,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 11984 + i32.const 12144 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -74596,7 +73426,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 12048 + i32.const 12208 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -74629,7 +73459,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 12112 + i32.const 12272 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -74690,7 +73520,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 12176 + i32.const 12336 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -74764,8 +73594,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -74956,7 +73786,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -74991,7 +73821,7 @@ local.get $valb i64.ne if - i32.const 12352 + i32.const 12512 i32.const 3 local.get $i f64.convert_i32_s @@ -75006,7 +73836,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -75086,8 +73916,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -75225,8 +74055,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -75327,8 +74157,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -75469,8 +74299,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -75601,8 +74431,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -75733,8 +74563,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -75961,7 +74791,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 12240 + i32.const 12400 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -75992,7 +74822,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 12400 + i32.const 12560 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -76023,7 +74853,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 12512 + i32.const 12672 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -76056,7 +74886,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 12624 + i32.const 12784 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -76117,7 +74947,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 12736 + i32.const 12896 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -76191,8 +75021,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -76383,7 +75213,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -76418,7 +75248,7 @@ local.get $valb i64.ne if - i32.const 12960 + i32.const 13120 i32.const 3 local.get $i f64.convert_i32_s @@ -76433,7 +75263,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -76513,8 +75343,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -76652,8 +75482,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -76754,8 +75584,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -76896,8 +75726,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -77028,8 +75858,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -77160,8 +75990,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -77388,7 +76218,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 12848 + i32.const 13008 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -77419,7 +76249,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 13008 + i32.const 13168 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -77450,7 +76280,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 13120 + i32.const 13280 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -77483,7 +76313,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 13232 + i32.const 13392 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -77544,7 +76374,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 13344 + i32.const 13504 call $~lib/rt/__newArray local.set $9 global.get $~lib/memory/__stack_pointer @@ -77618,8 +76448,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -77785,7 +76615,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -77820,7 +76650,7 @@ local.get $valb f32.ne if - i32.const 13520 + i32.const 13680 i32.const 3 local.get $i f64.convert_i32_s @@ -77835,7 +76665,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -77912,8 +76742,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -78014,8 +76844,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -78146,8 +76976,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -78278,8 +77108,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -78410,8 +77240,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -78637,7 +77467,7 @@ i32.const 10 i32.const 2 i32.const 62 - i32.const 13456 + i32.const 13616 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -78668,7 +77498,7 @@ i32.const 10 i32.const 2 i32.const 62 - i32.const 13568 + i32.const 13728 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -78699,7 +77529,7 @@ i32.const 10 i32.const 2 i32.const 62 - i32.const 13632 + i32.const 13792 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -78762,7 +77592,7 @@ i32.const 10 i32.const 2 i32.const 62 - i32.const 13696 + i32.const 13856 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -78836,8 +77666,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -79003,7 +77833,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -79038,7 +77868,7 @@ local.get $valb f64.ne if - i32.const 13872 + i32.const 14032 i32.const 3 local.get $i f64.convert_i32_s @@ -79051,7 +77881,7 @@ i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -79131,8 +77961,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -79264,8 +78094,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -79396,8 +78226,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -79528,8 +78358,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -79660,8 +78490,8 @@ i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -79887,7 +78717,7 @@ i32.const 10 i32.const 3 i32.const 63 - i32.const 13760 + i32.const 13920 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -79918,7 +78748,7 @@ i32.const 10 i32.const 3 i32.const 63 - i32.const 13920 + i32.const 14080 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -79949,7 +78779,7 @@ i32.const 10 i32.const 3 i32.const 63 - i32.const 14032 + i32.const 14192 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -80012,7 +78842,7 @@ i32.const 10 i32.const 3 i32.const 63 - i32.const 14144 + i32.const 14304 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -80025,7 +78855,302 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> (param $this i32) (param $source i32) (param $offset i32) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Float32Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s + end + if + i32.const 320 + i32.const 2576 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + i32.const 1 + drop + i32.const 1 + drop + local.get $ptr + local.get $value + local.get $value + f32.sub + f32.const 0 + f32.eq + if (result i32) + f32.const 0 + f32.const 255 + local.get $value + f32.min + f32.max + i32.trunc_sat_f32_u + else + i32.const 0 + end + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int32Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s + end + if + i32.const 320 + i32.const 2576 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 2 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + i32.eqz + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $ptr + local.get $value + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.const 255 + local.get $value + i32.sub + i32.const 31 + i32.shr_s + local.get $value + i32.or + i32.and + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> (param $this i32) (param $source i32) (param $offset i32) (local $target i32) (local $source|4 i32) (local $offset|5 i32) @@ -80034,8 +79159,10 @@ (local $sourceStart i32) (local $i i32) (local $ptr i32) - (local $value f32) + (local $value i32) (local $12 i32) + (local $13 i32) + (local $14 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -80060,12 +79187,12 @@ i32.const 0 drop local.get $source|4 - local.set $12 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $14 i32.store offset=8 - local.get $12 - call $~lib/typedarray/Float32Array#get:length + local.get $14 + call $~lib/typedarray/Uint32Array#get:length local.set $sourceLen local.get $offset|5 i32.const 0 @@ -80077,28 +79204,28 @@ local.get $offset|5 i32.add local.get $target - local.set $12 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $14 i32.store offset=8 - local.get $12 + local.get $14 call $~lib/typedarray/Uint8ClampedArray#get:length i32.gt_s end if - i32.const 336 - i32.const 608 + i32.const 320 + i32.const 2576 i32.const 1902 i32.const 5 call $~lib/builtins/abort unreachable end local.get $target - local.set $12 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $14 i32.store offset=8 - local.get $12 + local.get $14 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.get $offset|5 i32.const 0 @@ -80106,15 +79233,15 @@ i32.add local.set $targetStart local.get $source|4 - local.set $12 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $14 i32.store offset=8 - local.get $12 + local.get $14 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $sourceStart - i32.const 1 i32.const 0 + i32.const 2 i32.eq drop i32.const 0 @@ -80135,206 +79262,612 @@ i32.const 2 i32.shl i32.add - f32.load + i32.load local.set $value i32.const 1 drop - i32.const 1 + i32.const 0 + drop + i32.const 0 + i32.eqz drop local.get $ptr + i32.const 255 + local.tee $12 local.get $value - local.get $value - f32.sub - f32.const 0 - f32.eq - if (result i32) - f32.const 0 - f32.const 255 - local.get $value - f32.min - f32.max - i32.trunc_sat_f32_u - else + local.tee $13 + local.get $12 + local.get $13 + i32.lt_u + select + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $ptr + i32.load8_s + local.set $a + local.get $ptr + i32.load8_s offset=1 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store8 + local.get $a + local.get $b + local.get $c + select + local.set $a + local.get $ptr + i32.load8_s offset=2 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store8 offset=1 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i32.store8 offset=2 + end + local.get $ptr + i32.load8_s + local.set $a|7 + local.get $ptr + i32.load8_s offset=1 + local.set $b|8 + local.get $a|7 + local.get $b|8 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i32.store8 + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i32.store8 offset=1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.1 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.1 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 0 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns end - i32.store8 - local.get $i + local.get $i|32 i32.const 1 - i32.add - local.set $i - br $for-loop|0 + i32.sub + local.set $i|32 + br $for-loop|4 end end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> (param $this i32) (param $source i32) (param $offset i32) - (local $target i32) - (local $source|4 i32) - (local $offset|5 i32) - (local $sourceLen i32) - (local $targetStart i32) - (local $sourceStart i32) - (local $i i32) - (local $ptr i32) - (local $value i32) - (local $12 i32) + (func $~lib/typedarray/Int8Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + local.get $this + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.get $this - local.tee $target - i32.store + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $source - local.tee $source|4 + local.get $2 i32.store offset=4 - local.get $offset - local.set $offset|5 - i32.const 0 - drop - local.get $source|4 - local.set $12 + local.get $2 + call $~lib/typedarray/Int8Array#get:length + local.get $comparator + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=8 - local.get $12 - call $~lib/typedarray/Int32Array#get:length - local.set $sourceLen - local.get $offset|5 - i32.const 0 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $sourceLen - local.get $offset|5 - i32.add - local.get $target - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=8 - local.get $12 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s - end - if - i32.const 336 - i32.const 608 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $target - local.set $12 + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=8 - local.get $12 - call $~lib/arraybuffer/ArrayBufferView#get:dataStart - local.get $offset|5 - i32.const 0 - i32.shl + i32.const 8 i32.add - local.set $targetStart - local.get $source|4 - local.set $12 + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Int8Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $12 - i32.store offset=8 - local.get $12 - call $~lib/arraybuffer/ArrayBufferView#get:dataStart - local.set $sourceStart - i32.const 0 - i32.const 2 - i32.eq - drop i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i - local.get $sourceLen - i32.lt_s - if - local.get $targetStart - local.get $i - i32.const 0 - i32.shl - i32.add - local.set $ptr - local.get $sourceStart - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.set $value - i32.const 1 - drop - i32.const 0 - drop + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) i32.const 1 - i32.eqz drop i32.const 1 i32.const 4 i32.le_u drop - local.get $ptr - local.get $value - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.const 255 - local.get $value - i32.sub - i32.const 31 - i32.shr_s - local.get $value - i32.or - i32.and - i32.store8 - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 + i32.const 14480 + br $~lib/util/sort/COMPARATOR|inlined.0 end + local.tee $comparator + i32.store end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int8Array#sort + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> (param $this i32) (param $source i32) (param $offset i32) - (local $target i32) - (local $source|4 i32) - (local $offset|5 i32) - (local $sourceLen i32) - (local $targetStart i32) - (local $sourceStart i32) - (local $i i32) - (local $ptr i32) - (local $value i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) + (func $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>" + (local $source i32) + (local $result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -80342,128 +79875,188 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $this - local.tee $target + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $source i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $2 global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set local.get $source - local.tee $source|4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.store offset=4 - local.get $offset - local.set $offset|5 + local.get $2 i32.const 0 - drop - local.get $source|4 - local.set $14 + i32.const 3 + call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int8Array#sort@varargs + local.tee $result i32.store offset=8 - local.get $14 - call $~lib/typedarray/Uint32Array#get:length - local.set $sourceLen - local.get $offset|5 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $sourceLen - local.get $offset|5 - i32.add - local.get $target - local.set $14 - global.get $~lib/memory/__stack_pointer - local.get $14 - i32.store offset=8 - local.get $14 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s - end + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.eq + i32.eqz if - i32.const 336 - i32.const 608 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 2512 + i32.const 885 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $target - local.set $14 + local.get $result + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $14 - i32.store offset=8 - local.get $14 - call $~lib/arraybuffer/ArrayBufferView#get:dataStart - local.get $offset|5 - i32.const 0 - i32.shl - i32.add - local.set $targetStart - local.get $source|4 - local.set $14 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $14 - i32.store offset=8 - local.get $14 - call $~lib/arraybuffer/ArrayBufferView#get:dataStart - local.set $sourceStart - i32.const 0 + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 3 i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 14512 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Int8Array#sort drop + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - local.set $i - loop $for-loop|0 - local.get $i - local.get $sourceLen - i32.lt_s - if - local.get $targetStart - local.get $i - i32.const 0 - i32.shl - i32.add - local.set $ptr - local.get $sourceStart - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.set $value - i32.const 1 - drop - i32.const 0 - drop - i32.const 0 - i32.eqz - drop - local.get $ptr - i32.const 255 - local.tee $12 - local.get $value - local.tee $13 - local.get $12 - local.get $13 - i32.lt_u - select - i32.store8 - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|0 - end + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $result + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) (local $3 i32) (local $a i32) (local $b i32) @@ -80538,10 +80131,10 @@ br $break|0 end local.get $ptr - i32.load8_s + i32.load8_u local.set $a local.get $ptr - i32.load8_s offset=1 + i32.load8_u offset=1 local.set $b local.get $a local.get $b @@ -80565,7 +80158,7 @@ select local.set $a local.get $ptr - i32.load8_s offset=2 + i32.load8_u offset=2 local.set $b local.get $a local.get $b @@ -80591,10 +80184,10 @@ i32.store8 offset=2 end local.get $ptr - i32.load8_s + i32.load8_u local.set $a|7 local.get $ptr - i32.load8_s offset=1 + i32.load8_u offset=1 local.set $b|8 local.get $a|7 local.get $b|8 @@ -80636,21 +80229,21 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end - block $~lib/util/sort/log2u|inlined.1 (result i32) + block $~lib/util/sort/log2u|inlined.2 (result i32) local.get $len local.set $n i32.const 31 local.get $n i32.clz i32.sub - br $~lib/util/sort/log2u|inlined.1 + br $~lib/util/sort/log2u|inlined.2 end i32.const 2 i32.add @@ -80707,7 +80300,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endA local.get $endA i32.const 1 @@ -80738,7 +80331,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.set $top @@ -80762,7 +80355,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endB local.get $endB local.get $startB @@ -80797,7 +80390,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.get $hi @@ -80842,7 +80435,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf @@ -80919,7 +80512,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $i|32 i32.const 1 @@ -80937,7 +80530,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int8Array#sort (param $this i32) (param $comparator i32) (result i32) + (func $~lib/typedarray/Uint8Array#sort (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -80960,14 +80553,14 @@ local.get $2 i32.store offset=4 local.get $2 - call $~lib/typedarray/Int8Array#get:length + call $~lib/typedarray/Uint8Array#get:length local.get $comparator local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 - call $~lib/util/sort/SORT + call $~lib/util/sort/SORT local.get $this local.set $2 global.get $~lib/memory/__stack_pointer @@ -80977,7 +80570,7 @@ local.get $2 return ) - (func $~lib/typedarray/Int8Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (func $~lib/typedarray/Uint8Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -80999,15 +80592,300 @@ unreachable end global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) i32.const 1 drop + i32.const 0 + drop + i32.const 14544 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint8Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8Array#sort@varargs + local.tee $result + i32.store offset=8 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 14576 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Uint8Array#sort + drop + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Uint8ClampedArray#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.1 (result i32) i32.const 1 - i32.const 4 - i32.le_u drop - i32.const 14320 - br $~lib/util/sort/COMPARATOR|inlined.0 + i32.const 0 + drop + i32.const 14608 + br $~lib/util/sort/COMPARATOR|inlined.1 end local.tee $comparator i32.store @@ -81024,7 +80902,7 @@ local.get $2 i32.store offset=8 local.get $2 - call $~lib/typedarray/Int8Array#sort + call $~lib/typedarray/Uint8ClampedArray#sort local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -81032,7 +80910,7 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>" + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8>" (local $source i32) (local $result i32) (local $2 i32) @@ -81050,7 +80928,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Int8Array#constructor + call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $source i32.store local.get $source @@ -81061,7 +80939,7 @@ local.get $2 i32.const 2 i32.const 1 - call $~lib/typedarray/Int8Array#__set + call $~lib/typedarray/Uint8ClampedArray#__set local.get $source local.set $2 global.get $~lib/memory/__stack_pointer @@ -81070,7 +80948,7 @@ local.get $2 i32.const 1 i32.const 2 - call $~lib/typedarray/Int8Array#__set + call $~lib/typedarray/Uint8ClampedArray#__set local.get $source local.set $2 global.get $~lib/memory/__stack_pointer @@ -81079,7 +80957,7 @@ local.get $2 i32.const 0 i32.const 3 - call $~lib/typedarray/Int8Array#__set + call $~lib/typedarray/Uint8ClampedArray#__set global.get $~lib/memory/__stack_pointer local.get $source local.set $2 @@ -81090,7 +80968,7 @@ i32.const 0 global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int8Array#sort@varargs + call $~lib/typedarray/Uint8ClampedArray#sort@varargs local.tee $result i32.store offset=8 local.get $result @@ -81100,13 +80978,13 @@ i32.store offset=4 local.get $2 i32.const 0 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -81119,13 +80997,13 @@ i32.store offset=4 local.get $2 i32.const 1 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -81138,13 +81016,13 @@ i32.store offset=4 local.get $2 i32.const 2 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -81156,13 +81034,13 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14352 + i32.const 14640 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=12 local.get $2 - call $~lib/typedarray/Int8Array#sort + call $~lib/typedarray/Uint8ClampedArray#sort drop local.get $result local.set $2 @@ -81171,13 +81049,13 @@ i32.store offset=4 local.get $2 i32.const 0 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -81190,13 +81068,13 @@ i32.store offset=4 local.get $2 i32.const 1 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -81209,13 +81087,13 @@ i32.store offset=4 local.get $2 i32.const 2 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -81226,7 +81104,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) (local $3 i32) (local $a i32) (local $b i32) @@ -81301,10 +81179,10 @@ br $break|0 end local.get $ptr - i32.load8_u + i32.load16_s local.set $a local.get $ptr - i32.load8_u offset=1 + i32.load16_s offset=2 local.set $b local.get $a local.get $b @@ -81321,14 +81199,14 @@ local.get $a local.get $c select - i32.store8 + i32.store16 local.get $a local.get $b local.get $c select local.set $a local.get $ptr - i32.load8_u offset=2 + i32.load16_s offset=4 local.set $b local.get $a local.get $b @@ -81345,19 +81223,19 @@ local.get $a local.get $c select - i32.store8 offset=1 + i32.store16 offset=2 local.get $ptr local.get $a local.get $b local.get $c select - i32.store8 offset=2 + i32.store16 offset=4 end local.get $ptr - i32.load8_u + i32.load16_s local.set $a|7 local.get $ptr - i32.load8_u offset=1 + i32.load16_s offset=2 local.set $b|8 local.get $a|7 local.get $b|8 @@ -81374,13 +81252,13 @@ local.get $a|7 local.get $c|9 select - i32.store8 + i32.store16 local.get $ptr local.get $a|7 local.get $b|8 local.get $c|9 select - i32.store8 offset=1 + i32.store16 offset=2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -81399,21 +81277,21 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end - block $~lib/util/sort/log2u|inlined.2 (result i32) + block $~lib/util/sort/log2u|inlined.3 (result i32) local.get $len local.set $n i32.const 31 local.get $n i32.clz i32.sub - br $~lib/util/sort/log2u|inlined.2 + br $~lib/util/sort/log2u|inlined.3 end i32.const 2 i32.add @@ -81453,7 +81331,7 @@ end end local.get $len - i32.const 0 + i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc local.set $buffer @@ -81470,7 +81348,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endA local.get $endA i32.const 1 @@ -81501,7 +81379,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.set $top @@ -81525,7 +81403,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endB local.get $endB local.get $startB @@ -81560,7 +81438,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.get $hi @@ -81605,7 +81483,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf @@ -81682,7 +81560,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $i|32 i32.const 1 @@ -81700,294 +81578,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8Array#sort (param $this i32) (param $comparator i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:dataStart - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/typedarray/Uint8Array#get:length - local.get $comparator - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/util/sort/SORT - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - ) - (func $~lib/typedarray/Uint8Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 1 - drop - i32.const 0 - drop - i32.const 14384 - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.tee $comparator - i32.store - end - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $comparator - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - call $~lib/typedarray/Uint8Array#sort - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>" - (local $source i32) - (local $result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $source - i32.store - local.get $source - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $source - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $source - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $source - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8Array#sort@varargs - local.tee $result - i32.store offset=8 - local.get $result - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 885 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $result - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 886 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $result - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 887 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $result - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 14416 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 - local.get $2 - call $~lib/typedarray/Uint8Array#sort - drop - local.get $result - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 889 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $result - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 890 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $result - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 891 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint8ClampedArray#sort (param $this i32) (param $comparator i32) (result i32) + (func $~lib/typedarray/Int16Array#sort (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -82010,14 +81601,14 @@ local.get $2 i32.store offset=4 local.get $2 - call $~lib/typedarray/Uint8ClampedArray#get:length + call $~lib/typedarray/Int16Array#get:length local.get $comparator local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 - call $~lib/util/sort/SORT + call $~lib/util/sort/SORT local.get $this local.set $2 global.get $~lib/memory/__stack_pointer @@ -82027,7 +81618,7 @@ local.get $2 return ) - (func $~lib/typedarray/Uint8ClampedArray#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (func $~lib/typedarray/Int16Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -82049,13 +81640,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR|inlined.1 (result i32) + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) i32.const 1 drop - i32.const 0 + i32.const 2 + i32.const 4 + i32.le_u drop - i32.const 14448 - br $~lib/util/sort/COMPARATOR|inlined.1 + i32.const 14672 + br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator i32.store @@ -82072,7 +81665,7 @@ local.get $2 i32.store offset=8 local.get $2 - call $~lib/typedarray/Uint8ClampedArray#sort + call $~lib/typedarray/Int16Array#sort local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -82080,7 +81673,7 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8>" + (func $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>" (local $source i32) (local $result i32) (local $2 i32) @@ -82098,7 +81691,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor + call $~lib/typedarray/Int16Array#constructor local.tee $source i32.store local.get $source @@ -82109,7 +81702,7 @@ local.get $2 i32.const 2 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set + call $~lib/typedarray/Int16Array#__set local.get $source local.set $2 global.get $~lib/memory/__stack_pointer @@ -82118,7 +81711,7 @@ local.get $2 i32.const 1 i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set + call $~lib/typedarray/Int16Array#__set local.get $source local.set $2 global.get $~lib/memory/__stack_pointer @@ -82127,7 +81720,7 @@ local.get $2 i32.const 0 i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set + call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer local.get $source local.set $2 @@ -82138,7 +81731,7 @@ i32.const 0 global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#sort@varargs + call $~lib/typedarray/Int16Array#sort@varargs local.tee $result i32.store offset=8 local.get $result @@ -82148,13 +81741,13 @@ i32.store offset=4 local.get $2 i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Int16Array#__get i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -82167,13 +81760,13 @@ i32.store offset=4 local.get $2 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Int16Array#__get i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -82186,13 +81779,13 @@ i32.store offset=4 local.get $2 i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Int16Array#__get i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -82204,13 +81797,13 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14480 + i32.const 14704 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=12 local.get $2 - call $~lib/typedarray/Uint8ClampedArray#sort + call $~lib/typedarray/Int16Array#sort drop local.get $result local.set $2 @@ -82219,13 +81812,13 @@ i32.store offset=4 local.get $2 i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Int16Array#__get i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -82238,13 +81831,13 @@ i32.store offset=4 local.get $2 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Int16Array#__get i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -82257,13 +81850,13 @@ i32.store offset=4 local.get $2 i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Int16Array#__get i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -82274,7 +81867,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) (local $3 i32) (local $a i32) (local $b i32) @@ -82349,10 +81942,10 @@ br $break|0 end local.get $ptr - i32.load16_s + i32.load16_u local.set $a local.get $ptr - i32.load16_s offset=2 + i32.load16_u offset=2 local.set $b local.get $a local.get $b @@ -82376,7 +81969,7 @@ select local.set $a local.get $ptr - i32.load16_s offset=4 + i32.load16_u offset=4 local.set $b local.get $a local.get $b @@ -82402,10 +81995,10 @@ i32.store16 offset=4 end local.get $ptr - i32.load16_s + i32.load16_u local.set $a|7 local.get $ptr - i32.load16_s offset=2 + i32.load16_u offset=2 local.set $b|8 local.get $a|7 local.get $b|8 @@ -82447,21 +82040,21 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end - block $~lib/util/sort/log2u|inlined.3 (result i32) + block $~lib/util/sort/log2u|inlined.4 (result i32) local.get $len local.set $n i32.const 31 local.get $n i32.clz i32.sub - br $~lib/util/sort/log2u|inlined.3 + br $~lib/util/sort/log2u|inlined.4 end i32.const 2 i32.add @@ -82518,7 +82111,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endA local.get $endA i32.const 1 @@ -82549,7 +82142,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.set $top @@ -82573,7 +82166,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endB local.get $endB local.get $startB @@ -82608,7 +82201,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.get $hi @@ -82653,7 +82246,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf @@ -82730,7 +82323,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $i|32 i32.const 1 @@ -82748,7 +82341,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#sort (param $this i32) (param $comparator i32) (result i32) + (func $~lib/typedarray/Uint16Array#sort (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -82771,14 +82364,14 @@ local.get $2 i32.store offset=4 local.get $2 - call $~lib/typedarray/Int16Array#get:length + call $~lib/typedarray/Uint16Array#get:length local.get $comparator local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 - call $~lib/util/sort/SORT + call $~lib/util/sort/SORT local.get $this local.set $2 global.get $~lib/memory/__stack_pointer @@ -82788,7 +82381,7 @@ local.get $2 return ) - (func $~lib/typedarray/Int16Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (func $~lib/typedarray/Uint16Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -82810,15 +82403,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) i32.const 1 drop - i32.const 2 - i32.const 4 - i32.le_u + i32.const 0 drop - i32.const 14512 - br $~lib/util/sort/COMPARATOR|inlined.0 + i32.const 14736 + br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator i32.store @@ -82835,7 +82426,7 @@ local.get $2 i32.store offset=8 local.get $2 - call $~lib/typedarray/Int16Array#sort + call $~lib/typedarray/Uint16Array#sort local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -82843,7 +82434,7 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>" + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>" (local $source i32) (local $result i32) (local $2 i32) @@ -82861,7 +82452,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Int16Array#constructor + call $~lib/typedarray/Uint16Array#constructor local.tee $source i32.store local.get $source @@ -82872,7 +82463,7 @@ local.get $2 i32.const 2 i32.const 1 - call $~lib/typedarray/Int16Array#__set + call $~lib/typedarray/Uint16Array#__set local.get $source local.set $2 global.get $~lib/memory/__stack_pointer @@ -82881,7 +82472,7 @@ local.get $2 i32.const 1 i32.const 2 - call $~lib/typedarray/Int16Array#__set + call $~lib/typedarray/Uint16Array#__set local.get $source local.set $2 global.get $~lib/memory/__stack_pointer @@ -82890,7 +82481,7 @@ local.get $2 i32.const 0 i32.const 3 - call $~lib/typedarray/Int16Array#__set + call $~lib/typedarray/Uint16Array#__set global.get $~lib/memory/__stack_pointer local.get $source local.set $2 @@ -82901,7 +82492,7 @@ i32.const 0 global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int16Array#sort@varargs + call $~lib/typedarray/Uint16Array#sort@varargs local.tee $result i32.store offset=8 local.get $result @@ -82911,13 +82502,13 @@ i32.store offset=4 local.get $2 i32.const 0 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Uint16Array#__get i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -82930,13 +82521,13 @@ i32.store offset=4 local.get $2 i32.const 1 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Uint16Array#__get i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -82949,13 +82540,13 @@ i32.store offset=4 local.get $2 i32.const 2 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Uint16Array#__get i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -82967,13 +82558,13 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14544 + i32.const 14768 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=12 local.get $2 - call $~lib/typedarray/Int16Array#sort + call $~lib/typedarray/Uint16Array#sort drop local.get $result local.set $2 @@ -82982,13 +82573,13 @@ i32.store offset=4 local.get $2 i32.const 0 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Uint16Array#__get i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -83001,13 +82592,13 @@ i32.store offset=4 local.get $2 i32.const 1 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Uint16Array#__get i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -83020,13 +82611,13 @@ i32.store offset=4 local.get $2 i32.const 2 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Uint16Array#__get i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -83037,7 +82628,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) (local $3 i32) (local $a i32) (local $b i32) @@ -83112,10 +82703,10 @@ br $break|0 end local.get $ptr - i32.load16_u + i32.load local.set $a local.get $ptr - i32.load16_u offset=2 + i32.load offset=4 local.set $b local.get $a local.get $b @@ -83132,14 +82723,14 @@ local.get $a local.get $c select - i32.store16 + i32.store local.get $a local.get $b local.get $c select local.set $a local.get $ptr - i32.load16_u offset=4 + i32.load offset=8 local.set $b local.get $a local.get $b @@ -83156,19 +82747,19 @@ local.get $a local.get $c select - i32.store16 offset=2 + i32.store offset=4 local.get $ptr local.get $a local.get $b local.get $c select - i32.store16 offset=4 + i32.store offset=8 end local.get $ptr - i32.load16_u + i32.load local.set $a|7 local.get $ptr - i32.load16_u offset=2 + i32.load offset=4 local.set $b|8 local.get $a|7 local.get $b|8 @@ -83185,13 +82776,13 @@ local.get $a|7 local.get $c|9 select - i32.store16 + i32.store local.get $ptr local.get $a|7 local.get $b|8 local.get $c|9 select - i32.store16 offset=2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -83210,21 +82801,21 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end - block $~lib/util/sort/log2u|inlined.4 (result i32) + block $~lib/util/sort/log2u|inlined.5 (result i32) local.get $len local.set $n i32.const 31 local.get $n i32.clz i32.sub - br $~lib/util/sort/log2u|inlined.4 + br $~lib/util/sort/log2u|inlined.5 end i32.const 2 i32.add @@ -83264,7 +82855,7 @@ end end local.get $len - i32.const 1 + i32.const 2 i32.shl call $~lib/rt/tlsf/__alloc local.set $buffer @@ -83281,7 +82872,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endA local.get $endA i32.const 1 @@ -83312,7 +82903,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.set $top @@ -83336,7 +82927,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endB local.get $endB local.get $startB @@ -83371,7 +82962,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.get $hi @@ -83416,7 +83007,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf @@ -83493,7 +83084,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $i|32 i32.const 1 @@ -83511,7 +83102,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint16Array#sort (param $this i32) (param $comparator i32) (result i32) + (func $~lib/typedarray/Int32Array#sort (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -83534,14 +83125,14 @@ local.get $2 i32.store offset=4 local.get $2 - call $~lib/typedarray/Uint16Array#get:length + call $~lib/typedarray/Int32Array#get:length local.get $comparator local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 - call $~lib/util/sort/SORT + call $~lib/util/sort/SORT local.get $this local.set $2 global.get $~lib/memory/__stack_pointer @@ -83551,7 +83142,7 @@ local.get $2 return ) - (func $~lib/typedarray/Uint16Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (func $~lib/typedarray/Int32Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -83573,13 +83164,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) i32.const 1 drop - i32.const 0 + i32.const 4 + i32.const 4 + i32.le_u drop - i32.const 14576 - br $~lib/util/sort/COMPARATOR|inlined.0 + i32.const 14800 + br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator i32.store @@ -83596,7 +83189,7 @@ local.get $2 i32.store offset=8 local.get $2 - call $~lib/typedarray/Uint16Array#sort + call $~lib/typedarray/Int32Array#sort local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -83604,7 +83197,7 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>" + (func $"std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>" (local $source i32) (local $result i32) (local $2 i32) @@ -83622,7 +83215,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Uint16Array#constructor + call $~lib/typedarray/Int32Array#constructor local.tee $source i32.store local.get $source @@ -83633,7 +83226,7 @@ local.get $2 i32.const 2 i32.const 1 - call $~lib/typedarray/Uint16Array#__set + call $~lib/typedarray/Int32Array#__set local.get $source local.set $2 global.get $~lib/memory/__stack_pointer @@ -83642,7 +83235,7 @@ local.get $2 i32.const 1 i32.const 2 - call $~lib/typedarray/Uint16Array#__set + call $~lib/typedarray/Int32Array#__set local.get $source local.set $2 global.get $~lib/memory/__stack_pointer @@ -83651,7 +83244,7 @@ local.get $2 i32.const 0 i32.const 3 - call $~lib/typedarray/Uint16Array#__set + call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer local.get $source local.set $2 @@ -83662,7 +83255,7 @@ i32.const 0 global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Uint16Array#sort@varargs + call $~lib/typedarray/Int32Array#sort@varargs local.tee $result i32.store offset=8 local.get $result @@ -83672,13 +83265,13 @@ i32.store offset=4 local.get $2 i32.const 0 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -83691,13 +83284,13 @@ i32.store offset=4 local.get $2 i32.const 1 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -83710,13 +83303,13 @@ i32.store offset=4 local.get $2 i32.const 2 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -83728,13 +83321,13 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14608 + i32.const 14832 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=12 local.get $2 - call $~lib/typedarray/Uint16Array#sort + call $~lib/typedarray/Int32Array#sort drop local.get $result local.set $2 @@ -83743,13 +83336,13 @@ i32.store offset=4 local.get $2 i32.const 0 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -83762,13 +83355,13 @@ i32.store offset=4 local.get $2 i32.const 1 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -83781,13 +83374,13 @@ i32.store offset=4 local.get $2 i32.const 2 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -83798,7 +83391,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) (local $3 i32) (local $a i32) (local $b i32) @@ -83971,21 +83564,21 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end - block $~lib/util/sort/log2u|inlined.5 (result i32) + block $~lib/util/sort/log2u|inlined.6 (result i32) local.get $len local.set $n i32.const 31 local.get $n i32.clz i32.sub - br $~lib/util/sort/log2u|inlined.5 + br $~lib/util/sort/log2u|inlined.6 end i32.const 2 i32.add @@ -84042,7 +83635,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endA local.get $endA i32.const 1 @@ -84073,7 +83666,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.set $top @@ -84097,7 +83690,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endB local.get $endB local.get $startB @@ -84132,7 +83725,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.get $hi @@ -84177,7 +83770,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf @@ -84254,7 +83847,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $i|32 i32.const 1 @@ -84272,7 +83865,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#sort (param $this i32) (param $comparator i32) (result i32) + (func $~lib/typedarray/Uint32Array#sort (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -84295,14 +83888,14 @@ local.get $2 i32.store offset=4 local.get $2 - call $~lib/typedarray/Int32Array#get:length + call $~lib/typedarray/Uint32Array#get:length local.get $comparator local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 - call $~lib/util/sort/SORT + call $~lib/util/sort/SORT local.get $this local.set $2 global.get $~lib/memory/__stack_pointer @@ -84312,7 +83905,7 @@ local.get $2 return ) - (func $~lib/typedarray/Int32Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (func $~lib/typedarray/Uint32Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -84334,15 +83927,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) i32.const 1 drop - i32.const 4 - i32.const 4 - i32.le_u + i32.const 0 drop - i32.const 14640 - br $~lib/util/sort/COMPARATOR|inlined.0 + i32.const 14864 + br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator i32.store @@ -84359,7 +83950,7 @@ local.get $2 i32.store offset=8 local.get $2 - call $~lib/typedarray/Int32Array#sort + call $~lib/typedarray/Uint32Array#sort local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -84367,7 +83958,7 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>" + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>" (local $source i32) (local $result i32) (local $2 i32) @@ -84385,7 +83976,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Int32Array#constructor + call $~lib/typedarray/Uint32Array#constructor local.tee $source i32.store local.get $source @@ -84396,7 +83987,7 @@ local.get $2 i32.const 2 i32.const 1 - call $~lib/typedarray/Int32Array#__set + call $~lib/typedarray/Uint32Array#__set local.get $source local.set $2 global.get $~lib/memory/__stack_pointer @@ -84405,7 +83996,7 @@ local.get $2 i32.const 1 i32.const 2 - call $~lib/typedarray/Int32Array#__set + call $~lib/typedarray/Uint32Array#__set local.get $source local.set $2 global.get $~lib/memory/__stack_pointer @@ -84414,7 +84005,7 @@ local.get $2 i32.const 0 i32.const 3 - call $~lib/typedarray/Int32Array#__set + call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer local.get $source local.set $2 @@ -84425,7 +84016,7 @@ i32.const 0 global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int32Array#sort@varargs + call $~lib/typedarray/Uint32Array#sort@varargs local.tee $result i32.store offset=8 local.get $result @@ -84435,13 +84026,13 @@ i32.store offset=4 local.get $2 i32.const 0 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -84454,13 +84045,13 @@ i32.store offset=4 local.get $2 i32.const 1 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -84473,13 +84064,13 @@ i32.store offset=4 local.get $2 i32.const 2 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -84491,13 +84082,13 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14672 + i32.const 14896 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=12 local.get $2 - call $~lib/typedarray/Int32Array#sort + call $~lib/typedarray/Uint32Array#sort drop local.get $result local.set $2 @@ -84506,13 +84097,13 @@ i32.store offset=4 local.get $2 i32.const 0 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -84525,13 +84116,13 @@ i32.store offset=4 local.get $2 i32.const 1 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -84544,13 +84135,13 @@ i32.store offset=4 local.get $2 i32.const 2 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -84561,13 +84152,13 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) (local $3 i32) - (local $a i32) - (local $b i32) + (local $a i64) + (local $b i64) (local $c i32) - (local $a|7 i32) - (local $b|8 i32) + (local $a|7 i64) + (local $b|8 i64) (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) @@ -84636,10 +84227,10 @@ br $break|0 end local.get $ptr - i32.load + i64.load local.set $a local.get $ptr - i32.load offset=4 + i64.load offset=8 local.set $b local.get $a local.get $b @@ -84647,7 +84238,7 @@ global.set $~argumentsLength local.get $comparator i32.load - call_indirect (type $0) + call_indirect (type $8) i32.const 0 i32.gt_s local.set $c @@ -84656,14 +84247,14 @@ local.get $a local.get $c select - i32.store + i64.store local.get $a local.get $b local.get $c select local.set $a local.get $ptr - i32.load offset=8 + i64.load offset=16 local.set $b local.get $a local.get $b @@ -84671,7 +84262,7 @@ global.set $~argumentsLength local.get $comparator i32.load - call_indirect (type $0) + call_indirect (type $8) i32.const 0 i32.gt_s local.set $c @@ -84680,19 +84271,19 @@ local.get $a local.get $c select - i32.store offset=4 + i64.store offset=8 local.get $ptr local.get $a local.get $b local.get $c select - i32.store offset=8 + i64.store offset=16 end local.get $ptr - i32.load + i64.load local.set $a|7 local.get $ptr - i32.load offset=4 + i64.load offset=8 local.set $b|8 local.get $a|7 local.get $b|8 @@ -84700,7 +84291,7 @@ global.set $~argumentsLength local.get $comparator i32.load - call_indirect (type $0) + call_indirect (type $8) i32.const 0 i32.gt_s local.set $c|9 @@ -84709,13 +84300,13 @@ local.get $a|7 local.get $c|9 select - i32.store + i64.store local.get $ptr local.get $a|7 local.get $b|8 local.get $c|9 select - i32.store offset=4 + i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -84734,21 +84325,21 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end - block $~lib/util/sort/log2u|inlined.6 (result i32) + block $~lib/util/sort/log2u|inlined.7 (result i32) local.get $len local.set $n i32.const 31 local.get $n i32.clz i32.sub - br $~lib/util/sort/log2u|inlined.6 + br $~lib/util/sort/log2u|inlined.7 end i32.const 2 i32.add @@ -84788,7 +84379,7 @@ end end local.get $len - i32.const 2 + i32.const 3 i32.shl call $~lib/rt/tlsf/__alloc local.set $buffer @@ -84805,7 +84396,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endA local.get $endA i32.const 1 @@ -84836,7 +84427,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.set $top @@ -84860,7 +84451,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endB local.get $endB local.get $startB @@ -84895,7 +84486,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.get $hi @@ -84940,7 +84531,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf @@ -85017,7 +84608,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $i|32 i32.const 1 @@ -85035,7 +84626,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint32Array#sort (param $this i32) (param $comparator i32) (result i32) + (func $~lib/typedarray/Int64Array#sort (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -85058,14 +84649,14 @@ local.get $2 i32.store offset=4 local.get $2 - call $~lib/typedarray/Uint32Array#get:length + call $~lib/typedarray/Int64Array#get:length local.get $comparator local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 - call $~lib/util/sort/SORT + call $~lib/util/sort/SORT local.get $this local.set $2 global.get $~lib/memory/__stack_pointer @@ -85075,7 +84666,7 @@ local.get $2 return ) - (func $~lib/typedarray/Uint32Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (func $~lib/typedarray/Int64Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -85097,13 +84688,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) i32.const 1 drop - i32.const 0 + i32.const 8 + i32.const 4 + i32.le_u drop - i32.const 14704 - br $~lib/util/sort/COMPARATOR|inlined.0 + i32.const 14928 + br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator i32.store @@ -85120,7 +84713,7 @@ local.get $2 i32.store offset=8 local.get $2 - call $~lib/typedarray/Uint32Array#sort + call $~lib/typedarray/Int64Array#sort local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -85128,7 +84721,7 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>" + (func $"std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>" (local $source i32) (local $result i32) (local $2 i32) @@ -85146,7 +84739,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Uint32Array#constructor + call $~lib/typedarray/Int64Array#constructor local.tee $source i32.store local.get $source @@ -85156,8 +84749,8 @@ i32.store offset=4 local.get $2 i32.const 2 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set + i64.const 1 + call $~lib/typedarray/Int64Array#__set local.get $source local.set $2 global.get $~lib/memory/__stack_pointer @@ -85165,8 +84758,8 @@ i32.store offset=4 local.get $2 i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set + i64.const 2 + call $~lib/typedarray/Int64Array#__set local.get $source local.set $2 global.get $~lib/memory/__stack_pointer @@ -85174,8 +84767,8 @@ i32.store offset=4 local.get $2 i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set + i64.const 3 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer local.get $source local.set $2 @@ -85186,7 +84779,7 @@ i32.const 0 global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Uint32Array#sort@varargs + call $~lib/typedarray/Int64Array#sort@varargs local.tee $result i32.store offset=8 local.get $result @@ -85196,13 +84789,13 @@ i32.store offset=4 local.get $2 i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 1 - i32.eq + call $~lib/typedarray/Int64Array#__get + i64.const 1 + i64.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -85215,13 +84808,13 @@ i32.store offset=4 local.get $2 i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 2 - i32.eq + call $~lib/typedarray/Int64Array#__get + i64.const 2 + i64.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -85234,13 +84827,13 @@ i32.store offset=4 local.get $2 i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 3 - i32.eq + call $~lib/typedarray/Int64Array#__get + i64.const 3 + i64.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -85252,13 +84845,13 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14736 + i32.const 14960 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=12 local.get $2 - call $~lib/typedarray/Uint32Array#sort + call $~lib/typedarray/Int64Array#sort drop local.get $result local.set $2 @@ -85267,13 +84860,13 @@ i32.store offset=4 local.get $2 i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 3 - i32.eq + call $~lib/typedarray/Int64Array#__get + i64.const 3 + i64.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -85286,13 +84879,13 @@ i32.store offset=4 local.get $2 i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 2 - i32.eq + call $~lib/typedarray/Int64Array#__get + i64.const 2 + i64.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -85305,13 +84898,13 @@ i32.store offset=4 local.get $2 i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 1 - i32.eq + call $~lib/typedarray/Int64Array#__get + i64.const 1 + i64.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -85322,7 +84915,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) (local $3 i32) (local $a i64) (local $b i64) @@ -85495,21 +85088,21 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end - block $~lib/util/sort/log2u|inlined.7 (result i32) + block $~lib/util/sort/log2u|inlined.8 (result i32) local.get $len local.set $n i32.const 31 local.get $n i32.clz i32.sub - br $~lib/util/sort/log2u|inlined.7 + br $~lib/util/sort/log2u|inlined.8 end i32.const 2 i32.add @@ -85566,7 +85159,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endA local.get $endA i32.const 1 @@ -85597,7 +85190,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.set $top @@ -85621,7 +85214,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endB local.get $endB local.get $startB @@ -85656,7 +85249,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.get $hi @@ -85701,7 +85294,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf @@ -85778,7 +85371,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $i|32 i32.const 1 @@ -85796,7 +85389,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#sort (param $this i32) (param $comparator i32) (result i32) + (func $~lib/typedarray/Uint64Array#sort (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -85819,14 +85412,14 @@ local.get $2 i32.store offset=4 local.get $2 - call $~lib/typedarray/Int64Array#get:length + call $~lib/typedarray/Uint64Array#get:length local.get $comparator local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 - call $~lib/util/sort/SORT + call $~lib/util/sort/SORT local.get $this local.set $2 global.get $~lib/memory/__stack_pointer @@ -85836,7 +85429,7 @@ local.get $2 return ) - (func $~lib/typedarray/Int64Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (func $~lib/typedarray/Uint64Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -85858,15 +85451,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) i32.const 1 drop - i32.const 8 - i32.const 4 - i32.le_u + i32.const 0 drop - i32.const 14768 - br $~lib/util/sort/COMPARATOR|inlined.0 + i32.const 14992 + br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $comparator i32.store @@ -85883,7 +85474,7 @@ local.get $2 i32.store offset=8 local.get $2 - call $~lib/typedarray/Int64Array#sort + call $~lib/typedarray/Uint64Array#sort local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -85891,7 +85482,7 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>" + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>" (local $source i32) (local $result i32) (local $2 i32) @@ -85909,7 +85500,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Int64Array#constructor + call $~lib/typedarray/Uint64Array#constructor local.tee $source i32.store local.get $source @@ -85920,7 +85511,7 @@ local.get $2 i32.const 2 i64.const 1 - call $~lib/typedarray/Int64Array#__set + call $~lib/typedarray/Uint64Array#__set local.get $source local.set $2 global.get $~lib/memory/__stack_pointer @@ -85929,7 +85520,7 @@ local.get $2 i32.const 1 i64.const 2 - call $~lib/typedarray/Int64Array#__set + call $~lib/typedarray/Uint64Array#__set local.get $source local.set $2 global.get $~lib/memory/__stack_pointer @@ -85938,7 +85529,7 @@ local.get $2 i32.const 0 i64.const 3 - call $~lib/typedarray/Int64Array#__set + call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer local.get $source local.set $2 @@ -85949,7 +85540,7 @@ i32.const 0 global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int64Array#sort@varargs + call $~lib/typedarray/Uint64Array#sort@varargs local.tee $result i32.store offset=8 local.get $result @@ -85959,13 +85550,13 @@ i32.store offset=4 local.get $2 i32.const 0 - call $~lib/typedarray/Int64Array#__get + call $~lib/typedarray/Uint64Array#__get i64.const 1 i64.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -85978,13 +85569,13 @@ i32.store offset=4 local.get $2 i32.const 1 - call $~lib/typedarray/Int64Array#__get + call $~lib/typedarray/Uint64Array#__get i64.const 2 i64.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -85997,13 +85588,13 @@ i32.store offset=4 local.get $2 i32.const 2 - call $~lib/typedarray/Int64Array#__get + call $~lib/typedarray/Uint64Array#__get i64.const 3 i64.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -86015,13 +85606,13 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14800 + i32.const 15024 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=12 local.get $2 - call $~lib/typedarray/Int64Array#sort + call $~lib/typedarray/Uint64Array#sort drop local.get $result local.set $2 @@ -86030,13 +85621,13 @@ i32.store offset=4 local.get $2 i32.const 0 - call $~lib/typedarray/Int64Array#__get + call $~lib/typedarray/Uint64Array#__get i64.const 3 i64.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -86049,13 +85640,13 @@ i32.store offset=4 local.get $2 i32.const 1 - call $~lib/typedarray/Int64Array#__get + call $~lib/typedarray/Uint64Array#__get i64.const 2 i64.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -86068,13 +85659,13 @@ i32.store offset=4 local.get $2 i32.const 2 - call $~lib/typedarray/Int64Array#__get + call $~lib/typedarray/Uint64Array#__get i64.const 1 i64.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -86085,13 +85676,13 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) (local $3 i32) - (local $a i64) - (local $b i64) + (local $a f32) + (local $b f32) (local $c i32) - (local $a|7 i64) - (local $b|8 i64) + (local $a|7 f32) + (local $b|8 f32) (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) @@ -86160,10 +85751,10 @@ br $break|0 end local.get $ptr - i64.load + f32.load local.set $a local.get $ptr - i64.load offset=8 + f32.load offset=4 local.set $b local.get $a local.get $b @@ -86171,7 +85762,7 @@ global.set $~argumentsLength local.get $comparator i32.load - call_indirect (type $8) + call_indirect (type $13) i32.const 0 i32.gt_s local.set $c @@ -86180,14 +85771,14 @@ local.get $a local.get $c select - i64.store + f32.store local.get $a local.get $b local.get $c select local.set $a local.get $ptr - i64.load offset=16 + f32.load offset=8 local.set $b local.get $a local.get $b @@ -86195,7 +85786,7 @@ global.set $~argumentsLength local.get $comparator i32.load - call_indirect (type $8) + call_indirect (type $13) i32.const 0 i32.gt_s local.set $c @@ -86204,19 +85795,19 @@ local.get $a local.get $c select - i64.store offset=8 + f32.store offset=4 local.get $ptr local.get $a local.get $b local.get $c select - i64.store offset=16 + f32.store offset=8 end local.get $ptr - i64.load + f32.load local.set $a|7 local.get $ptr - i64.load offset=8 + f32.load offset=4 local.set $b|8 local.get $a|7 local.get $b|8 @@ -86224,7 +85815,7 @@ global.set $~argumentsLength local.get $comparator i32.load - call_indirect (type $8) + call_indirect (type $13) i32.const 0 i32.gt_s local.set $c|9 @@ -86233,13 +85824,13 @@ local.get $a|7 local.get $c|9 select - i64.store + f32.store local.get $ptr local.get $a|7 local.get $b|8 local.get $c|9 select - i64.store offset=8 + f32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -86258,21 +85849,21 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end - block $~lib/util/sort/log2u|inlined.8 (result i32) + block $~lib/util/sort/log2u|inlined.9 (result i32) local.get $len local.set $n i32.const 31 local.get $n i32.clz i32.sub - br $~lib/util/sort/log2u|inlined.8 + br $~lib/util/sort/log2u|inlined.9 end i32.const 2 i32.add @@ -86312,7 +85903,7 @@ end end local.get $len - i32.const 3 + i32.const 2 i32.shl call $~lib/rt/tlsf/__alloc local.set $buffer @@ -86329,7 +85920,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endA local.get $endA i32.const 1 @@ -86360,7 +85951,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.set $top @@ -86384,7 +85975,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/extendRunRight + call $~lib/util/sort/extendRunRight local.set $endB local.get $endB local.get $startB @@ -86419,7 +86010,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/insertionSort + call $~lib/util/sort/insertionSort end i32.const 0 local.get $hi @@ -86464,7 +86055,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf @@ -86541,7 +86132,7 @@ local.get $34 i32.store local.get $34 - call $~lib/util/sort/mergeRuns + call $~lib/util/sort/mergeRuns end local.get $i|32 i32.const 1 @@ -86559,7 +86150,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#sort (param $this i32) (param $comparator i32) (result i32) + (func $~lib/typedarray/Float32Array#sort (param $this i32) (param $comparator i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -86575,84 +86166,282 @@ local.get $2 i32.store offset=4 local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:dataStart - local.get $this + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Float32Array#get:length + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Float32Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 15056 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Float32Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float32Array#sort@varargs + local.tee $result + i32.store offset=8 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 1 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 2 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 3 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 - call $~lib/typedarray/Uint64Array#get:length - local.get $comparator + i32.const 15088 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $2 - call $~lib/util/sort/SORT - local.get $this + call $~lib/typedarray/Float32Array#sort + drop + local.get $result local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $2 - return - ) - (func $~lib/typedarray/Uint64Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + i32.store offset=4 + local.get $2 i32.const 0 - i32.store offset=8 - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 1 - drop - i32.const 0 - drop - i32.const 14832 - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.tee $comparator - i32.store + call $~lib/typedarray/Float32Array#__get + f32.const 3 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $this + local.get $result local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 - local.get $comparator + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 2 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=8 + i32.store offset=4 local.get $2 - call $~lib/typedarray/Uint64Array#sort - local.set $2 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 1 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>" + (func $"std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>" (local $source i32) (local $result i32) (local $2 i32) @@ -86670,7 +86459,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Uint64Array#constructor + call $~lib/typedarray/Float64Array#constructor local.tee $source i32.store local.get $source @@ -86680,8 +86469,8 @@ i32.store offset=4 local.get $2 i32.const 2 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set + f64.const 1 + call $~lib/typedarray/Float64Array#__set local.get $source local.set $2 global.get $~lib/memory/__stack_pointer @@ -86689,8 +86478,8 @@ i32.store offset=4 local.get $2 i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set + f64.const 2 + call $~lib/typedarray/Float64Array#__set local.get $source local.set $2 global.get $~lib/memory/__stack_pointer @@ -86698,8 +86487,8 @@ i32.store offset=4 local.get $2 i32.const 0 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set + f64.const 3 + call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer local.get $source local.set $2 @@ -86710,7 +86499,7 @@ i32.const 0 global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Uint64Array#sort@varargs + call $~lib/typedarray/Float64Array#sort@varargs local.tee $result i32.store offset=8 local.get $result @@ -86720,13 +86509,13 @@ i32.store offset=4 local.get $2 i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 1 - i64.eq + call $~lib/typedarray/Float64Array#__get + f64.const 1 + f64.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -86739,13 +86528,13 @@ i32.store offset=4 local.get $2 i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 2 - i64.eq + call $~lib/typedarray/Float64Array#__get + f64.const 2 + f64.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -86758,13 +86547,13 @@ i32.store offset=4 local.get $2 i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 3 - i64.eq + call $~lib/typedarray/Float64Array#__get + f64.const 3 + f64.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -86776,13 +86565,13 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 14864 + i32.const 15120 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=12 local.get $2 - call $~lib/typedarray/Uint64Array#sort + call $~lib/typedarray/Float64Array#sort drop local.get $result local.set $2 @@ -86791,13 +86580,13 @@ i32.store offset=4 local.get $2 i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 3 - i64.eq + call $~lib/typedarray/Float64Array#__get + f64.const 3 + f64.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -86810,13 +86599,13 @@ i32.store offset=4 local.get $2 i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 2 - i64.eq + call $~lib/typedarray/Float64Array#__get + f64.const 2 + f64.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -86829,13 +86618,13 @@ i32.store offset=4 local.get $2 i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 1 - i64.eq + call $~lib/typedarray/Float64Array#__get + f64.const 1 + f64.eq i32.eqz if i32.const 0 - i32.const 544 + i32.const 2512 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -86846,1112 +86635,1069 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (func $start:std/typedarray + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $a f32) - (local $b f32) - (local $c i32) - (local $a|7 f32) - (local $b|8 f32) - (local $c|9 i32) - (local $n i32) - (local $lgPlus2 i32) - (local $lgPlus2Size i32) - (local $leftRunStartBuf i32) - (local $leftRunEndBuf i32) - (local $i i32) - (local $buffer i32) - (local $hi i32) - (local $endA i32) - (local $lenA i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) (local $20 i32) (local $21 i32) - (local $top i32) - (local $startA i32) - (local $startB i32) - (local $endB i32) - (local $lenB i32) + (local $22 i32) + (local $23 i32) + (local $24 i32) + (local $25 i32) + (local $26 i32) (local $27 i32) (local $28 i32) - (local $k i32) - (local $i|30 i32) - (local $start i32) - (local $i|32 i32) - (local $start|33 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) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 124 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 124 + memory.fill + global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT + i32.const 1 + i32.eq + drop + global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT + i32.const 1 + i32.eq + drop + global.get $~lib/typedarray/Uint8ClampedArray.BYTES_PER_ELEMENT + i32.const 1 + i32.eq + drop + global.get $~lib/typedarray/Int16Array.BYTES_PER_ELEMENT + i32.const 2 + i32.eq + drop + global.get $~lib/typedarray/Uint16Array.BYTES_PER_ELEMENT + i32.const 2 + i32.eq + drop + global.get $~lib/typedarray/Int32Array.BYTES_PER_ELEMENT + i32.const 4 + i32.eq + drop + global.get $~lib/typedarray/Uint32Array.BYTES_PER_ELEMENT + i32.const 4 + i32.eq + drop + global.get $~lib/typedarray/Int64Array.BYTES_PER_ELEMENT + i32.const 8 + i32.eq + drop + global.get $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT + i32.const 8 + i32.eq + drop + global.get $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT + i32.const 4 + i32.eq + drop + global.get $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT + i32.const 8 + i32.eq + drop + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $std/typedarray/testInstantiate + i32.const 5 + call $std/typedarray/testInstantiate + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 i32.store - local.get $len - i32.const 48 - i32.le_s + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.eq + i32.eqz if - local.get $len - i32.const 1 - i32.le_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end i32.const 0 - i32.const 1 - i32.lt_s - drop - block $break|0 - block $case1|0 - block $case0|0 - local.get $len - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $ptr - f32.load - local.set $a - local.get $ptr - f32.load offset=4 - local.set $b - local.get $a - local.get $b - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $13) - i32.const 0 - i32.gt_s - local.set $c - local.get $ptr - local.get $b - local.get $a - local.get $c - select - f32.store - local.get $a - local.get $b - local.get $c - select - local.set $a - local.get $ptr - f32.load offset=8 - local.set $b - local.get $a - local.get $b - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $13) - i32.const 0 - i32.gt_s - local.set $c - local.get $ptr - local.get $b - local.get $a - local.get $c - select - f32.store offset=4 - local.get $ptr - local.get $a - local.get $b - local.get $c - select - f32.store offset=8 - end - local.get $ptr - f32.load - local.set $a|7 - local.get $ptr - f32.load offset=4 - local.set $b|8 - local.get $a|7 - local.get $b|8 - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $13) - i32.const 0 - i32.gt_s - local.set $c|9 - local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 - select - f32.store - local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 - select - f32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $ptr + i32.const 2512 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if i32.const 0 - local.get $len - i32.const 1 - i32.sub + i32.const 2512 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.eq + i32.eqz + if i32.const 0 - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/insertionSort - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 2512 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable end - block $~lib/util/sort/log2u|inlined.9 (result i32) - local.get $len - local.set $n - i32.const 31 - local.get $n - i32.clz - i32.sub - br $~lib/util/sort/log2u|inlined.9 + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 99 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 i32.const 2 - i32.add - local.set $lgPlus2 - local.get $lgPlus2 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 100 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 i32.const 2 - i32.shl - local.set $lgPlus2Size - local.get $lgPlus2Size + call $~lib/typedarray/Int32Array#subarray + local.tee $0 + i32.store + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/typedarray/Int32Array#get:length i32.const 1 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $leftRunStartBuf - local.get $leftRunStartBuf - local.get $lgPlus2Size - i32.add - local.set $leftRunEndBuf - i32.const 0 - local.set $i - loop $for-loop|1 - local.get $i - local.get $lgPlus2 - i32.lt_u - if - local.get $leftRunStartBuf - local.get $i - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $i - i32.const 1 - i32.add - local.set $i - br $for-loop|1 - end + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $len - i32.const 2 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $buffer - local.get $len + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 1 - i32.sub - local.set $hi - local.get $ptr - i32.const 0 - local.get $hi - local.get $comparator - local.set $34 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/extendRunRight - local.set $endA - local.get $endA + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 1 - i32.add - local.set $lenA - local.get $lenA - i32.const 32 - i32.lt_s + i32.const 4 + i32.mul + i32.eq + i32.eqz if - local.get $hi - local.tee $20 - i32.const 32 - i32.const 1 - i32.sub - local.tee $21 - local.get $20 - local.get $21 - i32.lt_s - select - local.set $endA - local.get $ptr i32.const 0 - local.get $endA - local.get $lenA - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/insertionSort + i32.const 2512 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 i32.const 0 - local.set $top - i32.const 0 - local.set $startA - loop $while-continue|2 - local.get $endA - local.get $hi - i32.lt_s - if - local.get $endA - i32.const 1 - i32.add - local.set $startB - local.get $ptr - local.get $startB - local.get $hi - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/extendRunRight - local.set $endB - local.get $endB - local.get $startB - i32.sub - i32.const 1 - i32.add - local.set $lenB - local.get $lenB - i32.const 32 - i32.lt_s - if - local.get $hi - local.tee $27 - local.get $startB - i32.const 32 - i32.add - i32.const 1 - i32.sub - local.tee $28 - local.get $27 - local.get $28 - i32.lt_s - select - local.set $endB - local.get $ptr - local.get $startB - local.get $endB - local.get $lenB - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.get $hi - local.get $startA - local.get $startB - local.get $endB - call $~lib/util/sort/nodePower - local.set $k - local.get $top - local.set $i|30 - loop $for-loop|3 - local.get $i|30 - local.get $k - i32.gt_u - if - local.get $leftRunStartBuf - local.get $i|30 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $start - local.get $start - i32.const -1 - i32.ne - if - local.get $ptr - local.get $start - local.get $leftRunEndBuf - local.get $i|30 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - i32.add - local.get $endA - local.get $buffer - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/mergeRuns - local.get $start - local.set $startA - local.get $leftRunStartBuf - local.get $i|30 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - end - local.get $i|30 - i32.const 1 - i32.sub - local.set $i|30 - br $for-loop|3 - end - end - local.get $leftRunStartBuf - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $startA - i32.store - local.get $leftRunEndBuf - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $endA - i32.store - local.get $startB - local.set $startA - local.get $endB - local.set $endA - local.get $k - local.set $top - br $while-continue|2 - end - end - local.get $top - local.set $i|32 - loop $for-loop|4 - local.get $i|32 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.eq + i32.eqz + if i32.const 0 - i32.ne - if - local.get $leftRunStartBuf - local.get $i|32 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $start|33 - local.get $start|33 - i32.const -1 - i32.ne - if - local.get $ptr - local.get $start|33 - local.get $leftRunEndBuf - local.get $i|32 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - i32.add - local.get $hi - local.get $buffer - local.get $comparator - local.set $34 - global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 - call $~lib/util/sort/mergeRuns - end - local.get $i|32 - i32.const 1 - i32.sub - local.set $i|32 - br $for-loop|4 - end + i32.const 2512 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $buffer - call $~lib/rt/tlsf/__free - local.get $leftRunStartBuf - call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + f64.const 7 + call $~lib/typedarray/Float64Array#__set + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 3 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float32Array#sort (param $this i32) (param $comparator i32) (result i32) - (local $2 i32) + f64.const 5 + call $~lib/typedarray/Float64Array#__set + local.get $1 + local.set $64 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 6 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 7 + f64.const 8 + call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - local.set $2 + local.get $1 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:dataStart - local.get $this - local.set $2 + local.get $64 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Float64Array#subarray + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 - call $~lib/typedarray/Float32Array#get:length - local.get $comparator - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/util/sort/SORT - local.get $this - local.set $2 + local.get $64 + call $~lib/typedarray/Float64Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $64 global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 2 i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - ) - (func $~lib/typedarray/Float32Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) - (local $2 i32) + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 123 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $64 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 4 + i32.const 8 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $64 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float64Array#sort@varargs + drop + local.get $1 + local.set $64 global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 i32.const 0 - i32.store offset=8 - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.eq + if (result i32) + local.get $1 + local.set $64 global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - i32.const 14896 - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.tee $comparator - i32.store + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.eq + else + i32.const 0 + end + if (result i32) + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.eq + else + i32.const 0 + end + if (result i32) + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 3 + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $this - local.set $2 global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $2 + i32.store offset=12 local.get $2 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 i32.store offset=4 + local.get $64 + i32.const 0 + i32.const -32 + call $~lib/typedarray/Uint8ClampedArray#__set local.get $2 - local.get $comparator - local.set $2 + local.set $64 global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set local.get $2 - i32.store offset=8 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + i32.const 256 + call $~lib/typedarray/Uint8ClampedArray#__set local.get $2 - call $~lib/typedarray/Float32Array#sort - local.set $2 + local.set $64 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $2 - ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>" - (local $source i32) - (local $result i32) - (local $2 i32) + local.set $64 global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $64 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 255 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 137 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int8Array#constructor + local.tee $3 + i32.store offset=16 + local.get $3 + local.set $64 global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 i32.const 0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $source - i32.store - local.get $source - local.set $2 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $3 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 + local.get $64 + i32.const 1 i32.const 2 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $source - local.set $2 + call $~lib/typedarray/Int8Array#__set + local.get $3 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $source - local.set $2 + local.get $64 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $3 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 - i32.const 0 - f32.const 3 - call $~lib/typedarray/Float32Array#__set + local.get $64 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $3 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $source - local.set $2 + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + local.get $3 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Float32Array#sort@varargs - local.tee $result - i32.store offset=8 - local.get $result - local.set $2 + local.get $64 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int8Array#fill + drop + local.get $3 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 + local.get $64 + i32.const 5 i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 1 - f32.eq + i32.const 16 + i32.const 2672 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 544 - i32.const 885 + i32.const 2512 + i32.const 149 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $result - local.set $2 + local.get $3 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 + local.get $64 + i32.const 0 + i32.const 0 i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 2 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 886 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $result - local.set $2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int8Array#fill@varargs + drop + local.get $3 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 3 - f32.eq + local.get $64 + i32.const 5 + i32.const 0 + i32.const 16 + i32.const 2752 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 544 - i32.const 887 + i32.const 2512 + i32.const 152 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $result - local.set $2 + local.get $3 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 - i32.const 14928 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 - local.get $2 - call $~lib/typedarray/Float32Array#sort + local.get $64 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/typedarray/Int8Array#fill drop - local.get $result - local.set $2 + local.get $3 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 + local.get $64 + i32.const 5 i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 3 - f32.eq + i32.const 16 + i32.const 2784 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 544 - i32.const 889 + i32.const 2512 + i32.const 155 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $result - local.set $2 + local.get $3 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 2 - f32.eq + local.get $64 + i32.const 2 + i32.const -2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int8Array#fill@varargs + drop + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 0 + i32.const 16 + i32.const 2816 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 544 - i32.const 890 + i32.const 2512 + i32.const 158 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $result - local.set $2 + local.get $3 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 1 - f32.eq + local.get $64 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/typedarray/Int8Array#fill + drop + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 0 + i32.const 16 + i32.const 2848 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 544 - i32.const 891 + i32.const 2512 + i32.const 161 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>" - (local $source i32) - (local $result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $source - i32.store - local.get $source - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 2 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $source - local.set $2 + local.get $3 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 + local.get $64 i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $source - local.set $2 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.tee $9 + i32.store offset=24 + local.get $9 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 + local.get $64 i32.const 0 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $source - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 i32.const 0 + i32.const 1 global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Float64Array#sort@varargs - local.tee $result - i32.store offset=8 - local.get $result - local.set $2 + call $~lib/typedarray/Int8Array#fill@varargs + drop + local.get $9 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 1 - f64.eq + local.get $64 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 885 + i32.const 2512 + i32.const 165 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $result - local.set $2 + local.get $9 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 2 - f64.eq + i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 886 + i32.const 2512 + i32.const 166 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $result - local.set $2 + local.get $9 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 3 - f64.eq + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 887 + i32.const 2512 + i32.const 167 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $result - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 14960 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 - local.get $2 - call $~lib/typedarray/Float64Array#sort - drop - local.get $result - local.set $2 + local.get $9 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 + local.get $64 + i32.const 3 i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 3 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 889 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $result - local.set $2 + i32.const 16 + i32.const 2880 + call $~lib/rt/__newArray + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 2 - f64.eq + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 544 - i32.const 890 + i32.const 2512 + i32.const 168 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $result - local.set $2 + local.get $3 + local.set $64 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $64 i32.store offset=4 - local.get $2 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 1 - f64.eq + local.get $64 + i32.const 5 + i32.const 0 + i32.const 16 + i32.const 2912 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 - i32.const 544 - i32.const 891 + i32.const 2512 + i32.const 169 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $start:std/typedarray - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (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) - global.get $~lib/memory/__stack_pointer - i32.const 124 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 124 - memory.fill - global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT - i32.const 1 - i32.eq - drop - global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT - i32.const 1 - i32.eq - drop - global.get $~lib/typedarray/Uint8ClampedArray.BYTES_PER_ELEMENT - i32.const 1 - i32.eq - drop - global.get $~lib/typedarray/Int16Array.BYTES_PER_ELEMENT - i32.const 2 - i32.eq - drop - global.get $~lib/typedarray/Uint16Array.BYTES_PER_ELEMENT - i32.const 2 - i32.eq - drop - global.get $~lib/typedarray/Int32Array.BYTES_PER_ELEMENT - i32.const 4 - i32.eq - drop - global.get $~lib/typedarray/Uint32Array.BYTES_PER_ELEMENT - i32.const 4 - i32.eq - drop - global.get $~lib/typedarray/Int64Array.BYTES_PER_ELEMENT - i32.const 8 - i32.eq - drop - global.get $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT - i32.const 8 - i32.eq - drop - global.get $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT - i32.const 4 - i32.eq - drop - global.get $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT - i32.const 8 - i32.eq - drop - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 256 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 288 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 432 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace i32.const 0 - call $std/typedarray/testInstantiate i32.const 5 - call $std/typedarray/testInstantiate - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.store - local.get $0 + local.tee $12 + i32.store offset=28 + local.get $12 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -87960,7 +87706,7 @@ i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $12 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -87969,7 +87715,7 @@ i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $12 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -87978,150 +87724,257 @@ i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $12 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - call $~lib/typedarray/Int32Array#get:length i32.const 3 - i32.eq + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int32Array#fill + drop + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2944 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 544 - i32.const 95 + i32.const 2512 + i32.const 181 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $12 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 0 - i32.eq + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#fill@varargs + drop + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2992 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 544 - i32.const 96 + i32.const 2512 + i32.const 184 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $12 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.const 4 - i32.mul - i32.eq + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/typedarray/Int32Array#fill + drop + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 3040 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 544 - i32.const 97 + i32.const 2512 + i32.const 187 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $12 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 + i32.const 2 + i32.const -2 + i32.const 2 + global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.eq + call $~lib/typedarray/Int32Array#fill@varargs + drop + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 3088 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 544 - i32.const 98 + i32.const 2512 + i32.const 190 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $12 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 + i32.const 0 i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 99 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#fill + drop + local.get $12 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 + i32.const 5 i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.eq + i32.const 17 + i32.const 3136 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 544 - i32.const 100 + i32.const 2512 + i32.const 193 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $12 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 i32.const 1 - i32.const 2 + i32.const 4 call $~lib/typedarray/Int32Array#subarray - local.tee $0 - i32.store - local.get $0 + local.tee $18 + i32.store offset=32 + local.get $18 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - call $~lib/typedarray/Int32Array#get:length + i32.const 0 + i32.const 0 i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#fill@varargs + drop + local.get $18 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 103 + i32.const 2512 + i32.const 197 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $18 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -88135,565 +87988,503 @@ i32.eqz if i32.const 0 - i32.const 544 - i32.const 104 + i32.const 2512 + i32.const 198 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $18 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 1 + i32.const 3 i32.const 4 i32.mul i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 105 + i32.const 2512 + i32.const 199 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $18 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 0 - call $~lib/typedarray/Int32Array#__get + i32.const 3 i32.const 2 - i32.eq + i32.const 17 + i32.const 3184 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 544 - i32.const 106 + i32.const 2512 + i32.const 200 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 8 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.store offset=8 - local.get $1 + local.get $12 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 3216 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 201 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 + i32.const 6 + call $~lib/typedarray/Int8Array#constructor + local.tee $21 + i32.store offset=36 + local.get $21 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 + i32.const 0 i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 + call $~lib/typedarray/Int8Array#__set + local.get $21 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 + i32.const 1 i32.const 2 - f64.const 7 - call $~lib/typedarray/Float64Array#__set - local.get $1 + call $~lib/typedarray/Int8Array#__set + local.get $21 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 + i32.const 2 i32.const 3 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $1 + call $~lib/typedarray/Int8Array#__set + local.get $21 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 + i32.const 3 i32.const 4 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - local.get $1 + call $~lib/typedarray/Int8Array#__set + local.get $21 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 + i32.const 4 i32.const 5 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $1 + call $~lib/typedarray/Int8Array#__set + local.get $21 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 + i32.const 5 i32.const 6 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $1 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 7 - f64.const 8 - call $~lib/typedarray/Float64Array#__set + call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $21 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 2 + i32.const 1 i32.const 6 - call $~lib/typedarray/Float64Array#subarray - local.tee $1 - i32.store offset=8 - local.get $1 + call $~lib/typedarray/Int8Array#subarray + local.tee $22 + i32.store offset=40 + local.get $22 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - call $~lib/typedarray/Float64Array#get:length - i32.const 4 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 122 + i32.const 2512 + i32.const 222 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $22 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 2 - i32.const 8 - i32.mul + call $~lib/typedarray/Int8Array#get:length + i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 123 + i32.const 2512 + i32.const 223 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $22 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 4 - i32.const 8 - i32.mul + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 124 + i32.const 2512 + i32.const 224 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Float64Array#sort@varargs - drop - local.get $1 + local.get $22 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.eq - if (result i32) - local.get $1 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.eq - else - i32.const 0 - end - if (result i32) - local.get $1 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.eq - else - i32.const 0 - end - if (result i32) - local.get $1 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.eq - else - i32.const 0 - end + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 5 + i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 126 + i32.const 2512 + i32.const 225 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 - i32.store offset=12 - local.get $2 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 0 - i32.const -32 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 + local.get $22 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 + i32.const 5 + call $~lib/typedarray/Int8Array#subarray + local.tee $23 + i32.store offset=44 + local.get $23 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 2 - i32.const 256 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 228 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $23 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 0 + call $~lib/typedarray/Int8Array#get:length + i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 135 + i32.const 2512 + i32.const 229 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $23 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 136 + i32.const 2512 + i32.const 230 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $23 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 255 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 137 + i32.const 2512 + i32.const 231 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int8Array#constructor - local.tee $3 - i32.store offset=16 - local.get $3 + local.get $23 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 0 i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $3 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.tee $24 + i32.store offset=48 + local.get $24 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $3 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 234 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $24 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 2 + call $~lib/typedarray/Int8Array#get:length i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 235 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $24 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $3 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 236 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $24 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 1 - i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 3 - call $~lib/typedarray/Int8Array#fill - drop - local.get $3 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 5 - i32.const 0 - i32.const 16 - i32.const 704 - call $~lib/rt/__newArray - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=20 - local.get $64 - call $std/typedarray/isInt8ArrayEqual + i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 149 + i32.const 2512 + i32.const 237 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $25 + i32.store offset=52 + local.get $25 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 i32.const 0 - i32.const 0 i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int8Array#fill@varargs - drop - local.get $3 + call $~lib/typedarray/Int32Array#__set + local.get $25 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 5 - i32.const 0 - i32.const 16 - i32.const 784 - call $~lib/rt/__newArray + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $25 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=20 + i32.store offset=4 local.get $64 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 152 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $25 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/typedarray/Int8Array#fill - drop - local.get $3 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $25 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 + i32.const 4 i32.const 5 - i32.const 0 - i32.const 16 - i32.const 816 - call $~lib/rt/__newArray + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $25 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=20 + i32.store offset=4 local.get $64 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 155 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $26 + i32.store offset=56 + local.get $25 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=4 + i32.store offset=60 local.get $64 - i32.const 2 - i32.const -2 + i32.const 0 + i32.const 3 i32.const 2 global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int8Array#fill@varargs - drop - local.get $3 + call $~lib/typedarray/Int32Array#copyWithin@varargs local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 i32.const 5 - i32.const 0 - i32.const 16 - i32.const 848 + i32.const 2 + i32.const 17 + i32.const 3264 call $~lib/rt/__newArray local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=20 local.get $64 - call $std/typedarray/isInt8ArrayEqual + call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 544 - i32.const 158 + i32.const 2512 + i32.const 248 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $26 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -88701,173 +88492,152 @@ local.get $64 i32.const 0 i32.const 1 + global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int8Array#fill - drop - local.get $3 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=60 + local.get $64 + i32.const 1 + i32.const 3 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#copyWithin@varargs local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 i32.const 5 - i32.const 0 - i32.const 16 - i32.const 880 + i32.const 2 + i32.const 17 + i32.const 3312 call $~lib/rt/__newArray local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=20 local.get $64 - call $std/typedarray/isInt8ArrayEqual + call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 544 - i32.const 161 + i32.const 2512 + i32.const 250 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $26 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 + i32.const 0 i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray - local.tee $9 - i32.store offset=24 - local.get $9 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=4 + i32.store offset=60 local.get $64 - i32.const 0 - i32.const 0 i32.const 1 + i32.const 2 + i32.const 2 global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int8Array#fill@varargs - drop - local.get $9 + call $~lib/typedarray/Int32Array#copyWithin@varargs local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 165 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $9 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 3360 + call $~lib/rt/__newArray local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=4 + i32.store offset=20 local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.eq + call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 544 - i32.const 166 + i32.const 2512 + i32.const 252 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $9 - local.set $64 global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 167 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $9 + local.get $26 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 3 i32.const 0 - i32.const 16 - i32.const 912 - call $~lib/rt/__newArray + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=20 + i32.store offset=60 local.get $64 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 168 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 + i32.const 2 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#copyWithin@varargs local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 i32.const 5 - i32.const 0 - i32.const 16 - i32.const 944 + i32.const 2 + i32.const 17 + i32.const 3408 call $~lib/rt/__newArray local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=20 local.get $64 - call $std/typedarray/isInt8ArrayEqual + call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 544 - i32.const 169 + i32.const 2512 + i32.const 254 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $12 - i32.store offset=28 - local.get $12 + local.get $26 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -88875,55 +88645,70 @@ local.get $64 i32.const 0 i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $12 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=4 + i32.store offset=60 local.get $64 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $12 + i32.const 0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 + i32.const 5 i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $12 + i32.const 17 + i32.const 3456 + call $~lib/rt/__newArray local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=4 + i32.store offset=20 local.get $64 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $12 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 256 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $26 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $12 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=4 + i32.store offset=60 local.get $64 i32.const 1 - i32.const 1 i32.const 3 - call $~lib/typedarray/Int32Array#fill - drop - local.get $12 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -88932,7 +88717,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 976 + i32.const 3504 call $~lib/rt/__newArray local.set $64 global.get $~lib/memory/__stack_pointer @@ -88943,26 +88728,36 @@ i32.eqz if i32.const 0 - i32.const 544 - i32.const 181 + i32.const 2512 + i32.const 258 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $12 + global.get $~lib/memory/__stack_pointer + local.get $26 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 i32.const 0 - i32.const 0 i32.const 1 global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int32Array#fill@varargs - drop - local.get $12 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=60 + local.get $64 + i32.const 1 + i32.const 2 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -88971,7 +88766,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 1024 + i32.const 3552 call $~lib/rt/__newArray local.set $64 global.get $~lib/memory/__stack_pointer @@ -88982,24 +88777,38 @@ i32.eqz if i32.const 0 - i32.const 544 - i32.const 184 + i32.const 2512 + i32.const 260 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $12 + global.get $~lib/memory/__stack_pointer + local.get $26 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 + i32.const 0 i32.const 1 + global.set $~argumentsLength i32.const 0 - i32.const -3 - call $~lib/typedarray/Int32Array#fill - drop - local.get $12 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=60 + local.get $64 + i32.const 0 + i32.const -2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#copyWithin@varargs local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -89008,7 +88817,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 1072 + i32.const 3600 call $~lib/rt/__newArray local.set $64 global.get $~lib/memory/__stack_pointer @@ -89019,26 +88828,36 @@ i32.eqz if i32.const 0 - i32.const 544 - i32.const 187 + i32.const 2512 + i32.const 262 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $12 + global.get $~lib/memory/__stack_pointer + local.get $26 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 2 - i32.const -2 - i32.const 2 + i32.const 0 + i32.const 1 global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int32Array#fill@varargs - drop - local.get $12 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=60 + local.get $64 + i32.const 0 + i32.const -2 + i32.const -1 + call $~lib/typedarray/Int32Array#copyWithin local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -89047,7 +88866,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 1120 + i32.const 3648 call $~lib/rt/__newArray local.set $64 global.get $~lib/memory/__stack_pointer @@ -89058,13 +88877,14 @@ i32.eqz if i32.const 0 - i32.const 544 - i32.const 190 + i32.const 2512 + i32.const 264 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $12 + global.get $~lib/memory/__stack_pointer + local.get $26 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -89072,10 +88892,21 @@ local.get $64 i32.const 0 i32.const 1 + global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int32Array#fill - drop - local.get $12 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=60 + local.get $64 + i32.const -4 + i32.const -3 + i32.const -2 + call $~lib/typedarray/Int32Array#copyWithin local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -89084,7 +88915,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 1168 + i32.const 3696 call $~lib/rt/__newArray local.set $64 global.get $~lib/memory/__stack_pointer @@ -89095,122 +88926,87 @@ i32.eqz if i32.const 0 - i32.const 544 - i32.const 193 + i32.const 2512 + i32.const 266 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $12 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#subarray - local.tee $18 - i32.store offset=32 - local.get $18 + local.get $26 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 i32.const 0 - i32.const 0 i32.const 1 global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int32Array#fill@varargs - drop - local.get $18 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=4 + i32.store offset=60 local.get $64 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 197 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $18 + i32.const -4 + i32.const -3 + i32.const -1 + call $~lib/typedarray/Int32Array#copyWithin local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.const 4 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 198 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $18 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 3744 + call $~lib/rt/__newArray local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=4 + i32.store offset=20 local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.const 4 - i32.mul - i32.eq + call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 - i32.const 544 - i32.const 199 + i32.const 2512 + i32.const 268 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $18 + global.get $~lib/memory/__stack_pointer + local.get $26 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 3 - i32.const 2 - i32.const 17 - i32.const 1216 - call $~lib/rt/__newArray + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=20 + i32.store offset=60 local.get $64 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 200 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $12 + i32.const -4 + i32.const -3 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#copyWithin@varargs local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -89219,7 +89015,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 1248 + i32.const 3792 call $~lib/rt/__newArray local.set $64 global.get $~lib/memory/__stack_pointer @@ -89230,19 +89026,19 @@ i32.eqz if i32.const 0 - i32.const 544 - i32.const 201 + i32.const 2512 + i32.const 270 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 6 - call $~lib/typedarray/Int8Array#constructor - local.tee $21 - i32.store offset=36 - local.get $21 + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $39 + i32.store offset=64 + local.get $39 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -89250,8 +89046,8 @@ local.get $64 i32.const 0 i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $21 + call $~lib/typedarray/Int32Array#__set + local.get $39 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -89259,8 +89055,8 @@ local.get $64 i32.const 1 i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $21 + call $~lib/typedarray/Int32Array#__set + local.get $39 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -89268,8 +89064,8 @@ local.get $64 i32.const 2 i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $21 + call $~lib/typedarray/Int32Array#__set + local.get $39 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -89277,8 +89073,8 @@ local.get $64 i32.const 3 i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $21 + call $~lib/typedarray/Int32Array#__set + local.get $39 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -89286,775 +89082,886 @@ local.get $64 i32.const 4 i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $21 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 5 - i32.const 6 - call $~lib/typedarray/Int8Array#__set + call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer - local.get $21 + local.get $39 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 i32.const 1 - i32.const 6 - call $~lib/typedarray/Int8Array#subarray - local.tee $22 - i32.store offset=40 - local.get $22 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.tee $40 + i32.store offset=68 + local.get $40 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 2 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 222 + i32.const 2512 + i32.const 282 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $22 + local.get $40 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - call $~lib/typedarray/Int8Array#get:length - i32.const 5 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 223 + i32.const 2512 + i32.const 283 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $22 + local.get $40 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 12 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 224 + i32.const 2512 + i32.const 284 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $22 + global.get $~lib/memory/__stack_pointer + local.get $39 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 5 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int32Array#slice + local.tee $41 + i32.store offset=72 + local.get $41 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 225 + i32.const 2512 + i32.const 287 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $22 + local.get $41 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 i32.const 1 - i32.const 5 - call $~lib/typedarray/Int8Array#subarray - local.tee $23 - i32.store offset=44 - local.get $23 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 0 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 228 + i32.const 2512 + i32.const 288 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $23 + local.get $41 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - call $~lib/typedarray/Int8Array#get:length - i32.const 4 + call $~lib/typedarray/Int32Array#get:length + i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 229 + i32.const 2512 + i32.const 289 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $23 + local.get $41 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 2 + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 230 + i32.const 2512 + i32.const 290 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $23 + local.get $41 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 4 + i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 231 + i32.const 2512 + i32.const 291 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $23 + local.get $40 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray - local.tee $24 - i32.store offset=48 - local.get $24 + i32.const 2 + call $~lib/typedarray/Int32Array#slice + local.tee $42 + i32.store offset=76 + local.get $42 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 4 + call $~lib/typedarray/Int32Array#__get + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 234 + i32.const 2512 + i32.const 294 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $24 + local.get $42 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 235 + i32.const 2512 + i32.const 295 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $24 + local.get $42 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 3 + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 236 + i32.const 2512 + i32.const 296 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $24 + local.get $42 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 + i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 237 + i32.const 2512 + i32.const 297 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $25 - i32.store offset=52 - local.get $25 + local.get $39 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $25 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $43 + i32.store offset=80 + local.get $43 + local.get $39 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 300 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $43 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $25 + call $~lib/typedarray/Int32Array#get:length + local.get $39 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $25 + call $~lib/typedarray/Int32Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 301 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $43 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $25 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $39 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $25 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 302 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $43 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array#slice@varargs - local.tee $26 - i32.store offset=56 - local.get $25 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=60 - local.get $64 - i32.const 0 - i32.const 3 - i32.const 2 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array#copyWithin@varargs + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.get $39 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1296 - call $~lib/rt/__newArray - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=20 - local.get $64 - call $std/typedarray/isInt32ArrayEqual + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 248 + i32.const 2512 + i32.const 303 i32.const 3 call $~lib/builtins/abort unreachable end + call $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testAt<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testAt<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testAt<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testAt<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testAt<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testAt<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testAt<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testAt<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testAt<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testAt<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testAt<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64>" global.get $~lib/memory/__stack_pointer - local.get $26 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 i32.const 0 i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array#slice@varargs - local.tee $25 - i32.store offset=52 - local.get $25 + call $~lib/typedarray/Float64Array#constructor + local.tee $47 + i32.store offset=84 + local.get $47 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=60 + i32.store offset=4 local.get $64 - i32.const 1 - i32.const 3 - i32.const 2 - global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int32Array#copyWithin@varargs + f64.const nan:0x8000000000000 + call $~lib/typedarray/Float64Array#__set + local.get $47 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1344 - call $~lib/rt/__newArray - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=20 - local.get $64 - call $std/typedarray/isInt32ArrayEqual + f64.const nan:0x8000000000000 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 250 + i32.const 2512 + i32.const 653 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $26 + local.get $47 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 + f64.const nan:0x8000000000000 i32.const 0 - i32.const 1 - global.set $~argumentsLength + call $~lib/typedarray/Float64Array#includes i32.const 0 - call $~lib/typedarray/Int32Array#slice@varargs - local.tee $25 - i32.store offset=52 - local.get $25 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=60 - local.get $64 + i32.ne i32.const 1 - i32.const 2 - i32.const 2 - global.set $~argumentsLength + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 654 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/typedarray/Int32Array#copyWithin@varargs + i32.const 1 + call $~lib/typedarray/Float32Array#constructor + local.tee $48 + i32.store offset=88 + local.get $48 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1392 - call $~lib/rt/__newArray + i32.const 0 + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + local.get $48 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=20 + i32.store offset=4 local.get $64 - call $std/typedarray/isInt32ArrayEqual + f32.const nan:0x400000 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 252 + i32.const 2512 + i32.const 659 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $26 + local.get $48 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 + f32.const nan:0x400000 + i32.const 0 + call $~lib/typedarray/Float32Array#includes i32.const 0 + i32.ne i32.const 1 - global.set $~argumentsLength + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2512 + i32.const 660 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64>" + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/typedarray/Int32Array#slice@varargs - local.tee $25 - i32.store offset=52 - local.get $25 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $50 + i32.store offset=92 + global.get $~lib/memory/__stack_pointer + local.get $50 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=60 + i32.store offset=4 local.get $64 - i32.const 2 - i32.const 2 + i32.const 0 i32.const 2 global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int32Array#copyWithin@varargs + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $51 + i32.store offset=96 + local.get $51 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1440 - call $~lib/rt/__newArray - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=20 - local.get $64 - call $std/typedarray/isInt32ArrayEqual + call $~lib/typedarray/Uint8Array#get:length + i32.const 0 + i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 254 + i32.const 2512 + i32.const 737 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $26 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 0 - i32.const 1 - global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int32Array#slice@varargs - local.tee $25 - i32.store offset=52 - local.get $25 - local.set $64 + i32.const 2 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $50 + i32.store offset=92 global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=60 - local.get $64 - i32.const 0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin + local.get $50 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 5 i32.const 2 - i32.const 17 - i32.const 1488 - call $~lib/rt/__newArray + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $51 + i32.store offset=96 + local.get $51 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=20 + i32.store offset=4 local.get $64 - call $std/typedarray/isInt32ArrayEqual + call $~lib/typedarray/Uint8Array#get:length + i32.const 0 + i32.eq i32.eqz if i32.const 0 - i32.const 544 - i32.const 256 + i32.const 2512 + i32.const 741 i32.const 3 call $~lib/builtins/abort unreachable end + call $"std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64>" + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> global.get $~lib/memory/__stack_pointer - local.get $26 + i32.const 0 + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $56 + i32.store offset=100 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $57 + i32.store offset=104 + local.get $57 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array#slice@varargs - local.tee $25 - i32.store offset=52 - local.get $25 + f32.const 400 + call $~lib/typedarray/Float32Array#__set + local.get $57 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=60 + i32.store offset=4 local.get $64 i32.const 1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + local.get $57 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 5 i32.const 2 - i32.const 17 - i32.const 1536 - call $~lib/rt/__newArray + f32.const inf + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Int64Array#constructor + local.tee $58 + i32.store offset=108 + local.get $58 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=20 + i32.store offset=4 local.get $64 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 258 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $26 + i32.const 0 + i64.const -10 + call $~lib/typedarray/Int64Array#__set + local.get $58 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 0 i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array#slice@varargs - local.tee $25 - i32.store offset=52 - local.get $25 + i64.const 100 + call $~lib/typedarray/Int64Array#__set + local.get $58 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=60 + i32.store offset=4 local.get $64 - i32.const 1 i32.const 2 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin + i64.const 10 + call $~lib/typedarray/Int64Array#__set + local.get $58 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 5 + i32.const 3 + i64.const 300 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 2 - i32.const 17 - i32.const 1584 - call $~lib/rt/__newArray + call $~lib/typedarray/Int32Array#constructor + local.tee $59 + i32.store offset=112 + local.get $59 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=20 + i32.store offset=4 local.get $64 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 260 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $26 + i32.const 0 + i32.const 300 + call $~lib/typedarray/Int32Array#__set + local.get $59 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 0 i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array#slice@varargs - local.tee $25 - i32.store offset=52 - local.get $25 + i32.const -1 + call $~lib/typedarray/Int32Array#__set + local.get $56 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=60 + i32.store offset=4 local.get $64 - i32.const 0 - i32.const -2 - i32.const 2 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array#copyWithin@varargs + local.get $57 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> + local.get $56 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1632 - call $~lib/rt/__newArray + local.get $58 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=20 local.get $64 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 262 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $26 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> + local.get $56 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array#slice@varargs - local.tee $25 - i32.store offset=52 - local.get $25 + local.get $59 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=60 + i32.store offset=20 local.get $64 - i32.const 0 - i32.const -2 - i32.const -1 - call $~lib/typedarray/Int32Array#copyWithin + i32.const 8 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> + local.get $56 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1680 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 14416 call $~lib/rt/__newArray local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=20 local.get $64 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 264 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> global.get $~lib/memory/__stack_pointer - local.get $26 + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint32Array#constructor + local.tee $61 + i32.store offset=116 + local.get $61 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 @@ -90062,1216 +89969,2510 @@ local.get $64 i32.const 0 i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array#slice@varargs - local.tee $25 - i32.store offset=52 - local.get $25 + call $~lib/typedarray/Uint32Array#__set + local.get $61 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=60 + i32.store offset=4 local.get $64 - i32.const -4 - i32.const -3 - i32.const -2 - call $~lib/typedarray/Int32Array#copyWithin + i32.const 1 + i32.const 300 + call $~lib/typedarray/Uint32Array#__set + local.get $61 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 5 i32.const 2 - i32.const 17 - i32.const 1728 - call $~lib/rt/__newArray + i32.const 100 + call $~lib/typedarray/Uint32Array#__set + local.get $61 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=20 + i32.store offset=4 local.get $64 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 266 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 3 + i32.const -1 + call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer - local.get $26 + i32.const 0 + i32.const 4 + call $~lib/typedarray/Int16Array#constructor + local.tee $62 + i32.store offset=120 + local.get $62 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array#slice@varargs - local.tee $25 - i32.store offset=52 - local.get $25 + i32.const -10 + call $~lib/typedarray/Int16Array#__set + local.get $62 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=60 + i32.store offset=4 local.get $64 - i32.const -4 - i32.const -3 - i32.const -1 - call $~lib/typedarray/Int32Array#copyWithin + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int16Array#__set + local.get $62 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 5 i32.const 2 - i32.const 17 - i32.const 1776 - call $~lib/rt/__newArray + i32.const 10 + call $~lib/typedarray/Int16Array#__set + local.get $62 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=20 + i32.store offset=4 local.get $64 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 268 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $26 + i32.const 3 + i32.const 300 + call $~lib/typedarray/Int16Array#__set + local.get $56 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array#slice@varargs - local.tee $25 - i32.store offset=52 - local.get $25 + local.get $61 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 - i32.store offset=60 + i32.store offset=20 local.get $64 - i32.const -4 - i32.const -3 - i32.const 2 - global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int32Array#copyWithin@varargs + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> + local.get $56 local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=4 local.get $64 + local.get $62 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1824 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> + local.get $56 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 14448 call $~lib/rt/__newArray local.set $64 global.get $~lib/memory/__stack_pointer local.get $64 i32.store offset=20 local.get $64 - call $std/typedarray/isInt32ArrayEqual - i32.eqz + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + call $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>" + global.get $~lib/memory/__heap_base + global.set $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__collect + global.get $~lib/memory/__stack_pointer + i32.const 124 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end if - i32.const 0 - i32.const 544 - i32.const 270 - i32.const 3 + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 call $~lib/builtins/abort unreachable end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $39 - i32.store offset=64 - local.get $39 - local.set $64 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $39 - local.set $64 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 + local.get $bufferSize i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $39 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $39 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer i32.store offset=4 - local.get $64 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $39 - local.set $64 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $39 - local.set $64 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i32) + (local $offset|11 i32) + (local $val32 i32) + (local $decimals|13 i32) + (local $14 i32) global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 1 i32.const 4 - call $~lib/typedarray/Int32Array#subarray - local.tee $40 - i32.store offset=68 - local.get $40 - local.set $64 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 282 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s end - local.get $40 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 4 - i32.eq - i32.eqz if - i32.const 0 - i32.const 544 - i32.const 283 - i32.const 3 + i32.const 560 + i32.const 688 + i32.const 373 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $40 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 12 - i32.eq + local.get $value i32.eqz if - i32.const 0 - i32.const 544 - i32.const 284 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 752 + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return end - global.get $~lib/memory/__stack_pointer - local.get $39 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 + local.get $value + i32.const 31 + i32.shr_u i32.const 1 - i32.const 3 - call $~lib/typedarray/Int32Array#slice - local.tee $41 - i32.store offset=72 - local.get $41 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.eq - i32.eqz + i32.shl + local.set $sign + local.get $sign if i32.const 0 - i32.const 544 - i32.const 287 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $value + i32.sub + local.set $value end - local.get $41 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 3 + local.get $radix + i32.const 10 i32.eq - i32.eqz if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset i32.const 0 - i32.const 544 - i32.const 288 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + i64.extend_i32_u + local.get $offset|11 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.set $val32 + local.get $val32 + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $val32 + i64.extend_i32_u + local.get $decimals|13 + local.get $radix + call $~lib/util/number/utoa64_any_core + end end - local.get $41 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - call $~lib/typedarray/Int32Array#get:length - i32.const 2 - i32.eq - i32.eqz + local.get $sign if - i32.const 0 - i32.const 544 - i32.const 289 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $out + i32.const 45 + i32.store16 end - local.get $41 - local.set $64 + local.get $out + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $~lib/util/number/itoa64 (param $value i64) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $val32 i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|9 i32) + (local $buffer|10 i32) + (local $num|11 i64) + (local $offset|12 i32) + (local $decimals|13 i32) + (local $buffer|14 i32) + (local $num|15 i64) + (local $offset|16 i32) + (local $decimals|17 i32) + (local $18 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 0 - i32.eq - i32.eqz + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end if - i32.const 0 - i32.const 544 - i32.const 290 - i32.const 3 + i32.const 560 + i32.const 688 + i32.const 431 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $41 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 8 - i32.eq + local.get $value + i64.const 0 + i64.ne i32.eqz if - i32.const 0 - i32.const 544 - i32.const 291 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 752 + local.set $18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $18 + return end - global.get $~lib/memory/__stack_pointer - local.get $40 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 + local.get $value + i64.const 63 + i64.shr_u + i32.wrap_i64 i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#slice - local.tee $42 - i32.store offset=76 - local.get $42 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.eq - i32.eqz + i32.shl + local.set $sign + local.get $sign if - i32.const 0 - i32.const 544 - i32.const 294 - i32.const 3 - call $~lib/builtins/abort - unreachable + i64.const 0 + local.get $value + i64.sub + local.set $value end - local.get $42 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - call $~lib/typedarray/Int32Array#get:length - i32.const 1 + local.get $radix + i32.const 10 i32.eq - i32.eqz if - i32.const 0 - i32.const 544 - i32.const 295 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $value + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $value + i32.wrap_i64 + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $value + call $~lib/util/number/decimalCount64High + local.set $decimals|9 + global.get $~lib/memory/__stack_pointer + local.get $decimals|9 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|10 + local.get $value + local.set $num|11 + local.get $decimals|9 + local.set $offset|12 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|10 + local.get $num|11 + local.get $offset|12 + call $~lib/util/number/utoa64_dec_lut + end + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 63 + local.get $value + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|14 + local.get $value + local.set $num|15 + local.get $decimals|13 + local.set $offset|16 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|14 + local.get $num|15 + local.get $offset|16 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|17 + global.get $~lib/memory/__stack_pointer + local.get $decimals|17 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $value + local.get $decimals|17 + local.get $radix + call $~lib/util/number/utoa64_any_core + end end - local.get $42 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz + local.get $sign if - i32.const 0 - i32.const 544 - i32.const 296 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $out + i32.const 45 + i32.store16 end - local.get $42 - local.set $64 + local.get $out + local.set $18 global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 297 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.add + global.set $~lib/memory/__stack_pointer + local.get $18 + return + ) + (func $~lib/util/number/utoa64 (param $value i64) (param $radix i32) (result i32) + (local $out i32) + (local $val32 i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i64) + (local $offset|11 i32) + (local $decimals|12 i32) + (local $buffer|13 i32) + (local $num|14 i64) + (local $offset|15 i32) + (local $decimals|16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer - local.get $39 - local.set $64 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 i32.const 0 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array#slice@varargs - local.tee $43 - i32.store offset=80 - local.get $43 - local.get $39 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 300 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s end - local.get $43 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - call $~lib/typedarray/Int32Array#get:length - local.get $39 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - call $~lib/typedarray/Int32Array#get:length - i32.eq - i32.eqz if - i32.const 0 - i32.const 544 - i32.const 301 - i32.const 3 + i32.const 560 + i32.const 688 + i32.const 401 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $43 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $39 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.eq + local.get $value + i64.const 0 + i64.ne i32.eqz if - i32.const 0 - i32.const 544 - i32.const 302 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 752 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return end - local.get $43 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - local.get $39 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.get $radix + i32.const 10 i32.eq - i32.eqz if - i32.const 0 - i32.const 544 - i32.const 303 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - call $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>" - call $"std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>" - call $"std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>" - call $"std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>" - call $"std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>" - call $"std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>" - call $"std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>" - call $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>" - call $"std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>" - call $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>" - call $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>" - call $"std/typedarray/testAt<~lib/typedarray/Int8Array,i8>" - call $"std/typedarray/testAt<~lib/typedarray/Uint8Array,u8>" - call $"std/typedarray/testAt<~lib/typedarray/Uint8ClampedArray,u8>" - call $"std/typedarray/testAt<~lib/typedarray/Int16Array,i16>" - call $"std/typedarray/testAt<~lib/typedarray/Uint16Array,u16>" - call $"std/typedarray/testAt<~lib/typedarray/Int32Array,i32>" - call $"std/typedarray/testAt<~lib/typedarray/Uint32Array,u32>" - call $"std/typedarray/testAt<~lib/typedarray/Int64Array,i64>" - call $"std/typedarray/testAt<~lib/typedarray/Uint64Array,u64>" - call $"std/typedarray/testAt<~lib/typedarray/Float32Array,f32>" - call $"std/typedarray/testAt<~lib/typedarray/Float64Array,f64>" - call $"std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>" - call $"std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>" - call $"std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>" - call $"std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>" - call $"std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>" - call $"std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>" - call $"std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>" - call $"std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>" - call $"std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>" - call $"std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>" - call $"std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>" - call $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>" - call $"std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>" - call $"std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>" - call $"std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>" - call $"std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>" - call $"std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>" - call $"std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>" - call $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>" - call $"std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>" - call $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>" - call $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>" - call $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>" - call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>" - call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>" - call $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>" - call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>" - call $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>" - call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>" - call $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>" - call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>" - call $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>" - call $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>" - call $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>" - call $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>" - call $"std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>" - call $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>" - call $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>" - call $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>" - call $"std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>" - call $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>" - call $"std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>" - call $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>" - call $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>" - call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>" - call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>" - call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>" - call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>" - call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>" - call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>" - call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>" - call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>" - call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>" - call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>" - call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>" - call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int8Array,i8>" - call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8Array,u8>" - call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8ClampedArray,u8>" - call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int16Array,i16>" - call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint16Array,u16>" - call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int32Array,i32>" - call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint32Array,u32>" - call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int64Array,i64>" - call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint64Array,u64>" - call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float32Array,f32>" - call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float64Array,f64>" - call $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>" - call $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>" - call $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>" - call $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>" - call $"std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>" - call $"std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>" - call $"std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>" - call $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>" - call $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>" - call $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>" - call $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>" - call $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>" - call $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>" - call $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>" - call $"std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>" - call $"std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>" - call $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>" - call $"std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>" - call $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>" - call $"std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>" - call $"std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>" - call $"std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>" - call $"std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8>" - call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8>" - call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8>" - call $"std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16>" - call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16>" - call $"std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32>" - call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32>" - call $"std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64>" - call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64>" - call $"std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32>" - call $"std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64>" - call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8>" - call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8>" - call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8>" - call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16>" - call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16>" - call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32>" - call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32>" - call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64>" - call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64>" - call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32>" - call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64>" + local.get $value + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $value + i32.wrap_i64 + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $value + call $~lib/util/number/decimalCount64High + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + local.get $offset|11 + call $~lib/util/number/utoa64_dec_lut + end + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 63 + local.get $value + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|12 + global.get $~lib/memory/__stack_pointer + local.get $decimals|12 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|13 + local.get $value + local.set $num|14 + local.get $decimals|12 + local.set $offset|15 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|13 + local.get $num|14 + local.get $offset|15 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|16 + global.get $~lib/memory/__stack_pointer + local.get $decimals|16 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + local.get $decimals|16 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $17 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 1 - call $~lib/typedarray/Float64Array#constructor - local.tee $47 - i32.store offset=84 - local.get $47 - local.set $64 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + ) + (func $~lib/util/number/dtoa (param $value f32) (result i32) + (local $value|1 f64) + (local $isSingle i32) + (local $size i32) + (local $result i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 0 - f64.const nan:0x8000000000000 - call $~lib/typedarray/Float64Array#__set - local.get $47 - local.set $64 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - f64.const nan:0x8000000000000 i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 653 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.store + block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + local.get $value + f64.promote_f32 + local.set $value|1 + i32.const 1 + local.set $isSingle + local.get $value|1 + f64.const 0 + f64.eq + if + i32.const 8800 + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.get $value|1 + local.get $value|1 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|1 + local.get $value|1 + f64.ne + if + i32.const 8832 + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 8864 + i32.const 8912 + local.get $value|1 + f64.const 0 + f64.lt + select + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 8944 + local.get $value|1 + local.get $isSingle + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + i32.const 8944 + local.get $size + memory.copy + local.get $result + br $~lib/util/number/dtoa_impl|inlined.0 end - local.get $47 - local.set $64 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/util/number/dtoa (param $value f64) (result i32) + (local $value|1 f64) + (local $isSingle i32) + (local $size i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - f64.const nan:0x8000000000000 - i32.const 0 - call $~lib/typedarray/Float64Array#includes i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz - if + i32.store + block $~lib/util/number/dtoa_impl|inlined.1 (result i32) + local.get $value + local.set $value|1 i32.const 0 - i32.const 544 - i32.const 654 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $isSingle + local.get $value|1 + f64.const 0 + f64.eq + if + i32.const 8800 + br $~lib/util/number/dtoa_impl|inlined.1 + end + local.get $value|1 + local.get $value|1 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|1 + local.get $value|1 + f64.ne + if + i32.const 8832 + br $~lib/util/number/dtoa_impl|inlined.1 + end + i32.const 8864 + i32.const 8912 + local.get $value|1 + f64.const 0 + f64.lt + select + br $~lib/util/number/dtoa_impl|inlined.1 + end + i32.const 8944 + local.get $value|1 + local.get $isSingle + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + i32.const 8944 + local.get $size + memory.copy + local.get $result + br $~lib/util/number/dtoa_impl|inlined.1 end + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 1 - call $~lib/typedarray/Float32Array#constructor - local.tee $48 - i32.store offset=88 - local.get $48 - local.set $64 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) + (local $buffer i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 0 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - local.get $48 - local.set $64 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - f32.const nan:0x400000 i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz + i32.store + local.get $length + i32.const 1073741820 + i32.gt_u if - i32.const 0 - i32.const 544 - i32.const 659 - i32.const 3 + i32.const 2400 + i32.const 2448 + i32.const 52 + i32.const 43 call $~lib/builtins/abort unreachable end - local.get $48 - local.set $64 global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - f32.const nan:0x400000 - i32.const 0 - call $~lib/typedarray/Float32Array#includes - i32.const 0 - i32.ne + local.get $length i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 544 - i32.const 660 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8>" - call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8>" - call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8>" - call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16>" - call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16>" - call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32>" - call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32>" - call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64>" - call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64>" - call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32>" - call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64>" - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $50 - i32.store offset=92 - global.get $~lib/memory/__stack_pointer - local.get $50 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 0 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store i32.const 2 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.tee $51 - i32.store offset=96 - local.get $51 - local.set $64 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $buffer + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - call $~lib/typedarray/Uint8Array#get:length - i32.const 0 - i32.eq - i32.eqz + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/typedarray/forEachValues + local.tee $1 if - i32.const 0 - i32.const 544 - i32.const 737 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $50 - i32.store offset=92 - global.get $~lib/memory/__stack_pointer - local.get $50 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 2 - i32.const 2 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.tee $51 - i32.store offset=96 - local.get $51 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - call $~lib/typedarray/Uint8Array#get:length - i32.const 0 - i32.eq - i32.eqz + global.get $std/typedarray/testArrayReverseValues + local.tee $1 if - i32.const 0 - i32.const 544 - i32.const 741 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/testArrayWrapValues + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/setSource1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/setSource2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/setSource3 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/setSource7 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2400 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/typedarray/Int8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint8ClampedArray~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint16Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Float64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/function/Function<%28f64%2Cf64%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit + ) + (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit + ) + (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit + ) + (func $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit + ) + (func $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit + ) + (func $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit + ) + (func $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit + ) + (func $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit + ) + (func $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit + ) + (func $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit + ) + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit + ) + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit + ) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit + ) + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>#__visit + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28i8%2Ci8%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i8%2Ci8%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci8%29=>i32>#__visit + ) + (func $~lib/function/Function<%28u8%2Cu8%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u8%2Cu8%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Cu8%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i16%2Ci16%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i16%2Ci16%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci16%29=>i32>#__visit + ) + (func $~lib/function/Function<%28u16%2Cu16%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u16%2Cu16%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Cu16%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28u32%2Cu32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u32%2Cu32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Cu32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i64%2Ci64%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i64%2Ci64%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci64%29=>i32>#__visit + ) + (func $~lib/function/Function<%28u64%2Cu64%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u64%2Cu64%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Cu64%29=>i32>#__visit + ) + (func $~lib/function/Function<%28f32%2Cf32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f32%2Cf32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28f32%2Cf32%29=>i32> + block $~lib/function/Function<%28u64%2Cu64%29=>i32> + block $~lib/function/Function<%28i64%2Ci64%29=>i32> + block $~lib/function/Function<%28u32%2Cu32%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $~lib/function/Function<%28u16%2Cu16%29=>i32> + block $~lib/function/Function<%28i16%2Ci16%29=>i32> + block $~lib/function/Function<%28u8%2Cu8%29=>i32> + block $~lib/function/Function<%28i8%2Ci8%29=>i32> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void> + block $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void> + block $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void> + block $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void> + block $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void> + block $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void> + block $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void> + block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void> + block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void> + block $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void> + block $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool> + block $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool> + block $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool> + block $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool> + block $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool> + block $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool> + block $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool> + block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool> + block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool> + block $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool> + block $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> + block $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> + block $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> + block $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> + block $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> + block $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> + block $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> + block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> + block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> + block $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> + block $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> + block $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> + block $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> + block $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> + block $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> + block $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> + block $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> + block $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> + block $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> + block $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> + block $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/function/Function<%28f64%2Cf64%29=>i32> + block $~lib/typedarray/Float64Array + block $~lib/typedarray/Float32Array + block $~lib/typedarray/Uint64Array + block $~lib/typedarray/Int64Array + block $~lib/typedarray/Uint32Array + block $~lib/typedarray/Int32Array + block $~lib/typedarray/Uint16Array + block $~lib/typedarray/Int16Array + block $~lib/typedarray/Uint8ClampedArray + block $~lib/typedarray/Uint8Array + block $~lib/typedarray/Int8Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Int8Array $~lib/typedarray/Uint8Array $~lib/typedarray/Uint8ClampedArray $~lib/typedarray/Int16Array $~lib/typedarray/Uint16Array $~lib/typedarray/Int32Array $~lib/typedarray/Uint32Array $~lib/typedarray/Int64Array $~lib/typedarray/Uint64Array $~lib/typedarray/Float32Array $~lib/typedarray/Float64Array $~lib/function/Function<%28f64%2Cf64%29=>i32> $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool> $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool> $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool> $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool> $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool> $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool> $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool> $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool> $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool> $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void> $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void> $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void> $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void> $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void> $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void> $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void> $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void> $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void> $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i8%2Ci8%29=>i32> $~lib/function/Function<%28u8%2Cu8%29=>i32> $~lib/function/Function<%28i16%2Ci16%29=>i32> $~lib/function/Function<%28u16%2Cu16%29=>i32> $~lib/function/Function<%28i32%2Ci32%29=>i32> $~lib/function/Function<%28u32%2Cu32%29=>i32> $~lib/function/Function<%28i64%2Ci64%29=>i32> $~lib/function/Function<%28u64%2Cu64%29=>i32> $~lib/function/Function<%28f32%2Cf32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int16Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint16Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci8%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Cu8%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci16%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Cu16%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Cu32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci64%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Cu64%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Cf32%29=>i32>~visit + return end - call $"std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8>" - call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8>" - call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8>" - call $"std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16>" - call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16>" - call $"std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32>" - call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32>" - call $"std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64>" - call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64>" - call $"std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32>" - call $"std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64>" - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $56 - i32.store offset=100 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $57 - i32.store offset=104 - local.get $57 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 0 - f32.const 400 - call $~lib/typedarray/Float32Array#__set - local.get $57 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 1 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - local.get $57 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 2 - f32.const inf - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 4 - call $~lib/typedarray/Int64Array#constructor - local.tee $58 - i32.store offset=108 - local.get $58 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 0 - i64.const -10 - call $~lib/typedarray/Int64Array#__set - local.get $58 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 1 - i64.const 100 - call $~lib/typedarray/Int64Array#__set - local.get $58 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 2 - i64.const 10 - call $~lib/typedarray/Int64Array#__set - local.get $58 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 3 - i64.const 300 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#constructor - local.tee $59 - i32.store offset=112 - local.get $59 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 0 - i32.const 300 - call $~lib/typedarray/Int32Array#__set - local.get $59 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 1 - i32.const -1 - call $~lib/typedarray/Int32Array#__set - local.get $56 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - local.get $57 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=20 - local.get $64 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> - local.get $56 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - local.get $58 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=20 - local.get $64 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - local.get $56 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - local.get $59 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=20 - local.get $64 - i32.const 8 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> - local.get $56 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 14256 - call $~lib/rt/__newArray - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=20 - local.get $64 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint32Array#constructor - local.tee $61 - i32.store offset=116 - local.get $61 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $61 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 1 - i32.const 300 - call $~lib/typedarray/Uint32Array#__set - local.get $61 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 2 - i32.const 100 - call $~lib/typedarray/Uint32Array#__set - local.get $61 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 3 - i32.const -1 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 4 - call $~lib/typedarray/Int16Array#constructor - local.tee $62 - i32.store offset=120 - local.get $62 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 0 - i32.const -10 - call $~lib/typedarray/Int16Array#__set - local.get $62 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#__set - local.get $62 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 2 - i32.const 10 - call $~lib/typedarray/Int16Array#__set - local.get $62 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 3 - i32.const 300 - call $~lib/typedarray/Int16Array#__set - local.get $56 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - local.get $61 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=20 - local.get $64 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> - local.get $56 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - local.get $62 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=20 - local.get $64 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> - local.get $56 - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=4 - local.get $64 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 14288 - call $~lib/rt/__newArray - local.set $64 - global.get $~lib/memory/__stack_pointer - local.get $64 - i32.store offset=20 - local.get $64 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - call $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>" - call $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>" - call $"std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8>" - call $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>" - call $"std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>" - call $"std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>" - call $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>" - call $"std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>" - call $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>" - call $"std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>" - call $"std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>" - global.get $~lib/memory/__heap_base - global.set $~lib/memory/__stack_pointer - call $~lib/rt/itcms/__collect - global.get $~lib/memory/__stack_pointer - i32.const 124 - i32.add - global.set $~lib/memory/__stack_pointer + unreachable ) (func $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit (param $this i32) (param $cookie i32) (local $2 i32) @@ -92521,561 +93722,22 @@ i32.store i32.const 0 drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - drop - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:buffer - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/function/Function<%28i8%2Ci8%29=>i32>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28i8%2Ci8%29=>i32>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/function/Function<%28u8%2Cu8%29=>i32>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28u8%2Cu8%29=>i32>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/function/Function<%28i16%2Ci16%29=>i32>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28i16%2Ci16%29=>i32>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/function/Function<%28u16%2Cu16%29=>i32>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28u16%2Cu16%29=>i32>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/function/Function<%28u32%2Cu32%29=>i32>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28u32%2Cu32%29=>i32>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/function/Function<%28i64%2Ci64%29=>i32>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28i64%2Ci64%29=>i32>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/function/Function<%28u64%2Cu64%29=>i32>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28u64%2Cu64%29=>i32>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28f32%2Cf32%29=>i32>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) - (local $bufferSize i32) - (local $buffer i32) - (local $array i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $length - local.get $alignLog2 - i32.shl - local.set $bufferSize - global.get $~lib/memory/__stack_pointer - local.get $bufferSize - i32.const 1 - local.get $data - call $~lib/rt/__newBuffer - local.tee $buffer - i32.store - i32.const 16 - local.get $id - call $~lib/rt/itcms/__new - local.set $array - local.get $array - local.get $buffer - i32.store - local.get $array - local.get $buffer - i32.const 0 - call $~lib/rt/itcms/__link - local.get $array - local.get $buffer - i32.store offset=4 - local.get $array - local.get $bufferSize - i32.store offset=8 - local.get $array - local.get $length - i32.store offset=12 - local.get $array - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - ) - (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) - (local $sign i32) - (local $out i32) - (local $decimals i32) - (local $buffer i32) - (local $num i32) - (local $offset i32) - (local $decimals|8 i32) - (local $buffer|9 i32) - (local $num|10 i32) - (local $offset|11 i32) - (local $val32 i32) - (local $decimals|13 i32) - (local $14 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $this + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $2 i32.store - local.get $radix - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $radix - i32.const 36 - i32.gt_s - end - if - i32.const 6784 - i32.const 6912 - i32.const 373 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $value - i32.eqz - if - i32.const 6976 - local.set $14 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $14 - return - end - local.get $value - i32.const 31 - i32.shr_u - i32.const 1 - i32.shl - local.set $sign - local.get $sign - if - i32.const 0 - local.get $value - i32.sub - local.set $value - end - local.get $radix - i32.const 10 - i32.eq - if - local.get $value - call $~lib/util/number/decimalCount32 - local.set $decimals - global.get $~lib/memory/__stack_pointer - local.get $decimals - i32.const 1 - i32.shl - local.get $sign - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $sign - i32.add - local.set $buffer - local.get $value - local.set $num - local.get $decimals - local.set $offset - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer - local.get $num - local.get $offset - call $~lib/util/number/utoa32_dec_lut - else - local.get $radix - i32.const 16 - i32.eq - if - i32.const 31 - local.get $value - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $decimals|8 - global.get $~lib/memory/__stack_pointer - local.get $decimals|8 - i32.const 1 - i32.shl - local.get $sign - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $sign - i32.add - local.set $buffer|9 - local.get $value - local.set $num|10 - local.get $decimals|8 - local.set $offset|11 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|9 - local.get $num|10 - i64.extend_i32_u - local.get $offset|11 - call $~lib/util/number/utoa_hex_lut - else - local.get $value - local.set $val32 - local.get $val32 - i64.extend_i32_u - local.get $radix - call $~lib/util/number/ulog_base - local.set $decimals|13 - global.get $~lib/memory/__stack_pointer - local.get $decimals|13 - i32.const 1 - i32.shl - local.get $sign - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $sign - i32.add - local.get $val32 - i64.extend_i32_u - local.get $decimals|13 - local.get $radix - call $~lib/util/number/utoa64_any_core - end - end - local.get $sign - if - local.get $out - i32.const 45 - i32.store16 - end - local.get $out - local.set $14 + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $14 - return ) - (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) - (local $out i32) - (local $decimals i32) - (local $buffer i32) - (local $num i32) - (local $offset i32) - (local $decimals|7 i32) - (local $buffer|8 i32) - (local $num|9 i32) - (local $offset|10 i32) - (local $decimals|11 i32) - (local $12 i32) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -93084,151 +93746,24 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $radix - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $radix - i32.const 36 - i32.gt_s - end - if - i32.const 6784 - i32.const 6912 - i32.const 350 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $value - i32.eqz - if - i32.const 6976 - local.set $12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $12 - return - end - local.get $radix - i32.const 10 - i32.eq - if - local.get $value - call $~lib/util/number/decimalCount32 - local.set $decimals - global.get $~lib/memory/__stack_pointer - local.get $decimals - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.set $buffer - local.get $value - local.set $num - local.get $decimals - local.set $offset - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer - local.get $num - local.get $offset - call $~lib/util/number/utoa32_dec_lut - else - local.get $radix - i32.const 16 - i32.eq - if - i32.const 31 - local.get $value - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $decimals|7 - global.get $~lib/memory/__stack_pointer - local.get $decimals|7 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.set $buffer|8 - local.get $value - local.set $num|9 - local.get $decimals|7 - local.set $offset|10 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|8 - local.get $num|9 - i64.extend_i32_u - local.get $offset|10 - call $~lib/util/number/utoa_hex_lut - else - local.get $value - i64.extend_i32_u - local.get $radix - call $~lib/util/number/ulog_base - local.set $decimals|11 - global.get $~lib/memory/__stack_pointer - local.get $decimals|11 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $value - i64.extend_i32_u - local.get $decimals|11 - local.get $radix - call $~lib/util/number/utoa64_any_core - end - end - local.get $out - local.set $12 + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $12 - return ) - (func $~lib/util/number/itoa64 (param $value i64) (param $radix i32) (result i32) - (local $sign i32) - (local $out i32) - (local $val32 i32) - (local $decimals i32) - (local $buffer i32) - (local $num i32) - (local $offset i32) - (local $decimals|9 i32) - (local $buffer|10 i32) - (local $num|11 i64) - (local $offset|12 i32) - (local $decimals|13 i32) - (local $buffer|14 i32) - (local $num|15 i64) - (local $offset|16 i32) - (local $decimals|17 i32) - (local $18 i32) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -93237,221 +93772,24 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $radix - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $radix - i32.const 36 - i32.gt_s - end - if - i32.const 6784 - i32.const 6912 - i32.const 431 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $value - i64.const 0 - i64.ne - i32.eqz - if - i32.const 6976 - local.set $18 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $18 - return - end - local.get $value - i64.const 63 - i64.shr_u - i32.wrap_i64 - i32.const 1 - i32.shl - local.set $sign - local.get $sign - if - i64.const 0 - local.get $value - i64.sub - local.set $value - end - local.get $radix - i32.const 10 - i32.eq - if - local.get $value - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $value - i32.wrap_i64 - local.set $val32 - local.get $val32 - call $~lib/util/number/decimalCount32 - local.set $decimals - global.get $~lib/memory/__stack_pointer - local.get $decimals - i32.const 1 - i32.shl - local.get $sign - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $sign - i32.add - local.set $buffer - local.get $val32 - local.set $num - local.get $decimals - local.set $offset - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer - local.get $num - local.get $offset - call $~lib/util/number/utoa32_dec_lut - else - local.get $value - call $~lib/util/number/decimalCount64High - local.set $decimals|9 - global.get $~lib/memory/__stack_pointer - local.get $decimals|9 - i32.const 1 - i32.shl - local.get $sign - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $sign - i32.add - local.set $buffer|10 - local.get $value - local.set $num|11 - local.get $decimals|9 - local.set $offset|12 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|10 - local.get $num|11 - local.get $offset|12 - call $~lib/util/number/utoa64_dec_lut - end - else - local.get $radix - i32.const 16 - i32.eq - if - i32.const 63 - local.get $value - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $decimals|13 - global.get $~lib/memory/__stack_pointer - local.get $decimals|13 - i32.const 1 - i32.shl - local.get $sign - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $sign - i32.add - local.set $buffer|14 - local.get $value - local.set $num|15 - local.get $decimals|13 - local.set $offset|16 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|14 - local.get $num|15 - local.get $offset|16 - call $~lib/util/number/utoa_hex_lut - else - local.get $value - local.get $radix - call $~lib/util/number/ulog_base - local.set $decimals|17 - global.get $~lib/memory/__stack_pointer - local.get $decimals|17 - i32.const 1 - i32.shl - local.get $sign - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $sign - i32.add - local.get $value - local.get $decimals|17 - local.get $radix - call $~lib/util/number/utoa64_any_core - end - end - local.get $sign - if - local.get $out - i32.const 45 - i32.store16 - end - local.get $out - local.set $18 + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $18 - return ) - (func $~lib/util/number/utoa64 (param $value i64) (param $radix i32) (result i32) - (local $out i32) - (local $val32 i32) - (local $decimals i32) - (local $buffer i32) - (local $num i32) - (local $offset i32) - (local $decimals|8 i32) - (local $buffer|9 i32) - (local $num|10 i64) - (local $offset|11 i32) - (local $decimals|12 i32) - (local $buffer|13 i32) - (local $num|14 i64) - (local $offset|15 i32) - (local $decimals|16 i32) - (local $17 i32) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -93460,174 +93798,24 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $radix - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $radix - i32.const 36 - i32.gt_s - end - if - i32.const 6784 - i32.const 6912 - i32.const 401 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $value - i64.const 0 - i64.ne - i32.eqz - if - i32.const 6976 - local.set $17 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $17 - return - end - local.get $radix - i32.const 10 - i32.eq - if - local.get $value - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $value - i32.wrap_i64 - local.set $val32 - local.get $val32 - call $~lib/util/number/decimalCount32 - local.set $decimals - global.get $~lib/memory/__stack_pointer - local.get $decimals - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.set $buffer - local.get $val32 - local.set $num - local.get $decimals - local.set $offset - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer - local.get $num - local.get $offset - call $~lib/util/number/utoa32_dec_lut - else - local.get $value - call $~lib/util/number/decimalCount64High - local.set $decimals|8 - global.get $~lib/memory/__stack_pointer - local.get $decimals|8 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.set $buffer|9 - local.get $value - local.set $num|10 - local.get $decimals|8 - local.set $offset|11 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|9 - local.get $num|10 - local.get $offset|11 - call $~lib/util/number/utoa64_dec_lut - end - else - local.get $radix - i32.const 16 - i32.eq - if - i32.const 63 - local.get $value - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $decimals|12 - global.get $~lib/memory/__stack_pointer - local.get $decimals|12 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.set $buffer|13 - local.get $value - local.set $num|14 - local.get $decimals|12 - local.set $offset|15 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $buffer|13 - local.get $num|14 - local.get $offset|15 - call $~lib/util/number/utoa_hex_lut - else - local.get $value - local.get $radix - call $~lib/util/number/ulog_base - local.set $decimals|16 - global.get $~lib/memory/__stack_pointer - local.get $decimals|16 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store - local.get $out - local.get $value - local.get $decimals|16 - local.get $radix - call $~lib/util/number/utoa64_any_core - end - end - local.get $out - local.set $17 + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $17 - return ) - (func $~lib/util/number/dtoa (param $value f32) (result i32) - (local $value|1 f64) - (local $isSingle i32) - (local $size i32) - (local $result i32) - (local $5 i32) + (func $~lib/function/Function<%28i8%2Ci8%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -93636,75 +93824,22 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $~lib/util/number/dtoa_impl|inlined.0 (result i32) - local.get $value - f64.promote_f32 - local.set $value|1 - i32.const 1 - local.set $isSingle - local.get $value|1 - f64.const 0 - f64.eq - if - i32.const 8640 - br $~lib/util/number/dtoa_impl|inlined.0 - end - local.get $value|1 - local.get $value|1 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - local.get $value|1 - local.get $value|1 - f64.ne - if - i32.const 8672 - br $~lib/util/number/dtoa_impl|inlined.0 - end - i32.const 8704 - i32.const 8752 - local.get $value|1 - f64.const 0 - f64.lt - select - br $~lib/util/number/dtoa_impl|inlined.0 - end - i32.const 8784 - local.get $value|1 - local.get $isSingle - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $size - global.get $~lib/memory/__stack_pointer - local.get $size - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store - local.get $result - i32.const 8784 - local.get $size - memory.copy - local.get $result - br $~lib/util/number/dtoa_impl|inlined.0 - end - local.set $5 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i8%2Ci8%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 - return ) - (func $~lib/util/number/dtoa (param $value f64) (result i32) - (local $value|1 f64) - (local $isSingle i32) - (local $size i32) - (local $result i32) - (local $5 i32) + (func $~lib/function/Function<%28u8%2Cu8%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -93713,71 +93848,22 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $~lib/util/number/dtoa_impl|inlined.1 (result i32) - local.get $value - local.set $value|1 - i32.const 0 - local.set $isSingle - local.get $value|1 - f64.const 0 - f64.eq - if - i32.const 8640 - br $~lib/util/number/dtoa_impl|inlined.1 - end - local.get $value|1 - local.get $value|1 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - local.get $value|1 - local.get $value|1 - f64.ne - if - i32.const 8672 - br $~lib/util/number/dtoa_impl|inlined.1 - end - i32.const 8704 - i32.const 8752 - local.get $value|1 - f64.const 0 - f64.lt - select - br $~lib/util/number/dtoa_impl|inlined.1 - end - i32.const 8784 - local.get $value|1 - local.get $isSingle - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $size - global.get $~lib/memory/__stack_pointer - local.get $size - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $result - i32.store - local.get $result - i32.const 8784 - local.get $size - memory.copy - local.get $result - br $~lib/util/number/dtoa_impl|inlined.1 - end - local.set $5 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u8%2Cu8%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 - return ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) - (local $buffer i32) - (local $3 i32) + (func $~lib/function/Function<%28i16%2Ci16%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -93786,34 +93872,162 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $length - i32.const 1073741820 - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 52 - i32.const 43 - call $~lib/builtins/abort - unreachable - end + local.get $this + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $length - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $buffer + local.get $2 i32.store - i32.const 2 - global.get $~lib/shared/runtime/Runtime.Incremental - i32.ne - drop - local.get $buffer - local.set $3 + local.get $2 + call $~lib/function/Function<%28i16%2Ci16%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u16%2Cu16%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u16%2Cu16%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u32%2Cu32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u32%2Cu32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i64%2Ci64%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i64%2Ci64%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u64%2Cu64%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u64%2Cu64%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28f32%2Cf32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 - return ) ) diff --git a/tests/compiler/std/typedarray.release.wat b/tests/compiler/std/typedarray.release.wat index 8dd3afe263..0c3f791a46 100644 --- a/tests/compiler/std/typedarray.release.wat +++ b/tests/compiler/std/typedarray.release.wat @@ -19,12 +19,12 @@ (type $17 (func (param i64 i64 i32 i32) (result i64))) (type $18 (func (param i32 i64) (result i32))) (type $19 (func (param i32 i64 i32) (result i32))) - (type $20 (func (param i32 i32 i32 i32))) - (type $21 (func (param i32 i32 i64))) - (type $22 (func (param f32 f32 i32 i32) (result f32))) - (type $23 (func (param f64 f64 i32 i32) (result f64))) - (type $24 (func (param i64 i32 i32) (result i64))) - (type $25 (func (param i32 f64 i32) (result i32))) + (type $20 (func (param i32 i32 i64))) + (type $21 (func (param f32 f32 i32 i32) (result f32))) + (type $22 (func (param f64 f64 i32 i32) (result f64))) + (type $23 (func (param i64 i32 i32) (result i64))) + (type $24 (func (param i32 f64 i32) (result i32))) + (type $25 (func (param i32 i32 i32 i32))) (type $26 (func (param i32 i32) (result f64))) (type $27 (func (param i32 i32) (result f32))) (type $28 (func (param i64 i32 i32))) @@ -41,7 +41,6 @@ (type $39 (func (param i32 i32 f64 f64 f64 f64 f64))) (type $40 (func (param i32 i32 f64))) (type $41 (func (param i32 i32 f32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -62,616 +61,624 @@ (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 49088)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 49248)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data $1 (i32.const 1084) "<") - (data $1.1 (i32.const 1096) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data $2 (i32.const 1148) "<") - (data $2.1 (i32.const 1160) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $3 (i32.const 1212) "<") - (data $3.1 (i32.const 1224) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $6 (i32.const 1340) "<") - (data $6.1 (i32.const 1352) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $7 (i32.const 1404) ",") - (data $7.1 (i32.const 1416) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $9 (i32.const 1484) "<") - (data $9.1 (i32.const 1496) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $10 (i32.const 1548) "<") - (data $10.1 (i32.const 1560) "\02\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data $11 (i32.const 1612) "<") - (data $11.1 (i32.const 1624) "\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data $12 (i32.const 1676) "\1c") - (data $12.1 (i32.const 1688) "\0f\00\00\00\08\00\00\00\01") - (data $13 (i32.const 1708) "\1c") - (data $13.1 (i32.const 1720) "\01\00\00\00\05\00\00\00\01\01\01\04\05") - (data $14 (i32.const 1740) ",") - (data $14.1 (i32.const 1752) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data $15 (i32.const 1788) "\1c") - (data $15.1 (i32.const 1800) "\01\00\00\00\05") - (data $16 (i32.const 1820) "\1c") - (data $16.1 (i32.const 1832) "\01\00\00\00\05\00\00\00\01\01") - (data $17 (i32.const 1852) "\1c") - (data $17.1 (i32.const 1864) "\01\00\00\00\05\00\00\00\01\01\00\02\02") - (data $18 (i32.const 1884) "\1c") - (data $18.1 (i32.const 1896) "\01\00\00\00\05\00\00\00\01\01\00\02\02") - (data $19 (i32.const 1916) "\1c") - (data $19.1 (i32.const 1928) "\01\00\00\00\03") - (data $20 (i32.const 1948) "\1c") - (data $20.1 (i32.const 1960) "\01\00\00\00\05\00\00\00\01\00\00\00\02") - (data $21 (i32.const 1980) ",") - (data $21.1 (i32.const 1992) "\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") - (data $22 (i32.const 2028) ",") - (data $22.1 (i32.const 2040) "\01\00\00\00\14") - (data $23 (i32.const 2076) ",") - (data $23.1 (i32.const 2088) "\01\00\00\00\14\00\00\00\01\00\00\00\01") - (data $24 (i32.const 2124) ",") - (data $24.1 (i32.const 2136) "\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data $25 (i32.const 2172) ",") - (data $25.1 (i32.const 2184) "\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data $26 (i32.const 2220) "\1c") - (data $26.1 (i32.const 2232) "\01\00\00\00\0c") - (data $27 (i32.const 2252) ",") - (data $27.1 (i32.const 2264) "\01\00\00\00\14\00\00\00\01") - (data $27.2 (i32.const 2288) "\02") - (data $28 (i32.const 2300) ",") - (data $28.1 (i32.const 2312) "\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data $29 (i32.const 2348) ",") - (data $29.1 (i32.const 2360) "\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") - (data $30 (i32.const 2396) ",") - (data $30.1 (i32.const 2408) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data $31 (i32.const 2444) ",") - (data $31.1 (i32.const 2456) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $32 (i32.const 2492) ",") - (data $32.1 (i32.const 2504) "\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $33 (i32.const 2540) ",") - (data $33.1 (i32.const 2552) "\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") - (data $34 (i32.const 2588) ",") - (data $34.1 (i32.const 2600) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data $35 (i32.const 2636) ",") - (data $35.1 (i32.const 2648) "\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data $36 (i32.const 2684) ",") - (data $36.1 (i32.const 2696) "\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data $37 (i32.const 2732) ",") - (data $37.1 (i32.const 2744) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") - (data $38 (i32.const 2780) ",") - (data $38.1 (i32.const 2792) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data $39 (i32.const 2828) ",") - (data $39.1 (i32.const 2840) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data $40 (i32.const 2876) "\1c") - (data $40.1 (i32.const 2888) "\12\00\00\00\08\00\00\00\02") - (data $41 (i32.const 2908) "\1c") - (data $41.1 (i32.const 2920) "\13\00\00\00\08\00\00\00\03") - (data $42 (i32.const 2940) "\1c") - (data $42.1 (i32.const 2952) "\14\00\00\00\08\00\00\00\04") - (data $43 (i32.const 2972) "\1c") - (data $43.1 (i32.const 2984) "\15\00\00\00\08\00\00\00\05") - (data $44 (i32.const 3004) "\1c") - (data $44.1 (i32.const 3016) "\16\00\00\00\08\00\00\00\06") - (data $45 (i32.const 3036) "\1c") - (data $45.1 (i32.const 3048) "\17\00\00\00\08\00\00\00\07") - (data $46 (i32.const 3068) "\1c") - (data $46.1 (i32.const 3080) "\18\00\00\00\08\00\00\00\08") - (data $47 (i32.const 3100) "\1c") - (data $47.1 (i32.const 3112) "\19\00\00\00\08\00\00\00\t") - (data $48 (i32.const 3132) "\1c") - (data $48.1 (i32.const 3144) "\1a\00\00\00\08\00\00\00\n") - (data $49 (i32.const 3164) "\1c") - (data $49.1 (i32.const 3176) "\1b\00\00\00\08\00\00\00\0b") - (data $50 (i32.const 3196) "\1c") - (data $50.1 (i32.const 3208) "\1c\00\00\00\08\00\00\00\0c") - (data $51 (i32.const 3228) "\1c") - (data $51.1 (i32.const 3240) "\12\00\00\00\08\00\00\00\r") - (data $52 (i32.const 3260) "\1c") - (data $52.1 (i32.const 3272) "\13\00\00\00\08\00\00\00\0e") - (data $53 (i32.const 3292) "\1c") - (data $53.1 (i32.const 3304) "\14\00\00\00\08\00\00\00\0f") - (data $54 (i32.const 3324) "\1c") - (data $54.1 (i32.const 3336) "\15\00\00\00\08\00\00\00\10") - (data $55 (i32.const 3356) "\1c") - (data $55.1 (i32.const 3368) "\16\00\00\00\08\00\00\00\11") - (data $56 (i32.const 3388) "\1c") - (data $56.1 (i32.const 3400) "\17\00\00\00\08\00\00\00\12") - (data $57 (i32.const 3420) "\1c") - (data $57.1 (i32.const 3432) "\18\00\00\00\08\00\00\00\13") - (data $58 (i32.const 3452) "\1c") - (data $58.1 (i32.const 3464) "\19\00\00\00\08\00\00\00\14") - (data $59 (i32.const 3484) "\1c") - (data $59.1 (i32.const 3496) "\1a\00\00\00\08\00\00\00\15") - (data $60 (i32.const 3516) "\1c") - (data $60.1 (i32.const 3528) "\1b\00\00\00\08\00\00\00\16") - (data $61 (i32.const 3548) "\1c") - (data $61.1 (i32.const 3560) "\1c\00\00\00\08\00\00\00\17") - (data $62 (i32.const 3580) "\1c") - (data $62.1 (i32.const 3592) "\1d\00\00\00\08\00\00\00\18") - (data $63 (i32.const 3612) "\1c") - (data $63.1 (i32.const 3624) "\1e\00\00\00\08\00\00\00\19") - (data $64 (i32.const 3644) "\1c") - (data $64.1 (i32.const 3656) "\1f\00\00\00\08\00\00\00\1a") - (data $65 (i32.const 3676) "\1c") - (data $65.1 (i32.const 3688) " \00\00\00\08\00\00\00\1b") - (data $66 (i32.const 3708) "\1c") - (data $66.1 (i32.const 3720) "!\00\00\00\08\00\00\00\1c") - (data $67 (i32.const 3740) "\1c") - (data $67.1 (i32.const 3752) "\"\00\00\00\08\00\00\00\1d") - (data $68 (i32.const 3772) "\1c") - (data $68.1 (i32.const 3784) "#\00\00\00\08\00\00\00\1e") - (data $69 (i32.const 3804) "\1c") - (data $69.1 (i32.const 3816) "$\00\00\00\08\00\00\00\1f") - (data $70 (i32.const 3836) "\1c") - (data $70.1 (i32.const 3848) "%\00\00\00\08\00\00\00 ") - (data $71 (i32.const 3868) "\1c") - (data $71.1 (i32.const 3880) "&\00\00\00\08\00\00\00!") - (data $72 (i32.const 3900) "\1c") - (data $72.1 (i32.const 3912) "\'\00\00\00\08\00\00\00\"") - (data $73 (i32.const 3932) "\1c") - (data $73.1 (i32.const 3944) "(\00\00\00\08\00\00\00#") - (data $74 (i32.const 3964) "\1c") - (data $74.1 (i32.const 3976) ")\00\00\00\08\00\00\00$") - (data $75 (i32.const 3996) "\1c") - (data $75.1 (i32.const 4008) "*\00\00\00\08\00\00\00%") - (data $76 (i32.const 4028) "\1c") - (data $76.1 (i32.const 4040) "+\00\00\00\08\00\00\00&") - (data $77 (i32.const 4060) "\1c") - (data $77.1 (i32.const 4072) ",\00\00\00\08\00\00\00\'") - (data $78 (i32.const 4092) "\1c") - (data $78.1 (i32.const 4104) "-\00\00\00\08\00\00\00(") - (data $79 (i32.const 4124) "\1c") - (data $79.1 (i32.const 4136) ".\00\00\00\08\00\00\00)") - (data $80 (i32.const 4156) "\1c") - (data $80.1 (i32.const 4168) "/\00\00\00\08\00\00\00*") - (data $81 (i32.const 4188) "\1c") - (data $81.1 (i32.const 4200) "0\00\00\00\08\00\00\00+") - (data $82 (i32.const 4220) "\1c") - (data $82.1 (i32.const 4232) "1\00\00\00\08\00\00\00,") - (data $83 (i32.const 4252) "\1c") - (data $83.1 (i32.const 4264) "2\00\00\00\08\00\00\00-") - (data $84 (i32.const 4284) "\1c") - (data $84.1 (i32.const 4296) "(\00\00\00\08\00\00\00.") - (data $85 (i32.const 4316) "\1c") - (data $85.1 (i32.const 4328) "(\00\00\00\08\00\00\00/") - (data $86 (i32.const 4348) "\1c") - (data $86.1 (i32.const 4360) ")\00\00\00\08\00\00\000") - (data $87 (i32.const 4380) "\1c") - (data $87.1 (i32.const 4392) ")\00\00\00\08\00\00\001") - (data $88 (i32.const 4412) "\1c") - (data $88.1 (i32.const 4424) "*\00\00\00\08\00\00\002") - (data $89 (i32.const 4444) "\1c") - (data $89.1 (i32.const 4456) "*\00\00\00\08\00\00\003") - (data $90 (i32.const 4476) "\1c") - (data $90.1 (i32.const 4488) "+\00\00\00\08\00\00\004") - (data $91 (i32.const 4508) "\1c") - (data $91.1 (i32.const 4520) "+\00\00\00\08\00\00\005") - (data $92 (i32.const 4540) "\1c") - (data $92.1 (i32.const 4552) ",\00\00\00\08\00\00\006") - (data $93 (i32.const 4572) "\1c") - (data $93.1 (i32.const 4584) ",\00\00\00\08\00\00\007") - (data $94 (i32.const 4604) "\1c") - (data $94.1 (i32.const 4616) "-\00\00\00\08\00\00\008") - (data $95 (i32.const 4636) "\1c") - (data $95.1 (i32.const 4648) "-\00\00\00\08\00\00\009") - (data $96 (i32.const 4668) "\1c") - (data $96.1 (i32.const 4680) ".\00\00\00\08\00\00\00:") - (data $97 (i32.const 4700) "\1c") - (data $97.1 (i32.const 4712) ".\00\00\00\08\00\00\00;") - (data $98 (i32.const 4732) "\1c") - (data $98.1 (i32.const 4744) "/\00\00\00\08\00\00\00<") - (data $99 (i32.const 4764) "\1c") - (data $99.1 (i32.const 4776) "/\00\00\00\08\00\00\00=") - (data $100 (i32.const 4796) "\1c") - (data $100.1 (i32.const 4808) "0\00\00\00\08\00\00\00>") - (data $101 (i32.const 4828) "\1c") - (data $101.1 (i32.const 4840) "0\00\00\00\08\00\00\00?") - (data $102 (i32.const 4860) "\1c") - (data $102.1 (i32.const 4872) "1\00\00\00\08\00\00\00@") - (data $103 (i32.const 4892) "\1c") - (data $103.1 (i32.const 4904) "1\00\00\00\08\00\00\00A") - (data $104 (i32.const 4924) "\1c") - (data $104.1 (i32.const 4936) "2\00\00\00\08\00\00\00B") - (data $105 (i32.const 4956) "\1c") - (data $105.1 (i32.const 4968) "2\00\00\00\08\00\00\00C") - (data $106 (i32.const 4988) "\1c") - (data $106.1 (i32.const 5000) "(\00\00\00\08\00\00\00D") - (data $107 (i32.const 5020) "\1c") - (data $107.1 (i32.const 5032) "(\00\00\00\08\00\00\00E") - (data $108 (i32.const 5052) "\1c") - (data $108.1 (i32.const 5064) ")\00\00\00\08\00\00\00F") - (data $109 (i32.const 5084) "\1c") - (data $109.1 (i32.const 5096) ")\00\00\00\08\00\00\00G") - (data $110 (i32.const 5116) "\1c") - (data $110.1 (i32.const 5128) "*\00\00\00\08\00\00\00H") - (data $111 (i32.const 5148) "\1c") - (data $111.1 (i32.const 5160) "*\00\00\00\08\00\00\00I") - (data $112 (i32.const 5180) "\1c") - (data $112.1 (i32.const 5192) "+\00\00\00\08\00\00\00J") - (data $113 (i32.const 5212) "\1c") - (data $113.1 (i32.const 5224) "+\00\00\00\08\00\00\00K") - (data $114 (i32.const 5244) "\1c") - (data $114.1 (i32.const 5256) ",\00\00\00\08\00\00\00L") - (data $115 (i32.const 5276) "\1c") - (data $115.1 (i32.const 5288) ",\00\00\00\08\00\00\00M") - (data $116 (i32.const 5308) "\1c") - (data $116.1 (i32.const 5320) "-\00\00\00\08\00\00\00N") - (data $117 (i32.const 5340) "\1c") - (data $117.1 (i32.const 5352) "-\00\00\00\08\00\00\00O") - (data $118 (i32.const 5372) "\1c") - (data $118.1 (i32.const 5384) ".\00\00\00\08\00\00\00P") - (data $119 (i32.const 5404) "\1c") - (data $119.1 (i32.const 5416) ".\00\00\00\08\00\00\00Q") - (data $120 (i32.const 5436) "\1c") - (data $120.1 (i32.const 5448) "/\00\00\00\08\00\00\00R") - (data $121 (i32.const 5468) "\1c") - (data $121.1 (i32.const 5480) "/\00\00\00\08\00\00\00S") - (data $122 (i32.const 5500) "\1c") - (data $122.1 (i32.const 5512) "0\00\00\00\08\00\00\00T") - (data $123 (i32.const 5532) "\1c") - (data $123.1 (i32.const 5544) "0\00\00\00\08\00\00\00U") - (data $124 (i32.const 5564) "\1c") - (data $124.1 (i32.const 5576) "1\00\00\00\08\00\00\00V") - (data $125 (i32.const 5596) "\1c") - (data $125.1 (i32.const 5608) "1\00\00\00\08\00\00\00W") - (data $126 (i32.const 5628) "\1c") - (data $126.1 (i32.const 5640) "2\00\00\00\08\00\00\00X") - (data $127 (i32.const 5660) "\1c") - (data $127.1 (i32.const 5672) "2\00\00\00\08\00\00\00Y") - (data $128 (i32.const 5692) "\1c") - (data $128.1 (i32.const 5704) "(\00\00\00\08\00\00\00Z") - (data $129 (i32.const 5724) "\1c") - (data $129.1 (i32.const 5736) "(\00\00\00\08\00\00\00[") - (data $130 (i32.const 5756) "\1c") - (data $130.1 (i32.const 5768) ")\00\00\00\08\00\00\00\\") - (data $131 (i32.const 5788) "\1c") - (data $131.1 (i32.const 5800) ")\00\00\00\08\00\00\00]") - (data $132 (i32.const 5820) "\1c") - (data $132.1 (i32.const 5832) "*\00\00\00\08\00\00\00^") - (data $133 (i32.const 5852) "\1c") - (data $133.1 (i32.const 5864) "*\00\00\00\08\00\00\00_") - (data $134 (i32.const 5884) "\1c") - (data $134.1 (i32.const 5896) "+\00\00\00\08\00\00\00`") - (data $135 (i32.const 5916) "\1c") - (data $135.1 (i32.const 5928) "+\00\00\00\08\00\00\00a") - (data $136 (i32.const 5948) "\1c") - (data $136.1 (i32.const 5960) ",\00\00\00\08\00\00\00b") - (data $137 (i32.const 5980) "\1c") - (data $137.1 (i32.const 5992) ",\00\00\00\08\00\00\00c") - (data $138 (i32.const 6012) "\1c") - (data $138.1 (i32.const 6024) "-\00\00\00\08\00\00\00d") - (data $139 (i32.const 6044) "\1c") - (data $139.1 (i32.const 6056) "-\00\00\00\08\00\00\00e") - (data $140 (i32.const 6076) "\1c") - (data $140.1 (i32.const 6088) ".\00\00\00\08\00\00\00f") - (data $141 (i32.const 6108) "\1c") - (data $141.1 (i32.const 6120) ".\00\00\00\08\00\00\00g") - (data $142 (i32.const 6140) "\1c") - (data $142.1 (i32.const 6152) "/\00\00\00\08\00\00\00h") - (data $143 (i32.const 6172) "\1c") - (data $143.1 (i32.const 6184) "/\00\00\00\08\00\00\00i") - (data $144 (i32.const 6204) "\1c") - (data $144.1 (i32.const 6216) "0\00\00\00\08\00\00\00j") - (data $145 (i32.const 6236) "\1c") - (data $145.1 (i32.const 6248) "0\00\00\00\08\00\00\00k") - (data $146 (i32.const 6268) "\1c") - (data $146.1 (i32.const 6280) "1\00\00\00\08\00\00\00l") - (data $147 (i32.const 6300) "\1c") - (data $147.1 (i32.const 6312) "1\00\00\00\08\00\00\00m") - (data $148 (i32.const 6332) "\1c") - (data $148.1 (i32.const 6344) "2\00\00\00\08\00\00\00n") - (data $149 (i32.const 6364) "\1c") - (data $149.1 (i32.const 6376) "2\00\00\00\08\00\00\00o") - (data $150 (i32.const 6396) "\1c") - (data $150.1 (i32.const 6408) "(\00\00\00\08\00\00\00p") - (data $151 (i32.const 6428) "\1c") - (data $151.1 (i32.const 6440) "(\00\00\00\08\00\00\00q") - (data $152 (i32.const 6460) "\1c") - (data $152.1 (i32.const 6472) ")\00\00\00\08\00\00\00r") - (data $153 (i32.const 6492) "\1c") - (data $153.1 (i32.const 6504) ")\00\00\00\08\00\00\00s") - (data $154 (i32.const 6524) "\1c") - (data $154.1 (i32.const 6536) "*\00\00\00\08\00\00\00t") - (data $155 (i32.const 6556) "\1c") - (data $155.1 (i32.const 6568) "*\00\00\00\08\00\00\00u") - (data $156 (i32.const 6588) "\1c") - (data $156.1 (i32.const 6600) "+\00\00\00\08\00\00\00v") - (data $157 (i32.const 6620) "\1c") - (data $157.1 (i32.const 6632) "+\00\00\00\08\00\00\00w") - (data $158 (i32.const 6652) "\1c") - (data $158.1 (i32.const 6664) ",\00\00\00\08\00\00\00x") - (data $159 (i32.const 6684) "\1c") - (data $159.1 (i32.const 6696) ",\00\00\00\08\00\00\00y") - (data $160 (i32.const 6716) "\1c") - (data $160.1 (i32.const 6728) "-\00\00\00\08\00\00\00z") - (data $161 (i32.const 6748) "\1c") - (data $161.1 (i32.const 6760) "-\00\00\00\08\00\00\00{") - (data $162 (i32.const 6780) "\1c") - (data $162.1 (i32.const 6792) ".\00\00\00\08\00\00\00|") - (data $163 (i32.const 6812) "\1c") - (data $163.1 (i32.const 6824) ".\00\00\00\08\00\00\00}") - (data $164 (i32.const 6844) "\1c") - (data $164.1 (i32.const 6856) "/\00\00\00\08\00\00\00~") - (data $165 (i32.const 6876) "\1c") - (data $165.1 (i32.const 6888) "/\00\00\00\08\00\00\00\7f") - (data $166 (i32.const 6908) "\1c") - (data $166.1 (i32.const 6920) "0\00\00\00\08\00\00\00\80") - (data $167 (i32.const 6940) "\1c") - (data $167.1 (i32.const 6952) "0\00\00\00\08\00\00\00\81") - (data $168 (i32.const 6972) "\1c") - (data $168.1 (i32.const 6984) "1\00\00\00\08\00\00\00\82") - (data $169 (i32.const 7004) "\1c") - (data $169.1 (i32.const 7016) "1\00\00\00\08\00\00\00\83") - (data $170 (i32.const 7036) "\1c") - (data $170.1 (i32.const 7048) "2\00\00\00\08\00\00\00\84") - (data $171 (i32.const 7068) "\1c") - (data $171.1 (i32.const 7080) "2\00\00\00\08\00\00\00\85") - (data $172 (i32.const 7100) "\1c") - (data $172.1 (i32.const 7112) "\01\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e") - (data $173 (i32.const 7132) ",") - (data $173.1 (i32.const 7144) "\11\00\00\00\10\00\00\00\d0\1b\00\00\d0\1b\00\00\0c\00\00\00\03") - (data $174 (i32.const 7180) "\1c") - (data $174.1 (i32.const 7192) "3\00\00\00\08\00\00\00\86") - (data $175 (i32.const 7212) "\1c") - (data $175.1 (i32.const 7224) "4\00\00\00\08\00\00\00\87") - (data $176 (i32.const 7244) "\1c") - (data $176.1 (i32.const 7256) "5\00\00\00\08\00\00\00\88") - (data $177 (i32.const 7276) "\1c") - (data $177.1 (i32.const 7288) "6\00\00\00\08\00\00\00\89") - (data $178 (i32.const 7308) "\1c") - (data $178.1 (i32.const 7320) "7\00\00\00\08\00\00\00\8a") - (data $179 (i32.const 7340) "\1c") - (data $179.1 (i32.const 7352) "8\00\00\00\08\00\00\00\8b") - (data $180 (i32.const 7372) "\1c") - (data $180.1 (i32.const 7384) "9\00\00\00\08\00\00\00\8c") - (data $181 (i32.const 7404) "\1c") - (data $181.1 (i32.const 7416) ":\00\00\00\08\00\00\00\8d") - (data $182 (i32.const 7436) "\1c") - (data $182.1 (i32.const 7448) ";\00\00\00\08\00\00\00\8e") - (data $183 (i32.const 7468) "\1c") - (data $183.1 (i32.const 7480) "<\00\00\00\08\00\00\00\8f") - (data $184 (i32.const 7500) "\1c") - (data $184.1 (i32.const 7512) "=\00\00\00\08\00\00\00\90") - (data $185 (i32.const 7532) "<") - (data $185.1 (i32.const 7544) "\01\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data $186 (i32.const 7596) ",") - (data $186.1 (i32.const 7608) "\11\00\00\00\10\00\00\00\80\1d\00\00\80\1d\00\00$\00\00\00\t") - (data $187 (i32.const 7644) "<") - (data $187.1 (i32.const 7656) "\01\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n") - (data $188 (i32.const 7708) ",") - (data $188.1 (i32.const 7720) "\11\00\00\00\10\00\00\00\f0\1d\00\00\f0\1d\00\00,\00\00\00\0b") - (data $189 (i32.const 7756) "\1c") - (data $189.1 (i32.const 7768) "\02") - (data $190 (i32.const 7788) "|") - (data $190.1 (i32.const 7800) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data $191 (i32.const 7916) "<") - (data $191.1 (i32.const 7928) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data $192 (i32.const 7980) "\1c") - (data $192.1 (i32.const 7992) "\02\00\00\00\02\00\00\000") - (data $193 (i32.const 8012) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data $194 (i32.const 8412) "\1c\04") - (data $194.1 (i32.const 8424) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data $195 (i32.const 9468) "\\") - (data $195.1 (i32.const 9480) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data $196 (i32.const 9564) "\1c") - (data $196.1 (i32.const 9576) "\02\00\00\00\02\00\00\00,") - (data $197 (i32.const 9596) ",") - (data $197.1 (i32.const 9608) "\02\00\00\00\12\00\00\001\00,\002\00,\003\00,\004\00,\005") - (data $198 (i32.const 9644) "\1c") - (data $198.1 (i32.const 9656) "\02\00\00\00\06\00\00\000\00.\000") - (data $199 (i32.const 9676) "\1c") - (data $199.1 (i32.const 9688) "\02\00\00\00\06\00\00\00N\00a\00N") - (data $200 (i32.const 9708) ",") - (data $200.1 (i32.const 9720) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $20 (i32.const 3452) "<") + (data $20.1 (i32.const 3464) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $21 (i32.const 3516) "<") + (data $21.1 (i32.const 3528) "\02\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data $22 (i32.const 3580) "<") + (data $22.1 (i32.const 3592) "\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data $23 (i32.const 3644) "\1c") + (data $23.1 (i32.const 3656) "\0f\00\00\00\08\00\00\00\01") + (data $24 (i32.const 3676) "\1c") + (data $24.1 (i32.const 3688) "\01\00\00\00\05\00\00\00\01\01\01\04\05") + (data $25 (i32.const 3708) ",") + (data $25.1 (i32.const 3720) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $26 (i32.const 3756) "\1c") + (data $26.1 (i32.const 3768) "\01\00\00\00\05") + (data $27 (i32.const 3788) "\1c") + (data $27.1 (i32.const 3800) "\01\00\00\00\05\00\00\00\01\01") + (data $28 (i32.const 3820) "\1c") + (data $28.1 (i32.const 3832) "\01\00\00\00\05\00\00\00\01\01\00\02\02") + (data $29 (i32.const 3852) "\1c") + (data $29.1 (i32.const 3864) "\01\00\00\00\05\00\00\00\01\01\00\02\02") + (data $30 (i32.const 3884) "\1c") + (data $30.1 (i32.const 3896) "\01\00\00\00\03") + (data $31 (i32.const 3916) "\1c") + (data $31.1 (i32.const 3928) "\01\00\00\00\05\00\00\00\01\00\00\00\02") + (data $32 (i32.const 3948) ",") + (data $32.1 (i32.const 3960) "\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") + (data $33 (i32.const 3996) ",") + (data $33.1 (i32.const 4008) "\01\00\00\00\14") + (data $34 (i32.const 4044) ",") + (data $34.1 (i32.const 4056) "\01\00\00\00\14\00\00\00\01\00\00\00\01") + (data $35 (i32.const 4092) ",") + (data $35.1 (i32.const 4104) "\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data $36 (i32.const 4140) ",") + (data $36.1 (i32.const 4152) "\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data $37 (i32.const 4188) "\1c") + (data $37.1 (i32.const 4200) "\01\00\00\00\0c") + (data $38 (i32.const 4220) ",") + (data $38.1 (i32.const 4232) "\01\00\00\00\14\00\00\00\01") + (data $38.2 (i32.const 4256) "\02") + (data $39 (i32.const 4268) ",") + (data $39.1 (i32.const 4280) "\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data $40 (i32.const 4316) ",") + (data $40.1 (i32.const 4328) "\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") + (data $41 (i32.const 4364) ",") + (data $41.1 (i32.const 4376) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data $42 (i32.const 4412) ",") + (data $42.1 (i32.const 4424) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $43 (i32.const 4460) ",") + (data $43.1 (i32.const 4472) "\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $44 (i32.const 4508) ",") + (data $44.1 (i32.const 4520) "\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") + (data $45 (i32.const 4556) ",") + (data $45.1 (i32.const 4568) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data $46 (i32.const 4604) ",") + (data $46.1 (i32.const 4616) "\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data $47 (i32.const 4652) ",") + (data $47.1 (i32.const 4664) "\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $48 (i32.const 4700) ",") + (data $48.1 (i32.const 4712) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") + (data $49 (i32.const 4748) ",") + (data $49.1 (i32.const 4760) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data $50 (i32.const 4796) ",") + (data $50.1 (i32.const 4808) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data $51 (i32.const 4844) "\1c") + (data $51.1 (i32.const 4856) "\12\00\00\00\08\00\00\00\02") + (data $52 (i32.const 4876) "\1c") + (data $52.1 (i32.const 4888) "\13\00\00\00\08\00\00\00\03") + (data $53 (i32.const 4908) "\1c") + (data $53.1 (i32.const 4920) "\14\00\00\00\08\00\00\00\04") + (data $54 (i32.const 4940) "\1c") + (data $54.1 (i32.const 4952) "\15\00\00\00\08\00\00\00\05") + (data $55 (i32.const 4972) "\1c") + (data $55.1 (i32.const 4984) "\16\00\00\00\08\00\00\00\06") + (data $56 (i32.const 5004) "\1c") + (data $56.1 (i32.const 5016) "\17\00\00\00\08\00\00\00\07") + (data $57 (i32.const 5036) "\1c") + (data $57.1 (i32.const 5048) "\18\00\00\00\08\00\00\00\08") + (data $58 (i32.const 5068) "\1c") + (data $58.1 (i32.const 5080) "\19\00\00\00\08\00\00\00\t") + (data $59 (i32.const 5100) "\1c") + (data $59.1 (i32.const 5112) "\1a\00\00\00\08\00\00\00\n") + (data $60 (i32.const 5132) "\1c") + (data $60.1 (i32.const 5144) "\1b\00\00\00\08\00\00\00\0b") + (data $61 (i32.const 5164) "\1c") + (data $61.1 (i32.const 5176) "\1c\00\00\00\08\00\00\00\0c") + (data $62 (i32.const 5196) "\1c") + (data $62.1 (i32.const 5208) "\12\00\00\00\08\00\00\00\r") + (data $63 (i32.const 5228) "\1c") + (data $63.1 (i32.const 5240) "\13\00\00\00\08\00\00\00\0e") + (data $64 (i32.const 5260) "\1c") + (data $64.1 (i32.const 5272) "\14\00\00\00\08\00\00\00\0f") + (data $65 (i32.const 5292) "\1c") + (data $65.1 (i32.const 5304) "\15\00\00\00\08\00\00\00\10") + (data $66 (i32.const 5324) "\1c") + (data $66.1 (i32.const 5336) "\16\00\00\00\08\00\00\00\11") + (data $67 (i32.const 5356) "\1c") + (data $67.1 (i32.const 5368) "\17\00\00\00\08\00\00\00\12") + (data $68 (i32.const 5388) "\1c") + (data $68.1 (i32.const 5400) "\18\00\00\00\08\00\00\00\13") + (data $69 (i32.const 5420) "\1c") + (data $69.1 (i32.const 5432) "\19\00\00\00\08\00\00\00\14") + (data $70 (i32.const 5452) "\1c") + (data $70.1 (i32.const 5464) "\1a\00\00\00\08\00\00\00\15") + (data $71 (i32.const 5484) "\1c") + (data $71.1 (i32.const 5496) "\1b\00\00\00\08\00\00\00\16") + (data $72 (i32.const 5516) "\1c") + (data $72.1 (i32.const 5528) "\1c\00\00\00\08\00\00\00\17") + (data $73 (i32.const 5548) "\1c") + (data $73.1 (i32.const 5560) "\1d\00\00\00\08\00\00\00\18") + (data $74 (i32.const 5580) "\1c") + (data $74.1 (i32.const 5592) "\1e\00\00\00\08\00\00\00\19") + (data $75 (i32.const 5612) "\1c") + (data $75.1 (i32.const 5624) "\1f\00\00\00\08\00\00\00\1a") + (data $76 (i32.const 5644) "\1c") + (data $76.1 (i32.const 5656) " \00\00\00\08\00\00\00\1b") + (data $77 (i32.const 5676) "\1c") + (data $77.1 (i32.const 5688) "!\00\00\00\08\00\00\00\1c") + (data $78 (i32.const 5708) "\1c") + (data $78.1 (i32.const 5720) "\"\00\00\00\08\00\00\00\1d") + (data $79 (i32.const 5740) "\1c") + (data $79.1 (i32.const 5752) "#\00\00\00\08\00\00\00\1e") + (data $80 (i32.const 5772) "\1c") + (data $80.1 (i32.const 5784) "$\00\00\00\08\00\00\00\1f") + (data $81 (i32.const 5804) "\1c") + (data $81.1 (i32.const 5816) "%\00\00\00\08\00\00\00 ") + (data $82 (i32.const 5836) "\1c") + (data $82.1 (i32.const 5848) "&\00\00\00\08\00\00\00!") + (data $83 (i32.const 5868) "\1c") + (data $83.1 (i32.const 5880) "\'\00\00\00\08\00\00\00\"") + (data $84 (i32.const 5900) "\1c") + (data $84.1 (i32.const 5912) "(\00\00\00\08\00\00\00#") + (data $85 (i32.const 5932) "\1c") + (data $85.1 (i32.const 5944) ")\00\00\00\08\00\00\00$") + (data $86 (i32.const 5964) "\1c") + (data $86.1 (i32.const 5976) "*\00\00\00\08\00\00\00%") + (data $87 (i32.const 5996) "\1c") + (data $87.1 (i32.const 6008) "+\00\00\00\08\00\00\00&") + (data $88 (i32.const 6028) "\1c") + (data $88.1 (i32.const 6040) ",\00\00\00\08\00\00\00\'") + (data $89 (i32.const 6060) "\1c") + (data $89.1 (i32.const 6072) "-\00\00\00\08\00\00\00(") + (data $90 (i32.const 6092) "\1c") + (data $90.1 (i32.const 6104) ".\00\00\00\08\00\00\00)") + (data $91 (i32.const 6124) "\1c") + (data $91.1 (i32.const 6136) "/\00\00\00\08\00\00\00*") + (data $92 (i32.const 6156) "\1c") + (data $92.1 (i32.const 6168) "0\00\00\00\08\00\00\00+") + (data $93 (i32.const 6188) "\1c") + (data $93.1 (i32.const 6200) "1\00\00\00\08\00\00\00,") + (data $94 (i32.const 6220) "\1c") + (data $94.1 (i32.const 6232) "2\00\00\00\08\00\00\00-") + (data $95 (i32.const 6252) "\1c") + (data $95.1 (i32.const 6264) "(\00\00\00\08\00\00\00.") + (data $96 (i32.const 6284) "\1c") + (data $96.1 (i32.const 6296) "(\00\00\00\08\00\00\00/") + (data $97 (i32.const 6316) "\1c") + (data $97.1 (i32.const 6328) ")\00\00\00\08\00\00\000") + (data $98 (i32.const 6348) "\1c") + (data $98.1 (i32.const 6360) ")\00\00\00\08\00\00\001") + (data $99 (i32.const 6380) "\1c") + (data $99.1 (i32.const 6392) "*\00\00\00\08\00\00\002") + (data $100 (i32.const 6412) "\1c") + (data $100.1 (i32.const 6424) "*\00\00\00\08\00\00\003") + (data $101 (i32.const 6444) "\1c") + (data $101.1 (i32.const 6456) "+\00\00\00\08\00\00\004") + (data $102 (i32.const 6476) "\1c") + (data $102.1 (i32.const 6488) "+\00\00\00\08\00\00\005") + (data $103 (i32.const 6508) "\1c") + (data $103.1 (i32.const 6520) ",\00\00\00\08\00\00\006") + (data $104 (i32.const 6540) "\1c") + (data $104.1 (i32.const 6552) ",\00\00\00\08\00\00\007") + (data $105 (i32.const 6572) "\1c") + (data $105.1 (i32.const 6584) "-\00\00\00\08\00\00\008") + (data $106 (i32.const 6604) "\1c") + (data $106.1 (i32.const 6616) "-\00\00\00\08\00\00\009") + (data $107 (i32.const 6636) "\1c") + (data $107.1 (i32.const 6648) ".\00\00\00\08\00\00\00:") + (data $108 (i32.const 6668) "\1c") + (data $108.1 (i32.const 6680) ".\00\00\00\08\00\00\00;") + (data $109 (i32.const 6700) "\1c") + (data $109.1 (i32.const 6712) "/\00\00\00\08\00\00\00<") + (data $110 (i32.const 6732) "\1c") + (data $110.1 (i32.const 6744) "/\00\00\00\08\00\00\00=") + (data $111 (i32.const 6764) "\1c") + (data $111.1 (i32.const 6776) "0\00\00\00\08\00\00\00>") + (data $112 (i32.const 6796) "\1c") + (data $112.1 (i32.const 6808) "0\00\00\00\08\00\00\00?") + (data $113 (i32.const 6828) "\1c") + (data $113.1 (i32.const 6840) "1\00\00\00\08\00\00\00@") + (data $114 (i32.const 6860) "\1c") + (data $114.1 (i32.const 6872) "1\00\00\00\08\00\00\00A") + (data $115 (i32.const 6892) "\1c") + (data $115.1 (i32.const 6904) "2\00\00\00\08\00\00\00B") + (data $116 (i32.const 6924) "\1c") + (data $116.1 (i32.const 6936) "2\00\00\00\08\00\00\00C") + (data $117 (i32.const 6956) "\1c") + (data $117.1 (i32.const 6968) "(\00\00\00\08\00\00\00D") + (data $118 (i32.const 6988) "\1c") + (data $118.1 (i32.const 7000) "(\00\00\00\08\00\00\00E") + (data $119 (i32.const 7020) "\1c") + (data $119.1 (i32.const 7032) ")\00\00\00\08\00\00\00F") + (data $120 (i32.const 7052) "\1c") + (data $120.1 (i32.const 7064) ")\00\00\00\08\00\00\00G") + (data $121 (i32.const 7084) "\1c") + (data $121.1 (i32.const 7096) "*\00\00\00\08\00\00\00H") + (data $122 (i32.const 7116) "\1c") + (data $122.1 (i32.const 7128) "*\00\00\00\08\00\00\00I") + (data $123 (i32.const 7148) "\1c") + (data $123.1 (i32.const 7160) "+\00\00\00\08\00\00\00J") + (data $124 (i32.const 7180) "\1c") + (data $124.1 (i32.const 7192) "+\00\00\00\08\00\00\00K") + (data $125 (i32.const 7212) "\1c") + (data $125.1 (i32.const 7224) ",\00\00\00\08\00\00\00L") + (data $126 (i32.const 7244) "\1c") + (data $126.1 (i32.const 7256) ",\00\00\00\08\00\00\00M") + (data $127 (i32.const 7276) "\1c") + (data $127.1 (i32.const 7288) "-\00\00\00\08\00\00\00N") + (data $128 (i32.const 7308) "\1c") + (data $128.1 (i32.const 7320) "-\00\00\00\08\00\00\00O") + (data $129 (i32.const 7340) "\1c") + (data $129.1 (i32.const 7352) ".\00\00\00\08\00\00\00P") + (data $130 (i32.const 7372) "\1c") + (data $130.1 (i32.const 7384) ".\00\00\00\08\00\00\00Q") + (data $131 (i32.const 7404) "\1c") + (data $131.1 (i32.const 7416) "/\00\00\00\08\00\00\00R") + (data $132 (i32.const 7436) "\1c") + (data $132.1 (i32.const 7448) "/\00\00\00\08\00\00\00S") + (data $133 (i32.const 7468) "\1c") + (data $133.1 (i32.const 7480) "0\00\00\00\08\00\00\00T") + (data $134 (i32.const 7500) "\1c") + (data $134.1 (i32.const 7512) "0\00\00\00\08\00\00\00U") + (data $135 (i32.const 7532) "\1c") + (data $135.1 (i32.const 7544) "1\00\00\00\08\00\00\00V") + (data $136 (i32.const 7564) "\1c") + (data $136.1 (i32.const 7576) "1\00\00\00\08\00\00\00W") + (data $137 (i32.const 7596) "\1c") + (data $137.1 (i32.const 7608) "2\00\00\00\08\00\00\00X") + (data $138 (i32.const 7628) "\1c") + (data $138.1 (i32.const 7640) "2\00\00\00\08\00\00\00Y") + (data $139 (i32.const 7660) "\1c") + (data $139.1 (i32.const 7672) "(\00\00\00\08\00\00\00Z") + (data $140 (i32.const 7692) "\1c") + (data $140.1 (i32.const 7704) "(\00\00\00\08\00\00\00[") + (data $141 (i32.const 7724) "\1c") + (data $141.1 (i32.const 7736) ")\00\00\00\08\00\00\00\\") + (data $142 (i32.const 7756) "\1c") + (data $142.1 (i32.const 7768) ")\00\00\00\08\00\00\00]") + (data $143 (i32.const 7788) "\1c") + (data $143.1 (i32.const 7800) "*\00\00\00\08\00\00\00^") + (data $144 (i32.const 7820) "\1c") + (data $144.1 (i32.const 7832) "*\00\00\00\08\00\00\00_") + (data $145 (i32.const 7852) "\1c") + (data $145.1 (i32.const 7864) "+\00\00\00\08\00\00\00`") + (data $146 (i32.const 7884) "\1c") + (data $146.1 (i32.const 7896) "+\00\00\00\08\00\00\00a") + (data $147 (i32.const 7916) "\1c") + (data $147.1 (i32.const 7928) ",\00\00\00\08\00\00\00b") + (data $148 (i32.const 7948) "\1c") + (data $148.1 (i32.const 7960) ",\00\00\00\08\00\00\00c") + (data $149 (i32.const 7980) "\1c") + (data $149.1 (i32.const 7992) "-\00\00\00\08\00\00\00d") + (data $150 (i32.const 8012) "\1c") + (data $150.1 (i32.const 8024) "-\00\00\00\08\00\00\00e") + (data $151 (i32.const 8044) "\1c") + (data $151.1 (i32.const 8056) ".\00\00\00\08\00\00\00f") + (data $152 (i32.const 8076) "\1c") + (data $152.1 (i32.const 8088) ".\00\00\00\08\00\00\00g") + (data $153 (i32.const 8108) "\1c") + (data $153.1 (i32.const 8120) "/\00\00\00\08\00\00\00h") + (data $154 (i32.const 8140) "\1c") + (data $154.1 (i32.const 8152) "/\00\00\00\08\00\00\00i") + (data $155 (i32.const 8172) "\1c") + (data $155.1 (i32.const 8184) "0\00\00\00\08\00\00\00j") + (data $156 (i32.const 8204) "\1c") + (data $156.1 (i32.const 8216) "0\00\00\00\08\00\00\00k") + (data $157 (i32.const 8236) "\1c") + (data $157.1 (i32.const 8248) "1\00\00\00\08\00\00\00l") + (data $158 (i32.const 8268) "\1c") + (data $158.1 (i32.const 8280) "1\00\00\00\08\00\00\00m") + (data $159 (i32.const 8300) "\1c") + (data $159.1 (i32.const 8312) "2\00\00\00\08\00\00\00n") + (data $160 (i32.const 8332) "\1c") + (data $160.1 (i32.const 8344) "2\00\00\00\08\00\00\00o") + (data $161 (i32.const 8364) "\1c") + (data $161.1 (i32.const 8376) "(\00\00\00\08\00\00\00p") + (data $162 (i32.const 8396) "\1c") + (data $162.1 (i32.const 8408) "(\00\00\00\08\00\00\00q") + (data $163 (i32.const 8428) "\1c") + (data $163.1 (i32.const 8440) ")\00\00\00\08\00\00\00r") + (data $164 (i32.const 8460) "\1c") + (data $164.1 (i32.const 8472) ")\00\00\00\08\00\00\00s") + (data $165 (i32.const 8492) "\1c") + (data $165.1 (i32.const 8504) "*\00\00\00\08\00\00\00t") + (data $166 (i32.const 8524) "\1c") + (data $166.1 (i32.const 8536) "*\00\00\00\08\00\00\00u") + (data $167 (i32.const 8556) "\1c") + (data $167.1 (i32.const 8568) "+\00\00\00\08\00\00\00v") + (data $168 (i32.const 8588) "\1c") + (data $168.1 (i32.const 8600) "+\00\00\00\08\00\00\00w") + (data $169 (i32.const 8620) "\1c") + (data $169.1 (i32.const 8632) ",\00\00\00\08\00\00\00x") + (data $170 (i32.const 8652) "\1c") + (data $170.1 (i32.const 8664) ",\00\00\00\08\00\00\00y") + (data $171 (i32.const 8684) "\1c") + (data $171.1 (i32.const 8696) "-\00\00\00\08\00\00\00z") + (data $172 (i32.const 8716) "\1c") + (data $172.1 (i32.const 8728) "-\00\00\00\08\00\00\00{") + (data $173 (i32.const 8748) "\1c") + (data $173.1 (i32.const 8760) ".\00\00\00\08\00\00\00|") + (data $174 (i32.const 8780) "\1c") + (data $174.1 (i32.const 8792) ".\00\00\00\08\00\00\00}") + (data $175 (i32.const 8812) "\1c") + (data $175.1 (i32.const 8824) "/\00\00\00\08\00\00\00~") + (data $176 (i32.const 8844) "\1c") + (data $176.1 (i32.const 8856) "/\00\00\00\08\00\00\00\7f") + (data $177 (i32.const 8876) "\1c") + (data $177.1 (i32.const 8888) "0\00\00\00\08\00\00\00\80") + (data $178 (i32.const 8908) "\1c") + (data $178.1 (i32.const 8920) "0\00\00\00\08\00\00\00\81") + (data $179 (i32.const 8940) "\1c") + (data $179.1 (i32.const 8952) "1\00\00\00\08\00\00\00\82") + (data $180 (i32.const 8972) "\1c") + (data $180.1 (i32.const 8984) "1\00\00\00\08\00\00\00\83") + (data $181 (i32.const 9004) "\1c") + (data $181.1 (i32.const 9016) "2\00\00\00\08\00\00\00\84") + (data $182 (i32.const 9036) "\1c") + (data $182.1 (i32.const 9048) "2\00\00\00\08\00\00\00\85") + (data $183 (i32.const 9068) "\1c") + (data $183.1 (i32.const 9080) "\01\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e") + (data $184 (i32.const 9100) ",") + (data $184.1 (i32.const 9112) "\11\00\00\00\10\00\00\00\80#\00\00\80#\00\00\0c\00\00\00\03") + (data $185 (i32.const 9148) "\1c") + (data $185.1 (i32.const 9160) "3\00\00\00\08\00\00\00\86") + (data $186 (i32.const 9180) "\1c") + (data $186.1 (i32.const 9192) "4\00\00\00\08\00\00\00\87") + (data $187 (i32.const 9212) "\1c") + (data $187.1 (i32.const 9224) "5\00\00\00\08\00\00\00\88") + (data $188 (i32.const 9244) "\1c") + (data $188.1 (i32.const 9256) "6\00\00\00\08\00\00\00\89") + (data $189 (i32.const 9276) "\1c") + (data $189.1 (i32.const 9288) "7\00\00\00\08\00\00\00\8a") + (data $190 (i32.const 9308) "\1c") + (data $190.1 (i32.const 9320) "8\00\00\00\08\00\00\00\8b") + (data $191 (i32.const 9340) "\1c") + (data $191.1 (i32.const 9352) "9\00\00\00\08\00\00\00\8c") + (data $192 (i32.const 9372) "\1c") + (data $192.1 (i32.const 9384) ":\00\00\00\08\00\00\00\8d") + (data $193 (i32.const 9404) "\1c") + (data $193.1 (i32.const 9416) ";\00\00\00\08\00\00\00\8e") + (data $194 (i32.const 9436) "\1c") + (data $194.1 (i32.const 9448) "<\00\00\00\08\00\00\00\8f") + (data $195 (i32.const 9468) "\1c") + (data $195.1 (i32.const 9480) "=\00\00\00\08\00\00\00\90") + (data $196 (i32.const 9500) "<") + (data $196.1 (i32.const 9512) "\01\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data $197 (i32.const 9564) ",") + (data $197.1 (i32.const 9576) "\11\00\00\00\10\00\00\000%\00\000%\00\00$\00\00\00\t") + (data $198 (i32.const 9612) "<") + (data $198.1 (i32.const 9624) "\01\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n") + (data $199 (i32.const 9676) ",") + (data $199.1 (i32.const 9688) "\11\00\00\00\10\00\00\00\a0%\00\00\a0%\00\00,\00\00\00\0b") + (data $200 (i32.const 9724) "\1c") + (data $200.1 (i32.const 9736) "\02\00\00\00\02\00\00\00,") (data $201 (i32.const 9756) ",") - (data $201.1 (i32.const 9768) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data $203 (i32.const 9864) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00\10\00\00\000+\00\000+\00\00\0c\00\00\00\03") - (data $213 (i32.const 11116) ",") - (data $213.1 (i32.const 11128) "\01\00\00\00\18") - (data $213.2 (i32.const 11142) "\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff") - (data $214 (i32.const 11164) ",") - (data $214.1 (i32.const 11176) "?\00\00\00\10\00\00\00\80+\00\00\80+\00\00\18\00\00\00\03") - (data $215 (i32.const 11212) "\1c") - (data $215.1 (i32.const 11224) "\01\00\00\00\03\00\00\00\92\91\90") - (data $216 (i32.const 11244) ",") - (data $216.1 (i32.const 11256) "\10\00\00\00\10\00\00\00\e0+\00\00\e0+\00\00\03\00\00\00\03") - (data $217 (i32.const 11292) "\1c") - (data $217.1 (i32.const 11304) "\01\00\00\00\n\00\00\00\01\02\03") + (data $212.1 (i32.const 11080) "\11\00\00\00\10\00\00\00\10+\00\00\10+\00\00,\00\00\00\0b") + (data $213 (i32.const 11116) "\1c") + (data $213.1 (i32.const 11128) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $214 (i32.const 11148) ",") + (data $214.1 (i32.const 11160) "\11\00\00\00\10\00\00\00\80+\00\00\80+\00\00\0c\00\00\00\03") + (data $215 (i32.const 11196) "\1c") + (data $215.1 (i32.const 11208) "\01\00\00\00\0c\00\00\00\00\00\80@\00\00\a0@\00\00\c0@") + (data $216 (i32.const 11228) ",") + (data $216.1 (i32.const 11240) ">\00\00\00\10\00\00\00\d0+\00\00\d0+\00\00\0c\00\00\00\03") + (data $217 (i32.const 11276) ",") + (data $217.1 (i32.const 11288) "\01\00\00\00\18") + (data $217.2 (i32.const 11302) "\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff") (data $218 (i32.const 11324) ",") - (data $218.1 (i32.const 11336) "\02\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y") + (data $218.1 (i32.const 11336) "?\00\00\00\10\00\00\00 ,\00\00 ,\00\00\18\00\00\00\03") (data $219 (i32.const 11372) "\1c") - (data $219.1 (i32.const 11384) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06") - (data $220 (i32.const 11404) "\1c") - (data $220.1 (i32.const 11416) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data $221 (i32.const 11436) "\1c") - (data $221.1 (i32.const 11448) "\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data $222 (i32.const 11468) "\1c") - (data $222.1 (i32.const 11480) "\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") - (data $223 (i32.const 11500) "\1c") - (data $223.1 (i32.const 11512) "\01\00\00\00\n\00\00\00\01\02\03") - (data $224 (i32.const 11532) ",") - (data $224.1 (i32.const 11544) "\02\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y") - (data $225 (i32.const 11580) "\1c") - (data $225.1 (i32.const 11592) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06") - (data $226 (i32.const 11612) "\1c") - (data $226.1 (i32.const 11624) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data $227 (i32.const 11644) "\1c") - (data $227.1 (i32.const 11656) "\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data $228 (i32.const 11676) "\1c") - (data $228.1 (i32.const 11688) "\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") - (data $229 (i32.const 11708) "\1c") - (data $229.1 (i32.const 11720) "\01\00\00\00\n\00\00\00\01\02\03") - (data $230 (i32.const 11740) "<") - (data $230.1 (i32.const 11752) "\02\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y") + (data $219.1 (i32.const 11384) "\01\00\00\00\03\00\00\00\92\91\90") + (data $220 (i32.const 11404) ",") + (data $220.1 (i32.const 11416) "\10\00\00\00\10\00\00\00\80,\00\00\80,\00\00\03\00\00\00\03") + (data $221 (i32.const 11452) "\1c") + (data $221.1 (i32.const 11464) "\01\00\00\00\n\00\00\00\01\02\03") + (data $222 (i32.const 11484) ",") + (data $222.1 (i32.const 11496) "\02\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y") + (data $223 (i32.const 11532) "\1c") + (data $223.1 (i32.const 11544) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06") + (data $224 (i32.const 11564) "\1c") + (data $224.1 (i32.const 11576) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data $225 (i32.const 11596) "\1c") + (data $225.1 (i32.const 11608) "\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data $226 (i32.const 11628) "\1c") + (data $226.1 (i32.const 11640) "\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") + (data $227 (i32.const 11660) "\1c") + (data $227.1 (i32.const 11672) "\01\00\00\00\n\00\00\00\01\02\03") + (data $228 (i32.const 11692) ",") + (data $228.1 (i32.const 11704) "\02\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y") + (data $229 (i32.const 11740) "\1c") + (data $229.1 (i32.const 11752) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06") + (data $230 (i32.const 11772) "\1c") + (data $230.1 (i32.const 11784) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") (data $231 (i32.const 11804) "\1c") - (data $231.1 (i32.const 11816) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06") + (data $231.1 (i32.const 11816) "\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") (data $232 (i32.const 11836) "\1c") - (data $232.1 (i32.const 11848) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data $232.1 (i32.const 11848) "\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") (data $233 (i32.const 11868) "\1c") - (data $233.1 (i32.const 11880) "\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data $234 (i32.const 11900) "\1c") - (data $234.1 (i32.const 11912) "\01\00\00\00\n\00\00\00defg\ff\ff\ff") - (data $235 (i32.const 11932) ",") - (data $235.1 (i32.const 11944) "\01\00\00\00\14\00\00\00\01\00\02\00\03") - (data $236 (i32.const 11980) ",") - (data $236.1 (i32.const 11992) "\02\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y") - (data $237 (i32.const 12028) ",") - (data $237.1 (i32.const 12040) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") - (data $238 (i32.const 12076) ",") - (data $238.1 (i32.const 12088) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") - (data $239 (i32.const 12124) ",") - (data $239.1 (i32.const 12136) "\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") - (data $240 (i32.const 12172) ",") - (data $240.1 (i32.const 12184) "\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") - (data $241 (i32.const 12220) ",") - (data $241.1 (i32.const 12232) "\01\00\00\00\14\00\00\00\01\00\02\00\03") - (data $242 (i32.const 12268) ",") - (data $242.1 (i32.const 12280) "\02\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y") - (data $243 (i32.const 12316) ",") - (data $243.1 (i32.const 12328) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") - (data $244 (i32.const 12364) ",") - (data $244.1 (i32.const 12376) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") - (data $245 (i32.const 12412) ",") - (data $245.1 (i32.const 12424) "\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") - (data $246 (i32.const 12460) ",") - (data $246.1 (i32.const 12472) "\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") - (data $247 (i32.const 12508) "<") - (data $247.1 (i32.const 12520) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03") - (data $248 (i32.const 12572) ",") - (data $248.1 (i32.const 12584) "\02\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y") - (data $249 (i32.const 12620) "<") - (data $249.1 (i32.const 12632) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06") - (data $250 (i32.const 12684) "<") - (data $250.1 (i32.const 12696) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data $251 (i32.const 12748) "<") - (data $251.1 (i32.const 12760) "\01\00\00\00(\00\00\00\01\00\00\00\02") - (data $251.2 (i32.const 12788) "\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data $252 (i32.const 12812) "<") - (data $252.1 (i32.const 12824) "\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") - (data $253 (i32.const 12876) "<") - (data $253.1 (i32.const 12888) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03") - (data $254 (i32.const 12940) ",") - (data $254.1 (i32.const 12952) "\02\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y") - (data $255 (i32.const 12988) "<") - (data $255.1 (i32.const 13000) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06") - (data $256 (i32.const 13052) "<") - (data $256.1 (i32.const 13064) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data $257 (i32.const 13116) "<") - (data $257.1 (i32.const 13128) "\01\00\00\00(\00\00\00\01\00\00\00\02") - (data $257.2 (i32.const 13156) "\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data $258 (i32.const 13180) "<") - (data $258.1 (i32.const 13192) "\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") - (data $259 (i32.const 13244) "l") - (data $259.1 (i32.const 13256) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") - (data $260 (i32.const 13356) ",") - (data $260.1 (i32.const 13368) "\02\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y") - (data $261 (i32.const 13404) "l") - (data $261.1 (i32.const 13416) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") - (data $262 (i32.const 13516) "l") - (data $262.1 (i32.const 13528) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") - (data $263 (i32.const 13628) "l") - (data $263.1 (i32.const 13640) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02") - (data $263.2 (i32.const 13688) "\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") - (data $264 (i32.const 13740) "l") - (data $264.1 (i32.const 13752) "\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") - (data $265 (i32.const 13852) "l") - (data $265.1 (i32.const 13864) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") - (data $266 (i32.const 13964) ",") - (data $266.1 (i32.const 13976) "\02\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y") - (data $267 (i32.const 14012) "l") - (data $267.1 (i32.const 14024) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") - (data $268 (i32.const 14124) "l") - (data $268.1 (i32.const 14136) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") - (data $269 (i32.const 14236) "l") - (data $269.1 (i32.const 14248) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02") - (data $269.2 (i32.const 14296) "\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") - (data $270 (i32.const 14348) "l") - (data $270.1 (i32.const 14360) "\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") - (data $271 (i32.const 14460) "<") - (data $271.1 (i32.const 14472) "\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data $272 (i32.const 14524) ",") - (data $272.1 (i32.const 14536) "\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y") - (data $273 (i32.const 14572) "<") - (data $273.1 (i32.const 14584) "\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@") - (data $274 (i32.const 14636) "<") - (data $274.1 (i32.const 14648) "\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A") - (data $275 (i32.const 14700) "<") - (data $275.1 (i32.const 14712) "\01\00\00\00(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2") - (data $276 (i32.const 14764) "l") - (data $276.1 (i32.const 14776) "\01\00\00\00P") - (data $276.2 (i32.const 14790) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data $277 (i32.const 14876) ",") - (data $277.1 (i32.const 14888) "\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y") - (data $278 (i32.const 14924) "l") - (data $278.1 (i32.const 14936) "\01\00\00\00P") - (data $278.2 (i32.const 14950) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@") - (data $279 (i32.const 15036) "l") - (data $279.1 (i32.const 15048) "\01\00\00\00P") - (data $279.2 (i32.const 15062) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\1c@\00\00\00\00\00\00 @\00\00\00\00\00\00\"@") - (data $280 (i32.const 15148) "l") - (data $280.1 (i32.const 15160) "\01\00\00\00P") - (data $280.2 (i32.const 15174) "Y@\00\00\00\00\00@Y@\00\00\00\00\00\80Y@\00\00\00\00\00\c0Y@\00\00\00\00\00@\8f@\00\00\00\00\00H\8f@\00\00\00\00\00P\8f@\00\00\00\00\00\80[\c0\00\00\00\00\00\c0[\c0\00\00\00\00\00\00\\\c0") - (data $281 (i32.const 15260) "\1c") - (data $281.1 (i32.const 15272) "\01\00\00\00\n\00\00\00\00\ff\00\00\00d\n\ff\ff") - (data $282 (i32.const 15292) "\1c") - (data $282.1 (i32.const 15304) "\01\00\00\00\n\00\00\00\01\ffd\ff\00\00d\n\ff") - (data $283 (i32.const 15324) "\1c") - (data $283.1 (i32.const 15336) "F\00\00\00\08\00\00\00\91") - (data $284 (i32.const 15356) "\1c") - (data $284.1 (i32.const 15368) "F\00\00\00\08\00\00\00\92") - (data $285 (i32.const 15388) "\1c") - (data $285.1 (i32.const 15400) "G\00\00\00\08\00\00\00\93") - (data $286 (i32.const 15420) "\1c") - (data $286.1 (i32.const 15432) "G\00\00\00\08\00\00\00\94") - (data $287 (i32.const 15452) "\1c") - (data $287.1 (i32.const 15464) "G\00\00\00\08\00\00\00\95") - (data $288 (i32.const 15484) "\1c") - (data $288.1 (i32.const 15496) "G\00\00\00\08\00\00\00\96") - (data $289 (i32.const 15516) "\1c") - (data $289.1 (i32.const 15528) "H\00\00\00\08\00\00\00\97") - (data $290 (i32.const 15548) "\1c") - (data $290.1 (i32.const 15560) "H\00\00\00\08\00\00\00\98") - (data $291 (i32.const 15580) "\1c") - (data $291.1 (i32.const 15592) "I\00\00\00\08\00\00\00\99") - (data $292 (i32.const 15612) "\1c") - (data $292.1 (i32.const 15624) "I\00\00\00\08\00\00\00\9a") - (data $293 (i32.const 15644) "\1c") - (data $293.1 (i32.const 15656) "J\00\00\00\08\00\00\00\9b") - (data $294 (i32.const 15676) "\1c") - (data $294.1 (i32.const 15688) "J\00\00\00\08\00\00\00\9c") - (data $295 (i32.const 15708) "\1c") - (data $295.1 (i32.const 15720) "K\00\00\00\08\00\00\00\9d") - (data $296 (i32.const 15740) "\1c") - (data $296.1 (i32.const 15752) "K\00\00\00\08\00\00\00\9e") - (data $297 (i32.const 15772) "\1c") - (data $297.1 (i32.const 15784) "L\00\00\00\08\00\00\00\9f") - (data $298 (i32.const 15804) "\1c") - (data $298.1 (i32.const 15816) "L\00\00\00\08\00\00\00\a0") - (data $299 (i32.const 15836) "\1c") - (data $299.1 (i32.const 15848) "M\00\00\00\08\00\00\00\a1") - (data $300 (i32.const 15868) "\1c") - (data $300.1 (i32.const 15880) "M\00\00\00\08\00\00\00\a2") - (data $301 (i32.const 15900) "\1c") - (data $301.1 (i32.const 15912) "N\00\00\00\08\00\00\00\a3") - (data $302 (i32.const 15932) "\1c") - (data $302.1 (i32.const 15944) "N\00\00\00\08\00\00\00\a4") - (data $303 (i32.const 15964) "\1c") - (data $303.1 (i32.const 15976) "\0f\00\00\00\08\00\00\00\a5") - (data $304 (i32.const 16000) "O\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00\00\00\00\00B\08\00\00\02\t") - (data $304.1 (i32.const 16252) "\02\19\00\00\02\1a\00\00B\00\00\00\82\08\00\00\82\00\00\00\02\01\00\00\02\n\00\00\02\02") + (data $233.1 (i32.const 11880) "\01\00\00\00\n\00\00\00\01\02\03") + (data $234 (i32.const 11900) "<") + (data $234.1 (i32.const 11912) "\02\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y") + (data $235 (i32.const 11964) "\1c") + (data $235.1 (i32.const 11976) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06") + (data $236 (i32.const 11996) "\1c") + (data $236.1 (i32.const 12008) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data $237 (i32.const 12028) "\1c") + (data $237.1 (i32.const 12040) "\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data $238 (i32.const 12060) "\1c") + (data $238.1 (i32.const 12072) "\01\00\00\00\n\00\00\00defg\ff\ff\ff") + (data $239 (i32.const 12092) ",") + (data $239.1 (i32.const 12104) "\01\00\00\00\14\00\00\00\01\00\02\00\03") + (data $240 (i32.const 12140) ",") + (data $240.1 (i32.const 12152) "\02\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y") + (data $241 (i32.const 12188) ",") + (data $241.1 (i32.const 12200) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") + (data $242 (i32.const 12236) ",") + (data $242.1 (i32.const 12248) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") + (data $243 (i32.const 12284) ",") + (data $243.1 (i32.const 12296) "\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") + (data $244 (i32.const 12332) ",") + (data $244.1 (i32.const 12344) "\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") + (data $245 (i32.const 12380) ",") + (data $245.1 (i32.const 12392) "\01\00\00\00\14\00\00\00\01\00\02\00\03") + (data $246 (i32.const 12428) ",") + (data $246.1 (i32.const 12440) "\02\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y") + (data $247 (i32.const 12476) ",") + (data $247.1 (i32.const 12488) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") + (data $248 (i32.const 12524) ",") + (data $248.1 (i32.const 12536) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") + (data $249 (i32.const 12572) ",") + (data $249.1 (i32.const 12584) "\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") + (data $250 (i32.const 12620) ",") + (data $250.1 (i32.const 12632) "\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") + (data $251 (i32.const 12668) "<") + (data $251.1 (i32.const 12680) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03") + (data $252 (i32.const 12732) ",") + (data $252.1 (i32.const 12744) "\02\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y") + (data $253 (i32.const 12780) "<") + (data $253.1 (i32.const 12792) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06") + (data $254 (i32.const 12844) "<") + (data $254.1 (i32.const 12856) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data $255 (i32.const 12908) "<") + (data $255.1 (i32.const 12920) "\01\00\00\00(\00\00\00\01\00\00\00\02") + (data $255.2 (i32.const 12948) "\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data $256 (i32.const 12972) "<") + (data $256.1 (i32.const 12984) "\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") + (data $257 (i32.const 13036) "<") + (data $257.1 (i32.const 13048) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03") + (data $258 (i32.const 13100) ",") + (data $258.1 (i32.const 13112) "\02\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y") + (data $259 (i32.const 13148) "<") + (data $259.1 (i32.const 13160) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06") + (data $260 (i32.const 13212) "<") + (data $260.1 (i32.const 13224) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data $261 (i32.const 13276) "<") + (data $261.1 (i32.const 13288) "\01\00\00\00(\00\00\00\01\00\00\00\02") + (data $261.2 (i32.const 13316) "\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data $262 (i32.const 13340) "<") + (data $262.1 (i32.const 13352) "\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") + (data $263 (i32.const 13404) "l") + (data $263.1 (i32.const 13416) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") + (data $264 (i32.const 13516) ",") + (data $264.1 (i32.const 13528) "\02\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y") + (data $265 (i32.const 13564) "l") + (data $265.1 (i32.const 13576) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") + (data $266 (i32.const 13676) "l") + (data $266.1 (i32.const 13688) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data $267 (i32.const 13788) "l") + (data $267.1 (i32.const 13800) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02") + (data $267.2 (i32.const 13848) "\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data $268 (i32.const 13900) "l") + (data $268.1 (i32.const 13912) "\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") + (data $269 (i32.const 14012) "l") + (data $269.1 (i32.const 14024) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") + (data $270 (i32.const 14124) ",") + (data $270.1 (i32.const 14136) "\02\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y") + (data $271 (i32.const 14172) "l") + (data $271.1 (i32.const 14184) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") + (data $272 (i32.const 14284) "l") + (data $272.1 (i32.const 14296) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data $273 (i32.const 14396) "l") + (data $273.1 (i32.const 14408) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02") + (data $273.2 (i32.const 14456) "\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data $274 (i32.const 14508) "l") + (data $274.1 (i32.const 14520) "\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") + (data $275 (i32.const 14620) "<") + (data $275.1 (i32.const 14632) "\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data $276 (i32.const 14684) ",") + (data $276.1 (i32.const 14696) "\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y") + (data $277 (i32.const 14732) "<") + (data $277.1 (i32.const 14744) "\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@") + (data $278 (i32.const 14796) "<") + (data $278.1 (i32.const 14808) "\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A") + (data $279 (i32.const 14860) "<") + (data $279.1 (i32.const 14872) "\01\00\00\00(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2") + (data $280 (i32.const 14924) "l") + (data $280.1 (i32.const 14936) "\01\00\00\00P") + (data $280.2 (i32.const 14950) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") + (data $281 (i32.const 15036) ",") + (data $281.1 (i32.const 15048) "\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y") + (data $282 (i32.const 15084) "l") + (data $282.1 (i32.const 15096) "\01\00\00\00P") + (data $282.2 (i32.const 15110) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@") + (data $283 (i32.const 15196) "l") + (data $283.1 (i32.const 15208) "\01\00\00\00P") + (data $283.2 (i32.const 15222) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\1c@\00\00\00\00\00\00 @\00\00\00\00\00\00\"@") + (data $284 (i32.const 15308) "l") + (data $284.1 (i32.const 15320) "\01\00\00\00P") + (data $284.2 (i32.const 15334) "Y@\00\00\00\00\00@Y@\00\00\00\00\00\80Y@\00\00\00\00\00\c0Y@\00\00\00\00\00@\8f@\00\00\00\00\00H\8f@\00\00\00\00\00P\8f@\00\00\00\00\00\80[\c0\00\00\00\00\00\c0[\c0\00\00\00\00\00\00\\\c0") + (data $285 (i32.const 15420) "\1c") + (data $285.1 (i32.const 15432) "\01\00\00\00\n\00\00\00\00\ff\00\00\00d\n\ff\ff") + (data $286 (i32.const 15452) "\1c") + (data $286.1 (i32.const 15464) "\01\00\00\00\n\00\00\00\01\ffd\ff\00\00d\n\ff") + (data $287 (i32.const 15484) "\1c") + (data $287.1 (i32.const 15496) "F\00\00\00\08\00\00\00\91") + (data $288 (i32.const 15516) "\1c") + (data $288.1 (i32.const 15528) "F\00\00\00\08\00\00\00\92") + (data $289 (i32.const 15548) "\1c") + (data $289.1 (i32.const 15560) "G\00\00\00\08\00\00\00\93") + (data $290 (i32.const 15580) "\1c") + (data $290.1 (i32.const 15592) "G\00\00\00\08\00\00\00\94") + (data $291 (i32.const 15612) "\1c") + (data $291.1 (i32.const 15624) "G\00\00\00\08\00\00\00\95") + (data $292 (i32.const 15644) "\1c") + (data $292.1 (i32.const 15656) "G\00\00\00\08\00\00\00\96") + (data $293 (i32.const 15676) "\1c") + (data $293.1 (i32.const 15688) "H\00\00\00\08\00\00\00\97") + (data $294 (i32.const 15708) "\1c") + (data $294.1 (i32.const 15720) "H\00\00\00\08\00\00\00\98") + (data $295 (i32.const 15740) "\1c") + (data $295.1 (i32.const 15752) "I\00\00\00\08\00\00\00\99") + (data $296 (i32.const 15772) "\1c") + (data $296.1 (i32.const 15784) "I\00\00\00\08\00\00\00\9a") + (data $297 (i32.const 15804) "\1c") + (data $297.1 (i32.const 15816) "J\00\00\00\08\00\00\00\9b") + (data $298 (i32.const 15836) "\1c") + (data $298.1 (i32.const 15848) "J\00\00\00\08\00\00\00\9c") + (data $299 (i32.const 15868) "\1c") + (data $299.1 (i32.const 15880) "K\00\00\00\08\00\00\00\9d") + (data $300 (i32.const 15900) "\1c") + (data $300.1 (i32.const 15912) "K\00\00\00\08\00\00\00\9e") + (data $301 (i32.const 15932) "\1c") + (data $301.1 (i32.const 15944) "L\00\00\00\08\00\00\00\9f") + (data $302 (i32.const 15964) "\1c") + (data $302.1 (i32.const 15976) "L\00\00\00\08\00\00\00\a0") + (data $303 (i32.const 15996) "\1c") + (data $303.1 (i32.const 16008) "M\00\00\00\08\00\00\00\a1") + (data $304 (i32.const 16028) "\1c") + (data $304.1 (i32.const 16040) "M\00\00\00\08\00\00\00\a2") + (data $305 (i32.const 16060) "\1c") + (data $305.1 (i32.const 16072) "N\00\00\00\08\00\00\00\a3") + (data $306 (i32.const 16092) "\1c") + (data $306.1 (i32.const 16104) "N\00\00\00\08\00\00\00\a4") + (data $307 (i32.const 16124) "\1c") + (data $307.1 (i32.const 16136) "\0f\00\00\00\08\00\00\00\a5") + (data $308 (i32.const 16160) "O\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00\00\00\00\00B\08\00\00\02\t") + (data $308.1 (i32.const 16412) "\02\19\00\00\02\1a\00\00B\00\00\00\82\08\00\00\82\00\00\00\02\01\00\00\02\n\00\00\02\02") (table $0 166 166 funcref) (elem $0 (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0") (export "memory" (memory $0)) @@ -679,31 +686,31 @@ (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 7152 + i32.const 9120 call $~lib/rt/itcms/__visit - i32.const 7616 + i32.const 9584 call $~lib/rt/itcms/__visit - i32.const 7728 + i32.const 9696 call $~lib/rt/itcms/__visit - i32.const 10928 + i32.const 11088 call $~lib/rt/itcms/__visit - i32.const 11008 + i32.const 11168 call $~lib/rt/itcms/__visit - i32.const 11088 + i32.const 11248 call $~lib/rt/itcms/__visit - i32.const 11184 + i32.const 11344 call $~lib/rt/itcms/__visit - i32.const 11264 + i32.const 11424 call $~lib/rt/itcms/__visit - i32.const 1360 + i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3424 call $~lib/rt/itcms/__visit - i32.const 1168 + i32.const 1152 call $~lib/rt/itcms/__visit - i32.const 8432 + i32.const 2208 call $~lib/rt/itcms/__visit - i32.const 9488 + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -724,7 +731,7 @@ i32.ne if i32.const 0 - i32.const 1232 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -757,7 +764,7 @@ i32.eqz if i32.const 0 - i32.const 1232 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -766,7 +773,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$1403 + block $__inlined_func$~lib/rt/itcms/Object#unlink$1410 local.get $0 i32.load offset=4 i32.const -4 @@ -778,19 +785,19 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 49088 + i32.const 49248 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1232 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$1403 + br $__inlined_func$~lib/rt/itcms/Object#unlink$1410 end local.get $0 i32.load offset=8 @@ -798,7 +805,7 @@ i32.eqz if i32.const 0 - i32.const 1232 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -827,12 +834,12 @@ i32.const 1 else local.get $1 - i32.const 16000 + i32.const 16160 i32.load i32.gt_u if - i32.const 1360 - i32.const 1424 + i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -841,7 +848,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 16004 + i32.const 16164 i32.add i32.load i32.const 32 @@ -912,7 +919,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -926,7 +933,7 @@ i32.lt_u if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -972,7 +979,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -1055,7 +1062,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -1069,7 +1076,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -1130,7 +1137,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -1163,7 +1170,7 @@ i32.lt_u if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -1178,7 +1185,7 @@ i32.ne if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -1229,7 +1236,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1301,7 +1308,7 @@ i64.lt_u if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1326,7 +1333,7 @@ i32.gt_u if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1353,7 +1360,7 @@ i32.gt_u if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1425,10 +1432,10 @@ if unreachable end - i32.const 49088 + i32.const 49248 i32.const 0 i32.store - i32.const 50656 + i32.const 50816 i32.const 0 i32.store loop $for-loop|0 @@ -1439,7 +1446,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 49088 + i32.const 49248 i32.add i32.const 0 i32.store offset=4 @@ -1457,7 +1464,7 @@ i32.add i32.const 2 i32.shl - i32.const 49088 + i32.const 49248 i32.add i32.const 0 i32.store offset=96 @@ -1475,21 +1482,21 @@ br $for-loop|0 end end - i32.const 49088 - i32.const 50660 + i32.const 49248 + i32.const 50820 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 49088 + i32.const 49248 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 - i32.const 49088 + i32.const 49248 i32.lt_u if return @@ -1520,7 +1527,7 @@ end if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1617,7 +1624,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 49088 + i32.const 49248 i32.lt_u if local.get $0 @@ -1706,14 +1713,14 @@ i32.ne if i32.const 0 - i32.const 1232 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 49088 + i32.const 49248 i32.lt_u if local.get $0 @@ -1805,7 +1812,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1857,7 +1864,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1887,8 +1894,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1168 - i32.const 1504 + i32.const 1152 + i32.const 1488 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1990,7 +1997,7 @@ i32.eqz if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2005,7 +2012,7 @@ i32.gt_u if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2024,7 +2031,7 @@ i32.and if i32.const 0 - i32.const 1504 + i32.const 1488 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2091,8 +2098,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1168 - i32.const 1232 + i32.const 1152 + i32.const 1216 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2102,7 +2109,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$68 + block $__inlined_func$~lib/rt/itcms/interrupt$69 i32.const 2048 local.set $2 loop $do-loop|0 @@ -2123,7 +2130,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$68 + br $__inlined_func$~lib/rt/itcms/interrupt$69 end local.get $2 i32.const 0 @@ -2199,6 +2206,110 @@ memory.fill local.get $1 ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) local.get $1 i32.eqz @@ -2209,7 +2320,7 @@ i32.eqz if i32.const 0 - i32.const 1232 + i32.const 1216 i32.const 295 i32.const 14 call $~lib/builtins/abort @@ -3266,110 +3377,6 @@ f64.const 0 f64.eq ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 8012 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 8012 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 8012 - i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 8012 - i32.add - i32.load - i32.store - else - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 - end - ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -3860,7 +3867,7 @@ i32.div_u i32.const 2 i32.shl - i32.const 8012 + i32.const 1788 i32.add i64.load32_u local.get $4 @@ -3868,7 +3875,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 8012 + i32.const 1788 i32.add i64.load32_u i64.const 32 @@ -3891,7 +3898,7 @@ i32.div_u i32.const 2 i32.shl - i32.const 8012 + i32.const 1788 i32.add i64.load32_u local.get $3 @@ -3899,7 +3906,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 8012 + i32.const 1788 i32.add i64.load32_u i64.const 32 @@ -4443,7 +4450,7 @@ local.get $7 i32.const 2 i32.shl - i32.const 10736 + i32.const 10896 i32.add i64.load32_u local.get $2 @@ -4566,7 +4573,7 @@ i32.sub i32.const 2 i32.shl - i32.const 10736 + i32.const 10896 i32.add i64.load32_u i64.mul @@ -5108,14 +5115,14 @@ i32.sub global.set $~lib/util/number/_K local.get $5 - i32.const 9864 + i32.const 10024 i32.add i64.load global.set $~lib/util/number/_frc_pow local.get $2 i32.const 1 i32.shl - i32.const 10560 + i32.const 10720 i32.add i32.load16_s global.set $~lib/util/number/_exp_pow @@ -9329,89 +9336,208 @@ f64.gt i32.sub ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - return - end - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit + (func $~start + call $start:std/typedarray + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$1415 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - return + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$1415 end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 local.get $0 - i32.load - call $~lib/rt/itcms/__visit + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load - call $~lib/rt/itcms/__visit return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~start - call $start:std/typedarray + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16480 + i32.lt_s + if + i32.const 49280 + i32.const 49328 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/util/number/utoa32 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/util/number/utoa32 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -9419,11 +9545,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9472,8 +9598,8 @@ i32.shr_u i32.gt_u if - i32.const 1056 - i32.const 1104 + i32.const 3424 + i32.const 3472 i32.const 19 i32.const 57 call $~lib/builtins/abort @@ -9525,11 +9651,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9567,11 +9693,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9602,11 +9728,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9632,11 +9758,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9674,11 +9800,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9716,11 +9842,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9757,11 +9883,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9789,11 +9915,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9831,11 +9957,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9872,11 +9998,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9904,11 +10030,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9946,11 +10072,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9987,11 +10113,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10019,11 +10145,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10061,11 +10187,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10103,11 +10229,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10145,11 +10271,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10171,7 +10297,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 32 i32.const 3 call $~lib/builtins/abort @@ -10186,7 +10312,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -10201,7 +10327,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 34 i32.const 3 call $~lib/builtins/abort @@ -10219,7 +10345,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -10234,7 +10360,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 38 i32.const 3 call $~lib/builtins/abort @@ -10249,7 +10375,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 39 i32.const 3 call $~lib/builtins/abort @@ -10267,7 +10393,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -10282,7 +10408,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -10297,7 +10423,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -10315,7 +10441,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 47 i32.const 3 call $~lib/builtins/abort @@ -10332,7 +10458,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 48 i32.const 3 call $~lib/builtins/abort @@ -10347,7 +10473,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -10365,7 +10491,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 52 i32.const 3 call $~lib/builtins/abort @@ -10382,7 +10508,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 53 i32.const 3 call $~lib/builtins/abort @@ -10397,7 +10523,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 54 i32.const 3 call $~lib/builtins/abort @@ -10415,7 +10541,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 57 i32.const 3 call $~lib/builtins/abort @@ -10432,7 +10558,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 58 i32.const 3 call $~lib/builtins/abort @@ -10447,7 +10573,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 59 i32.const 3 call $~lib/builtins/abort @@ -10465,7 +10591,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 62 i32.const 3 call $~lib/builtins/abort @@ -10482,7 +10608,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -10497,7 +10623,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -10515,7 +10641,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -10532,7 +10658,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -10547,7 +10673,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 69 i32.const 3 call $~lib/builtins/abort @@ -10565,7 +10691,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 72 i32.const 3 call $~lib/builtins/abort @@ -10582,7 +10708,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 73 i32.const 3 call $~lib/builtins/abort @@ -10597,7 +10723,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 74 i32.const 3 call $~lib/builtins/abort @@ -10615,7 +10741,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 77 i32.const 3 call $~lib/builtins/abort @@ -10632,7 +10758,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 78 i32.const 3 call $~lib/builtins/abort @@ -10647,7 +10773,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 79 i32.const 3 call $~lib/builtins/abort @@ -10665,7 +10791,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 82 i32.const 3 call $~lib/builtins/abort @@ -10682,7 +10808,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -10697,7 +10823,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -10714,11 +10840,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10737,8 +10863,8 @@ i32.shr_u i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 747 i32.const 64 call $~lib/builtins/abort @@ -10766,11 +10892,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10789,8 +10915,8 @@ i32.shr_u i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 736 i32.const 64 call $~lib/builtins/abort @@ -10820,11 +10946,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10939,11 +11065,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10962,8 +11088,8 @@ i32.shr_u i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1457 i32.const 64 call $~lib/builtins/abort @@ -10994,11 +11120,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11129,11 +11255,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11551,11 +11677,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11592,11 +11718,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11616,10 +11742,10 @@ end unreachable end - i32.const 1696 + i32.const 3664 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 1696 + i32.const 3664 i32.store end global.get $~lib/memory/__stack_pointer @@ -11643,11 +11769,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11666,8 +11792,8 @@ i32.shr_u i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1446 i32.const 64 call $~lib/builtins/abort @@ -11694,11 +11820,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11715,8 +11841,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 320 i32.const 45 call $~lib/builtins/abort @@ -11754,11 +11880,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11775,8 +11901,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 309 i32.const 45 call $~lib/builtins/abort @@ -11801,11 +11927,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11822,8 +11948,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 36 i32.const 45 call $~lib/builtins/abort @@ -11850,11 +11976,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11924,11 +12050,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11953,11 +12079,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11974,8 +12100,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 25 i32.const 45 call $~lib/builtins/abort @@ -12006,7 +12132,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -12052,7 +12178,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -12066,8 +12192,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1360 - i32.const 1760 + i32.const 1344 + i32.const 3728 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -12102,8 +12228,8 @@ i32.const 1 return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12122,11 +12248,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12174,11 +12300,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12290,11 +12416,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12342,7 +12468,7 @@ i32.lt_s select local.set $0 - block $__inlined_func$~lib/util/bytes/FILL$202 + block $__inlined_func$~lib/util/bytes/FILL$191 local.get $1 i32.eqz local.get $1 @@ -12367,7 +12493,7 @@ i32.shl memory.fill end - br $__inlined_func$~lib/util/bytes/FILL$202 + br $__inlined_func$~lib/util/bytes/FILL$191 end loop $for-loop|0 local.get $0 @@ -12400,11 +12526,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12421,8 +12547,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1360 - i32.const 1760 + i32.const 1344 + i32.const 3728 i32.const 114 i32.const 42 call $~lib/builtins/abort @@ -12452,11 +12578,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12534,11 +12660,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12585,11 +12711,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12697,11 +12823,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12741,11 +12867,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12875,11 +13001,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12920,11 +13046,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -12941,8 +13067,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 178 i32.const 45 call $~lib/builtins/abort @@ -12973,11 +13099,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13049,11 +13175,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13072,8 +13198,8 @@ i32.shr_u i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 463 i32.const 64 call $~lib/builtins/abort @@ -13101,11 +13227,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13124,8 +13250,8 @@ i32.shr_u i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 605 i32.const 64 call $~lib/builtins/abort @@ -13153,11 +13279,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13176,8 +13302,8 @@ i32.shr_u i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 889 i32.const 64 call $~lib/builtins/abort @@ -13205,11 +13331,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13228,8 +13354,8 @@ i32.shr_u i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1031 i32.const 64 call $~lib/builtins/abort @@ -13257,11 +13383,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13280,8 +13406,8 @@ i32.shr_u i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1173 i32.const 64 call $~lib/builtins/abort @@ -13309,11 +13435,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13332,8 +13458,8 @@ i32.shr_u i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1315 i32.const 64 call $~lib/builtins/abort @@ -13362,11 +13488,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13392,8 +13518,8 @@ local.get $2 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 48 i32.const 33 call $~lib/builtins/abort @@ -13419,11 +13545,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13449,8 +13575,8 @@ local.get $2 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 190 i32.const 33 call $~lib/builtins/abort @@ -13476,11 +13602,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13506,8 +13632,8 @@ local.get $2 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 332 i32.const 33 call $~lib/builtins/abort @@ -13533,11 +13659,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13565,8 +13691,8 @@ local.get $2 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 475 i32.const 33 call $~lib/builtins/abort @@ -13594,11 +13720,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13626,8 +13752,8 @@ local.get $2 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 617 i32.const 33 call $~lib/builtins/abort @@ -13655,11 +13781,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13687,8 +13813,8 @@ local.get $2 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 759 i32.const 33 call $~lib/builtins/abort @@ -13716,11 +13842,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13748,8 +13874,8 @@ local.get $2 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 901 i32.const 33 call $~lib/builtins/abort @@ -13778,11 +13904,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13810,8 +13936,8 @@ local.get $2 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1043 i32.const 33 call $~lib/builtins/abort @@ -13840,11 +13966,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13872,8 +13998,8 @@ local.get $2 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1185 i32.const 33 call $~lib/builtins/abort @@ -13902,11 +14028,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13934,8 +14060,8 @@ local.get $2 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1327 i32.const 33 call $~lib/builtins/abort @@ -13964,11 +14090,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13996,8 +14122,8 @@ local.get $2 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1469 i32.const 33 call $~lib/builtins/abort @@ -14028,11 +14154,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14115,7 +14241,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -14155,14 +14281,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3600 + i32.const 5568 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -14173,7 +14299,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3600 + i32.const 5568 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 @@ -14220,7 +14346,7 @@ local.get $7 local.get $2 local.get $0 - i32.const 3600 + i32.const 5568 i32.load call_indirect (type $1) i32.store8 @@ -14259,7 +14385,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -14275,7 +14401,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -14291,7 +14417,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -14303,8 +14429,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14316,11 +14442,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14337,8 +14463,8 @@ i32.load offset=8 i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 167 i32.const 45 call $~lib/builtins/abort @@ -14372,7 +14498,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -14412,14 +14538,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3632 + i32.const 5600 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -14430,7 +14556,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3632 + i32.const 5600 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 @@ -14477,7 +14603,7 @@ local.get $7 local.get $2 local.get $0 - i32.const 3632 + i32.const 5600 i32.load call_indirect (type $1) i32.store8 @@ -14516,7 +14642,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -14532,7 +14658,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -14548,7 +14674,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -14560,8 +14686,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14582,7 +14708,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -14622,14 +14748,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3664 + i32.const 5632 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -14640,7 +14766,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3664 + i32.const 5632 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 @@ -14687,7 +14813,7 @@ local.get $7 local.get $2 local.get $0 - i32.const 3664 + i32.const 5632 i32.load call_indirect (type $1) i32.store8 @@ -14726,7 +14852,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -14742,7 +14868,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -14758,7 +14884,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -14770,8 +14896,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14783,11 +14909,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -14806,8 +14932,8 @@ i32.shr_u i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 452 i32.const 64 call $~lib/builtins/abort @@ -14845,7 +14971,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -14885,14 +15011,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3696 + i32.const 5664 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -14903,7 +15029,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3696 + i32.const 5664 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 @@ -14956,7 +15082,7 @@ local.get $9 local.get $3 local.get $0 - i32.const 3696 + i32.const 5664 i32.load call_indirect (type $1) i32.store16 @@ -14995,7 +15121,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -15011,7 +15137,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -15027,7 +15153,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -15039,8 +15165,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15052,11 +15178,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15075,8 +15201,8 @@ i32.shr_u i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 594 i32.const 64 call $~lib/builtins/abort @@ -15114,7 +15240,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -15154,14 +15280,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3728 + i32.const 5696 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -15172,7 +15298,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3728 + i32.const 5696 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 @@ -15225,7 +15351,7 @@ local.get $9 local.get $3 local.get $0 - i32.const 3728 + i32.const 5696 i32.load call_indirect (type $1) i32.store16 @@ -15264,7 +15390,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -15280,7 +15406,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -15296,7 +15422,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -15308,8 +15434,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15332,7 +15458,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -15372,14 +15498,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3760 + i32.const 5728 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -15390,7 +15516,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3760 + i32.const 5728 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 @@ -15443,7 +15569,7 @@ local.get $9 local.get $3 local.get $0 - i32.const 3760 + i32.const 5728 i32.load call_indirect (type $1) i32.store @@ -15482,7 +15608,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -15498,7 +15624,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -15514,7 +15640,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -15526,8 +15652,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15539,11 +15665,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15562,8 +15688,8 @@ i32.shr_u i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 878 i32.const 64 call $~lib/builtins/abort @@ -15601,7 +15727,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -15641,14 +15767,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3792 + i32.const 5760 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -15659,7 +15785,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3792 + i32.const 5760 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 @@ -15712,7 +15838,7 @@ local.get $9 local.get $3 local.get $0 - i32.const 3792 + i32.const 5760 i32.load call_indirect (type $1) i32.store @@ -15751,7 +15877,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -15767,7 +15893,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -15783,7 +15909,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -15795,8 +15921,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15809,11 +15935,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -15832,8 +15958,8 @@ i32.shr_u i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1020 i32.const 64 call $~lib/builtins/abort @@ -15871,7 +15997,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -15911,14 +16037,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3824 + i32.const 5792 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -15929,7 +16055,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3824 + i32.const 5792 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 @@ -15982,9 +16108,9 @@ local.get $9 local.get $3 local.get $0 - i32.const 3824 + i32.const 5792 i32.load - call_indirect (type $24) + call_indirect (type $23) i64.store local.get $3 i32.const 1 @@ -16021,7 +16147,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -16037,7 +16163,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -16053,7 +16179,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -16065,8 +16191,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16079,11 +16205,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16102,8 +16228,8 @@ i32.shr_u i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1162 i32.const 64 call $~lib/builtins/abort @@ -16141,7 +16267,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -16181,14 +16307,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3856 + i32.const 5824 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -16199,7 +16325,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3856 + i32.const 5824 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 @@ -16252,9 +16378,9 @@ local.get $9 local.get $3 local.get $0 - i32.const 3856 + i32.const 5824 i32.load - call_indirect (type $24) + call_indirect (type $23) i64.store local.get $3 i32.const 1 @@ -16291,7 +16417,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -16307,7 +16433,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -16323,7 +16449,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -16335,8 +16461,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16349,11 +16475,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16372,8 +16498,8 @@ i32.shr_u i32.ge_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1304 i32.const 64 call $~lib/builtins/abort @@ -16411,7 +16537,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -16451,14 +16577,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3888 + i32.const 5856 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -16469,7 +16595,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3888 + i32.const 5856 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 @@ -16522,7 +16648,7 @@ local.get $9 local.get $3 local.get $0 - i32.const 3888 + i32.const 5856 i32.load call_indirect (type $29) f32.store @@ -16561,7 +16687,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -16577,7 +16703,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -16593,7 +16719,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -16605,8 +16731,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16629,7 +16755,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -16669,14 +16795,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3920 + i32.const 5888 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -16687,7 +16813,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3920 + i32.const 5888 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 @@ -16740,7 +16866,7 @@ local.get $9 local.get $3 local.get $0 - i32.const 3920 + i32.const 5888 i32.load call_indirect (type $30) f64.store @@ -16779,7 +16905,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 388 i32.const 3 call $~lib/builtins/abort @@ -16795,7 +16921,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -16811,7 +16937,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -16823,8 +16949,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -16846,7 +16972,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -16900,14 +17026,14 @@ local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3952 + i32.const 5920 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -16918,7 +17044,7 @@ local.get $8 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3952 + i32.const 5920 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $8 @@ -16962,7 +17088,7 @@ local.get $5 local.get $2 local.get $8 - i32.const 3952 + i32.const 5920 i32.load call_indirect (type $1) if @@ -17011,7 +17137,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -17026,7 +17152,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -17042,7 +17168,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -17058,7 +17184,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -17074,7 +17200,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -17086,8 +17212,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17109,7 +17235,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -17163,14 +17289,14 @@ local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3984 + i32.const 5952 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -17181,7 +17307,7 @@ local.get $8 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3984 + i32.const 5952 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $8 @@ -17225,7 +17351,7 @@ local.get $5 local.get $2 local.get $8 - i32.const 3984 + i32.const 5952 i32.load call_indirect (type $1) if @@ -17274,7 +17400,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -17289,7 +17415,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -17305,7 +17431,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -17321,7 +17447,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -17337,7 +17463,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -17349,8 +17475,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17372,7 +17498,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -17426,14 +17552,14 @@ local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4016 + i32.const 5984 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -17444,7 +17570,7 @@ local.get $8 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4016 + i32.const 5984 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $8 @@ -17488,7 +17614,7 @@ local.get $5 local.get $2 local.get $8 - i32.const 4016 + i32.const 5984 i32.load call_indirect (type $1) if @@ -17537,7 +17663,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -17552,7 +17678,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -17568,7 +17694,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -17584,7 +17710,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -17600,7 +17726,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -17612,8 +17738,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17635,7 +17761,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -17689,14 +17815,14 @@ local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4048 + i32.const 6016 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -17707,7 +17833,7 @@ local.get $8 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4048 + i32.const 6016 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $8 @@ -17755,7 +17881,7 @@ local.get $5 local.get $2 local.get $8 - i32.const 4048 + i32.const 6016 i32.load call_indirect (type $1) if @@ -17809,7 +17935,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -17824,7 +17950,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -17840,7 +17966,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -17856,7 +17982,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -17872,7 +17998,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -17884,8 +18010,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17907,7 +18033,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -17961,14 +18087,14 @@ local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4080 + i32.const 6048 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -17979,7 +18105,7 @@ local.get $8 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4080 + i32.const 6048 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $8 @@ -18027,7 +18153,7 @@ local.get $5 local.get $2 local.get $8 - i32.const 4080 + i32.const 6048 i32.load call_indirect (type $1) if @@ -18081,7 +18207,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -18096,7 +18222,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -18112,7 +18238,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -18128,7 +18254,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -18144,7 +18270,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -18156,8 +18282,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18179,7 +18305,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -18233,14 +18359,14 @@ local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4112 + i32.const 6080 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -18251,7 +18377,7 @@ local.get $8 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4112 + i32.const 6080 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $8 @@ -18299,7 +18425,7 @@ local.get $5 local.get $2 local.get $8 - i32.const 4112 + i32.const 6080 i32.load call_indirect (type $1) if @@ -18353,7 +18479,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -18368,7 +18494,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -18384,7 +18510,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -18400,7 +18526,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -18416,7 +18542,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -18428,8 +18554,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18451,7 +18577,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -18505,14 +18631,14 @@ local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4144 + i32.const 6112 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -18523,7 +18649,7 @@ local.get $8 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4144 + i32.const 6112 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $8 @@ -18571,7 +18697,7 @@ local.get $5 local.get $2 local.get $8 - i32.const 4144 + i32.const 6112 i32.load call_indirect (type $1) if @@ -18625,7 +18751,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -18640,7 +18766,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -18656,7 +18782,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -18672,7 +18798,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -18688,7 +18814,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -18700,8 +18826,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18723,7 +18849,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -18777,14 +18903,14 @@ local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4176 + i32.const 6144 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -18795,7 +18921,7 @@ local.get $8 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4176 + i32.const 6144 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $8 @@ -18843,7 +18969,7 @@ local.get $5 local.get $2 local.get $8 - i32.const 4176 + i32.const 6144 i32.load call_indirect (type $8) if @@ -18897,7 +19023,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -18912,7 +19038,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -18928,7 +19054,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -18944,7 +19070,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -18960,7 +19086,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -18972,8 +19098,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -18995,7 +19121,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -19049,14 +19175,14 @@ local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4208 + i32.const 6176 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -19067,7 +19193,7 @@ local.get $8 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4208 + i32.const 6176 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $8 @@ -19115,7 +19241,7 @@ local.get $5 local.get $2 local.get $8 - i32.const 4208 + i32.const 6176 i32.load call_indirect (type $8) if @@ -19169,7 +19295,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -19184,7 +19310,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -19200,7 +19326,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -19216,7 +19342,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -19232,7 +19358,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -19244,8 +19370,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19267,7 +19393,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -19321,14 +19447,14 @@ local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4240 + i32.const 6208 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -19339,7 +19465,7 @@ local.get $8 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4240 + i32.const 6208 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $8 @@ -19387,7 +19513,7 @@ local.get $5 local.get $2 local.get $8 - i32.const 4240 + i32.const 6208 i32.load call_indirect (type $14) if @@ -19441,7 +19567,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -19456,7 +19582,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -19472,7 +19598,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -19488,7 +19614,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -19504,7 +19630,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -19516,8 +19642,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19539,7 +19665,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -19593,14 +19719,14 @@ local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4272 + i32.const 6240 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -19611,7 +19737,7 @@ local.get $8 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4272 + i32.const 6240 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $8 @@ -19659,7 +19785,7 @@ local.get $5 local.get $2 local.get $8 - i32.const 4272 + i32.const 6240 i32.load call_indirect (type $15) if @@ -19713,7 +19839,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 413 i32.const 3 call $~lib/builtins/abort @@ -19728,7 +19854,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 414 i32.const 3 call $~lib/builtins/abort @@ -19744,7 +19870,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 415 i32.const 3 call $~lib/builtins/abort @@ -19760,7 +19886,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 416 i32.const 3 call $~lib/builtins/abort @@ -19776,7 +19902,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 417 i32.const 3 call $~lib/builtins/abort @@ -19788,8 +19914,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19805,11 +19931,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19888,11 +20014,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -19971,11 +20097,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20056,11 +20182,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20141,11 +20267,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20226,11 +20352,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20311,11 +20437,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20396,11 +20522,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20481,11 +20607,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20566,11 +20692,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20651,11 +20777,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20732,11 +20858,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20813,11 +20939,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20896,11 +21022,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -20979,11 +21105,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21062,11 +21188,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21145,11 +21271,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21228,11 +21354,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21311,11 +21437,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21394,11 +21520,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21476,11 +21602,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21558,11 +21684,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21640,11 +21766,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21724,11 +21850,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21808,11 +21934,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21892,11 +22018,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -21976,11 +22102,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22060,11 +22186,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22144,11 +22270,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22228,11 +22354,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22313,11 +22439,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22397,11 +22523,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22481,11 +22607,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22567,11 +22693,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22653,11 +22779,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22739,11 +22865,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22825,11 +22951,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22911,11 +23037,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22997,11 +23123,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23083,11 +23209,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23165,11 +23291,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23179,12 +23305,12 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store local.get $0 i32.const 255 i32.and - i32.const 7152 + i32.const 9120 local.get $1 call $~lib/array/Array#__get i32.const 255 @@ -23192,7 +23318,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 536 i32.const 5 call $~lib/builtins/abort @@ -23203,7 +23329,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 537 i32.const 5 call $~lib/builtins/abort @@ -23214,7 +23340,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 538 i32.const 5 call $~lib/builtins/abort @@ -23239,11 +23365,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23310,11 +23436,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23324,12 +23450,12 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store local.get $0 i32.const 65535 i32.and - i32.const 7152 + i32.const 9120 local.get $1 call $~lib/array/Array#__get i32.const 65535 @@ -23337,7 +23463,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 536 i32.const 5 call $~lib/builtins/abort @@ -23348,7 +23474,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 537 i32.const 5 call $~lib/builtins/abort @@ -23359,7 +23485,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 538 i32.const 5 call $~lib/builtins/abort @@ -23380,11 +23506,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23394,16 +23520,16 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store - i32.const 7152 + i32.const 9120 local.get $1 call $~lib/array/Array#__get local.get $0 i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 536 i32.const 5 call $~lib/builtins/abort @@ -23414,7 +23540,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 537 i32.const 5 call $~lib/builtins/abort @@ -23425,7 +23551,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 538 i32.const 5 call $~lib/builtins/abort @@ -23446,11 +23572,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23460,9 +23586,9 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store - i32.const 7152 + i32.const 9120 local.get $1 call $~lib/array/Array#__get i64.extend_i32_s @@ -23470,7 +23596,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 536 i32.const 5 call $~lib/builtins/abort @@ -23481,7 +23607,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 537 i32.const 5 call $~lib/builtins/abort @@ -23492,7 +23618,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 538 i32.const 5 call $~lib/builtins/abort @@ -23513,11 +23639,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23527,9 +23653,9 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store - i32.const 7152 + i32.const 9120 local.get $1 call $~lib/array/Array#__get f32.convert_i32_s @@ -23537,7 +23663,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 536 i32.const 5 call $~lib/builtins/abort @@ -23548,7 +23674,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 537 i32.const 5 call $~lib/builtins/abort @@ -23559,7 +23685,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 538 i32.const 5 call $~lib/builtins/abort @@ -23580,11 +23706,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23594,9 +23720,9 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store - i32.const 7152 + i32.const 9120 local.get $1 call $~lib/array/Array#__get f64.convert_i32_s @@ -23604,7 +23730,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 536 i32.const 5 call $~lib/builtins/abort @@ -23615,7 +23741,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 537 i32.const 5 call $~lib/builtins/abort @@ -23626,7 +23752,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 538 i32.const 5 call $~lib/builtins/abort @@ -23655,11 +23781,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23822,11 +23948,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23837,12 +23963,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -23864,11 +23990,11 @@ local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $3 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get i32.extend8_s @@ -23877,11 +24003,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $1 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get i32.extend8_s @@ -23913,9 +24039,9 @@ local.get $0 call $~lib/typedarray/Int8Array#__get global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 local.get $4 i32.const 1 i32.sub @@ -23926,7 +24052,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -23965,7 +24091,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -23981,7 +24107,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -23997,7 +24123,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -24013,7 +24139,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -24033,11 +24159,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24138,11 +24264,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24153,12 +24279,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -24180,11 +24306,11 @@ local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $3 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get i32.const 255 @@ -24194,11 +24320,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $1 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get i32.const 255 @@ -24231,9 +24357,9 @@ local.get $0 call $~lib/typedarray/Uint8Array#__get global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 local.get $4 i32.const 1 i32.sub @@ -24245,7 +24371,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -24283,7 +24409,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -24299,7 +24425,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -24315,7 +24441,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -24331,7 +24457,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -24351,11 +24477,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24456,11 +24582,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24471,12 +24597,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -24498,11 +24624,11 @@ local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $3 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get i32.const 255 @@ -24512,11 +24638,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $1 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get i32.const 255 @@ -24549,9 +24675,9 @@ local.get $0 call $~lib/typedarray/Uint8ClampedArray#__get global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 local.get $4 i32.const 1 i32.sub @@ -24563,7 +24689,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -24601,7 +24727,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -24617,7 +24743,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -24633,7 +24759,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -24649,7 +24775,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -24673,11 +24799,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24803,11 +24929,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24912,11 +25038,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24927,12 +25053,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -24954,11 +25080,11 @@ local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $3 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get i32.extend16_s @@ -24967,11 +25093,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $1 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get i32.extend16_s @@ -25003,9 +25129,9 @@ local.get $0 call $~lib/typedarray/Int16Array#__get global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 local.get $4 i32.const 1 i32.sub @@ -25016,7 +25142,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -25054,7 +25180,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -25070,7 +25196,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -25086,7 +25212,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -25102,7 +25228,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -25122,11 +25248,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25231,11 +25357,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25246,12 +25372,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -25273,11 +25399,11 @@ local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $3 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get i32.const 65535 @@ -25287,11 +25413,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $1 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get i32.const 65535 @@ -25324,9 +25450,9 @@ local.get $0 call $~lib/typedarray/Uint16Array#__get global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 local.get $4 i32.const 1 i32.sub @@ -25338,7 +25464,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -25376,7 +25502,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -25392,7 +25518,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -25408,7 +25534,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -25424,7 +25550,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -25447,11 +25573,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25535,11 +25661,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25550,12 +25676,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -25577,11 +25703,11 @@ local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $3 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set @@ -25589,11 +25715,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $1 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set @@ -25625,9 +25751,9 @@ call $~lib/typedarray/Int32Array#__get local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 local.get $4 i32.const 1 i32.sub @@ -25638,7 +25764,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -25677,7 +25803,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -25693,7 +25819,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -25709,7 +25835,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -25725,7 +25851,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -25745,11 +25871,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25854,11 +25980,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25869,12 +25995,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -25896,11 +26022,11 @@ local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $3 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set @@ -25908,11 +26034,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $1 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set @@ -25944,9 +26070,9 @@ call $~lib/typedarray/Uint32Array#__get local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 local.get $4 i32.const 1 i32.sub @@ -25957,7 +26083,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -25995,7 +26121,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -26011,7 +26137,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -26027,7 +26153,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -26043,7 +26169,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -26066,11 +26192,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26152,11 +26278,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26261,11 +26387,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26276,12 +26402,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -26303,11 +26429,11 @@ local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $3 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get i64.extend_i32_s @@ -26316,11 +26442,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $1 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get i64.extend_i32_s @@ -26352,9 +26478,9 @@ local.get $0 call $~lib/typedarray/Int64Array#__get global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 local.get $4 i32.const 1 i32.sub @@ -26365,7 +26491,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -26403,7 +26529,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -26419,7 +26545,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -26435,7 +26561,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -26451,7 +26577,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -26471,11 +26597,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26580,11 +26706,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26595,12 +26721,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -26622,11 +26748,11 @@ local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $3 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get i64.extend_i32_s @@ -26635,11 +26761,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $1 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get i64.extend_i32_s @@ -26671,9 +26797,9 @@ local.get $0 call $~lib/typedarray/Uint64Array#__get global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 local.get $4 i32.const 1 i32.sub @@ -26684,7 +26810,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -26722,7 +26848,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -26738,7 +26864,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -26754,7 +26880,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -26770,7 +26896,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -26793,11 +26919,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26879,11 +27005,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26988,11 +27114,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27003,12 +27129,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -27030,11 +27156,11 @@ local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $3 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get f32.convert_i32_s @@ -27043,11 +27169,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $1 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get f32.convert_i32_s @@ -27079,9 +27205,9 @@ local.get $0 call $~lib/typedarray/Float32Array#__get global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 local.get $4 i32.const 1 i32.sub @@ -27092,7 +27218,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -27130,7 +27256,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -27146,7 +27272,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -27162,7 +27288,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -27178,7 +27304,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -27201,11 +27327,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27289,11 +27415,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27304,12 +27430,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -27331,11 +27457,11 @@ local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $3 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get f64.convert_i32_s @@ -27344,11 +27470,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=16 local.get $1 local.get $0 - i32.const 7616 + i32.const 9584 local.get $0 call $~lib/array/Array#__get f64.convert_i32_s @@ -27380,9 +27506,9 @@ local.get $0 call $~lib/typedarray/Float64Array#__get global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9584 i32.store offset=4 - i32.const 7616 + i32.const 9584 local.get $4 i32.const 1 i32.sub @@ -27393,7 +27519,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 570 i32.const 5 call $~lib/builtins/abort @@ -27432,7 +27558,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -27448,7 +27574,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 576 i32.const 3 call $~lib/builtins/abort @@ -27464,7 +27590,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 577 i32.const 3 call $~lib/builtins/abort @@ -27480,7 +27606,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 578 i32.const 3 call $~lib/builtins/abort @@ -27498,11 +27624,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27587,11 +27713,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27673,11 +27799,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27724,11 +27850,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27739,12 +27865,12 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=4 - i32.const 7728 + i32.const 9696 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -27761,11 +27887,11 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=12 local.get $2 local.get $0 - i32.const 7728 + i32.const 9696 local.get $0 call $~lib/array/Array#__get i32.extend8_s @@ -27786,7 +27912,7 @@ call $~lib/typedarray/Int8Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -27803,7 +27929,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -27820,7 +27946,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -27837,7 +27963,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -27854,7 +27980,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -27871,7 +27997,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -27888,7 +28014,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -27905,7 +28031,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -27922,7 +28048,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -27938,7 +28064,7 @@ call $~lib/typedarray/Int8Array#lastIndexOf@varargs if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -27956,7 +28082,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -27974,7 +28100,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -27992,7 +28118,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -28009,7 +28135,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -28026,7 +28152,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -28043,7 +28169,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -28060,7 +28186,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -28077,7 +28203,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -28094,7 +28220,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -28121,7 +28247,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -28136,7 +28262,7 @@ call $~lib/typedarray/Int8Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -28153,7 +28279,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -28170,7 +28296,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -28187,7 +28313,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -28204,7 +28330,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -28221,7 +28347,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -28238,7 +28364,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -28258,11 +28384,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28273,12 +28399,12 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=4 - i32.const 7728 + i32.const 9696 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -28295,11 +28421,11 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=12 local.get $2 local.get $0 - i32.const 7728 + i32.const 9696 local.get $0 call $~lib/array/Array#__get i32.const 255 @@ -28321,7 +28447,7 @@ call $~lib/typedarray/Int8Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -28338,7 +28464,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -28355,7 +28481,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -28372,7 +28498,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -28389,7 +28515,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -28406,7 +28532,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -28423,7 +28549,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -28440,7 +28566,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -28457,7 +28583,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -28473,7 +28599,7 @@ call $~lib/typedarray/Int8Array#lastIndexOf@varargs if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -28491,7 +28617,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -28509,7 +28635,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -28527,7 +28653,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -28544,7 +28670,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -28561,7 +28687,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -28578,7 +28704,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -28595,7 +28721,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -28612,7 +28738,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -28629,7 +28755,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -28655,7 +28781,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -28670,7 +28796,7 @@ call $~lib/typedarray/Int8Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -28687,7 +28813,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -28704,7 +28830,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -28721,7 +28847,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -28738,7 +28864,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -28755,7 +28881,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -28772,7 +28898,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -28792,11 +28918,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28807,12 +28933,12 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=4 - i32.const 7728 + i32.const 9696 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -28829,11 +28955,11 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=12 local.get $2 local.get $0 - i32.const 7728 + i32.const 9696 local.get $0 call $~lib/array/Array#__get i32.const 255 @@ -28855,7 +28981,7 @@ call $~lib/typedarray/Int8Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -28872,7 +28998,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -28889,7 +29015,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -28906,7 +29032,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -28923,7 +29049,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -28940,7 +29066,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -28957,7 +29083,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -28974,7 +29100,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -28991,7 +29117,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -29007,7 +29133,7 @@ call $~lib/typedarray/Int8Array#lastIndexOf@varargs if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -29025,7 +29151,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -29043,7 +29169,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -29061,7 +29187,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -29078,7 +29204,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -29095,7 +29221,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -29112,7 +29238,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -29129,7 +29255,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -29146,7 +29272,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -29163,7 +29289,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -29189,7 +29315,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -29204,7 +29330,7 @@ call $~lib/typedarray/Int8Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -29221,7 +29347,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -29238,7 +29364,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -29255,7 +29381,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -29272,7 +29398,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -29289,7 +29415,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -29306,7 +29432,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -29324,11 +29450,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29415,11 +29541,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29503,11 +29629,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29554,11 +29680,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29569,12 +29695,12 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=4 - i32.const 7728 + i32.const 9696 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -29591,11 +29717,11 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=12 local.get $2 local.get $0 - i32.const 7728 + i32.const 9696 local.get $0 call $~lib/array/Array#__get i32.extend16_s @@ -29616,7 +29742,7 @@ call $~lib/typedarray/Int16Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -29633,7 +29759,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -29650,7 +29776,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -29667,7 +29793,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -29684,7 +29810,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -29701,7 +29827,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -29718,7 +29844,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -29735,7 +29861,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -29752,7 +29878,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -29768,7 +29894,7 @@ call $~lib/typedarray/Int16Array#lastIndexOf@varargs if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -29786,7 +29912,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -29804,7 +29930,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -29822,7 +29948,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -29839,7 +29965,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -29856,7 +29982,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -29873,7 +29999,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -29890,7 +30016,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -29907,7 +30033,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -29924,7 +30050,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -29950,7 +30076,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -29965,7 +30091,7 @@ call $~lib/typedarray/Int16Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -29982,7 +30108,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -29999,7 +30125,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -30016,7 +30142,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -30033,7 +30159,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -30050,7 +30176,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -30067,7 +30193,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -30087,11 +30213,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30102,12 +30228,12 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=4 - i32.const 7728 + i32.const 9696 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -30124,11 +30250,11 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=12 local.get $2 local.get $0 - i32.const 7728 + i32.const 9696 local.get $0 call $~lib/array/Array#__get i32.const 65535 @@ -30150,7 +30276,7 @@ call $~lib/typedarray/Int16Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -30167,7 +30293,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -30184,7 +30310,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -30201,7 +30327,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -30218,7 +30344,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -30235,7 +30361,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -30252,7 +30378,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -30269,7 +30395,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -30286,7 +30412,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -30302,7 +30428,7 @@ call $~lib/typedarray/Int16Array#lastIndexOf@varargs if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -30320,7 +30446,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -30338,7 +30464,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -30356,7 +30482,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -30373,7 +30499,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -30390,7 +30516,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -30407,7 +30533,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -30424,7 +30550,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -30441,7 +30567,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -30458,7 +30584,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -30484,7 +30610,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -30499,7 +30625,7 @@ call $~lib/typedarray/Int16Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -30516,7 +30642,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -30533,7 +30659,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -30550,7 +30676,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -30567,7 +30693,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -30584,7 +30710,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -30601,7 +30727,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -30619,11 +30745,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30708,11 +30834,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30794,11 +30920,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30845,11 +30971,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30860,12 +30986,12 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=4 - i32.const 7728 + i32.const 9696 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -30882,11 +31008,11 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=12 local.get $2 local.get $0 - i32.const 7728 + i32.const 9696 local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set @@ -30906,7 +31032,7 @@ call $~lib/typedarray/Int32Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -30923,7 +31049,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -30940,7 +31066,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -30957,7 +31083,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -30974,7 +31100,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -30991,7 +31117,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -31008,7 +31134,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -31025,7 +31151,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -31042,7 +31168,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -31058,7 +31184,7 @@ call $~lib/typedarray/Int32Array#lastIndexOf@varargs if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -31076,7 +31202,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -31094,7 +31220,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -31112,7 +31238,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -31129,7 +31255,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -31146,7 +31272,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -31163,7 +31289,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -31180,7 +31306,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -31197,7 +31323,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -31214,7 +31340,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -31241,7 +31367,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -31256,7 +31382,7 @@ call $~lib/typedarray/Int32Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -31273,7 +31399,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -31290,7 +31416,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -31307,7 +31433,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -31324,7 +31450,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -31341,7 +31467,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -31358,7 +31484,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -31376,11 +31502,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31465,11 +31591,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31551,11 +31677,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31602,11 +31728,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31617,12 +31743,12 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=4 - i32.const 7728 + i32.const 9696 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -31639,11 +31765,11 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=12 local.get $2 local.get $0 - i32.const 7728 + i32.const 9696 local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set @@ -31663,7 +31789,7 @@ call $~lib/typedarray/Uint32Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -31680,7 +31806,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -31697,7 +31823,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -31714,7 +31840,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -31731,7 +31857,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -31748,7 +31874,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -31765,7 +31891,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -31782,7 +31908,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -31799,7 +31925,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -31815,7 +31941,7 @@ call $~lib/typedarray/Uint32Array#lastIndexOf@varargs if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -31833,7 +31959,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -31851,7 +31977,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -31869,7 +31995,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -31886,7 +32012,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -31903,7 +32029,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -31920,7 +32046,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -31937,7 +32063,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -31954,7 +32080,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -31971,7 +32097,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -31997,7 +32123,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -32012,7 +32138,7 @@ call $~lib/typedarray/Uint32Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -32029,7 +32155,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -32046,7 +32172,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -32063,7 +32189,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -32080,7 +32206,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -32097,7 +32223,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -32114,7 +32240,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -32132,11 +32258,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -32221,11 +32347,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -32307,11 +32433,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -32358,11 +32484,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -32373,12 +32499,12 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=4 - i32.const 7728 + i32.const 9696 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -32395,11 +32521,11 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=12 local.get $2 local.get $0 - i32.const 7728 + i32.const 9696 local.get $0 call $~lib/array/Array#__get i64.extend_i32_s @@ -32420,7 +32546,7 @@ call $~lib/typedarray/Int64Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -32437,7 +32563,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -32454,7 +32580,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -32471,7 +32597,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -32488,7 +32614,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -32505,7 +32631,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -32522,7 +32648,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -32539,7 +32665,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -32556,7 +32682,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -32572,7 +32698,7 @@ call $~lib/typedarray/Int64Array#lastIndexOf@varargs if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -32590,7 +32716,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -32608,7 +32734,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -32626,7 +32752,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -32643,7 +32769,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -32660,7 +32786,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -32677,7 +32803,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -32694,7 +32820,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -32711,7 +32837,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -32728,7 +32854,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -32754,7 +32880,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -32769,7 +32895,7 @@ call $~lib/typedarray/Int64Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -32786,7 +32912,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -32803,7 +32929,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -32820,7 +32946,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -32837,7 +32963,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -32854,7 +32980,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -32871,7 +32997,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -32889,11 +33015,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -32978,11 +33104,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33064,11 +33190,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33115,11 +33241,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33130,12 +33256,12 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=4 - i32.const 7728 + i32.const 9696 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -33152,11 +33278,11 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=12 local.get $2 local.get $0 - i32.const 7728 + i32.const 9696 local.get $0 call $~lib/array/Array#__get i64.extend_i32_s @@ -33177,7 +33303,7 @@ call $~lib/typedarray/Uint64Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -33194,7 +33320,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -33211,7 +33337,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -33228,7 +33354,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -33245,7 +33371,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -33262,7 +33388,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -33279,7 +33405,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -33296,7 +33422,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -33313,7 +33439,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -33329,7 +33455,7 @@ call $~lib/typedarray/Uint64Array#lastIndexOf@varargs if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -33347,7 +33473,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -33365,7 +33491,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -33383,7 +33509,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -33400,7 +33526,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -33417,7 +33543,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -33434,7 +33560,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -33451,7 +33577,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -33468,7 +33594,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -33485,7 +33611,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -33511,7 +33637,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -33526,7 +33652,7 @@ call $~lib/typedarray/Uint64Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -33543,7 +33669,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -33560,7 +33686,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -33577,7 +33703,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -33594,7 +33720,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -33611,7 +33737,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -33628,7 +33754,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -33646,11 +33772,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33735,11 +33861,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33821,11 +33947,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33872,11 +33998,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33887,12 +34013,12 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=4 - i32.const 7728 + i32.const 9696 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -33909,11 +34035,11 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=12 local.get $2 local.get $0 - i32.const 7728 + i32.const 9696 local.get $0 call $~lib/array/Array#__get f32.convert_i32_s @@ -33934,7 +34060,7 @@ call $~lib/typedarray/Float32Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -33951,7 +34077,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -33968,7 +34094,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -33985,7 +34111,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -34002,7 +34128,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -34019,7 +34145,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -34036,7 +34162,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -34053,7 +34179,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -34070,7 +34196,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -34086,7 +34212,7 @@ call $~lib/typedarray/Float32Array#lastIndexOf@varargs if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -34104,7 +34230,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -34122,7 +34248,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -34140,7 +34266,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -34157,7 +34283,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -34174,7 +34300,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -34191,7 +34317,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -34208,7 +34334,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -34225,7 +34351,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -34242,7 +34368,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -34268,7 +34394,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -34283,7 +34409,7 @@ call $~lib/typedarray/Float32Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -34300,7 +34426,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -34317,7 +34443,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -34334,7 +34460,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -34351,7 +34477,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -34368,7 +34494,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -34385,7 +34511,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -34403,11 +34529,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -34492,11 +34618,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -34578,11 +34704,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -34629,11 +34755,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -34644,12 +34770,12 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=4 - i32.const 7728 + i32.const 9696 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -34666,11 +34792,11 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 9696 i32.store offset=12 local.get $2 local.get $0 - i32.const 7728 + i32.const 9696 local.get $0 call $~lib/array/Array#__get f64.convert_i32_s @@ -34691,7 +34817,7 @@ call $~lib/typedarray/Float64Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 603 i32.const 3 call $~lib/builtins/abort @@ -34708,7 +34834,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 604 i32.const 3 call $~lib/builtins/abort @@ -34725,7 +34851,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 605 i32.const 3 call $~lib/builtins/abort @@ -34742,7 +34868,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 606 i32.const 3 call $~lib/builtins/abort @@ -34759,7 +34885,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 607 i32.const 3 call $~lib/builtins/abort @@ -34776,7 +34902,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 608 i32.const 3 call $~lib/builtins/abort @@ -34793,7 +34919,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 609 i32.const 3 call $~lib/builtins/abort @@ -34810,7 +34936,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 610 i32.const 3 call $~lib/builtins/abort @@ -34827,7 +34953,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 611 i32.const 3 call $~lib/builtins/abort @@ -34843,7 +34969,7 @@ call $~lib/typedarray/Float64Array#lastIndexOf@varargs if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 613 i32.const 3 call $~lib/builtins/abort @@ -34861,7 +34987,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 614 i32.const 3 call $~lib/builtins/abort @@ -34879,7 +35005,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 615 i32.const 3 call $~lib/builtins/abort @@ -34897,7 +35023,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 616 i32.const 3 call $~lib/builtins/abort @@ -34914,7 +35040,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 617 i32.const 3 call $~lib/builtins/abort @@ -34931,7 +35057,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 618 i32.const 3 call $~lib/builtins/abort @@ -34948,7 +35074,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 619 i32.const 3 call $~lib/builtins/abort @@ -34965,7 +35091,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -34982,7 +35108,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 621 i32.const 3 call $~lib/builtins/abort @@ -34999,7 +35125,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 622 i32.const 3 call $~lib/builtins/abort @@ -35026,7 +35152,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -35041,7 +35167,7 @@ call $~lib/typedarray/Float64Array#indexOf if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 627 i32.const 3 call $~lib/builtins/abort @@ -35058,7 +35184,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 628 i32.const 3 call $~lib/builtins/abort @@ -35075,7 +35201,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 629 i32.const 3 call $~lib/builtins/abort @@ -35092,7 +35218,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 630 i32.const 3 call $~lib/builtins/abort @@ -35109,7 +35235,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 631 i32.const 3 call $~lib/builtins/abort @@ -35126,7 +35252,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 632 i32.const 3 call $~lib/builtins/abort @@ -35143,7 +35269,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 633 i32.const 3 call $~lib/builtins/abort @@ -35163,11 +35289,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -35224,7 +35350,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 7776 + i32.const 1120 return end local.get $3 @@ -35274,7 +35400,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -35293,20 +35419,20 @@ call $~lib/typedarray/Int8Array#get:length local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1408 + block $__inlined_func$~lib/util/string/joinIntegerArray$1416 local.get $0 i32.const 1 i32.sub @@ -35318,9 +35444,9 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 7776 + i32.const 1120 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1408 + br $__inlined_func$~lib/util/string/joinIntegerArray$1416 end local.get $6 i32.eqz @@ -35333,13 +35459,13 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1408 + br $__inlined_func$~lib/util/string/joinIntegerArray$1416 end global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9580 + i32.const 9740 i32.load i32.const 1 i32.shr_u @@ -35382,7 +35508,7 @@ i32.const 1 i32.shl i32.add - i32.const 9584 + i32.const 9744 local.get $4 i32.const 1 i32.shl @@ -35426,7 +35552,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1408 + br $__inlined_func$~lib/util/string/joinIntegerArray$1416 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -35440,8 +35566,8 @@ local.get $0 return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -35457,11 +35583,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -35560,7 +35686,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$714 + block $__inlined_func$~lib/util/string/compareImpl$703 loop $while-continue|1 local.get $0 local.tee $3 @@ -35580,7 +35706,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$714 + br_if $__inlined_func$~lib/util/string/compareImpl$703 local.get $2 i32.const 2 i32.add @@ -35622,7 +35748,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -35641,20 +35767,20 @@ call $~lib/typedarray/Int8Array#get:length local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1409 + block $__inlined_func$~lib/util/string/joinIntegerArray$1417 local.get $0 i32.const 1 i32.sub @@ -35666,9 +35792,9 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 7776 + i32.const 1120 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1409 + br $__inlined_func$~lib/util/string/joinIntegerArray$1417 end local.get $6 i32.eqz @@ -35681,13 +35807,13 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1409 + br $__inlined_func$~lib/util/string/joinIntegerArray$1417 end global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9580 + i32.const 9740 i32.load i32.const 1 i32.shr_u @@ -35730,7 +35856,7 @@ i32.const 1 i32.shl i32.add - i32.const 9584 + i32.const 9744 local.get $4 i32.const 1 i32.shl @@ -35774,7 +35900,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1409 + br $__inlined_func$~lib/util/string/joinIntegerArray$1417 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -35788,8 +35914,8 @@ local.get $0 return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -35801,11 +35927,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -35837,7 +35963,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -35856,20 +35982,20 @@ call $~lib/typedarray/Int16Array#get:length local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1410 + block $__inlined_func$~lib/util/string/joinIntegerArray$1418 local.get $0 i32.const 1 i32.sub @@ -35881,9 +36007,9 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 7776 + i32.const 1120 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1410 + br $__inlined_func$~lib/util/string/joinIntegerArray$1418 end local.get $6 i32.eqz @@ -35896,13 +36022,13 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1410 + br $__inlined_func$~lib/util/string/joinIntegerArray$1418 end global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9580 + i32.const 9740 i32.load i32.const 1 i32.shr_u @@ -35947,7 +36073,7 @@ i32.const 1 i32.shl i32.add - i32.const 9584 + i32.const 9744 local.get $4 i32.const 1 i32.shl @@ -35993,7 +36119,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1410 + br $__inlined_func$~lib/util/string/joinIntegerArray$1418 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -36007,8 +36133,8 @@ local.get $0 return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -36027,7 +36153,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -36046,20 +36172,20 @@ call $~lib/typedarray/Int16Array#get:length local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1411 + block $__inlined_func$~lib/util/string/joinIntegerArray$1419 local.get $0 i32.const 1 i32.sub @@ -36071,9 +36197,9 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 7776 + i32.const 1120 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1411 + br $__inlined_func$~lib/util/string/joinIntegerArray$1419 end local.get $6 i32.eqz @@ -36086,13 +36212,13 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1411 + br $__inlined_func$~lib/util/string/joinIntegerArray$1419 end global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9580 + i32.const 9740 i32.load i32.const 1 i32.shr_u @@ -36137,7 +36263,7 @@ i32.const 1 i32.shl i32.add - i32.const 9584 + i32.const 9744 local.get $4 i32.const 1 i32.shl @@ -36183,7 +36309,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1411 + br $__inlined_func$~lib/util/string/joinIntegerArray$1419 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -36197,8 +36323,8 @@ local.get $0 return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -36217,7 +36343,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -36236,20 +36362,20 @@ call $~lib/typedarray/Int32Array#get:length local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1412 + block $__inlined_func$~lib/util/string/joinIntegerArray$1420 local.get $0 i32.const 1 i32.sub @@ -36261,9 +36387,9 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 7776 + i32.const 1120 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1412 + br $__inlined_func$~lib/util/string/joinIntegerArray$1420 end local.get $6 i32.eqz @@ -36276,13 +36402,13 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1412 + br $__inlined_func$~lib/util/string/joinIntegerArray$1420 end global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9580 + i32.const 9740 i32.load i32.const 1 i32.shr_u @@ -36327,7 +36453,7 @@ i32.const 1 i32.shl i32.add - i32.const 9584 + i32.const 9744 local.get $4 i32.const 1 i32.shl @@ -36373,7 +36499,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1412 + br $__inlined_func$~lib/util/string/joinIntegerArray$1420 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -36387,8 +36513,8 @@ local.get $0 return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -36407,7 +36533,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -36426,20 +36552,20 @@ call $~lib/typedarray/Int32Array#get:length local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1413 + block $__inlined_func$~lib/util/string/joinIntegerArray$1421 local.get $0 i32.const 1 i32.sub @@ -36451,9 +36577,9 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 7776 + i32.const 1120 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1413 + br $__inlined_func$~lib/util/string/joinIntegerArray$1421 end local.get $6 i32.eqz @@ -36466,13 +36592,13 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1413 + br $__inlined_func$~lib/util/string/joinIntegerArray$1421 end global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9580 + i32.const 9740 i32.load i32.const 1 i32.shr_u @@ -36517,7 +36643,7 @@ i32.const 1 i32.shl i32.add - i32.const 9584 + i32.const 9744 local.get $4 i32.const 1 i32.shl @@ -36563,7 +36689,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1413 + br $__inlined_func$~lib/util/string/joinIntegerArray$1421 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -36577,8 +36703,8 @@ local.get $0 return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -36598,7 +36724,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -36617,20 +36743,20 @@ call $~lib/typedarray/Int64Array#get:length local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$5 + block $__inlined_func$~lib/util/string/joinIntegerArray$3 local.get $0 i32.const 1 i32.sub @@ -36642,9 +36768,9 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 7776 + i32.const 1120 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$5 + br $__inlined_func$~lib/util/string/joinIntegerArray$3 end block $folding-inner0 local.get $6 @@ -36660,7 +36786,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -36673,7 +36799,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8000 + i32.const 1776 br $__inlined_func$~lib/util/number/itoa64 end i64.const 0 @@ -36840,10 +36966,10 @@ br $folding-inner0 end global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9580 + i32.const 9740 i32.load i32.const 1 i32.shr_u @@ -36888,7 +37014,7 @@ i32.const 1 i32.shl i32.add - i32.const 9584 + i32.const 9744 local.get $7 i32.const 1 i32.shl @@ -36936,7 +37062,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$5 + br $__inlined_func$~lib/util/string/joinIntegerArray$3 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -36950,8 +37076,8 @@ local.get $0 return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -36971,7 +37097,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -36988,7 +37114,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 7776 + i32.const 1120 return end local.get $7 @@ -37002,13 +37128,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/util/number/utoa64$749 + block $__inlined_func$~lib/util/number/utoa64$738 local.get $3 i64.eqz if @@ -37016,9 +37142,9 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8000 + i32.const 1776 local.set $1 - br $__inlined_func$~lib/util/number/utoa64$749 + br $__inlined_func$~lib/util/number/utoa64$738 end local.get $3 i64.const 4294967295 @@ -37156,10 +37282,10 @@ br $folding-inner1 end global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9580 + i32.const 9740 i32.load i32.const 1 i32.shr_u @@ -37204,7 +37330,7 @@ i32.const 1 i32.shl i32.add - i32.const 9584 + i32.const 9744 local.get $1 i32.const 1 i32.shl @@ -37255,8 +37381,8 @@ local.get $6 return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -37275,11 +37401,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -37299,7 +37425,7 @@ local.get $0 call $~lib/typedarray/Int64Array#get:length global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store call $~lib/util/string/joinIntegerArray global.get $~lib/memory/__stack_pointer @@ -37322,7 +37448,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -37339,7 +37465,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 7776 + i32.const 1120 return end local.get $8 @@ -37353,13 +37479,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 9664 + i32.const 9824 local.set $0 block $~lib/util/number/dtoa_impl|inlined.0 local.get $5 @@ -37374,14 +37500,14 @@ f64.const 0 f64.ne if - i32.const 9696 + i32.const 9856 local.set $0 local.get $3 local.get $3 f64.ne br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 9728 - i32.const 9776 + i32.const 9888 + i32.const 9936 local.get $3 f64.const 0 f64.lt @@ -37389,7 +37515,7 @@ local.set $0 br $~lib/util/number/dtoa_impl|inlined.0 end - i32.const 9808 + i32.const 9968 local.get $3 i32.const 1 call $~lib/util/number/dtoa_core @@ -37403,7 +37529,7 @@ local.tee $0 i32.store local.get $0 - i32.const 9808 + i32.const 9968 local.get $1 memory.copy end @@ -37414,10 +37540,10 @@ br $folding-inner1 end global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9580 + i32.const 9740 i32.load i32.const 1 i32.shr_u @@ -37462,7 +37588,7 @@ i32.const 1 i32.shl i32.add - i32.const 9584 + i32.const 9744 local.get $1 i32.const 1 i32.shl @@ -37513,8 +37639,8 @@ local.get $7 return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -37533,11 +37659,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -37557,7 +37683,7 @@ local.get $0 call $~lib/typedarray/Int32Array#get:length global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store call $~lib/util/string/joinFloatArray global.get $~lib/memory/__stack_pointer @@ -37579,7 +37705,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -37596,7 +37722,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 7776 + i32.const 1120 return end local.get $7 @@ -37610,13 +37736,13 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 9664 + i32.const 9824 local.set $0 block $~lib/util/number/dtoa_impl|inlined.1 local.get $3 @@ -37629,14 +37755,14 @@ f64.const 0 f64.ne if - i32.const 9696 + i32.const 9856 local.set $0 local.get $3 local.get $3 f64.ne br_if $~lib/util/number/dtoa_impl|inlined.1 - i32.const 9728 - i32.const 9776 + i32.const 9888 + i32.const 9936 local.get $3 f64.const 0 f64.lt @@ -37644,7 +37770,7 @@ local.set $0 br $~lib/util/number/dtoa_impl|inlined.1 end - i32.const 9808 + i32.const 9968 local.get $3 i32.const 0 call $~lib/util/number/dtoa_core @@ -37658,7 +37784,7 @@ local.tee $0 i32.store local.get $0 - i32.const 9808 + i32.const 9968 local.get $1 memory.copy end @@ -37669,10 +37795,10 @@ br $folding-inner1 end global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9580 + i32.const 9740 i32.load i32.const 1 i32.shr_u @@ -37717,7 +37843,7 @@ i32.const 1 i32.shl i32.add - i32.const 9584 + i32.const 9744 local.get $1 i32.const 1 i32.shl @@ -37768,8 +37894,8 @@ local.get $6 return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -37788,11 +37914,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -37812,7 +37938,7 @@ local.get $0 call $~lib/typedarray/Int64Array#get:length global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 9744 i32.store call $~lib/util/string/joinFloatArray global.get $~lib/memory/__stack_pointer @@ -37829,7 +37955,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -37860,7 +37986,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -37883,8 +38009,8 @@ local.get $1 i32.lt_u if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1860 i32.const 5 call $~lib/builtins/abort @@ -37902,8 +38028,8 @@ local.get $1 i32.sub else - i32.const 1056 - i32.const 1632 + i32.const 3424 + i32.const 3600 i32.const 1869 i32.const 7 call $~lib/builtins/abort @@ -37917,8 +38043,8 @@ local.get $3 i32.gt_s if - i32.const 1056 - i32.const 1632 + i32.const 3424 + i32.const 3600 i32.const 1874 i32.const 7 call $~lib/builtins/abort @@ -37956,8 +38082,8 @@ local.get $3 return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -37970,11 +38096,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -38073,7 +38199,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38081,12 +38207,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=4 - i32.const 10928 + i32.const 11088 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -38103,11 +38229,11 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=12 local.get $2 local.get $0 - i32.const 10928 + i32.const 11088 local.get $0 call $~lib/array/Array#__get i32.extend8_s @@ -38163,7 +38289,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38177,7 +38303,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38249,7 +38375,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -38268,8 +38394,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -38288,7 +38414,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38296,12 +38422,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=4 - i32.const 10928 + i32.const 11088 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -38318,11 +38444,11 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=12 local.get $2 local.get $0 - i32.const 10928 + i32.const 11088 local.get $0 call $~lib/array/Array#__get i32.const 255 @@ -38379,7 +38505,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38393,7 +38519,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38465,7 +38591,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -38484,8 +38610,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -38504,7 +38630,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38512,12 +38638,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=4 - i32.const 10928 + i32.const 11088 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -38534,11 +38660,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=12 local.get $1 local.get $0 - i32.const 10928 + i32.const 11088 local.get $0 call $~lib/array/Array#__get i32.extend16_s @@ -38594,7 +38720,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38608,7 +38734,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38631,8 +38757,8 @@ i32.const 1 i32.and if - i32.const 1056 - i32.const 1632 + i32.const 3424 + i32.const 3600 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -38690,7 +38816,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -38709,8 +38835,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -38729,7 +38855,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38737,12 +38863,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=4 - i32.const 10928 + i32.const 11088 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -38759,11 +38885,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=12 local.get $1 local.get $0 - i32.const 10928 + i32.const 11088 local.get $0 call $~lib/array/Array#__get i32.const 65535 @@ -38820,7 +38946,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38834,7 +38960,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38857,8 +38983,8 @@ i32.const 1 i32.and if - i32.const 1056 - i32.const 1632 + i32.const 3424 + i32.const 3600 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -38916,7 +39042,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -38935,8 +39061,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -38955,7 +39081,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -38963,12 +39089,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=4 - i32.const 10928 + i32.const 11088 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -38985,11 +39111,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=12 local.get $1 local.get $0 - i32.const 10928 + i32.const 11088 local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set @@ -39044,7 +39170,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39058,7 +39184,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39081,8 +39207,8 @@ i32.const 3 i32.and if - i32.const 1056 - i32.const 1632 + i32.const 3424 + i32.const 3600 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -39140,7 +39266,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -39159,8 +39285,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -39179,7 +39305,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39187,12 +39313,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=4 - i32.const 10928 + i32.const 11088 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -39209,11 +39335,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=12 local.get $1 local.get $0 - i32.const 10928 + i32.const 11088 local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set @@ -39268,7 +39394,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39282,7 +39408,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39305,8 +39431,8 @@ i32.const 3 i32.and if - i32.const 1056 - i32.const 1632 + i32.const 3424 + i32.const 3600 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -39364,7 +39490,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -39383,8 +39509,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -39404,7 +39530,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39412,12 +39538,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=4 - i32.const 10928 + i32.const 11088 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -39434,11 +39560,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=12 local.get $1 local.get $0 - i32.const 10928 + i32.const 11088 local.get $0 call $~lib/array/Array#__get i64.extend_i32_s @@ -39494,7 +39620,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39508,7 +39634,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39531,8 +39657,8 @@ i32.const 7 i32.and if - i32.const 1056 - i32.const 1632 + i32.const 3424 + i32.const 3600 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -39590,7 +39716,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -39609,8 +39735,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -39630,7 +39756,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39638,12 +39764,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=4 - i32.const 10928 + i32.const 11088 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -39660,11 +39786,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=12 local.get $1 local.get $0 - i32.const 10928 + i32.const 11088 local.get $0 call $~lib/array/Array#__get i64.extend_i32_s @@ -39720,7 +39846,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39734,7 +39860,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39757,8 +39883,8 @@ i32.const 7 i32.and if - i32.const 1056 - i32.const 1632 + i32.const 3424 + i32.const 3600 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -39816,7 +39942,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -39835,8 +39961,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -39856,7 +39982,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39864,12 +39990,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=4 - i32.const 10928 + i32.const 11088 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -39886,11 +40012,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=12 local.get $1 local.get $0 - i32.const 10928 + i32.const 11088 local.get $0 call $~lib/array/Array#__get f32.convert_i32_s @@ -39946,7 +40072,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39960,7 +40086,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -39983,8 +40109,8 @@ i32.const 3 i32.and if - i32.const 1056 - i32.const 1632 + i32.const 3424 + i32.const 3600 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -40042,7 +40168,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -40061,8 +40187,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -40082,7 +40208,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -40090,12 +40216,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=4 - i32.const 10928 + i32.const 11088 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -40112,11 +40238,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=12 local.get $1 local.get $0 - i32.const 10928 + i32.const 11088 local.get $0 call $~lib/array/Array#__get f64.convert_i32_s @@ -40172,7 +40298,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -40186,7 +40312,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -40209,8 +40335,8 @@ i32.const 7 i32.and if - i32.const 1056 - i32.const 1632 + i32.const 3424 + i32.const 3600 i32.const 1865 i32.const 9 call $~lib/builtins/abort @@ -40268,7 +40394,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -40287,8 +40413,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -40303,11 +40429,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -40323,12 +40449,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=8 - i32.const 11008 + i32.const 11168 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -40339,8 +40465,8 @@ local.get $1 i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -40353,9 +40479,9 @@ i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=8 - i32.const 11012 + i32.const 11172 i32.load local.set $3 i32.const 0 @@ -40398,7 +40524,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -40419,7 +40545,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -40438,7 +40564,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -40465,7 +40591,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -40488,7 +40614,7 @@ local.get $5 i32.ne if - i32.const 11344 + i32.const 11504 i32.const 3 local.get $2 f64.convert_i32_s @@ -40500,7 +40626,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -40519,8 +40645,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -40534,11 +40660,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -40572,8 +40698,8 @@ i32.add i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -40629,11 +40755,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -40665,8 +40791,8 @@ local.get $2 i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -40697,11 +40823,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -40735,8 +40861,8 @@ i32.add i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -40792,11 +40918,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -40812,12 +40938,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=8 - i32.const 11264 + i32.const 11424 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -40830,8 +40956,8 @@ i32.add i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -40845,9 +40971,9 @@ i32.const 7 i32.add global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=8 - i32.const 11268 + i32.const 11428 i32.load local.get $1 memory.copy @@ -40874,7 +41000,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -40975,7 +41101,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=20 local.get $0 call $~lib/typedarray/Int8Array#set<~lib/array/Array> @@ -40985,7 +41111,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 11312 + i32.const 11472 call $~lib/rt/__newArray local.set $6 global.get $~lib/memory/__stack_pointer @@ -40998,14 +41124,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -41018,12 +41144,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11088 + i32.const 11248 call $~lib/array/Array#get:length local.set $8 global.get $~lib/memory/__stack_pointer @@ -41045,9 +41171,9 @@ i32.add local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11092 + i32.const 11252 i32.load local.set $9 loop $for-loop|0 @@ -41091,7 +41217,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 11392 + i32.const 11552 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -41115,7 +41241,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 11424 + i32.const 11584 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -41128,14 +41254,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -41148,12 +41274,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=8 - i32.const 11184 + i32.const 11344 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -41175,9 +41301,9 @@ i32.add local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=8 - i32.const 11188 + i32.const 11348 i32.load local.set $8 i32.const 0 @@ -41223,7 +41349,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 11456 + i32.const 11616 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -41254,7 +41380,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=20 local.get $0 call $~lib/typedarray/Int8Array#set<~lib/array/Array> @@ -41264,7 +41390,7 @@ i32.const 10 i32.const 0 i32.const 16 - i32.const 11488 + i32.const 11648 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -41279,15 +41405,15 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -41299,11 +41425,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -41335,11 +41461,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -41363,7 +41489,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -41391,7 +41517,7 @@ local.get $4 i32.ne if - i32.const 11552 + i32.const 11712 i32.const 3 local.get $2 f64.convert_i32_s @@ -41403,7 +41529,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -41439,7 +41565,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -41540,7 +41666,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=20 local.get $0 call $~lib/typedarray/Int8Array#set<~lib/array/Array> @@ -41550,7 +41676,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11520 + i32.const 11680 call $~lib/rt/__newArray local.set $6 global.get $~lib/memory/__stack_pointer @@ -41563,14 +41689,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -41583,12 +41709,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11088 + i32.const 11248 call $~lib/array/Array#get:length local.set $8 global.get $~lib/memory/__stack_pointer @@ -41610,9 +41736,9 @@ i32.add local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11092 + i32.const 11252 i32.load local.set $9 loop $for-loop|0 @@ -41656,7 +41782,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11600 + i32.const 11760 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -41680,7 +41806,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11632 + i32.const 11792 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -41693,14 +41819,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -41713,12 +41839,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=8 - i32.const 11184 + i32.const 11344 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -41740,9 +41866,9 @@ i32.add local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=8 - i32.const 11188 + i32.const 11348 i32.load local.set $8 i32.const 0 @@ -41788,7 +41914,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11664 + i32.const 11824 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -41819,7 +41945,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=20 local.get $0 call $~lib/typedarray/Int8Array#set<~lib/array/Array> @@ -41829,7 +41955,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11696 + i32.const 11856 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -41844,15 +41970,15 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -41868,11 +41994,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -41896,7 +42022,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -41924,7 +42050,7 @@ local.get $4 i32.ne if - i32.const 11760 + i32.const 11920 i32.const 3 local.get $2 f64.convert_i32_s @@ -41936,7 +42062,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -41963,11 +42089,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -42008,8 +42134,8 @@ i32.lt_s end if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -42083,11 +42209,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -42128,8 +42254,8 @@ i32.lt_s end if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -42210,7 +42336,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -42311,14 +42437,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -42331,12 +42457,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=8 - i32.const 11008 + i32.const 11168 call $~lib/array/Array#get:length local.set $8 global.get $~lib/memory/__stack_pointer @@ -42354,9 +42480,9 @@ i32.load offset=4 local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=8 - i32.const 11012 + i32.const 11172 i32.load local.set $10 loop $for-loop|0 @@ -42404,7 +42530,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11728 + i32.const 11888 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -42417,14 +42543,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -42437,12 +42563,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11088 + i32.const 11248 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -42464,9 +42590,9 @@ i32.add local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11092 + i32.const 11252 i32.load local.set $9 i32.const 0 @@ -42518,7 +42644,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11824 + i32.const 11984 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -42543,7 +42669,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11856 + i32.const 12016 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -42556,14 +42682,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -42576,12 +42702,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=8 - i32.const 11184 + i32.const 11344 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -42603,9 +42729,9 @@ i32.add local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=8 - i32.const 11188 + i32.const 11348 i32.load local.set $8 i32.const 0 @@ -42657,7 +42783,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11888 + i32.const 12048 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -42689,14 +42815,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -42709,12 +42835,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=8 - i32.const 11264 + i32.const 11424 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -42736,9 +42862,9 @@ i32.add local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=8 - i32.const 11268 + i32.const 11428 i32.load local.set $6 i32.const 0 @@ -42786,7 +42912,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 11920 + i32.const 12080 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -42801,15 +42927,15 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -42824,11 +42950,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -42844,12 +42970,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=8 - i32.const 11008 + i32.const 11168 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -42860,8 +42986,8 @@ local.get $1 i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -42874,9 +43000,9 @@ i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=8 - i32.const 11012 + i32.const 11172 i32.load local.set $3 i32.const 0 @@ -42916,11 +43042,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -42954,11 +43080,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -42982,7 +43108,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -43010,7 +43136,7 @@ local.get $4 i32.ne if - i32.const 12000 + i32.const 12160 i32.const 3 local.get $2 f64.convert_i32_s @@ -43022,7 +43148,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -43048,11 +43174,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -43086,8 +43212,8 @@ i32.add i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -43146,11 +43272,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -43182,8 +43308,8 @@ local.get $2 i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -43237,11 +43363,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -43275,8 +43401,8 @@ i32.add i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -43312,11 +43438,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -43332,12 +43458,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=8 - i32.const 11264 + i32.const 11424 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -43350,8 +43476,8 @@ i32.add i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -43366,9 +43492,9 @@ i32.add local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=8 - i32.const 11268 + i32.const 11428 i32.load local.set $3 i32.const 0 @@ -43418,7 +43544,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -43519,7 +43645,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=20 local.get $0 call $~lib/typedarray/Int16Array#set<~lib/array/Array> @@ -43529,7 +43655,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 11952 + i32.const 12112 call $~lib/rt/__newArray local.set $6 global.get $~lib/memory/__stack_pointer @@ -43542,14 +43668,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -43562,12 +43688,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11088 + i32.const 11248 call $~lib/array/Array#get:length local.set $8 global.get $~lib/memory/__stack_pointer @@ -43589,9 +43715,9 @@ i32.add local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11092 + i32.const 11252 i32.load local.set $9 loop $for-loop|0 @@ -43637,7 +43763,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 12048 + i32.const 12208 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -43661,7 +43787,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 12096 + i32.const 12256 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -43674,14 +43800,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -43694,12 +43820,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=8 - i32.const 11184 + i32.const 11344 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -43721,9 +43847,9 @@ i32.add local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=8 - i32.const 11188 + i32.const 11348 i32.load local.set $8 i32.const 0 @@ -43771,7 +43897,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 12144 + i32.const 12304 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -43802,7 +43928,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=20 local.get $0 call $~lib/typedarray/Int16Array#set<~lib/array/Array> @@ -43812,7 +43938,7 @@ i32.const 10 i32.const 1 i32.const 65 - i32.const 12192 + i32.const 12352 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -43827,15 +43953,15 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -43847,11 +43973,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -43885,11 +44011,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -43913,7 +44039,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -43941,7 +44067,7 @@ local.get $4 i32.ne if - i32.const 12288 + i32.const 12448 i32.const 3 local.get $2 f64.convert_i32_s @@ -43953,7 +44079,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -43989,7 +44115,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -44090,7 +44216,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=20 local.get $0 call $~lib/typedarray/Int16Array#set<~lib/array/Array> @@ -44100,7 +44226,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 12240 + i32.const 12400 call $~lib/rt/__newArray local.set $6 global.get $~lib/memory/__stack_pointer @@ -44113,14 +44239,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -44133,12 +44259,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11088 + i32.const 11248 call $~lib/array/Array#get:length local.set $8 global.get $~lib/memory/__stack_pointer @@ -44160,9 +44286,9 @@ i32.add local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11092 + i32.const 11252 i32.load local.set $9 loop $for-loop|0 @@ -44208,7 +44334,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 12336 + i32.const 12496 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -44232,7 +44358,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 12384 + i32.const 12544 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -44245,14 +44371,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -44265,12 +44391,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=8 - i32.const 11184 + i32.const 11344 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -44292,9 +44418,9 @@ i32.add local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=8 - i32.const 11188 + i32.const 11348 i32.load local.set $8 i32.const 0 @@ -44342,7 +44468,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 12432 + i32.const 12592 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -44373,7 +44499,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=20 local.get $0 call $~lib/typedarray/Int16Array#set<~lib/array/Array> @@ -44383,7 +44509,7 @@ i32.const 10 i32.const 1 i32.const 66 - i32.const 12480 + i32.const 12640 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -44398,15 +44524,15 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -44419,11 +44545,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -44464,8 +44590,8 @@ i32.lt_s end if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -44500,11 +44626,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -44538,11 +44664,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -44566,7 +44692,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -44594,7 +44720,7 @@ local.get $4 i32.ne if - i32.const 12592 + i32.const 12752 i32.const 3 local.get $2 f64.convert_i32_s @@ -44606,7 +44732,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -44632,11 +44758,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -44670,8 +44796,8 @@ i32.add i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -44730,11 +44856,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -44766,8 +44892,8 @@ local.get $2 i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -44822,11 +44948,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -44860,8 +44986,8 @@ i32.add i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -44921,11 +45047,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -44941,12 +45067,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=8 - i32.const 11264 + i32.const 11424 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -44959,8 +45085,8 @@ i32.add i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -44975,9 +45101,9 @@ i32.add local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=8 - i32.const 11268 + i32.const 11428 i32.load local.set $3 i32.const 0 @@ -45028,7 +45154,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -45129,10 +45255,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=20 local.get $0 - i32.const 11008 + i32.const 11168 i32.const 0 call $~lib/typedarray/Int32Array#set<~lib/array/Array> global.get $~lib/memory/__stack_pointer @@ -45141,7 +45267,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 12528 + i32.const 12688 call $~lib/rt/__newArray local.set $6 global.get $~lib/memory/__stack_pointer @@ -45154,14 +45280,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -45174,12 +45300,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11088 + i32.const 11248 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -45201,9 +45327,9 @@ i32.add local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11092 + i32.const 11252 i32.load local.set $10 loop $for-loop|0 @@ -45249,7 +45375,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 12640 + i32.const 12800 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -45273,7 +45399,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 12704 + i32.const 12864 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -45286,14 +45412,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -45306,12 +45432,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=8 - i32.const 11184 + i32.const 11344 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -45333,9 +45459,9 @@ i32.add local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=8 - i32.const 11188 + i32.const 11348 i32.load local.set $8 i32.const 0 @@ -45383,7 +45509,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 12768 + i32.const 12928 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -45414,7 +45540,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=20 local.get $0 call $~lib/typedarray/Int32Array#set<~lib/array/Array> @@ -45424,7 +45550,7 @@ i32.const 10 i32.const 2 i32.const 17 - i32.const 12832 + i32.const 12992 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -45439,15 +45565,15 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -45459,11 +45585,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -45497,11 +45623,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -45525,7 +45651,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -45553,7 +45679,7 @@ local.get $4 i32.ne if - i32.const 12960 + i32.const 13120 i32.const 3 local.get $2 f64.convert_i32_s @@ -45565,7 +45691,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -45602,7 +45728,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -45703,10 +45829,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=20 local.get $0 - i32.const 11008 + i32.const 11168 i32.const 0 call $~lib/typedarray/Int32Array#set<~lib/array/Array> global.get $~lib/memory/__stack_pointer @@ -45715,7 +45841,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 12896 + i32.const 13056 call $~lib/rt/__newArray local.set $6 global.get $~lib/memory/__stack_pointer @@ -45728,14 +45854,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -45748,12 +45874,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11088 + i32.const 11248 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -45775,9 +45901,9 @@ i32.add local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11092 + i32.const 11252 i32.load local.set $10 loop $for-loop|0 @@ -45823,7 +45949,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 13008 + i32.const 13168 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -45847,7 +45973,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 13072 + i32.const 13232 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -45860,14 +45986,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -45880,12 +46006,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=8 - i32.const 11184 + i32.const 11344 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -45907,9 +46033,9 @@ i32.add local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=8 - i32.const 11188 + i32.const 11348 i32.load local.set $8 i32.const 0 @@ -45957,7 +46083,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 13136 + i32.const 13296 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -45988,7 +46114,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=20 local.get $0 call $~lib/typedarray/Int32Array#set<~lib/array/Array> @@ -45998,7 +46124,7 @@ i32.const 10 i32.const 2 i32.const 67 - i32.const 13200 + i32.const 13360 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -46013,15 +46139,15 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -46036,11 +46162,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -46056,12 +46182,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=8 - i32.const 11008 + i32.const 11168 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -46072,8 +46198,8 @@ local.get $1 i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -46086,9 +46212,9 @@ i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=8 - i32.const 11012 + i32.const 11172 i32.load local.set $3 i32.const 0 @@ -46129,11 +46255,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -46167,11 +46293,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -46195,7 +46321,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -46223,7 +46349,7 @@ local.get $4 i64.ne if - i32.const 13376 + i32.const 13536 i32.const 3 local.get $2 f64.convert_i32_s @@ -46235,7 +46361,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -46260,11 +46386,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -46298,8 +46424,8 @@ i32.add i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -46334,11 +46460,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -46370,8 +46496,8 @@ local.get $2 i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -46426,11 +46552,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -46464,8 +46590,8 @@ i32.add i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -46525,11 +46651,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -46545,12 +46671,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=8 - i32.const 11264 + i32.const 11424 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer @@ -46563,8 +46689,8 @@ i32.add i32.lt_s if - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -46579,9 +46705,9 @@ i32.add local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=8 - i32.const 11268 + i32.const 11428 i32.load local.set $3 i32.const 0 @@ -46631,7 +46757,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -46732,7 +46858,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=20 local.get $0 call $~lib/typedarray/Int64Array#set<~lib/array/Array> @@ -46742,7 +46868,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 13264 + i32.const 13424 call $~lib/rt/__newArray local.set $7 global.get $~lib/memory/__stack_pointer @@ -46755,14 +46881,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -46775,12 +46901,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11088 + i32.const 11248 call $~lib/array/Array#get:length local.set $7 global.get $~lib/memory/__stack_pointer @@ -46802,9 +46928,9 @@ i32.add local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11092 + i32.const 11252 i32.load local.set $9 loop $for-loop|0 @@ -46850,7 +46976,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 13424 + i32.const 13584 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -46874,7 +47000,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 13536 + i32.const 13696 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -46887,14 +47013,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -46907,12 +47033,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=8 - i32.const 11184 + i32.const 11344 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -46934,9 +47060,9 @@ i32.add local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=8 - i32.const 11188 + i32.const 11348 i32.load local.set $8 i32.const 0 @@ -46984,7 +47110,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 13648 + i32.const 13808 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -47015,7 +47141,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=20 local.get $0 call $~lib/typedarray/Int64Array#set<~lib/array/Array> @@ -47025,7 +47151,7 @@ i32.const 10 i32.const 3 i32.const 68 - i32.const 13760 + i32.const 13920 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -47040,15 +47166,15 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -47061,11 +47187,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -47099,11 +47225,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -47127,7 +47253,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -47155,7 +47281,7 @@ local.get $4 i64.ne if - i32.const 13984 + i32.const 14144 i32.const 3 local.get $2 f64.convert_i32_s @@ -47167,7 +47293,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -47203,7 +47329,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -47304,7 +47430,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=20 local.get $0 call $~lib/typedarray/Int64Array#set<~lib/array/Array> @@ -47314,7 +47440,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 13872 + i32.const 14032 call $~lib/rt/__newArray local.set $7 global.get $~lib/memory/__stack_pointer @@ -47327,14 +47453,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -47347,12 +47473,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11088 + i32.const 11248 call $~lib/array/Array#get:length local.set $7 global.get $~lib/memory/__stack_pointer @@ -47374,9 +47500,9 @@ i32.add local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11092 + i32.const 11252 i32.load local.set $9 loop $for-loop|0 @@ -47422,7 +47548,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 14032 + i32.const 14192 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -47446,7 +47572,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 14144 + i32.const 14304 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -47459,14 +47585,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -47479,12 +47605,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=8 - i32.const 11184 + i32.const 11344 call $~lib/array/Array#get:length local.set $6 global.get $~lib/memory/__stack_pointer @@ -47506,9 +47632,9 @@ i32.add local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 11184 + i32.const 11344 i32.store offset=8 - i32.const 11188 + i32.const 11348 i32.load local.set $8 i32.const 0 @@ -47556,7 +47682,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 14256 + i32.const 14416 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -47587,7 +47713,7 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=20 local.get $0 call $~lib/typedarray/Int64Array#set<~lib/array/Array> @@ -47597,7 +47723,7 @@ i32.const 10 i32.const 3 i32.const 69 - i32.const 14368 + i32.const 14528 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -47612,15 +47738,15 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -47633,11 +47759,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -47671,11 +47797,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -47699,7 +47825,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -47727,7 +47853,7 @@ local.get $4 f32.ne if - i32.const 14544 + i32.const 14704 i32.const 3 local.get $2 f64.convert_i32_s @@ -47739,7 +47865,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -47774,7 +47900,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -47875,14 +48001,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -47895,12 +48021,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=8 - i32.const 11008 + i32.const 11168 call $~lib/array/Array#get:length local.set $4 global.get $~lib/memory/__stack_pointer @@ -47918,9 +48044,9 @@ i32.load offset=4 local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=8 - i32.const 11012 + i32.const 11172 i32.load local.set $8 loop $for-loop|0 @@ -47957,7 +48083,7 @@ i32.const 10 i32.const 2 i32.const 62 - i32.const 14480 + i32.const 14640 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -47970,10 +48096,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=20 local.get $0 - i32.const 11088 + i32.const 11248 i32.const 3 call $~lib/typedarray/Int32Array#set<~lib/array/Array> global.get $~lib/memory/__stack_pointer @@ -47982,7 +48108,7 @@ i32.const 10 i32.const 2 i32.const 62 - i32.const 14592 + i32.const 14752 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -48002,7 +48128,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -48084,7 +48210,7 @@ i32.const 10 i32.const 2 i32.const 62 - i32.const 14656 + i32.const 14816 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -48104,7 +48230,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -48185,7 +48311,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -48265,14 +48391,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -48285,12 +48411,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=8 - i32.const 11264 + i32.const 11424 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -48312,9 +48438,9 @@ i32.add local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=8 - i32.const 11268 + i32.const 11428 i32.load local.set $4 i32.const 0 @@ -48352,7 +48478,7 @@ i32.const 10 i32.const 2 i32.const 62 - i32.const 14720 + i32.const 14880 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -48367,15 +48493,15 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -48388,11 +48514,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -48426,11 +48552,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -48454,7 +48580,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 758 i32.const 3 call $~lib/builtins/abort @@ -48482,7 +48608,7 @@ local.get $4 f64.ne if - i32.const 14896 + i32.const 15056 i32.const 3 local.get $2 f64.convert_i32_s @@ -48492,7 +48618,7 @@ f64.const 0 call $~lib/builtins/trace i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 764 i32.const 7 call $~lib/builtins/abort @@ -48526,7 +48652,7 @@ block $folding-inner1 block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -48627,14 +48753,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -48647,12 +48773,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=8 - i32.const 11008 + i32.const 11168 call $~lib/array/Array#get:length local.set $5 global.get $~lib/memory/__stack_pointer @@ -48670,9 +48796,9 @@ i32.load offset=4 local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 11168 i32.store offset=8 - i32.const 11012 + i32.const 11172 i32.load local.set $7 loop $for-loop|0 @@ -48710,7 +48836,7 @@ i32.const 10 i32.const 3 i32.const 63 - i32.const 14784 + i32.const 14944 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -48723,14 +48849,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -48743,12 +48869,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11088 + i32.const 11248 call $~lib/array/Array#get:length local.set $5 global.get $~lib/memory/__stack_pointer @@ -48770,9 +48896,9 @@ i32.add local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 11248 i32.store offset=8 - i32.const 11092 + i32.const 11252 i32.load local.set $7 i32.const 0 @@ -48812,7 +48938,7 @@ i32.const 10 i32.const 3 i32.const 63 - i32.const 14944 + i32.const 15104 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -48832,7 +48958,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -48913,7 +49039,7 @@ i32.const 10 i32.const 3 i32.const 63 - i32.const 15056 + i32.const 15216 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -48933,7 +49059,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -49014,7 +49140,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -49094,14 +49220,14 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -49114,12 +49240,12 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=8 - i32.const 11264 + i32.const 11424 call $~lib/array/Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer @@ -49141,9 +49267,9 @@ i32.add local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 11424 i32.store offset=8 - i32.const 11268 + i32.const 11428 i32.load local.set $4 i32.const 0 @@ -49181,7 +49307,7 @@ i32.const 10 i32.const 3 i32.const 63 - i32.const 15168 + i32.const 15328 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -49196,15 +49322,15 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort @@ -49229,11 +49355,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -49649,11 +49775,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -49702,11 +49828,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -50122,11 +50248,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -50175,11 +50301,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -50597,11 +50723,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -50650,11 +50776,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -51072,11 +51198,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -51125,11 +51251,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -51547,11 +51673,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -51600,11 +51726,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -52022,11 +52148,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -52077,11 +52203,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -52499,11 +52625,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -52554,11 +52680,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -52976,11 +53102,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -53032,11 +53158,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -53454,11 +53580,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -53527,7 +53653,7 @@ block $folding-inner3 block $folding-inner2 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -53537,34 +53663,34 @@ memory.size i32.const 16 i32.shl - i32.const 49088 + i32.const 49248 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1284 - i32.const 1280 + i32.const 1268 + i32.const 1264 i32.store - i32.const 1288 - i32.const 1280 + i32.const 1272 + i32.const 1264 i32.store - i32.const 1280 + i32.const 1264 global.set $~lib/rt/itcms/pinSpace - i32.const 1316 - i32.const 1312 + i32.const 1300 + i32.const 1296 i32.store - i32.const 1320 - i32.const 1312 + i32.const 1304 + i32.const 1296 i32.store - i32.const 1312 + i32.const 1296 global.set $~lib/rt/itcms/toSpace - i32.const 1460 - i32.const 1456 + i32.const 1444 + i32.const 1440 i32.store - i32.const 1464 - i32.const 1456 + i32.const 1448 + i32.const 1440 i32.store - i32.const 1456 + i32.const 1440 global.set $~lib/rt/itcms/fromSpace i32.const 0 call $std/typedarray/testInstantiate @@ -53605,7 +53731,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 95 i32.const 3 call $~lib/builtins/abort @@ -53618,7 +53744,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 96 i32.const 3 call $~lib/builtins/abort @@ -53633,7 +53759,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 97 i32.const 3 call $~lib/builtins/abort @@ -53649,7 +53775,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 98 i32.const 3 call $~lib/builtins/abort @@ -53665,7 +53791,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 99 i32.const 3 call $~lib/builtins/abort @@ -53681,7 +53807,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 100 i32.const 3 call $~lib/builtins/abort @@ -53706,7 +53832,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 103 i32.const 3 call $~lib/builtins/abort @@ -53721,7 +53847,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 104 i32.const 3 call $~lib/builtins/abort @@ -53736,7 +53862,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 105 i32.const 3 call $~lib/builtins/abort @@ -53752,7 +53878,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 106 i32.const 3 call $~lib/builtins/abort @@ -53838,7 +53964,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 122 i32.const 3 call $~lib/builtins/abort @@ -53853,7 +53979,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 123 i32.const 3 call $~lib/builtins/abort @@ -53868,7 +53994,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 124 i32.const 3 call $~lib/builtins/abort @@ -53929,7 +54055,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 126 i32.const 3 call $~lib/builtins/abort @@ -53969,7 +54095,7 @@ call $~lib/typedarray/Uint8ClampedArray#__get if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 135 i32.const 3 call $~lib/builtins/abort @@ -53985,7 +54111,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 136 i32.const 3 call $~lib/builtins/abort @@ -54001,7 +54127,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 137 i32.const 3 call $~lib/builtins/abort @@ -54061,7 +54187,7 @@ i32.const 5 i32.const 0 i32.const 16 - i32.const 1728 + i32.const 3696 call $~lib/rt/__newArray local.set $7 global.get $~lib/memory/__stack_pointer @@ -54073,7 +54199,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 149 i32.const 3 call $~lib/builtins/abort @@ -54094,7 +54220,7 @@ i32.const 5 i32.const 0 i32.const 16 - i32.const 1808 + i32.const 3776 call $~lib/rt/__newArray local.set $7 global.get $~lib/memory/__stack_pointer @@ -54106,7 +54232,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 152 i32.const 3 call $~lib/builtins/abort @@ -54126,7 +54252,7 @@ i32.const 5 i32.const 0 i32.const 16 - i32.const 1840 + i32.const 3808 call $~lib/rt/__newArray local.set $7 global.get $~lib/memory/__stack_pointer @@ -54138,7 +54264,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 155 i32.const 3 call $~lib/builtins/abort @@ -54159,7 +54285,7 @@ i32.const 5 i32.const 0 i32.const 16 - i32.const 1872 + i32.const 3840 call $~lib/rt/__newArray local.set $7 global.get $~lib/memory/__stack_pointer @@ -54171,7 +54297,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 158 i32.const 3 call $~lib/builtins/abort @@ -54191,7 +54317,7 @@ i32.const 5 i32.const 0 i32.const 16 - i32.const 1904 + i32.const 3872 call $~lib/rt/__newArray local.set $7 global.get $~lib/memory/__stack_pointer @@ -54203,7 +54329,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 161 i32.const 3 call $~lib/builtins/abort @@ -54237,7 +54363,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 165 i32.const 3 call $~lib/builtins/abort @@ -54252,7 +54378,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 166 i32.const 3 call $~lib/builtins/abort @@ -54267,7 +54393,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 167 i32.const 3 call $~lib/builtins/abort @@ -54279,7 +54405,7 @@ i32.const 3 i32.const 0 i32.const 16 - i32.const 1936 + i32.const 3904 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -54291,7 +54417,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 168 i32.const 3 call $~lib/builtins/abort @@ -54303,7 +54429,7 @@ i32.const 5 i32.const 0 i32.const 16 - i32.const 1968 + i32.const 3936 call $~lib/rt/__newArray local.set $7 global.get $~lib/memory/__stack_pointer @@ -54315,7 +54441,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 169 i32.const 3 call $~lib/builtins/abort @@ -54375,7 +54501,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 2000 + i32.const 3968 call $~lib/rt/__newArray local.set $7 global.get $~lib/memory/__stack_pointer @@ -54387,7 +54513,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 181 i32.const 3 call $~lib/builtins/abort @@ -54408,7 +54534,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 2048 + i32.const 4016 call $~lib/rt/__newArray local.set $7 global.get $~lib/memory/__stack_pointer @@ -54420,7 +54546,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 184 i32.const 3 call $~lib/builtins/abort @@ -54440,7 +54566,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 2096 + i32.const 4064 call $~lib/rt/__newArray local.set $7 global.get $~lib/memory/__stack_pointer @@ -54452,7 +54578,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 187 i32.const 3 call $~lib/builtins/abort @@ -54473,7 +54599,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 2144 + i32.const 4112 call $~lib/rt/__newArray local.set $7 global.get $~lib/memory/__stack_pointer @@ -54485,7 +54611,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 190 i32.const 3 call $~lib/builtins/abort @@ -54505,7 +54631,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 2192 + i32.const 4160 call $~lib/rt/__newArray local.set $7 global.get $~lib/memory/__stack_pointer @@ -54517,7 +54643,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 193 i32.const 3 call $~lib/builtins/abort @@ -54551,7 +54677,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 197 i32.const 3 call $~lib/builtins/abort @@ -54566,7 +54692,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 198 i32.const 3 call $~lib/builtins/abort @@ -54581,7 +54707,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 199 i32.const 3 call $~lib/builtins/abort @@ -54593,7 +54719,7 @@ i32.const 3 i32.const 2 i32.const 17 - i32.const 2240 + i32.const 4208 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -54605,7 +54731,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 200 i32.const 3 call $~lib/builtins/abort @@ -54617,7 +54743,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 2272 + i32.const 4240 call $~lib/rt/__newArray local.set $7 global.get $~lib/memory/__stack_pointer @@ -54629,7 +54755,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 201 i32.const 3 call $~lib/builtins/abort @@ -54702,7 +54828,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 222 i32.const 3 call $~lib/builtins/abort @@ -54717,7 +54843,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 223 i32.const 3 call $~lib/builtins/abort @@ -54732,7 +54858,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 224 i32.const 3 call $~lib/builtins/abort @@ -54747,7 +54873,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 225 i32.const 3 call $~lib/builtins/abort @@ -54773,7 +54899,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 228 i32.const 3 call $~lib/builtins/abort @@ -54788,7 +54914,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 229 i32.const 3 call $~lib/builtins/abort @@ -54803,7 +54929,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 230 i32.const 3 call $~lib/builtins/abort @@ -54818,7 +54944,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 231 i32.const 3 call $~lib/builtins/abort @@ -54844,7 +54970,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 234 i32.const 3 call $~lib/builtins/abort @@ -54859,7 +54985,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 235 i32.const 3 call $~lib/builtins/abort @@ -54874,7 +55000,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 236 i32.const 3 call $~lib/builtins/abort @@ -54889,7 +55015,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 237 i32.const 3 call $~lib/builtins/abort @@ -54961,7 +55087,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 2320 + i32.const 4288 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -54973,7 +55099,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 248 i32.const 3 call $~lib/builtins/abort @@ -55005,7 +55131,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 2368 + i32.const 4336 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -55017,7 +55143,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 250 i32.const 3 call $~lib/builtins/abort @@ -55049,7 +55175,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 2416 + i32.const 4384 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -55061,7 +55187,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 252 i32.const 3 call $~lib/builtins/abort @@ -55093,7 +55219,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 2464 + i32.const 4432 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -55105,7 +55231,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 254 i32.const 3 call $~lib/builtins/abort @@ -55136,7 +55262,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 2512 + i32.const 4480 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -55148,7 +55274,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 256 i32.const 3 call $~lib/builtins/abort @@ -55179,7 +55305,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 2560 + i32.const 4528 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -55191,7 +55317,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 258 i32.const 3 call $~lib/builtins/abort @@ -55222,7 +55348,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 2608 + i32.const 4576 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -55234,7 +55360,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 260 i32.const 3 call $~lib/builtins/abort @@ -55266,7 +55392,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 2656 + i32.const 4624 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -55278,7 +55404,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 262 i32.const 3 call $~lib/builtins/abort @@ -55309,7 +55435,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 2704 + i32.const 4672 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -55321,7 +55447,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 264 i32.const 3 call $~lib/builtins/abort @@ -55352,7 +55478,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 2752 + i32.const 4720 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -55364,7 +55490,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 266 i32.const 3 call $~lib/builtins/abort @@ -55395,7 +55521,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 2800 + i32.const 4768 call $~lib/rt/__newArray local.set $8 global.get $~lib/memory/__stack_pointer @@ -55407,7 +55533,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 268 i32.const 3 call $~lib/builtins/abort @@ -55439,7 +55565,7 @@ i32.const 5 i32.const 2 i32.const 17 - i32.const 2848 + i32.const 4816 call $~lib/rt/__newArray local.set $7 global.get $~lib/memory/__stack_pointer @@ -55451,7 +55577,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 270 i32.const 3 call $~lib/builtins/abort @@ -55516,7 +55642,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 282 i32.const 3 call $~lib/builtins/abort @@ -55531,7 +55657,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 283 i32.const 3 call $~lib/builtins/abort @@ -55546,7 +55672,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 284 i32.const 3 call $~lib/builtins/abort @@ -55572,7 +55698,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 287 i32.const 3 call $~lib/builtins/abort @@ -55588,7 +55714,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 288 i32.const 3 call $~lib/builtins/abort @@ -55603,7 +55729,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 289 i32.const 3 call $~lib/builtins/abort @@ -55616,7 +55742,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 290 i32.const 3 call $~lib/builtins/abort @@ -55631,7 +55757,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 291 i32.const 3 call $~lib/builtins/abort @@ -55657,7 +55783,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 294 i32.const 3 call $~lib/builtins/abort @@ -55672,7 +55798,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 295 i32.const 3 call $~lib/builtins/abort @@ -55685,7 +55811,7 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 296 i32.const 3 call $~lib/builtins/abort @@ -55700,7 +55826,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 297 i32.const 3 call $~lib/builtins/abort @@ -55721,7 +55847,7 @@ i32.eq if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 300 i32.const 3 call $~lib/builtins/abort @@ -55742,7 +55868,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 301 i32.const 3 call $~lib/builtins/abort @@ -55763,7 +55889,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 302 i32.const 3 call $~lib/builtins/abort @@ -55782,7 +55908,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 303 i32.const 3 call $~lib/builtins/abort @@ -55793,7 +55919,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -55832,14 +55958,14 @@ local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 2896 + i32.const 4864 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -55852,7 +55978,7 @@ local.get $6 i32.store global.get $~lib/memory/__stack_pointer - i32.const 2896 + i32.const 4864 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $6 @@ -55885,7 +56011,7 @@ local.get $9 local.get $0 local.get $6 - i32.const 2896 + i32.const 4864 i32.load call_indirect (type $6) local.set $1 @@ -55915,7 +56041,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -55954,10 +56080,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 2928 + i32.const 4896 i32.store offset=8 local.get $0 - i32.const 2928 + i32.const 4896 call $~lib/typedarray/Uint8Array#reduce i32.const 255 i32.and @@ -55973,7 +56099,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56012,10 +56138,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 2960 + i32.const 4928 i32.store offset=8 local.get $0 - i32.const 2960 + i32.const 4928 call $~lib/typedarray/Uint8Array#reduce i32.const 255 i32.and @@ -56033,7 +56159,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56072,14 +56198,14 @@ local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 2992 + i32.const 4960 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56092,7 +56218,7 @@ local.get $6 i32.store global.get $~lib/memory/__stack_pointer - i32.const 2992 + i32.const 4960 i32.store offset=4 i32.const 0 local.set $1 @@ -56129,7 +56255,7 @@ local.get $9 local.get $0 local.get $6 - i32.const 2992 + i32.const 4960 i32.load call_indirect (type $6) local.set $1 @@ -56161,7 +56287,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56200,14 +56326,14 @@ local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3024 + i32.const 4992 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56220,7 +56346,7 @@ local.get $6 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3024 + i32.const 4992 i32.store offset=4 i32.const 0 local.set $1 @@ -56257,7 +56383,7 @@ local.get $9 local.get $0 local.get $6 - i32.const 3024 + i32.const 4992 i32.load call_indirect (type $6) local.set $1 @@ -56289,7 +56415,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56328,14 +56454,14 @@ local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3056 + i32.const 5024 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56348,7 +56474,7 @@ local.get $6 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3056 + i32.const 5024 i32.store offset=4 i32.const 0 local.set $1 @@ -56385,7 +56511,7 @@ local.get $9 local.get $0 local.get $6 - i32.const 3056 + i32.const 5024 i32.load call_indirect (type $6) local.set $1 @@ -56415,7 +56541,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56454,14 +56580,14 @@ local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3088 + i32.const 5056 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56474,7 +56600,7 @@ local.get $6 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3088 + i32.const 5056 i32.store offset=4 i32.const 0 local.set $1 @@ -56511,7 +56637,7 @@ local.get $9 local.get $0 local.get $6 - i32.const 3088 + i32.const 5056 i32.load call_indirect (type $6) local.set $1 @@ -56541,7 +56667,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56580,14 +56706,14 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3120 + i32.const 5088 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56600,7 +56726,7 @@ local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3120 + i32.const 5088 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 @@ -56635,7 +56761,7 @@ local.get $10 local.get $0 local.get $1 - i32.const 3120 + i32.const 5088 i32.load call_indirect (type $17) local.set $3 @@ -56667,7 +56793,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56706,14 +56832,14 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3152 + i32.const 5120 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56726,7 +56852,7 @@ local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3152 + i32.const 5120 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 @@ -56761,7 +56887,7 @@ local.get $10 local.get $0 local.get $1 - i32.const 3152 + i32.const 5120 i32.load call_indirect (type $17) local.set $3 @@ -56791,7 +56917,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56830,14 +56956,14 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3184 + i32.const 5152 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56850,7 +56976,7 @@ local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3184 + i32.const 5152 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 @@ -56885,9 +57011,9 @@ local.get $11 local.get $0 local.get $1 - i32.const 3184 + i32.const 5152 i32.load - call_indirect (type $22) + call_indirect (type $21) local.set $4 local.get $0 i32.const 1 @@ -56915,7 +57041,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56954,14 +57080,14 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3216 + i32.const 5184 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -56974,7 +57100,7 @@ local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3216 + i32.const 5184 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 @@ -57009,9 +57135,9 @@ local.get $12 local.get $0 local.get $1 - i32.const 3216 + i32.const 5184 i32.load - call_indirect (type $23) + call_indirect (type $22) local.set $5 local.get $0 i32.const 1 @@ -57037,7 +57163,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57105,7 +57231,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57173,7 +57299,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57241,7 +57367,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57309,7 +57435,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57377,7 +57503,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57445,7 +57571,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57513,7 +57639,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57581,7 +57707,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57649,7 +57775,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57717,7 +57843,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57785,7 +57911,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57824,14 +57950,14 @@ local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3248 + i32.const 5216 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57844,7 +57970,7 @@ local.get $6 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3248 + i32.const 5216 i32.store offset=4 i32.const 0 local.set $1 @@ -57881,7 +58007,7 @@ local.get $8 local.get $0 local.get $6 - i32.const 3248 + i32.const 5216 i32.load call_indirect (type $6) local.set $1 @@ -57911,7 +58037,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -57950,10 +58076,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3280 + i32.const 5248 i32.store offset=8 local.get $0 - i32.const 3280 + i32.const 5248 call $~lib/typedarray/Uint8Array#reduceRight i32.const 255 i32.and @@ -57969,7 +58095,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58008,10 +58134,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3312 + i32.const 5280 i32.store offset=8 local.get $0 - i32.const 3312 + i32.const 5280 call $~lib/typedarray/Uint8Array#reduceRight i32.const 255 i32.and @@ -58027,7 +58153,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58066,14 +58192,14 @@ local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3344 + i32.const 5312 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58086,7 +58212,7 @@ local.get $6 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3344 + i32.const 5312 i32.store offset=4 i32.const 0 local.set $1 @@ -58125,7 +58251,7 @@ local.get $8 local.get $0 local.get $6 - i32.const 3344 + i32.const 5312 i32.load call_indirect (type $6) local.set $1 @@ -58155,7 +58281,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58194,14 +58320,14 @@ local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3376 + i32.const 5344 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58214,7 +58340,7 @@ local.get $6 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3376 + i32.const 5344 i32.store offset=4 i32.const 0 local.set $1 @@ -58253,7 +58379,7 @@ local.get $8 local.get $0 local.get $6 - i32.const 3376 + i32.const 5344 i32.load call_indirect (type $6) local.set $1 @@ -58283,7 +58409,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58322,14 +58448,14 @@ local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3408 + i32.const 5376 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58342,7 +58468,7 @@ local.get $6 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3408 + i32.const 5376 i32.store offset=4 i32.const 0 local.set $1 @@ -58381,7 +58507,7 @@ local.get $8 local.get $0 local.get $6 - i32.const 3408 + i32.const 5376 i32.load call_indirect (type $6) local.set $1 @@ -58409,7 +58535,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58448,14 +58574,14 @@ local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3440 + i32.const 5408 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58468,7 +58594,7 @@ local.get $6 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3440 + i32.const 5408 i32.store offset=4 i32.const 0 local.set $1 @@ -58507,7 +58633,7 @@ local.get $8 local.get $0 local.get $6 - i32.const 3440 + i32.const 5408 i32.load call_indirect (type $6) local.set $1 @@ -58537,7 +58663,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58576,14 +58702,14 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3472 + i32.const 5440 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58596,7 +58722,7 @@ local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3472 + i32.const 5440 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 @@ -58633,7 +58759,7 @@ local.get $10 local.get $0 local.get $1 - i32.const 3472 + i32.const 5440 i32.load call_indirect (type $17) local.set $3 @@ -58663,7 +58789,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58702,14 +58828,14 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3504 + i32.const 5472 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58722,7 +58848,7 @@ local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3504 + i32.const 5472 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 @@ -58759,7 +58885,7 @@ local.get $10 local.get $0 local.get $1 - i32.const 3504 + i32.const 5472 i32.load call_indirect (type $17) local.set $3 @@ -58789,7 +58915,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58828,14 +58954,14 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3536 + i32.const 5504 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58848,7 +58974,7 @@ local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3536 + i32.const 5504 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 @@ -58885,9 +59011,9 @@ local.get $11 local.get $0 local.get $1 - i32.const 3536 + i32.const 5504 i32.load - call_indirect (type $22) + call_indirect (type $21) local.set $4 local.get $0 i32.const 1 @@ -58915,7 +59041,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58954,14 +59080,14 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3568 + i32.const 5536 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -58974,7 +59100,7 @@ local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 3568 + i32.const 5536 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 @@ -59011,9 +59137,9 @@ local.get $12 local.get $0 local.get $1 - i32.const 3568 + i32.const 5536 i32.load - call_indirect (type $23) + call_indirect (type $22) local.set $5 local.get $0 i32.const 1 @@ -59061,7 +59187,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59100,10 +59226,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4304 + i32.const 6272 i32.store offset=8 local.get $0 - i32.const 4304 + i32.const 6272 call $~lib/typedarray/Int8Array#some i32.eqz br_if $folding-inner6 @@ -59111,10 +59237,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4336 + i32.const 6304 i32.store offset=8 local.get $0 - i32.const 4336 + i32.const 6304 call $~lib/typedarray/Int8Array#some br_if $folding-inner7 global.get $~lib/memory/__stack_pointer @@ -59126,7 +59252,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59165,10 +59291,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4368 + i32.const 6336 i32.store offset=8 local.get $0 - i32.const 4368 + i32.const 6336 call $~lib/typedarray/Uint8Array#some i32.eqz br_if $folding-inner6 @@ -59176,10 +59302,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4400 + i32.const 6368 i32.store offset=8 local.get $0 - i32.const 4400 + i32.const 6368 call $~lib/typedarray/Uint8Array#some br_if $folding-inner7 global.get $~lib/memory/__stack_pointer @@ -59191,7 +59317,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59230,10 +59356,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4432 + i32.const 6400 i32.store offset=8 local.get $0 - i32.const 4432 + i32.const 6400 call $~lib/typedarray/Uint8Array#some i32.eqz br_if $folding-inner6 @@ -59241,10 +59367,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4464 + i32.const 6432 i32.store offset=8 local.get $0 - i32.const 4464 + i32.const 6432 call $~lib/typedarray/Uint8Array#some br_if $folding-inner7 global.get $~lib/memory/__stack_pointer @@ -59256,7 +59382,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59295,10 +59421,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4496 + i32.const 6464 i32.store offset=8 local.get $0 - i32.const 4496 + i32.const 6464 call $~lib/typedarray/Int16Array#some i32.eqz br_if $folding-inner6 @@ -59306,10 +59432,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4528 + i32.const 6496 i32.store offset=8 local.get $0 - i32.const 4528 + i32.const 6496 call $~lib/typedarray/Int16Array#some br_if $folding-inner7 global.get $~lib/memory/__stack_pointer @@ -59321,7 +59447,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59360,10 +59486,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4560 + i32.const 6528 i32.store offset=8 local.get $0 - i32.const 4560 + i32.const 6528 call $~lib/typedarray/Uint16Array#some i32.eqz br_if $folding-inner6 @@ -59371,10 +59497,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4592 + i32.const 6560 i32.store offset=8 local.get $0 - i32.const 4592 + i32.const 6560 call $~lib/typedarray/Uint16Array#some br_if $folding-inner7 global.get $~lib/memory/__stack_pointer @@ -59386,7 +59512,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59425,10 +59551,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4624 + i32.const 6592 i32.store offset=8 local.get $0 - i32.const 4624 + i32.const 6592 call $~lib/typedarray/Int32Array#some i32.eqz br_if $folding-inner6 @@ -59436,10 +59562,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4656 + i32.const 6624 i32.store offset=8 local.get $0 - i32.const 4656 + i32.const 6624 call $~lib/typedarray/Int32Array#some br_if $folding-inner7 global.get $~lib/memory/__stack_pointer @@ -59451,7 +59577,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59490,10 +59616,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4688 + i32.const 6656 i32.store offset=8 local.get $0 - i32.const 4688 + i32.const 6656 call $~lib/typedarray/Uint32Array#some i32.eqz br_if $folding-inner6 @@ -59501,10 +59627,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4720 + i32.const 6688 i32.store offset=8 local.get $0 - i32.const 4720 + i32.const 6688 call $~lib/typedarray/Uint32Array#some br_if $folding-inner7 global.get $~lib/memory/__stack_pointer @@ -59516,7 +59642,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59555,10 +59681,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4752 + i32.const 6720 i32.store offset=8 local.get $0 - i32.const 4752 + i32.const 6720 call $~lib/typedarray/Int64Array#some i32.eqz br_if $folding-inner6 @@ -59566,10 +59692,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4784 + i32.const 6752 i32.store offset=8 local.get $0 - i32.const 4784 + i32.const 6752 call $~lib/typedarray/Int64Array#some br_if $folding-inner7 global.get $~lib/memory/__stack_pointer @@ -59581,7 +59707,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59620,10 +59746,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4816 + i32.const 6784 i32.store offset=8 local.get $0 - i32.const 4816 + i32.const 6784 call $~lib/typedarray/Uint64Array#some i32.eqz br_if $folding-inner6 @@ -59631,10 +59757,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4848 + i32.const 6816 i32.store offset=8 local.get $0 - i32.const 4848 + i32.const 6816 call $~lib/typedarray/Uint64Array#some br_if $folding-inner7 global.get $~lib/memory/__stack_pointer @@ -59646,7 +59772,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59685,10 +59811,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4880 + i32.const 6848 i32.store offset=8 local.get $0 - i32.const 4880 + i32.const 6848 call $~lib/typedarray/Float32Array#some i32.eqz br_if $folding-inner6 @@ -59696,10 +59822,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4912 + i32.const 6880 i32.store offset=8 local.get $0 - i32.const 4912 + i32.const 6880 call $~lib/typedarray/Float32Array#some br_if $folding-inner7 global.get $~lib/memory/__stack_pointer @@ -59711,7 +59837,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59750,10 +59876,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4944 + i32.const 6912 i32.store offset=8 local.get $0 - i32.const 4944 + i32.const 6912 call $~lib/typedarray/Float64Array#some i32.eqz br_if $folding-inner6 @@ -59761,10 +59887,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4976 + i32.const 6944 i32.store offset=8 local.get $0 - i32.const 4976 + i32.const 6944 call $~lib/typedarray/Float64Array#some br_if $folding-inner7 global.get $~lib/memory/__stack_pointer @@ -59776,7 +59902,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59815,10 +59941,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5008 + i32.const 6976 i32.store offset=8 local.get $0 - i32.const 5008 + i32.const 6976 call $~lib/typedarray/Int8Array#findIndex i32.const 1 i32.ne @@ -59827,10 +59953,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5040 + i32.const 7008 i32.store offset=8 local.get $0 - i32.const 5040 + i32.const 7008 call $~lib/typedarray/Int8Array#findIndex i32.const -1 i32.ne @@ -59844,7 +59970,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59883,10 +60009,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5072 + i32.const 7040 i32.store offset=8 local.get $0 - i32.const 5072 + i32.const 7040 call $~lib/typedarray/Uint8Array#findIndex i32.const 1 i32.ne @@ -59895,10 +60021,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5104 + i32.const 7072 i32.store offset=8 local.get $0 - i32.const 5104 + i32.const 7072 call $~lib/typedarray/Uint8Array#findIndex i32.const -1 i32.ne @@ -59912,7 +60038,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -59951,10 +60077,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5136 + i32.const 7104 i32.store offset=8 local.get $0 - i32.const 5136 + i32.const 7104 call $~lib/typedarray/Uint8Array#findIndex i32.const 1 i32.ne @@ -59963,10 +60089,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5168 + i32.const 7136 i32.store offset=8 local.get $0 - i32.const 5168 + i32.const 7136 call $~lib/typedarray/Uint8Array#findIndex i32.const -1 i32.ne @@ -59980,7 +60106,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60019,10 +60145,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5200 + i32.const 7168 i32.store offset=8 local.get $0 - i32.const 5200 + i32.const 7168 call $~lib/typedarray/Int16Array#findIndex i32.const 1 i32.ne @@ -60031,10 +60157,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5232 + i32.const 7200 i32.store offset=8 local.get $0 - i32.const 5232 + i32.const 7200 call $~lib/typedarray/Int16Array#findIndex i32.const -1 i32.ne @@ -60048,7 +60174,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60087,10 +60213,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5264 + i32.const 7232 i32.store offset=8 local.get $0 - i32.const 5264 + i32.const 7232 call $~lib/typedarray/Uint16Array#findIndex i32.const 1 i32.ne @@ -60099,10 +60225,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5296 + i32.const 7264 i32.store offset=8 local.get $0 - i32.const 5296 + i32.const 7264 call $~lib/typedarray/Uint16Array#findIndex i32.const -1 i32.ne @@ -60116,7 +60242,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60155,10 +60281,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5328 + i32.const 7296 i32.store offset=8 local.get $0 - i32.const 5328 + i32.const 7296 call $~lib/typedarray/Int32Array#findIndex i32.const 1 i32.ne @@ -60167,10 +60293,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5360 + i32.const 7328 i32.store offset=8 local.get $0 - i32.const 5360 + i32.const 7328 call $~lib/typedarray/Int32Array#findIndex i32.const -1 i32.ne @@ -60184,7 +60310,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60223,10 +60349,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5392 + i32.const 7360 i32.store offset=8 local.get $0 - i32.const 5392 + i32.const 7360 call $~lib/typedarray/Uint32Array#findIndex i32.const 1 i32.ne @@ -60235,10 +60361,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5424 + i32.const 7392 i32.store offset=8 local.get $0 - i32.const 5424 + i32.const 7392 call $~lib/typedarray/Uint32Array#findIndex i32.const -1 i32.ne @@ -60252,7 +60378,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60291,10 +60417,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5456 + i32.const 7424 i32.store offset=8 local.get $0 - i32.const 5456 + i32.const 7424 call $~lib/typedarray/Int64Array#findIndex i32.const 1 i32.ne @@ -60303,10 +60429,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5488 + i32.const 7456 i32.store offset=8 local.get $0 - i32.const 5488 + i32.const 7456 call $~lib/typedarray/Int64Array#findIndex i32.const -1 i32.ne @@ -60320,7 +60446,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60359,10 +60485,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5520 + i32.const 7488 i32.store offset=8 local.get $0 - i32.const 5520 + i32.const 7488 call $~lib/typedarray/Uint64Array#findIndex i32.const 1 i32.ne @@ -60371,10 +60497,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5552 + i32.const 7520 i32.store offset=8 local.get $0 - i32.const 5552 + i32.const 7520 call $~lib/typedarray/Uint64Array#findIndex i32.const -1 i32.ne @@ -60388,7 +60514,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60427,10 +60553,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5584 + i32.const 7552 i32.store offset=8 local.get $0 - i32.const 5584 + i32.const 7552 call $~lib/typedarray/Float32Array#findIndex i32.const 1 i32.ne @@ -60439,10 +60565,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5616 + i32.const 7584 i32.store offset=8 local.get $0 - i32.const 5616 + i32.const 7584 call $~lib/typedarray/Float32Array#findIndex i32.const -1 i32.ne @@ -60456,7 +60582,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60495,10 +60621,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5648 + i32.const 7616 i32.store offset=8 local.get $0 - i32.const 5648 + i32.const 7616 call $~lib/typedarray/Float64Array#findIndex i32.const 1 i32.ne @@ -60507,10 +60633,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5680 + i32.const 7648 i32.store offset=8 local.get $0 - i32.const 5680 + i32.const 7648 call $~lib/typedarray/Float64Array#findIndex i32.const -1 i32.ne @@ -60524,7 +60650,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60563,10 +60689,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5712 + i32.const 7680 i32.store offset=8 local.get $0 - i32.const 5712 + i32.const 7680 call $~lib/typedarray/Int8Array#findLastIndex i32.const 1 i32.ne @@ -60575,10 +60701,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5744 + i32.const 7712 i32.store offset=8 local.get $0 - i32.const 5744 + i32.const 7712 call $~lib/typedarray/Int8Array#findLastIndex i32.const -1 i32.ne @@ -60592,7 +60718,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60631,10 +60757,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5776 + i32.const 7744 i32.store offset=8 local.get $0 - i32.const 5776 + i32.const 7744 call $~lib/typedarray/Uint8Array#findLastIndex i32.const 1 i32.ne @@ -60643,10 +60769,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5808 + i32.const 7776 i32.store offset=8 local.get $0 - i32.const 5808 + i32.const 7776 call $~lib/typedarray/Uint8Array#findLastIndex i32.const -1 i32.ne @@ -60660,7 +60786,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60699,10 +60825,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5840 + i32.const 7808 i32.store offset=8 local.get $0 - i32.const 5840 + i32.const 7808 call $~lib/typedarray/Uint8Array#findLastIndex i32.const 1 i32.ne @@ -60711,10 +60837,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5872 + i32.const 7840 i32.store offset=8 local.get $0 - i32.const 5872 + i32.const 7840 call $~lib/typedarray/Uint8Array#findLastIndex i32.const -1 i32.ne @@ -60728,7 +60854,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60767,10 +60893,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 7872 i32.store offset=8 local.get $0 - i32.const 5904 + i32.const 7872 call $~lib/typedarray/Int16Array#findLastIndex i32.const 1 i32.ne @@ -60779,10 +60905,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5936 + i32.const 7904 i32.store offset=8 local.get $0 - i32.const 5936 + i32.const 7904 call $~lib/typedarray/Int16Array#findLastIndex i32.const -1 i32.ne @@ -60796,7 +60922,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60835,10 +60961,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5968 + i32.const 7936 i32.store offset=8 local.get $0 - i32.const 5968 + i32.const 7936 call $~lib/typedarray/Uint16Array#findLastIndex i32.const 1 i32.ne @@ -60847,10 +60973,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6000 + i32.const 7968 i32.store offset=8 local.get $0 - i32.const 6000 + i32.const 7968 call $~lib/typedarray/Uint16Array#findLastIndex i32.const -1 i32.ne @@ -60864,7 +60990,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60903,10 +61029,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6032 + i32.const 8000 i32.store offset=8 local.get $0 - i32.const 6032 + i32.const 8000 call $~lib/typedarray/Int32Array#findLastIndex i32.const 1 i32.ne @@ -60915,10 +61041,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6064 + i32.const 8032 i32.store offset=8 local.get $0 - i32.const 6064 + i32.const 8032 call $~lib/typedarray/Int32Array#findLastIndex i32.const -1 i32.ne @@ -60932,7 +61058,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -60971,10 +61097,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6096 + i32.const 8064 i32.store offset=8 local.get $0 - i32.const 6096 + i32.const 8064 call $~lib/typedarray/Uint32Array#findLastIndex i32.const 1 i32.ne @@ -60983,10 +61109,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6128 + i32.const 8096 i32.store offset=8 local.get $0 - i32.const 6128 + i32.const 8096 call $~lib/typedarray/Uint32Array#findLastIndex i32.const -1 i32.ne @@ -61000,7 +61126,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61039,10 +61165,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6160 + i32.const 8128 i32.store offset=8 local.get $0 - i32.const 6160 + i32.const 8128 call $~lib/typedarray/Int64Array#findLastIndex i32.const 1 i32.ne @@ -61051,10 +61177,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6192 + i32.const 8160 i32.store offset=8 local.get $0 - i32.const 6192 + i32.const 8160 call $~lib/typedarray/Int64Array#findLastIndex i32.const -1 i32.ne @@ -61068,7 +61194,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61107,10 +61233,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6224 + i32.const 8192 i32.store offset=8 local.get $0 - i32.const 6224 + i32.const 8192 call $~lib/typedarray/Uint64Array#findLastIndex i32.const 1 i32.ne @@ -61119,10 +61245,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6256 + i32.const 8224 i32.store offset=8 local.get $0 - i32.const 6256 + i32.const 8224 call $~lib/typedarray/Uint64Array#findLastIndex i32.const -1 i32.ne @@ -61136,7 +61262,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61175,10 +61301,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6288 + i32.const 8256 i32.store offset=8 local.get $0 - i32.const 6288 + i32.const 8256 call $~lib/typedarray/Float32Array#findLastIndex i32.const 1 i32.ne @@ -61187,10 +61313,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6320 + i32.const 8288 i32.store offset=8 local.get $0 - i32.const 6320 + i32.const 8288 call $~lib/typedarray/Float32Array#findLastIndex i32.const -1 i32.ne @@ -61204,7 +61330,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61243,10 +61369,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6352 + i32.const 8320 i32.store offset=8 local.get $0 - i32.const 6352 + i32.const 8320 call $~lib/typedarray/Float64Array#findLastIndex i32.const 1 i32.ne @@ -61255,10 +61381,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6384 + i32.const 8352 i32.store offset=8 local.get $0 - i32.const 6384 + i32.const 8352 call $~lib/typedarray/Float64Array#findLastIndex i32.const -1 i32.ne @@ -61272,7 +61398,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61311,10 +61437,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6416 + i32.const 8384 i32.store offset=8 local.get $0 - i32.const 6416 + i32.const 8384 call $~lib/typedarray/Int8Array#every i32.eqz br_if $folding-inner12 @@ -61322,10 +61448,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6448 + i32.const 8416 i32.store offset=8 local.get $0 - i32.const 6448 + i32.const 8416 call $~lib/typedarray/Int8Array#every br_if $folding-inner13 global.get $~lib/memory/__stack_pointer @@ -61337,7 +61463,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61376,10 +61502,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6480 + i32.const 8448 i32.store offset=8 local.get $0 - i32.const 6480 + i32.const 8448 call $~lib/typedarray/Uint8Array#every i32.eqz br_if $folding-inner12 @@ -61387,10 +61513,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6512 + i32.const 8480 i32.store offset=8 local.get $0 - i32.const 6512 + i32.const 8480 call $~lib/typedarray/Uint8Array#every br_if $folding-inner13 global.get $~lib/memory/__stack_pointer @@ -61402,7 +61528,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61441,10 +61567,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6544 + i32.const 8512 i32.store offset=8 local.get $0 - i32.const 6544 + i32.const 8512 call $~lib/typedarray/Uint8Array#every i32.eqz br_if $folding-inner12 @@ -61452,10 +61578,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6576 + i32.const 8544 i32.store offset=8 local.get $0 - i32.const 6576 + i32.const 8544 call $~lib/typedarray/Uint8Array#every br_if $folding-inner13 global.get $~lib/memory/__stack_pointer @@ -61467,7 +61593,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61506,10 +61632,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6608 + i32.const 8576 i32.store offset=8 local.get $0 - i32.const 6608 + i32.const 8576 call $~lib/typedarray/Int16Array#every i32.eqz br_if $folding-inner12 @@ -61517,10 +61643,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6640 + i32.const 8608 i32.store offset=8 local.get $0 - i32.const 6640 + i32.const 8608 call $~lib/typedarray/Int16Array#every br_if $folding-inner13 global.get $~lib/memory/__stack_pointer @@ -61532,7 +61658,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61571,10 +61697,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6672 + i32.const 8640 i32.store offset=8 local.get $0 - i32.const 6672 + i32.const 8640 call $~lib/typedarray/Uint16Array#every i32.eqz br_if $folding-inner12 @@ -61582,10 +61708,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6704 + i32.const 8672 i32.store offset=8 local.get $0 - i32.const 6704 + i32.const 8672 call $~lib/typedarray/Uint16Array#every br_if $folding-inner13 global.get $~lib/memory/__stack_pointer @@ -61597,7 +61723,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61636,10 +61762,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6736 + i32.const 8704 i32.store offset=8 local.get $0 - i32.const 6736 + i32.const 8704 call $~lib/typedarray/Int32Array#every i32.eqz br_if $folding-inner12 @@ -61647,10 +61773,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6768 + i32.const 8736 i32.store offset=8 local.get $0 - i32.const 6768 + i32.const 8736 call $~lib/typedarray/Int32Array#every br_if $folding-inner13 global.get $~lib/memory/__stack_pointer @@ -61662,7 +61788,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61701,10 +61827,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6800 + i32.const 8768 i32.store offset=8 local.get $0 - i32.const 6800 + i32.const 8768 call $~lib/typedarray/Uint32Array#every i32.eqz br_if $folding-inner12 @@ -61712,10 +61838,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6832 + i32.const 8800 i32.store offset=8 local.get $0 - i32.const 6832 + i32.const 8800 call $~lib/typedarray/Uint32Array#every br_if $folding-inner13 global.get $~lib/memory/__stack_pointer @@ -61727,7 +61853,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61766,10 +61892,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6864 + i32.const 8832 i32.store offset=8 local.get $0 - i32.const 6864 + i32.const 8832 call $~lib/typedarray/Int64Array#every i32.eqz br_if $folding-inner12 @@ -61777,10 +61903,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6896 + i32.const 8864 i32.store offset=8 local.get $0 - i32.const 6896 + i32.const 8864 call $~lib/typedarray/Int64Array#every br_if $folding-inner13 global.get $~lib/memory/__stack_pointer @@ -61792,7 +61918,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61831,10 +61957,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6928 + i32.const 8896 i32.store offset=8 local.get $0 - i32.const 6928 + i32.const 8896 call $~lib/typedarray/Uint64Array#every i32.eqz br_if $folding-inner12 @@ -61842,10 +61968,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6960 + i32.const 8928 i32.store offset=8 local.get $0 - i32.const 6960 + i32.const 8928 call $~lib/typedarray/Uint64Array#every br_if $folding-inner13 global.get $~lib/memory/__stack_pointer @@ -61857,7 +61983,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61896,10 +62022,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 6992 + i32.const 8960 i32.store offset=8 local.get $0 - i32.const 6992 + i32.const 8960 call $~lib/typedarray/Float32Array#every i32.eqz br_if $folding-inner12 @@ -61907,10 +62033,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7024 + i32.const 8992 i32.store offset=8 local.get $0 - i32.const 7024 + i32.const 8992 call $~lib/typedarray/Float32Array#every br_if $folding-inner13 global.get $~lib/memory/__stack_pointer @@ -61922,7 +62048,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -61961,10 +62087,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7056 + i32.const 9024 i32.store offset=8 local.get $0 - i32.const 7056 + i32.const 9024 call $~lib/typedarray/Float64Array#every i32.eqz br_if $folding-inner12 @@ -61972,10 +62098,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7088 + i32.const 9056 i32.store offset=8 local.get $0 - i32.const 7088 + i32.const 9056 call $~lib/typedarray/Float64Array#every br_if $folding-inner13 global.get $~lib/memory/__stack_pointer @@ -61989,7 +62115,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62011,11 +62137,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 0 - i32.const 7152 + i32.const 9120 i32.const 0 call $~lib/array/Array#__get i32.extend8_s @@ -62024,11 +62150,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 1 - i32.const 7152 + i32.const 9120 i32.const 1 call $~lib/array/Array#__get i32.extend8_s @@ -62037,11 +62163,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 2 - i32.const 7152 + i32.const 9120 i32.const 2 call $~lib/array/Array#__get i32.extend8_s @@ -62050,14 +62176,14 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7200 + i32.const 9168 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62070,7 +62196,7 @@ local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7200 + i32.const 9168 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 @@ -62100,7 +62226,7 @@ global.set $~argumentsLength local.get $0 local.get $1 - i32.const 7200 + i32.const 9168 i32.load call_indirect (type $4) local.get $0 @@ -62127,7 +62253,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62149,11 +62275,11 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $0 i32.const 0 - i32.const 7152 + i32.const 9120 i32.const 0 call $~lib/array/Array#__get i32.const 255 @@ -62163,11 +62289,11 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $0 i32.const 1 - i32.const 7152 + i32.const 9120 i32.const 1 call $~lib/array/Array#__get i32.const 255 @@ -62177,11 +62303,11 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $0 i32.const 2 - i32.const 7152 + i32.const 9120 i32.const 2 call $~lib/array/Array#__get i32.const 255 @@ -62191,10 +62317,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7232 + i32.const 9200 i32.store offset=8 local.get $0 - i32.const 7232 + i32.const 9200 call $~lib/typedarray/Uint8Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -62209,7 +62335,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62231,11 +62357,11 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $0 i32.const 0 - i32.const 7152 + i32.const 9120 i32.const 0 call $~lib/array/Array#__get i32.const 255 @@ -62245,11 +62371,11 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $0 i32.const 1 - i32.const 7152 + i32.const 9120 i32.const 1 call $~lib/array/Array#__get i32.const 255 @@ -62259,11 +62385,11 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $0 i32.const 2 - i32.const 7152 + i32.const 9120 i32.const 2 call $~lib/array/Array#__get i32.const 255 @@ -62273,10 +62399,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7264 + i32.const 9232 i32.store offset=8 local.get $0 - i32.const 7264 + i32.const 9232 call $~lib/typedarray/Uint8Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 @@ -62293,7 +62419,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62315,11 +62441,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 0 - i32.const 7152 + i32.const 9120 i32.const 0 call $~lib/array/Array#__get i32.extend16_s @@ -62328,11 +62454,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 1 - i32.const 7152 + i32.const 9120 i32.const 1 call $~lib/array/Array#__get i32.extend16_s @@ -62341,11 +62467,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 2 - i32.const 7152 + i32.const 9120 i32.const 2 call $~lib/array/Array#__get i32.extend16_s @@ -62354,14 +62480,14 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7296 + i32.const 9264 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62374,7 +62500,7 @@ local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7296 + i32.const 9264 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 @@ -62406,7 +62532,7 @@ global.set $~argumentsLength local.get $0 local.get $1 - i32.const 7296 + i32.const 9264 i32.load call_indirect (type $4) local.get $0 @@ -62435,7 +62561,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62457,11 +62583,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 0 - i32.const 7152 + i32.const 9120 i32.const 0 call $~lib/array/Array#__get i32.const 65535 @@ -62471,11 +62597,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 1 - i32.const 7152 + i32.const 9120 i32.const 1 call $~lib/array/Array#__get i32.const 65535 @@ -62485,11 +62611,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 2 - i32.const 7152 + i32.const 9120 i32.const 2 call $~lib/array/Array#__get i32.const 65535 @@ -62499,14 +62625,14 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7328 + i32.const 9296 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62519,7 +62645,7 @@ local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7328 + i32.const 9296 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 @@ -62551,7 +62677,7 @@ global.set $~argumentsLength local.get $0 local.get $1 - i32.const 7328 + i32.const 9296 i32.load call_indirect (type $4) local.get $0 @@ -62580,7 +62706,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62602,11 +62728,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 0 - i32.const 7152 + i32.const 9120 i32.const 0 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set @@ -62614,11 +62740,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 1 - i32.const 7152 + i32.const 9120 i32.const 1 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set @@ -62626,11 +62752,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 2 - i32.const 7152 + i32.const 9120 i32.const 2 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set @@ -62638,14 +62764,14 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7360 + i32.const 9328 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62658,7 +62784,7 @@ local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7360 + i32.const 9328 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 @@ -62690,7 +62816,7 @@ global.set $~argumentsLength local.get $0 local.get $1 - i32.const 7360 + i32.const 9328 i32.load call_indirect (type $4) local.get $0 @@ -62719,7 +62845,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62741,11 +62867,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 0 - i32.const 7152 + i32.const 9120 i32.const 0 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set @@ -62753,11 +62879,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 1 - i32.const 7152 + i32.const 9120 i32.const 1 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set @@ -62765,11 +62891,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 2 - i32.const 7152 + i32.const 9120 i32.const 2 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set @@ -62777,14 +62903,14 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7392 + i32.const 9360 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62797,7 +62923,7 @@ local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7392 + i32.const 9360 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 @@ -62829,7 +62955,7 @@ global.set $~argumentsLength local.get $0 local.get $1 - i32.const 7392 + i32.const 9360 i32.load call_indirect (type $4) local.get $0 @@ -62858,7 +62984,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62880,11 +63006,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 0 - i32.const 7152 + i32.const 9120 i32.const 0 call $~lib/array/Array#__get i64.extend_i32_s @@ -62893,11 +63019,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 1 - i32.const 7152 + i32.const 9120 i32.const 1 call $~lib/array/Array#__get i64.extend_i32_s @@ -62906,11 +63032,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 2 - i32.const 7152 + i32.const 9120 i32.const 2 call $~lib/array/Array#__get i64.extend_i32_s @@ -62919,14 +63045,14 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7424 + i32.const 9392 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -62939,7 +63065,7 @@ local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7424 + i32.const 9392 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 @@ -62971,7 +63097,7 @@ global.set $~argumentsLength local.get $0 local.get $1 - i32.const 7424 + i32.const 9392 i32.load call_indirect (type $28) local.get $0 @@ -63000,7 +63126,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63022,11 +63148,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 0 - i32.const 7152 + i32.const 9120 i32.const 0 call $~lib/array/Array#__get i64.extend_i32_s @@ -63035,11 +63161,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 1 - i32.const 7152 + i32.const 9120 i32.const 1 call $~lib/array/Array#__get i64.extend_i32_s @@ -63048,11 +63174,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 2 - i32.const 7152 + i32.const 9120 i32.const 2 call $~lib/array/Array#__get i64.extend_i32_s @@ -63061,14 +63187,14 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7456 + i32.const 9424 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63081,7 +63207,7 @@ local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7456 + i32.const 9424 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 @@ -63113,7 +63239,7 @@ global.set $~argumentsLength local.get $0 local.get $1 - i32.const 7456 + i32.const 9424 i32.load call_indirect (type $28) local.get $0 @@ -63142,7 +63268,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63164,11 +63290,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 0 - i32.const 7152 + i32.const 9120 i32.const 0 call $~lib/array/Array#__get f32.convert_i32_s @@ -63177,11 +63303,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 1 - i32.const 7152 + i32.const 9120 i32.const 1 call $~lib/array/Array#__get f32.convert_i32_s @@ -63190,11 +63316,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 2 - i32.const 7152 + i32.const 9120 i32.const 2 call $~lib/array/Array#__get f32.convert_i32_s @@ -63203,14 +63329,14 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7488 + i32.const 9456 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63223,7 +63349,7 @@ local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7488 + i32.const 9456 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 @@ -63255,7 +63381,7 @@ global.set $~argumentsLength local.get $0 local.get $1 - i32.const 7488 + i32.const 9456 i32.load call_indirect (type $33) local.get $0 @@ -63284,7 +63410,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63306,11 +63432,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 0 - i32.const 7152 + i32.const 9120 i32.const 0 call $~lib/array/Array#__get f64.convert_i32_s @@ -63319,11 +63445,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 1 - i32.const 7152 + i32.const 9120 i32.const 1 call $~lib/array/Array#__get f64.convert_i32_s @@ -63332,11 +63458,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 + i32.const 9120 i32.store offset=8 local.get $1 i32.const 2 - i32.const 7152 + i32.const 9120 i32.const 2 call $~lib/array/Array#__get f64.convert_i32_s @@ -63345,14 +63471,14 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7520 + i32.const 9488 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63365,7 +63491,7 @@ local.get $1 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7520 + i32.const 9488 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 @@ -63397,7 +63523,7 @@ global.set $~argumentsLength local.get $0 local.get $1 - i32.const 7520 + i32.const 9488 i32.load call_indirect (type $34) local.get $0 @@ -63464,7 +63590,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 653 i32.const 3 call $~lib/builtins/abort @@ -63480,7 +63606,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63543,7 +63669,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 654 i32.const 3 call $~lib/builtins/abort @@ -63572,7 +63698,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 659 i32.const 3 call $~lib/builtins/abort @@ -63588,7 +63714,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63651,7 +63777,7 @@ i32.eqz if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 660 i32.const 3 call $~lib/builtins/abort @@ -63662,7 +63788,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63721,7 +63847,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 9616 + i32.const 9776 call $~lib/string/String.__eq i32.eqz br_if $folding-inner15 @@ -63733,7 +63859,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63753,7 +63879,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 9616 + i32.const 9776 call $~lib/string/String.__eq i32.eqz br_if $folding-inner16 @@ -63766,7 +63892,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63825,7 +63951,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 9616 + i32.const 9776 call $~lib/string/String.__eq i32.eqz br_if $folding-inner15 @@ -63839,7 +63965,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 9616 + i32.const 9776 call $~lib/string/String.__eq i32.eqz br_if $folding-inner16 @@ -63852,7 +63978,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63911,7 +64037,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 9616 + i32.const 9776 call $~lib/string/String.__eq i32.eqz br_if $folding-inner15 @@ -63925,7 +64051,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 9616 + i32.const 9776 call $~lib/string/String.__eq i32.eqz br_if $folding-inner16 @@ -63938,7 +64064,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -63997,7 +64123,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 9616 + i32.const 9776 call $~lib/string/String.__eq i32.eqz br_if $folding-inner15 @@ -64009,7 +64135,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64029,7 +64155,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 9616 + i32.const 9776 call $~lib/string/String.__eq i32.eqz br_if $folding-inner16 @@ -64042,7 +64168,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64101,7 +64227,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 9616 + i32.const 9776 call $~lib/string/String.__eq i32.eqz br_if $folding-inner15 @@ -64113,7 +64239,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64133,7 +64259,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 9616 + i32.const 9776 call $~lib/string/String.__eq i32.eqz br_if $folding-inner16 @@ -64146,7 +64272,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64205,7 +64331,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 9616 + i32.const 9776 call $~lib/string/String.__eq i32.eqz br_if $folding-inner15 @@ -64217,7 +64343,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64237,7 +64363,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 9616 + i32.const 9776 call $~lib/string/String.__eq i32.eqz br_if $folding-inner16 @@ -64250,7 +64376,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64309,7 +64435,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 9616 + i32.const 9776 call $~lib/string/String.__eq i32.eqz br_if $folding-inner15 @@ -64321,7 +64447,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64341,7 +64467,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 9616 + i32.const 9776 call $~lib/string/String.__eq i32.eqz br_if $folding-inner16 @@ -64354,7 +64480,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64413,7 +64539,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 9616 + i32.const 9776 call $~lib/string/String.__eq i32.eqz br_if $folding-inner15 @@ -64425,7 +64551,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64445,7 +64571,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 9616 + i32.const 9776 call $~lib/string/String.__eq i32.eqz br_if $folding-inner16 @@ -64458,7 +64584,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64517,7 +64643,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 9616 + i32.const 9776 call $~lib/string/String.__eq i32.eqz br_if $folding-inner15 @@ -64529,7 +64655,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64549,7 +64675,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 9616 + i32.const 9776 call $~lib/string/String.__eq i32.eqz br_if $folding-inner16 @@ -64562,7 +64688,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64621,7 +64747,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 10800 + i32.const 10960 call $~lib/string/String.__eq i32.eqz br_if $folding-inner17 @@ -64633,7 +64759,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64653,7 +64779,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 10800 + i32.const 10960 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 @@ -64666,7 +64792,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64725,7 +64851,7 @@ local.get $1 i32.store offset=4 local.get $1 - i32.const 10800 + i32.const 10960 call $~lib/string/String.__eq i32.eqz br_if $folding-inner17 @@ -64737,7 +64863,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64757,7 +64883,7 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 10800 + i32.const 10960 call $~lib/string/String.__eq i32.eqz br_if $folding-inner18 @@ -64788,7 +64914,7 @@ call $~lib/typedarray/Int8Array#get:length if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 737 i32.const 3 call $~lib/builtins/abort @@ -64817,7 +64943,7 @@ call $~lib/typedarray/Int8Array#get:length if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 741 i32.const 3 call $~lib/builtins/abort @@ -64829,7 +64955,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -64837,12 +64963,12 @@ i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=4 - i32.const 10928 + i32.const 11088 call $~lib/array/Array#get:length local.set $0 global.get $~lib/memory/__stack_pointer @@ -64859,11 +64985,11 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10928 + i32.const 11088 i32.store offset=12 local.get $1 local.get $2 - i32.const 10928 + i32.const 11088 local.get $2 call $~lib/array/Array#__get i32.const 255 @@ -64944,7 +65070,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 730 i32.const 5 call $~lib/builtins/abort @@ -65075,7 +65201,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -65184,7 +65310,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -65276,7 +65402,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 15280 + i32.const 15440 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -65362,7 +65488,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -65453,7 +65579,7 @@ i32.const 10 i32.const 0 i32.const 64 - i32.const 15312 + i32.const 15472 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -65469,7 +65595,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>" block $folding-inner02 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner02 global.get $~lib/memory/__stack_pointer @@ -65515,7 +65641,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner02 global.get $~lib/memory/__stack_pointer @@ -65525,16 +65651,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15344 + i32.const 15504 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15344 + i32.const 15504 i32.store offset=8 local.get $1 - i32.const 15344 + i32.const 15504 call $~lib/typedarray/Int8Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -65553,7 +65679,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -65569,7 +65695,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -65585,7 +65711,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -65595,10 +65721,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15376 + i32.const 15536 i32.store offset=12 local.get $1 - i32.const 15376 + i32.const 15536 call $~lib/typedarray/Int8Array#sort drop global.get $~lib/memory/__stack_pointer @@ -65611,7 +65737,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -65627,7 +65753,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -65643,7 +65769,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -65655,8 +65781,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>" end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -65669,7 +65795,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>$1" block $folding-inner04 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner04 global.get $~lib/memory/__stack_pointer @@ -65715,7 +65841,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner04 global.get $~lib/memory/__stack_pointer @@ -65725,16 +65851,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15408 + i32.const 15568 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15408 + i32.const 15568 i32.store offset=8 local.get $1 - i32.const 15408 + i32.const 15568 call $~lib/typedarray/Uint8Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -65753,7 +65879,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -65769,7 +65895,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -65785,7 +65911,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -65795,10 +65921,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15440 + i32.const 15600 i32.store offset=12 local.get $1 - i32.const 15440 + i32.const 15600 call $~lib/typedarray/Uint8Array#sort drop global.get $~lib/memory/__stack_pointer @@ -65811,7 +65937,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -65827,7 +65953,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -65843,7 +65969,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -65855,8 +65981,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>$1" end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -65869,7 +65995,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8>$2" block $folding-inner06 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner06 global.get $~lib/memory/__stack_pointer @@ -65915,7 +66041,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner06 global.get $~lib/memory/__stack_pointer @@ -65925,16 +66051,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15472 + i32.const 15632 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15472 + i32.const 15632 i32.store offset=8 local.get $1 - i32.const 15472 + i32.const 15632 call $~lib/typedarray/Uint8Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -65953,7 +66079,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -65969,7 +66095,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -65985,7 +66111,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -65995,10 +66121,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15504 + i32.const 15664 i32.store offset=12 local.get $1 - i32.const 15504 + i32.const 15664 call $~lib/typedarray/Uint8Array#sort drop global.get $~lib/memory/__stack_pointer @@ -66011,7 +66137,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -66027,7 +66153,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -66043,7 +66169,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -66055,8 +66181,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8>$2" end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -66069,7 +66195,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>$3" block $folding-inner08 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner08 global.get $~lib/memory/__stack_pointer @@ -66115,7 +66241,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner08 global.get $~lib/memory/__stack_pointer @@ -66125,16 +66251,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15536 + i32.const 15696 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15536 + i32.const 15696 i32.store offset=8 local.get $1 - i32.const 15536 + i32.const 15696 call $~lib/typedarray/Int16Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -66153,7 +66279,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -66169,7 +66295,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -66185,7 +66311,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -66195,10 +66321,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15568 + i32.const 15728 i32.store offset=12 local.get $1 - i32.const 15568 + i32.const 15728 call $~lib/typedarray/Int16Array#sort drop global.get $~lib/memory/__stack_pointer @@ -66211,7 +66337,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -66227,7 +66353,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -66243,7 +66369,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -66255,8 +66381,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>$3" end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -66269,7 +66395,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>$4" block $folding-inner010 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner010 global.get $~lib/memory/__stack_pointer @@ -66315,7 +66441,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner010 global.get $~lib/memory/__stack_pointer @@ -66325,16 +66451,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15600 + i32.const 15760 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15600 + i32.const 15760 i32.store offset=8 local.get $1 - i32.const 15600 + i32.const 15760 call $~lib/typedarray/Uint16Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -66353,7 +66479,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -66369,7 +66495,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -66385,7 +66511,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -66395,10 +66521,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15632 + i32.const 15792 i32.store offset=12 local.get $1 - i32.const 15632 + i32.const 15792 call $~lib/typedarray/Uint16Array#sort drop global.get $~lib/memory/__stack_pointer @@ -66411,7 +66537,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -66427,7 +66553,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -66443,7 +66569,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -66455,8 +66581,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>$4" end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -66469,7 +66595,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>$5" block $folding-inner012 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner012 global.get $~lib/memory/__stack_pointer @@ -66515,7 +66641,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner012 global.get $~lib/memory/__stack_pointer @@ -66525,16 +66651,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15664 + i32.const 15824 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15664 + i32.const 15824 i32.store offset=8 local.get $1 - i32.const 15664 + i32.const 15824 call $~lib/typedarray/Int32Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -66553,7 +66679,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -66569,7 +66695,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -66585,7 +66711,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -66595,10 +66721,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15696 + i32.const 15856 i32.store offset=12 local.get $1 - i32.const 15696 + i32.const 15856 call $~lib/typedarray/Int32Array#sort drop global.get $~lib/memory/__stack_pointer @@ -66611,7 +66737,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -66627,7 +66753,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -66643,7 +66769,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -66655,8 +66781,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>$5" end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -66669,7 +66795,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>$6" block $folding-inner014 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner014 global.get $~lib/memory/__stack_pointer @@ -66715,7 +66841,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner014 global.get $~lib/memory/__stack_pointer @@ -66725,16 +66851,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15728 + i32.const 15888 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15728 + i32.const 15888 i32.store offset=8 local.get $1 - i32.const 15728 + i32.const 15888 call $~lib/typedarray/Uint32Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -66753,7 +66879,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -66769,7 +66895,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -66785,7 +66911,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -66795,10 +66921,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15760 + i32.const 15920 i32.store offset=12 local.get $1 - i32.const 15760 + i32.const 15920 call $~lib/typedarray/Uint32Array#sort drop global.get $~lib/memory/__stack_pointer @@ -66811,7 +66937,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -66827,7 +66953,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -66843,7 +66969,7 @@ i32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -66855,8 +66981,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>$6" end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -66869,7 +66995,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>$7" block $folding-inner016 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner016 global.get $~lib/memory/__stack_pointer @@ -66915,7 +67041,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner016 global.get $~lib/memory/__stack_pointer @@ -66925,16 +67051,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15792 + i32.const 15952 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15792 + i32.const 15952 i32.store offset=8 local.get $1 - i32.const 15792 + i32.const 15952 call $~lib/typedarray/Int64Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -66953,7 +67079,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -66969,7 +67095,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -66985,7 +67111,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -66995,10 +67121,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15824 + i32.const 15984 i32.store offset=12 local.get $1 - i32.const 15824 + i32.const 15984 call $~lib/typedarray/Int64Array#sort drop global.get $~lib/memory/__stack_pointer @@ -67011,7 +67137,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -67027,7 +67153,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -67043,7 +67169,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -67055,8 +67181,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>$7" end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -67069,7 +67195,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>$8" block $folding-inner018 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner018 global.get $~lib/memory/__stack_pointer @@ -67115,7 +67241,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner018 global.get $~lib/memory/__stack_pointer @@ -67125,16 +67251,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15856 + i32.const 16016 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15856 + i32.const 16016 i32.store offset=8 local.get $1 - i32.const 15856 + i32.const 16016 call $~lib/typedarray/Uint64Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -67153,7 +67279,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -67169,7 +67295,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -67185,7 +67311,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -67195,10 +67321,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15888 + i32.const 16048 i32.store offset=12 local.get $1 - i32.const 15888 + i32.const 16048 call $~lib/typedarray/Uint64Array#sort drop global.get $~lib/memory/__stack_pointer @@ -67211,7 +67337,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -67227,7 +67353,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -67243,7 +67369,7 @@ i64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -67255,8 +67381,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>$8" end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -67269,7 +67395,7 @@ block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>$9" block $folding-inner020 global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner020 global.get $~lib/memory/__stack_pointer @@ -67315,7 +67441,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner020 global.get $~lib/memory/__stack_pointer @@ -67325,16 +67451,16 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 15920 + i32.const 16080 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15920 + i32.const 16080 i32.store offset=8 local.get $1 - i32.const 15920 + i32.const 16080 call $~lib/typedarray/Float32Array#sort local.set $1 global.get $~lib/memory/__stack_pointer @@ -67353,7 +67479,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -67369,7 +67495,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -67385,7 +67511,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -67395,10 +67521,10 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15952 + i32.const 16112 i32.store offset=12 local.get $1 - i32.const 15952 + i32.const 16112 call $~lib/typedarray/Float32Array#sort drop global.get $~lib/memory/__stack_pointer @@ -67411,7 +67537,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -67427,7 +67553,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -67443,7 +67569,7 @@ f32.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -67455,8 +67581,8 @@ global.set $~lib/memory/__stack_pointer br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>$9" end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -67467,7 +67593,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s br_if $folding-inner21 global.get $~lib/memory/__stack_pointer @@ -67522,7 +67648,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 885 i32.const 3 call $~lib/builtins/abort @@ -67538,7 +67664,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 886 i32.const 3 call $~lib/builtins/abort @@ -67554,7 +67680,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 887 i32.const 3 call $~lib/builtins/abort @@ -67564,10 +67690,10 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 15984 + i32.const 16144 i32.store offset=12 local.get $0 - i32.const 15984 + i32.const 16144 call $~lib/typedarray/Float64Array#sort drop global.get $~lib/memory/__stack_pointer @@ -67580,7 +67706,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 889 i32.const 3 call $~lib/builtins/abort @@ -67596,7 +67722,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 890 i32.const 3 call $~lib/builtins/abort @@ -67612,7 +67738,7 @@ f64.ne if i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 891 i32.const 3 call $~lib/builtins/abort @@ -67622,7 +67748,7 @@ i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - i32.const 49088 + i32.const 49248 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 @@ -67664,145 +67790,240 @@ return end i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 345 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 346 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 440 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 484 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 486 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 507 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 509 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 675 i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 676 i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 672 i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 673 i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 + i32.const 1344 + i32.const 3600 i32.const 1902 i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 367 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1568 + i32.const 3536 i32.const 541 i32.const 3 call $~lib/builtins/abort unreachable ) + (func $~lib/util/number/utoa32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16480 + i32.lt_s + if + i32.const 49280 + i32.const 49328 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) @@ -67811,11 +68032,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -67874,11 +68095,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -67894,7 +68115,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8000 + i32.const 1776 return end global.get $~lib/memory/__stack_pointer @@ -67982,112 +68203,17 @@ global.set $~lib/memory/__stack_pointer local.get $3 ) - (func $~lib/util/number/utoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8000 - return - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $0 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 16480 i32.lt_s if - i32.const 49120 - i32.const 49168 + i32.const 49280 + i32.const 49328 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -68100,8 +68226,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1056 - i32.const 1104 + i32.const 3424 + i32.const 3472 i32.const 52 i32.const 43 call $~lib/builtins/abort @@ -68119,4 +68245,85 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16480 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16480 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + i32.const 49280 + i32.const 49328 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) ) diff --git a/tests/compiler/std/uri.debug.wat b/tests/compiler/std/uri.debug.wat index ef9b074578..6709c9a841 100644 --- a/tests/compiler/std/uri.debug.wat +++ b/tests/compiler/std/uri.debug.wat @@ -1,20 +1,23 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) (type $6 (func (param i32 i32 i32) (result i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (type $9 (func (result i32))) - (type $10 (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i64 i32))) + (type $8 (func (param i64 i32) (result i32))) + (type $9 (func (param i32 i64 i32 i32))) + (type $10 (func (param i32 i32 i64) (result i32))) + (type $11 (func (result i32))) + (type $12 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $13 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -26,81 +29,90 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/util/uri/URI_UNSAFE i32 (i32.const 2364)) - (global $~lib/util/uri/URI_RESERVED i32 (i32.const 2572)) - (global $~lib/rt/__rtti_base i32 (i32.const 3312)) - (global $~lib/memory/__data_end i32 (i32.const 3332)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36100)) - (global $~lib/memory/__heap_base i32 (i32.const 36100)) + (global $~lib/util/uri/URI_UNSAFE i32 (i32.const 4300)) + (global $~lib/util/uri/URI_RESERVED i32 (i32.const 4508)) + (global $~lib/rt/__rtti_base i32 (i32.const 5248)) + (global $~lib/memory/__data_end i32 (i32.const 5268)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 38036)) + (global $~lib/memory/__heap_base i32 (i32.const 38036)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data $1 (i32.const 44) "\00\01\01\01\01\01\00\00\00\00\01\01\00\00\01\00\00\00\00\00\00\00\00\00\00\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\01\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\00") - (data $2 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $3 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 540) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00U\00R\00I\00 \00m\00a\00l\00f\00o\00r\00m\00e\00d\00\00\00") - (data $11 (i32.const 588) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00u\00r\00i\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 652) "0123456789ABCDEF") - (data $13 (i32.const 668) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00s\00t\00d\00/\00u\00r\00i\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\001\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00b\00_\00\00\00\00\00\00\00") - (data $17 (i32.const 812) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\00A\00B\00C\00D\00X\00Y\00Z\00a\00f\00g\00k\00l\00m\00n\00w\00y\00z\000\001\002\003\004\005\006\007\008\009\00-\00_\00.\00!\00~\00*\00\'\00(\00)\00\00\00\00\00") - (data $18 (i32.const 908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $19 (i32.const 940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00%\000\000\00\00\00\00\00\00\00") - (data $20 (i32.const 972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") - (data $21 (i32.const 1004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00%\002\00B\00\00\00\00\00\00\00") - (data $22 (i32.const 1036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00#\000\00=\00\00\00\00\00\00\00") - (data $23 (i32.const 1068) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00%\002\003\000\00%\003\00D\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $24 (i32.const 1116) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \001\002\003\00 \00\00\00") - (data $25 (i32.const 1148) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00%\002\000\001\002\003\00%\002\000\00\00\00\00\00\00\00\00\00\00\00") - (data $26 (i32.const 1196) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00?\00+\00\00\00\00\00\00\00\00\00") - (data $27 (i32.const 1228) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00%\003\00F\00%\002\00B\00") - (data $28 (i32.const 1260) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00-\00?\001\00.\00-\00\00\00") - (data $29 (i32.const 1292) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00-\00%\003\00F\001\00.\00-\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $30 (i32.const 1340) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00<\d8\ed\dd<\d8\fa\dd<\d8N\df") - (data $31 (i32.const 1372) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\00%\00F\000\00%\009\00F\00%\008\007\00%\00A\00D\00%\00F\000\00%\009\00F\00%\008\007\00%\00B\00A\00%\00F\000\00%\009\00F\00%\008\00D\00%\008\00E\00\00\00\00\00") - (data $32 (i32.const 1468) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00H\c5U\b1X\d58\c1\94\c6\00\00") - (data $33 (i32.const 1500) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00Z\00\00\00%\00E\00C\00%\009\005\00%\008\008\00%\00E\00B\00%\008\005\00%\009\005\00%\00E\00D\00%\009\005\00%\009\008\00%\00E\00C\00%\008\004\00%\00B\008\00%\00E\00C\00%\009\00A\00%\009\004\00\00\00") - (data $34 (i32.const 1612) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00~\00\7f\00\80\00\00\00\00\00\00\00") - (data $35 (i32.const 1644) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00%\007\00F\00%\00C\002\00%\008\000\00\00\00\00\00\00\00\00\00") - (data $36 (i32.const 1692) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\00\d8\ff\df\00\00\00\00\00\00\00\00") - (data $37 (i32.const 1724) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00%\00F\000\00%\009\000\00%\008\00F\00%\00B\00F\00\00\00\00\00") - (data $38 (i32.const 1772) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00{\da\01\dc-\00P\da\02\dc\00\00") - (data $39 (i32.const 1804) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00%\00F\002\00%\00A\00E\00%\00B\000\00%\008\001\00-\00%\00F\002\00%\00A\004\00%\008\000\00%\008\002\00\00\00\00\00\00\00\00\00\00\00") - (data $40 (i32.const 1884) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\n\00\t\00\0b\00\0c\00\r\00\00\00") - (data $41 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00%\000\00A\00%\000\009\00%\000\00B\00%\000\00C\00%\000\00D\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $42 (i32.const 1980) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00;\00/\00?\00:\00@\00&\00=\00+\00$\00,\00\00\00\00\00\00\00\00\00") - (data $43 (i32.const 2028) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00<\00\00\00%\003\00B\00%\002\00F\00%\003\00F\00%\003\00A\00%\004\000\00%\002\006\00%\003\00D\00%\002\00B\00%\002\004\00%\002\00C\00") - (data $44 (i32.const 2108) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\\\00\00\00h\00t\00t\00p\00:\00/\00/\00e\00n\00.\00w\00i\00k\00i\00p\00e\00d\00i\00a\00.\00o\00r\00g\00/\00w\00i\00k\00i\00/\00U\00T\00F\00-\008\00#\00D\00e\00s\00c\00r\00i\00p\00t\00i\00o\00n\00") - (data $45 (i32.const 2220) "\8c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00t\00\00\00h\00t\00t\00p\00%\003\00A\00%\002\00F\00%\002\00F\00e\00n\00.\00w\00i\00k\00i\00p\00e\00d\00i\00a\00.\00o\00r\00g\00%\002\00F\00w\00i\00k\00i\00%\002\00F\00U\00T\00F\00-\008\00%\002\003\00D\00e\00s\00c\00r\00i\00p\00t\00i\00o\00n\00\00\00\00\00\00\00\00\00") - (data $46 (i32.const 2364) "\00\01\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\01\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\00") - (data $47 (i32.const 2460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00;\00,\00/\00?\00:\00@\00&\00=\00+\00$\00#\00\00\00\00\00\00\00") - (data $48 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") - (data $49 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00%\002\000\00\00\00\00\00\00\00") - (data $50 (i32.const 2572) "\01\01\00\01\00\00\00\00\01\01\00\00\01\00\00\00\00\00\00\00\00\00\00\01\01\00\01\00\01\01") - (data $51 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00%\002\006\00\00\00\00\00\00\00") - (data $52 (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00&\00\00\00\00\00\00\00\00\00\00\00") - (data $53 (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00%\005\00E\00\00\00\00\00\00\00") - (data $54 (i32.const 2700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00^\00\00\00\00\00\00\00\00\00\00\00") - (data $55 (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\d8\00\00\00\00\00\00\00\00\00\00") - (data $56 (i32.const 2764) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00<\00\00\00%\003\00b\00%\002\00f\00%\003\00f\00%\003\00a\00%\004\000\00%\003\00d\00%\002\00b\00%\002\004\00%\002\00c\00%\002\003\00") - (data $57 (i32.const 2844) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00;\00/\00?\00:\00@\00=\00+\00$\00,\00#\00\00\00\00\00\00\00\00\00") - (data $58 (i32.const 2892) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00<\00\00\00%\003\00B\00%\002\00F\00%\003\00F\00%\003\00A\00%\004\000\00%\003\00D\00%\002\00B\00%\002\004\00%\002\00C\00%\002\003\00") - (data $59 (i32.const 2972) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00h\00\00\00h\00t\00t\00p\00:\00%\002\00F\00%\002\00F\00e\00n\00.\00w\00i\00k\00i\00p\00e\00d\00i\00a\00.\00o\00r\00g\00/\00w\00i\00k\00i\00/\00U\00T\00F\00-\008\00%\002\003\00D\00e\00s\00c\00r\00i\00p\00t\00i\00o\00n\00\00\00\00\00") - (data $60 (i32.const 3100) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00%\00D\00F\00%\008\000\00") - (data $61 (i32.const 3132) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\c0\07\00\00\00\00\00\00\00\00\00\00") - (data $62 (i32.const 3164) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00%\00C\002\00%\00B\00F\00") - (data $63 (i32.const 3196) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\bf\00\00\00\00\00\00\00\00\00\00\00") - (data $64 (i32.const 3228) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00\f7\00\b8\00W\00\ef\00\0f\00\f4\00V\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $65 (i32.const 3276) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\f4\00\b8\00\ef\00\00\00\00\00\00\00") - (data $66 (i32.const 3312) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") + (data $2 (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $3 (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $4 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 236) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $7 (i32.const 428) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 460) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $9 (i32.const 860) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 1916) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $11 (i32.const 2012) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 2076) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $13 (i32.const 2140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2332) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2384) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2476) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00U\00R\00I\00 \00m\00a\00l\00f\00o\00r\00m\00e\00d\00\00\00") + (data $21 (i32.const 2524) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00u\00r\00i\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2588) "0123456789ABCDEF") + (data $23 (i32.const 2604) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00s\00t\00d\00/\00u\00r\00i\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2652) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\001\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 2716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00b\00_\00\00\00\00\00\00\00") + (data $27 (i32.const 2748) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\00A\00B\00C\00D\00X\00Y\00Z\00a\00f\00g\00k\00l\00m\00n\00w\00y\00z\000\001\002\003\004\005\006\007\008\009\00-\00_\00.\00!\00~\00*\00\'\00(\00)\00\00\00\00\00") + (data $28 (i32.const 2844) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 2876) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00%\000\000\00\00\00\00\00\00\00") + (data $30 (i32.const 2908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 2940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00%\002\00B\00\00\00\00\00\00\00") + (data $32 (i32.const 2972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00#\000\00=\00\00\00\00\00\00\00") + (data $33 (i32.const 3004) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00%\002\003\000\00%\003\00D\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $34 (i32.const 3052) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \001\002\003\00 \00\00\00") + (data $35 (i32.const 3084) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00%\002\000\001\002\003\00%\002\000\00\00\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 3132) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00?\00+\00\00\00\00\00\00\00\00\00") + (data $37 (i32.const 3164) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00%\003\00F\00%\002\00B\00") + (data $38 (i32.const 3196) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00-\00?\001\00.\00-\00\00\00") + (data $39 (i32.const 3228) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00-\00%\003\00F\001\00.\00-\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $40 (i32.const 3276) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00<\d8\ed\dd<\d8\fa\dd<\d8N\df") + (data $41 (i32.const 3308) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\00%\00F\000\00%\009\00F\00%\008\007\00%\00A\00D\00%\00F\000\00%\009\00F\00%\008\007\00%\00B\00A\00%\00F\000\00%\009\00F\00%\008\00D\00%\008\00E\00\00\00\00\00") + (data $42 (i32.const 3404) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00H\c5U\b1X\d58\c1\94\c6\00\00") + (data $43 (i32.const 3436) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00Z\00\00\00%\00E\00C\00%\009\005\00%\008\008\00%\00E\00B\00%\008\005\00%\009\005\00%\00E\00D\00%\009\005\00%\009\008\00%\00E\00C\00%\008\004\00%\00B\008\00%\00E\00C\00%\009\00A\00%\009\004\00\00\00") + (data $44 (i32.const 3548) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00~\00\7f\00\80\00\00\00\00\00\00\00") + (data $45 (i32.const 3580) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00%\007\00F\00%\00C\002\00%\008\000\00\00\00\00\00\00\00\00\00") + (data $46 (i32.const 3628) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\00\d8\ff\df\00\00\00\00\00\00\00\00") + (data $47 (i32.const 3660) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00%\00F\000\00%\009\000\00%\008\00F\00%\00B\00F\00\00\00\00\00") + (data $48 (i32.const 3708) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00{\da\01\dc-\00P\da\02\dc\00\00") + (data $49 (i32.const 3740) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00%\00F\002\00%\00A\00E\00%\00B\000\00%\008\001\00-\00%\00F\002\00%\00A\004\00%\008\000\00%\008\002\00\00\00\00\00\00\00\00\00\00\00") + (data $50 (i32.const 3820) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\n\00\t\00\0b\00\0c\00\r\00\00\00") + (data $51 (i32.const 3852) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00%\000\00A\00%\000\009\00%\000\00B\00%\000\00C\00%\000\00D\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $52 (i32.const 3916) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00;\00/\00?\00:\00@\00&\00=\00+\00$\00,\00\00\00\00\00\00\00\00\00") + (data $53 (i32.const 3964) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00<\00\00\00%\003\00B\00%\002\00F\00%\003\00F\00%\003\00A\00%\004\000\00%\002\006\00%\003\00D\00%\002\00B\00%\002\004\00%\002\00C\00") + (data $54 (i32.const 4044) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\\\00\00\00h\00t\00t\00p\00:\00/\00/\00e\00n\00.\00w\00i\00k\00i\00p\00e\00d\00i\00a\00.\00o\00r\00g\00/\00w\00i\00k\00i\00/\00U\00T\00F\00-\008\00#\00D\00e\00s\00c\00r\00i\00p\00t\00i\00o\00n\00") + (data $55 (i32.const 4156) "\8c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00t\00\00\00h\00t\00t\00p\00%\003\00A\00%\002\00F\00%\002\00F\00e\00n\00.\00w\00i\00k\00i\00p\00e\00d\00i\00a\00.\00o\00r\00g\00%\002\00F\00w\00i\00k\00i\00%\002\00F\00U\00T\00F\00-\008\00%\002\003\00D\00e\00s\00c\00r\00i\00p\00t\00i\00o\00n\00\00\00\00\00\00\00\00\00") + (data $56 (i32.const 4300) "\00\01\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\01\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\00") + (data $57 (i32.const 4396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00;\00,\00/\00?\00:\00@\00&\00=\00+\00$\00#\00\00\00\00\00\00\00") + (data $58 (i32.const 4444) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $59 (i32.const 4476) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00%\002\000\00\00\00\00\00\00\00") + (data $60 (i32.const 4508) "\01\01\00\01\00\00\00\00\01\01\00\00\01\00\00\00\00\00\00\00\00\00\00\01\01\00\01\00\01\01") + (data $61 (i32.const 4540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00%\002\006\00\00\00\00\00\00\00") + (data $62 (i32.const 4572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00&\00\00\00\00\00\00\00\00\00\00\00") + (data $63 (i32.const 4604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00%\005\00E\00\00\00\00\00\00\00") + (data $64 (i32.const 4636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00^\00\00\00\00\00\00\00\00\00\00\00") + (data $65 (i32.const 4668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\d8\00\00\00\00\00\00\00\00\00\00") + (data $66 (i32.const 4700) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00<\00\00\00%\003\00b\00%\002\00f\00%\003\00f\00%\003\00a\00%\004\000\00%\003\00d\00%\002\00b\00%\002\004\00%\002\00c\00%\002\003\00") + (data $67 (i32.const 4780) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00;\00/\00?\00:\00@\00=\00+\00$\00,\00#\00\00\00\00\00\00\00\00\00") + (data $68 (i32.const 4828) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00<\00\00\00%\003\00B\00%\002\00F\00%\003\00F\00%\003\00A\00%\004\000\00%\003\00D\00%\002\00B\00%\002\004\00%\002\00C\00%\002\003\00") + (data $69 (i32.const 4908) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00h\00\00\00h\00t\00t\00p\00:\00%\002\00F\00%\002\00F\00e\00n\00.\00w\00i\00k\00i\00p\00e\00d\00i\00a\00.\00o\00r\00g\00/\00w\00i\00k\00i\00/\00U\00T\00F\00-\008\00%\002\003\00D\00e\00s\00c\00r\00i\00p\00t\00i\00o\00n\00\00\00\00\00") + (data $70 (i32.const 5036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00%\00D\00F\00%\008\000\00") + (data $71 (i32.const 5068) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\c0\07\00\00\00\00\00\00\00\00\00\00") + (data $72 (i32.const 5100) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00%\00C\002\00%\00B\00F\00") + (data $73 (i32.const 5132) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\bf\00\00\00\00\00\00\00\00\00\00\00") + (data $74 (i32.const 5164) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00\f7\00\b8\00W\00\ef\00\0f\00\f4\00V\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $75 (i32.const 5212) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\f4\00\b8\00\ef\00\00\00\00\00\00\00") + (data $76 (i32.const 5248) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -118,6 +130,422 @@ i32.shr_u return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 460 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 460 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 460 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 460 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 880 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 880 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1936 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1936 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -182,7 +610,7 @@ i32.eqz if i32.const 0 - i32.const 224 + i32.const 2160 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -252,7 +680,7 @@ i32.eqz if i32.const 0 - i32.const 224 + i32.const 2160 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -269,7 +697,7 @@ i32.eqz if i32.const 0 - i32.const 224 + i32.const 2160 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -299,8 +727,8 @@ i32.load i32.gt_u if - i32.const 352 - i32.const 416 + i32.const 2288 + i32.const 2352 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -368,7 +796,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 224 + i32.const 2160 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -520,7 +948,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 2432 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -540,7 +968,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 2432 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -603,7 +1031,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 2432 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -756,7 +1184,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 2432 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -773,7 +1201,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 2432 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -862,7 +1290,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 2432 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -905,7 +1333,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 2432 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -923,7 +1351,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 2432 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -991,7 +1419,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 2432 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1108,7 +1536,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 2432 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1154,7 +1582,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 2432 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1186,7 +1614,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 2432 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1430,7 +1858,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 2432 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1650,7 +2078,7 @@ i32.eqz if i32.const 0 - i32.const 224 + i32.const 2160 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1758,8 +2186,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 160 - i32.const 496 + i32.const 2096 + i32.const 2432 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1861,7 +2289,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 2432 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1932,7 +2360,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 2432 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2089,7 +2517,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 2432 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2204,7 +2632,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 2432 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2224,7 +2652,7 @@ i32.eqz if i32.const 0 - i32.const 496 + i32.const 2432 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2272,8 +2700,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 160 - i32.const 224 + i32.const 2096 + i32.const 2160 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2377,7 +2805,7 @@ local.get $dst local.get $offset i32.add - i32.const 652 + i32.const 2588 local.get $ch i32.const 4 i32.shr_u @@ -2385,7 +2813,7 @@ i32.and i32.add i32.load8_u - i32.const 652 + i32.const 2588 local.get $ch i32.const 15 i32.and @@ -2529,8 +2957,8 @@ i32.const 0 end if - i32.const 560 - i32.const 608 + i32.const 2496 + i32.const 2544 i32.const 81 i32.const 9 call $~lib/builtins/abort @@ -2544,8 +2972,8 @@ local.get $len i32.ge_u if - i32.const 560 - i32.const 608 + i32.const 2496 + i32.const 2544 i32.const 85 i32.const 11 call $~lib/builtins/abort @@ -2572,8 +3000,8 @@ i32.gt_u end if - i32.const 560 - i32.const 608 + i32.const 2496 + i32.const 2544 i32.const 89 i32.const 11 call $~lib/builtins/abort @@ -3073,8 +3501,8 @@ i32.eq end if - i32.const 560 - i32.const 608 + i32.const 2496 + i32.const 2544 i32.const 164 i32.const 7 call $~lib/builtins/abort @@ -3208,8 +3636,8 @@ i32.eq end if - i32.const 560 - i32.const 608 + i32.const 2496 + i32.const 2544 i32.const 187 i32.const 11 call $~lib/builtins/abort @@ -3273,8 +3701,8 @@ end end if - i32.const 560 - i32.const 608 + i32.const 2496 + i32.const 2544 i32.const 199 i32.const 9 call $~lib/builtins/abort @@ -3337,7 +3765,7 @@ i32.eqz if i32.const 0 - i32.const 608 + i32.const 2544 i32.const 216 i32.const 3 call $~lib/builtins/abort @@ -3403,55 +3831,6 @@ i32.const 0 drop ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 352 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 160 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 560 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - unreachable - ) (func $~start call $start:std/uri ) @@ -3460,14 +3839,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 36128 - i32.const 36176 + i32.const 38064 + i32.const 38112 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 32 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 160 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 192 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 224 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 224 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2032 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/uri/encodeURIComponent (param $str i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -3694,13 +4278,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 272 + i32.const 2208 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 304 + i32.const 2240 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 448 + i32.const 2384 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 32 @@ -3715,331 +4299,331 @@ i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 4 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 736 + i32.const 2672 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 736 + i32.const 2672 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 5 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 768 + i32.const 2704 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 768 + i32.const 2704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 6 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 2736 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 800 + i32.const 2736 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 7 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 832 + i32.const 2768 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 832 + i32.const 2768 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 8 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 928 + i32.const 2864 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 960 + i32.const 2896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 12 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 992 + i32.const 2928 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1024 + i32.const 2960 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1056 + i32.const 2992 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1088 + i32.const 3024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1136 + i32.const 3072 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1168 + i32.const 3104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1216 + i32.const 3152 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1248 + i32.const 3184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1280 + i32.const 3216 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1312 + i32.const 3248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1360 + i32.const 3296 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1392 + i32.const 3328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1488 + i32.const 3424 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1520 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1632 + i32.const 3568 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1664 + i32.const 3600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 20 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 + i32.const 3648 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1744 + i32.const 3680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1792 + i32.const 3728 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1824 + i32.const 3760 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1904 + i32.const 3840 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1936 + i32.const 3872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2000 + i32.const 3936 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2048 + i32.const 3984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 26 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2128 + i32.const 4064 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2240 + i32.const 4176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -4057,151 +4641,151 @@ i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 39 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 736 + i32.const 2672 call $~lib/uri/encodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 736 + i32.const 2672 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 40 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2480 + i32.const 4416 call $~lib/uri/encodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2480 + i32.const 4416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 41 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 832 + i32.const 2768 call $~lib/uri/encodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 832 + i32.const 2768 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 42 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2528 + i32.const 4464 call $~lib/uri/encodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2560 + i32.const 4496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1632 + i32.const 3568 call $~lib/uri/encodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1664 + i32.const 3600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 47 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 + i32.const 3648 call $~lib/uri/encodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1744 + i32.const 3680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 48 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1904 + i32.const 3840 call $~lib/uri/encodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1936 + i32.const 3872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 50 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2128 + i32.const 4064 call $~lib/uri/encodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2128 + i32.const 4064 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 51 i32.const 1 call $~lib/builtins/abort @@ -4219,169 +4803,169 @@ i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 62 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 736 + i32.const 2672 call $~lib/uri/decodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 736 + i32.const 2672 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 63 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2624 + i32.const 4560 call $~lib/uri/decodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2656 + i32.const 4592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 64 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2688 + i32.const 4624 call $~lib/uri/decodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2720 + i32.const 4656 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 65 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2752 + i32.const 4688 call $~lib/uri/decodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2752 + i32.const 4688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 66 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 + i32.const 3648 call $~lib/uri/decodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 3648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 67 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2784 + i32.const 4720 call $~lib/uri/decodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2864 + i32.const 4800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 68 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2912 + i32.const 4848 call $~lib/uri/decodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2864 + i32.const 4800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 69 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2992 + i32.const 4928 call $~lib/uri/decodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2128 + i32.const 4064 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 70 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1392 + i32.const 3328 call $~lib/uri/decodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1360 + i32.const 3296 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 75 i32.const 1 call $~lib/builtins/abort @@ -4399,205 +4983,205 @@ i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 85 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 736 + i32.const 2672 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 736 + i32.const 2672 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 86 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2624 + i32.const 4560 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2624 + i32.const 4560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 87 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3120 + i32.const 5056 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3152 + i32.const 5088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 88 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3184 + i32.const 5120 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3216 + i32.const 5152 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 89 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2752 + i32.const 4688 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2752 + i32.const 4688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 90 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 + i32.const 3648 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 3648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2784 + i32.const 4720 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2784 + i32.const 4720 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 92 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1392 + i32.const 3328 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1360 + i32.const 3296 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 93 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3248 + i32.const 5184 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3248 + i32.const 5184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 94 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3296 + i32.const 5232 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3296 + i32.const 5232 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 95 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2992 + i32.const 4928 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2992 + i32.const 4928 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 688 + i32.const 2624 i32.const 96 i32.const 1 call $~lib/builtins/abort @@ -4611,4 +5195,206 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 256 + i32.const 384 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 448 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 2288 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2096 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2496 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 880 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1936 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/std/uri.release.wat b/tests/compiler/std/uri.release.wat index 60fea95101..4b0ec8f4d1 100644 --- a/tests/compiler/std/uri.release.wat +++ b/tests/compiler/std/uri.release.wat @@ -1,14 +1,13 @@ (module - (type $0 (func)) + (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32) (result i32))) - (type $2 (func (param i32) (result i32))) + (type $2 (func)) (type $3 (func (param i32))) (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32) (result i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (type $8 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -19,7 +18,7 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37124)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 39060)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02") @@ -27,140 +26,361 @@ (data $1.1 (i32.const 1093) "\01\01\01\01\01\01\01") (data $1.2 (i32.const 1126) "\01\01\01\01\00\01") (data $1.3 (i32.const 1158) "\01\01\01") - (data $2 (i32.const 1164) "<") - (data $2.1 (i32.const 1176) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $3 (i32.const 1228) "<") - (data $3.1 (i32.const 1240) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $6 (i32.const 1356) "<") - (data $6.1 (i32.const 1368) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $7 (i32.const 1420) ",") - (data $7.1 (i32.const 1432) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $9 (i32.const 1500) "<") - (data $9.1 (i32.const 1512) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $10 (i32.const 1564) ",") - (data $10.1 (i32.const 1576) "\02\00\00\00\1a\00\00\00U\00R\00I\00 \00m\00a\00l\00f\00o\00r\00m\00e\00d") - (data $11 (i32.const 1612) "<") - (data $11.1 (i32.const 1624) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00u\00r\00i\00.\00t\00s") - (data $12 (i32.const 1676) "0123456789ABCDEF") - (data $13 (i32.const 1692) ",") - (data $13.1 (i32.const 1704) "\02\00\00\00\14\00\00\00s\00t\00d\00/\00u\00r\00i\00.\00t\00s") - (data $14 (i32.const 1740) "\1c") - (data $14.1 (i32.const 1752) "\02\00\00\00\02\00\00\00a") - (data $15 (i32.const 1772) "\1c") - (data $15.1 (i32.const 1784) "\02\00\00\00\04\00\00\00a\001") - (data $16 (i32.const 1804) "\1c") - (data $16.1 (i32.const 1816) "\02\00\00\00\06\00\00\00a\00b\00_") - (data $17 (i32.const 1836) "\\") - (data $17.1 (i32.const 1848) "\02\00\00\00H\00\00\00A\00B\00C\00D\00X\00Y\00Z\00a\00f\00g\00k\00l\00m\00n\00w\00y\00z\000\001\002\003\004\005\006\007\008\009\00-\00_\00.\00!\00~\00*\00\'\00(\00)") - (data $18 (i32.const 1932) "\1c") - (data $18.1 (i32.const 1944) "\02\00\00\00\02") - (data $19 (i32.const 1964) "\1c") - (data $19.1 (i32.const 1976) "\02\00\00\00\06\00\00\00%\000\000") - (data $20 (i32.const 1996) "\1c") - (data $20.1 (i32.const 2008) "\02\00\00\00\02\00\00\00+") - (data $21 (i32.const 2028) "\1c") - (data $21.1 (i32.const 2040) "\02\00\00\00\06\00\00\00%\002\00B") - (data $22 (i32.const 2060) "\1c") - (data $22.1 (i32.const 2072) "\02\00\00\00\06\00\00\00#\000\00=") - (data $23 (i32.const 2092) ",") - (data $23.1 (i32.const 2104) "\02\00\00\00\0e\00\00\00%\002\003\000\00%\003\00D") - (data $24 (i32.const 2140) "\1c") - (data $24.1 (i32.const 2152) "\02\00\00\00\n\00\00\00 \001\002\003\00 ") - (data $25 (i32.const 2172) ",") - (data $25.1 (i32.const 2184) "\02\00\00\00\12\00\00\00%\002\000\001\002\003\00%\002\000") - (data $26 (i32.const 2220) "\1c") - (data $26.1 (i32.const 2232) "\02\00\00\00\04\00\00\00?\00+") - (data $27 (i32.const 2252) "\1c") - (data $27.1 (i32.const 2264) "\02\00\00\00\0c\00\00\00%\003\00F\00%\002\00B") - (data $28 (i32.const 2284) "\1c") - (data $28.1 (i32.const 2296) "\02\00\00\00\n\00\00\00-\00?\001\00.\00-") - (data $29 (i32.const 2316) ",") - (data $29.1 (i32.const 2328) "\02\00\00\00\0e\00\00\00-\00%\003\00F\001\00.\00-") - (data $30 (i32.const 2364) "\1c") - (data $30.1 (i32.const 2376) "\02\00\00\00\0c\00\00\00<\d8\ed\dd<\d8\fa\dd<\d8N\df") - (data $31 (i32.const 2396) "\\") - (data $31.1 (i32.const 2408) "\02\00\00\00H\00\00\00%\00F\000\00%\009\00F\00%\008\007\00%\00A\00D\00%\00F\000\00%\009\00F\00%\008\007\00%\00B\00A\00%\00F\000\00%\009\00F\00%\008\00D\00%\008\00E") - (data $32 (i32.const 2492) "\1c") - (data $32.1 (i32.const 2504) "\02\00\00\00\n\00\00\00H\c5U\b1X\d58\c1\94\c6") - (data $33 (i32.const 2524) "l") - (data $33.1 (i32.const 2536) "\02\00\00\00Z\00\00\00%\00E\00C\00%\009\005\00%\008\008\00%\00E\00B\00%\008\005\00%\009\005\00%\00E\00D\00%\009\005\00%\009\008\00%\00E\00C\00%\008\004\00%\00B\008\00%\00E\00C\00%\009\00A\00%\009\004") - (data $34 (i32.const 2636) "\1c") - (data $34.1 (i32.const 2648) "\02\00\00\00\06\00\00\00~\00\7f\00\80") - (data $35 (i32.const 2668) ",") - (data $35.1 (i32.const 2680) "\02\00\00\00\14\00\00\00~\00%\007\00F\00%\00C\002\00%\008\000") - (data $36 (i32.const 2716) "\1c") - (data $36.1 (i32.const 2728) "\02\00\00\00\04\00\00\00\00\d8\ff\df") - (data $37 (i32.const 2748) ",") - (data $37.1 (i32.const 2760) "\02\00\00\00\18\00\00\00%\00F\000\00%\009\000\00%\008\00F\00%\00B\00F") - (data $38 (i32.const 2796) "\1c") - (data $38.1 (i32.const 2808) "\02\00\00\00\n\00\00\00{\da\01\dc-\00P\da\02\dc") - (data $39 (i32.const 2828) "L") - (data $39.1 (i32.const 2840) "\02\00\00\002\00\00\00%\00F\002\00%\00A\00E\00%\00B\000\00%\008\001\00-\00%\00F\002\00%\00A\004\00%\008\000\00%\008\002") - (data $40 (i32.const 2908) "\1c") - (data $40.1 (i32.const 2920) "\02\00\00\00\n\00\00\00\n\00\t\00\0b\00\0c\00\r") - (data $41 (i32.const 2940) "<") - (data $41.1 (i32.const 2952) "\02\00\00\00\1e\00\00\00%\000\00A\00%\000\009\00%\000\00B\00%\000\00C\00%\000\00D") - (data $42 (i32.const 3004) ",") - (data $42.1 (i32.const 3016) "\02\00\00\00\14\00\00\00;\00/\00?\00:\00@\00&\00=\00+\00$\00,") - (data $43 (i32.const 3052) "L") - (data $43.1 (i32.const 3064) "\02\00\00\00<\00\00\00%\003\00B\00%\002\00F\00%\003\00F\00%\003\00A\00%\004\000\00%\002\006\00%\003\00D\00%\002\00B\00%\002\004\00%\002\00C") - (data $44 (i32.const 3132) "l") - (data $44.1 (i32.const 3144) "\02\00\00\00\\\00\00\00h\00t\00t\00p\00:\00/\00/\00e\00n\00.\00w\00i\00k\00i\00p\00e\00d\00i\00a\00.\00o\00r\00g\00/\00w\00i\00k\00i\00/\00U\00T\00F\00-\008\00#\00D\00e\00s\00c\00r\00i\00p\00t\00i\00o\00n") - (data $45 (i32.const 3244) "\8c") - (data $45.1 (i32.const 3256) "\02\00\00\00t\00\00\00h\00t\00t\00p\00%\003\00A\00%\002\00F\00%\002\00F\00e\00n\00.\00w\00i\00k\00i\00p\00e\00d\00i\00a\00.\00o\00r\00g\00%\002\00F\00w\00i\00k\00i\00%\002\00F\00U\00T\00F\00-\008\00%\002\003\00D\00e\00s\00c\00r\00i\00p\00t\00i\00o\00n") - (data $46 (i32.const 3389) "\01\00\00\01") - (data $46.1 (i32.const 3415) "\01\00\01") - (data $46.2 (i32.const 3446) "\01\01\01\01\00\01") - (data $46.3 (i32.const 3478) "\01\01\01") - (data $47 (i32.const 3484) ",") - (data $47.1 (i32.const 3496) "\02\00\00\00\16\00\00\00;\00,\00/\00?\00:\00@\00&\00=\00+\00$\00#") - (data $48 (i32.const 3532) "\1c") - (data $48.1 (i32.const 3544) "\02\00\00\00\02\00\00\00 ") - (data $49 (i32.const 3564) "\1c") - (data $49.1 (i32.const 3576) "\02\00\00\00\06\00\00\00%\002\000") - (data $50 (i32.const 3596) "\01\01\00\01\00\00\00\00\01\01\00\00\01") - (data $50.1 (i32.const 3619) "\01\01\00\01\00\01\01") - (data $51 (i32.const 3628) "\1c") - (data $51.1 (i32.const 3640) "\02\00\00\00\06\00\00\00%\002\006") - (data $52 (i32.const 3660) "\1c") - (data $52.1 (i32.const 3672) "\02\00\00\00\02\00\00\00&") - (data $53 (i32.const 3692) "\1c") - (data $53.1 (i32.const 3704) "\02\00\00\00\06\00\00\00%\005\00E") - (data $54 (i32.const 3724) "\1c") - (data $54.1 (i32.const 3736) "\02\00\00\00\02\00\00\00^") - (data $55 (i32.const 3756) "\1c") - (data $55.1 (i32.const 3768) "\02\00\00\00\02\00\00\00\00\d8") - (data $56 (i32.const 3788) "L") - (data $56.1 (i32.const 3800) "\02\00\00\00<\00\00\00%\003\00b\00%\002\00f\00%\003\00f\00%\003\00a\00%\004\000\00%\003\00d\00%\002\00b\00%\002\004\00%\002\00c\00%\002\003") - (data $57 (i32.const 3868) ",") - (data $57.1 (i32.const 3880) "\02\00\00\00\14\00\00\00;\00/\00?\00:\00@\00=\00+\00$\00,\00#") - (data $58 (i32.const 3916) "L") - (data $58.1 (i32.const 3928) "\02\00\00\00<\00\00\00%\003\00B\00%\002\00F\00%\003\00F\00%\003\00A\00%\004\000\00%\003\00D\00%\002\00B\00%\002\004\00%\002\00C\00%\002\003") - (data $59 (i32.const 3996) "|") - (data $59.1 (i32.const 4008) "\02\00\00\00h\00\00\00h\00t\00t\00p\00:\00%\002\00F\00%\002\00F\00e\00n\00.\00w\00i\00k\00i\00p\00e\00d\00i\00a\00.\00o\00r\00g\00/\00w\00i\00k\00i\00/\00U\00T\00F\00-\008\00%\002\003\00D\00e\00s\00c\00r\00i\00p\00t\00i\00o\00n") - (data $60 (i32.const 4124) "\1c") - (data $60.1 (i32.const 4136) "\02\00\00\00\0c\00\00\00%\00D\00F\00%\008\000") - (data $61 (i32.const 4156) "\1c") - (data $61.1 (i32.const 4168) "\02\00\00\00\02\00\00\00\c0\07") - (data $62 (i32.const 4188) "\1c") - (data $62.1 (i32.const 4200) "\02\00\00\00\0c\00\00\00%\00C\002\00%\00B\00F") - (data $63 (i32.const 4220) "\1c") - (data $63.1 (i32.const 4232) "\02\00\00\00\02\00\00\00\bf") - (data $64 (i32.const 4252) ",") - (data $64.1 (i32.const 4264) "\02\00\00\00\0e\00\00\00\f7\00\b8\00W\00\ef\00\0f\00\f4\00V") - (data $65 (i32.const 4300) "\1c") - (data $65.1 (i32.const 4312) "\02\00\00\00\06\00\00\00\f4\00\b8\00\ef") - (data $66 (i32.const 4336) "\04\00\00\00 \00\00\00 \00\00\00 ") + (data $2 (i32.const 1164) "\1c") + (data $2.1 (i32.const 1176) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $3 (i32.const 1196) "\1c") + (data $3.1 (i32.const 1208) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $4 (i32.const 1228) "\1c") + (data $4.1 (i32.const 1240) "\02\00\00\00\02\00\00\00:") + (data $5 (i32.const 1260) "|") + (data $5.1 (i32.const 1272) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $6 (i32.const 1388) "<") + (data $6.1 (i32.const 1400) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $7 (i32.const 1452) "\1c") + (data $7.1 (i32.const 1464) "\02\00\00\00\02\00\00\000") + (data $8 (i32.const 1484) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $9 (i32.const 1884) "\1c\04") + (data $9.1 (i32.const 1896) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $10 (i32.const 2940) "\\") + (data $10.1 (i32.const 2952) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $11 (i32.const 3036) "<") + (data $11.1 (i32.const 3048) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $12 (i32.const 3100) "<") + (data $12.1 (i32.const 3112) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $13 (i32.const 3164) "<") + (data $13.1 (i32.const 3176) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $16 (i32.const 3292) "<") + (data $16.1 (i32.const 3304) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $17 (i32.const 3356) ",") + (data $17.1 (i32.const 3368) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $19 (i32.const 3436) "<") + (data $19.1 (i32.const 3448) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $20 (i32.const 3500) ",") + (data $20.1 (i32.const 3512) "\02\00\00\00\1a\00\00\00U\00R\00I\00 \00m\00a\00l\00f\00o\00r\00m\00e\00d") + (data $21 (i32.const 3548) "<") + (data $21.1 (i32.const 3560) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00u\00r\00i\00.\00t\00s") + (data $22 (i32.const 3612) "0123456789ABCDEF") + (data $23 (i32.const 3628) ",") + (data $23.1 (i32.const 3640) "\02\00\00\00\14\00\00\00s\00t\00d\00/\00u\00r\00i\00.\00t\00s") + (data $24 (i32.const 3676) "\1c") + (data $24.1 (i32.const 3688) "\02\00\00\00\02\00\00\00a") + (data $25 (i32.const 3708) "\1c") + (data $25.1 (i32.const 3720) "\02\00\00\00\04\00\00\00a\001") + (data $26 (i32.const 3740) "\1c") + (data $26.1 (i32.const 3752) "\02\00\00\00\06\00\00\00a\00b\00_") + (data $27 (i32.const 3772) "\\") + (data $27.1 (i32.const 3784) "\02\00\00\00H\00\00\00A\00B\00C\00D\00X\00Y\00Z\00a\00f\00g\00k\00l\00m\00n\00w\00y\00z\000\001\002\003\004\005\006\007\008\009\00-\00_\00.\00!\00~\00*\00\'\00(\00)") + (data $28 (i32.const 3868) "\1c") + (data $28.1 (i32.const 3880) "\02\00\00\00\02") + (data $29 (i32.const 3900) "\1c") + (data $29.1 (i32.const 3912) "\02\00\00\00\06\00\00\00%\000\000") + (data $30 (i32.const 3932) "\1c") + (data $30.1 (i32.const 3944) "\02\00\00\00\02\00\00\00+") + (data $31 (i32.const 3964) "\1c") + (data $31.1 (i32.const 3976) "\02\00\00\00\06\00\00\00%\002\00B") + (data $32 (i32.const 3996) "\1c") + (data $32.1 (i32.const 4008) "\02\00\00\00\06\00\00\00#\000\00=") + (data $33 (i32.const 4028) ",") + (data $33.1 (i32.const 4040) "\02\00\00\00\0e\00\00\00%\002\003\000\00%\003\00D") + (data $34 (i32.const 4076) "\1c") + (data $34.1 (i32.const 4088) "\02\00\00\00\n\00\00\00 \001\002\003\00 ") + (data $35 (i32.const 4108) ",") + (data $35.1 (i32.const 4120) "\02\00\00\00\12\00\00\00%\002\000\001\002\003\00%\002\000") + (data $36 (i32.const 4156) "\1c") + (data $36.1 (i32.const 4168) "\02\00\00\00\04\00\00\00?\00+") + (data $37 (i32.const 4188) "\1c") + (data $37.1 (i32.const 4200) "\02\00\00\00\0c\00\00\00%\003\00F\00%\002\00B") + (data $38 (i32.const 4220) "\1c") + (data $38.1 (i32.const 4232) "\02\00\00\00\n\00\00\00-\00?\001\00.\00-") + (data $39 (i32.const 4252) ",") + (data $39.1 (i32.const 4264) "\02\00\00\00\0e\00\00\00-\00%\003\00F\001\00.\00-") + (data $40 (i32.const 4300) "\1c") + (data $40.1 (i32.const 4312) "\02\00\00\00\0c\00\00\00<\d8\ed\dd<\d8\fa\dd<\d8N\df") + (data $41 (i32.const 4332) "\\") + (data $41.1 (i32.const 4344) "\02\00\00\00H\00\00\00%\00F\000\00%\009\00F\00%\008\007\00%\00A\00D\00%\00F\000\00%\009\00F\00%\008\007\00%\00B\00A\00%\00F\000\00%\009\00F\00%\008\00D\00%\008\00E") + (data $42 (i32.const 4428) "\1c") + (data $42.1 (i32.const 4440) "\02\00\00\00\n\00\00\00H\c5U\b1X\d58\c1\94\c6") + (data $43 (i32.const 4460) "l") + (data $43.1 (i32.const 4472) "\02\00\00\00Z\00\00\00%\00E\00C\00%\009\005\00%\008\008\00%\00E\00B\00%\008\005\00%\009\005\00%\00E\00D\00%\009\005\00%\009\008\00%\00E\00C\00%\008\004\00%\00B\008\00%\00E\00C\00%\009\00A\00%\009\004") + (data $44 (i32.const 4572) "\1c") + (data $44.1 (i32.const 4584) "\02\00\00\00\06\00\00\00~\00\7f\00\80") + (data $45 (i32.const 4604) ",") + (data $45.1 (i32.const 4616) "\02\00\00\00\14\00\00\00~\00%\007\00F\00%\00C\002\00%\008\000") + (data $46 (i32.const 4652) "\1c") + (data $46.1 (i32.const 4664) "\02\00\00\00\04\00\00\00\00\d8\ff\df") + (data $47 (i32.const 4684) ",") + (data $47.1 (i32.const 4696) "\02\00\00\00\18\00\00\00%\00F\000\00%\009\000\00%\008\00F\00%\00B\00F") + (data $48 (i32.const 4732) "\1c") + (data $48.1 (i32.const 4744) "\02\00\00\00\n\00\00\00{\da\01\dc-\00P\da\02\dc") + (data $49 (i32.const 4764) "L") + (data $49.1 (i32.const 4776) "\02\00\00\002\00\00\00%\00F\002\00%\00A\00E\00%\00B\000\00%\008\001\00-\00%\00F\002\00%\00A\004\00%\008\000\00%\008\002") + (data $50 (i32.const 4844) "\1c") + (data $50.1 (i32.const 4856) "\02\00\00\00\n\00\00\00\n\00\t\00\0b\00\0c\00\r") + (data $51 (i32.const 4876) "<") + (data $51.1 (i32.const 4888) "\02\00\00\00\1e\00\00\00%\000\00A\00%\000\009\00%\000\00B\00%\000\00C\00%\000\00D") + (data $52 (i32.const 4940) ",") + (data $52.1 (i32.const 4952) "\02\00\00\00\14\00\00\00;\00/\00?\00:\00@\00&\00=\00+\00$\00,") + (data $53 (i32.const 4988) "L") + (data $53.1 (i32.const 5000) "\02\00\00\00<\00\00\00%\003\00B\00%\002\00F\00%\003\00F\00%\003\00A\00%\004\000\00%\002\006\00%\003\00D\00%\002\00B\00%\002\004\00%\002\00C") + (data $54 (i32.const 5068) "l") + (data $54.1 (i32.const 5080) "\02\00\00\00\\\00\00\00h\00t\00t\00p\00:\00/\00/\00e\00n\00.\00w\00i\00k\00i\00p\00e\00d\00i\00a\00.\00o\00r\00g\00/\00w\00i\00k\00i\00/\00U\00T\00F\00-\008\00#\00D\00e\00s\00c\00r\00i\00p\00t\00i\00o\00n") + (data $55 (i32.const 5180) "\8c") + (data $55.1 (i32.const 5192) "\02\00\00\00t\00\00\00h\00t\00t\00p\00%\003\00A\00%\002\00F\00%\002\00F\00e\00n\00.\00w\00i\00k\00i\00p\00e\00d\00i\00a\00.\00o\00r\00g\00%\002\00F\00w\00i\00k\00i\00%\002\00F\00U\00T\00F\00-\008\00%\002\003\00D\00e\00s\00c\00r\00i\00p\00t\00i\00o\00n") + (data $56 (i32.const 5325) "\01\00\00\01") + (data $56.1 (i32.const 5351) "\01\00\01") + (data $56.2 (i32.const 5382) "\01\01\01\01\00\01") + (data $56.3 (i32.const 5414) "\01\01\01") + (data $57 (i32.const 5420) ",") + (data $57.1 (i32.const 5432) "\02\00\00\00\16\00\00\00;\00,\00/\00?\00:\00@\00&\00=\00+\00$\00#") + (data $58 (i32.const 5468) "\1c") + (data $58.1 (i32.const 5480) "\02\00\00\00\02\00\00\00 ") + (data $59 (i32.const 5500) "\1c") + (data $59.1 (i32.const 5512) "\02\00\00\00\06\00\00\00%\002\000") + (data $60 (i32.const 5532) "\01\01\00\01\00\00\00\00\01\01\00\00\01") + (data $60.1 (i32.const 5555) "\01\01\00\01\00\01\01") + (data $61 (i32.const 5564) "\1c") + (data $61.1 (i32.const 5576) "\02\00\00\00\06\00\00\00%\002\006") + (data $62 (i32.const 5596) "\1c") + (data $62.1 (i32.const 5608) "\02\00\00\00\02\00\00\00&") + (data $63 (i32.const 5628) "\1c") + (data $63.1 (i32.const 5640) "\02\00\00\00\06\00\00\00%\005\00E") + (data $64 (i32.const 5660) "\1c") + (data $64.1 (i32.const 5672) "\02\00\00\00\02\00\00\00^") + (data $65 (i32.const 5692) "\1c") + (data $65.1 (i32.const 5704) "\02\00\00\00\02\00\00\00\00\d8") + (data $66 (i32.const 5724) "L") + (data $66.1 (i32.const 5736) "\02\00\00\00<\00\00\00%\003\00b\00%\002\00f\00%\003\00f\00%\003\00a\00%\004\000\00%\003\00d\00%\002\00b\00%\002\004\00%\002\00c\00%\002\003") + (data $67 (i32.const 5804) ",") + (data $67.1 (i32.const 5816) "\02\00\00\00\14\00\00\00;\00/\00?\00:\00@\00=\00+\00$\00,\00#") + (data $68 (i32.const 5852) "L") + (data $68.1 (i32.const 5864) "\02\00\00\00<\00\00\00%\003\00B\00%\002\00F\00%\003\00F\00%\003\00A\00%\004\000\00%\003\00D\00%\002\00B\00%\002\004\00%\002\00C\00%\002\003") + (data $69 (i32.const 5932) "|") + (data $69.1 (i32.const 5944) "\02\00\00\00h\00\00\00h\00t\00t\00p\00:\00%\002\00F\00%\002\00F\00e\00n\00.\00w\00i\00k\00i\00p\00e\00d\00i\00a\00.\00o\00r\00g\00/\00w\00i\00k\00i\00/\00U\00T\00F\00-\008\00%\002\003\00D\00e\00s\00c\00r\00i\00p\00t\00i\00o\00n") + (data $70 (i32.const 6060) "\1c") + (data $70.1 (i32.const 6072) "\02\00\00\00\0c\00\00\00%\00D\00F\00%\008\000") + (data $71 (i32.const 6092) "\1c") + (data $71.1 (i32.const 6104) "\02\00\00\00\02\00\00\00\c0\07") + (data $72 (i32.const 6124) "\1c") + (data $72.1 (i32.const 6136) "\02\00\00\00\0c\00\00\00%\00C\002\00%\00B\00F") + (data $73 (i32.const 6156) "\1c") + (data $73.1 (i32.const 6168) "\02\00\00\00\02\00\00\00\bf") + (data $74 (i32.const 6188) ",") + (data $74.1 (i32.const 6200) "\02\00\00\00\0e\00\00\00\f7\00\b8\00W\00\ef\00\0f\00\f4\00V") + (data $75 (i32.const 6236) "\1c") + (data $75.1 (i32.const 6248) "\02\00\00\00\06\00\00\00\f4\00\b8\00\ef") + (data $76 (i32.const 6272) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 6292 + i32.lt_s + if + i32.const 39088 + i32.const 39136 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1472 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1484 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1484 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1484 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1484 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1376 + i32.const 3312 call $~lib/rt/itcms/__visit - i32.const 1184 + i32.const 3120 call $~lib/rt/itcms/__visit - i32.const 1584 + i32.const 3520 + call $~lib/rt/itcms/__visit + i32.const 1904 + call $~lib/rt/itcms/__visit + i32.const 2960 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -181,7 +401,7 @@ i32.ne if i32.const 0 - i32.const 1248 + i32.const 3184 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -229,7 +449,7 @@ i32.eqz if i32.const 0 - i32.const 1248 + i32.const 3184 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -238,7 +458,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$132 + block $__inlined_func$~lib/rt/itcms/Object#unlink$144 local.get $1 i32.load offset=4 i32.const -4 @@ -250,19 +470,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 37124 + i32.const 39060 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1248 + i32.const 3184 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$132 + br $__inlined_func$~lib/rt/itcms/Object#unlink$144 end local.get $1 i32.load offset=8 @@ -270,7 +490,7 @@ i32.eqz if i32.const 0 - i32.const 1248 + i32.const 3184 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -299,12 +519,12 @@ i32.const 1 else local.get $0 - i32.const 4336 + i32.const 6272 i32.load i32.gt_u if - i32.const 1376 - i32.const 1440 + i32.const 3312 + i32.const 3376 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -313,7 +533,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 4340 + i32.const 6276 i32.add i32.load i32.const 32 @@ -365,7 +585,7 @@ i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3456 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -379,7 +599,7 @@ i32.lt_u if i32.const 0 - i32.const 1520 + i32.const 3456 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -425,7 +645,7 @@ i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3456 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -508,7 +728,7 @@ i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3456 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -522,7 +742,7 @@ i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3456 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -583,7 +803,7 @@ i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3456 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -616,7 +836,7 @@ i32.lt_u if i32.const 0 - i32.const 1520 + i32.const 3456 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -631,7 +851,7 @@ i32.ne if i32.const 0 - i32.const 1520 + i32.const 3456 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -682,7 +902,7 @@ i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3456 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -754,7 +974,7 @@ i64.lt_u if i32.const 0 - i32.const 1520 + i32.const 3456 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -779,7 +999,7 @@ i32.gt_u if i32.const 0 - i32.const 1520 + i32.const 3456 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -806,7 +1026,7 @@ i32.gt_u if i32.const 0 - i32.const 1520 + i32.const 3456 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -878,10 +1098,10 @@ if unreachable end - i32.const 37136 + i32.const 39072 i32.const 0 i32.store - i32.const 38704 + i32.const 40640 i32.const 0 i32.store loop $for-loop|0 @@ -892,7 +1112,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 37136 + i32.const 39072 i32.add i32.const 0 i32.store offset=4 @@ -910,7 +1130,7 @@ i32.add i32.const 2 i32.shl - i32.const 37136 + i32.const 39072 i32.add i32.const 0 i32.store offset=96 @@ -928,14 +1148,14 @@ br $for-loop|0 end end - i32.const 37136 - i32.const 38708 + i32.const 39072 + i32.const 40644 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 37136 + i32.const 39072 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -1020,7 +1240,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 37124 + i32.const 39060 i32.lt_u if local.get $0 @@ -1109,14 +1329,14 @@ i32.ne if i32.const 0 - i32.const 1248 + i32.const 3184 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 37124 + i32.const 39060 i32.lt_u if local.get $0 @@ -1139,7 +1359,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 37124 + i32.const 39060 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1168,7 +1388,7 @@ end if i32.const 0 - i32.const 1520 + i32.const 3456 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1252,7 +1472,7 @@ i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3456 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1304,7 +1524,7 @@ i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3456 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1336,8 +1556,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1184 - i32.const 1248 + i32.const 3120 + i32.const 3184 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1347,7 +1567,7 @@ global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$70 + block $__inlined_func$~lib/rt/itcms/interrupt$71 i32.const 2048 local.set $2 loop $do-loop|0 @@ -1368,7 +1588,7 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end local.get $2 i32.const 0 @@ -1401,8 +1621,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1184 - i32.const 1520 + i32.const 3120 + i32.const 3456 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1504,7 +1724,7 @@ i32.eqz if i32.const 0 - i32.const 1520 + i32.const 3456 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1519,7 +1739,7 @@ i32.gt_u if i32.const 0 - i32.const 1520 + i32.const 3456 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1538,7 +1758,7 @@ i32.and if i32.const 0 - i32.const 1520 + i32.const 3456 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1793,8 +2013,8 @@ i32.ge_u i32.and if - i32.const 1584 - i32.const 1632 + i32.const 3520 + i32.const 3568 i32.const 81 i32.const 9 call $~lib/builtins/abort @@ -1808,8 +2028,8 @@ local.get $4 i32.le_u if - i32.const 1584 - i32.const 1632 + i32.const 3520 + i32.const 3568 i32.const 85 i32.const 11 call $~lib/builtins/abort @@ -1832,8 +2052,8 @@ i32.gt_u i32.or if - i32.const 1584 - i32.const 1632 + i32.const 3520 + i32.const 3568 i32.const 89 i32.const 11 call $~lib/builtins/abort @@ -1894,13 +2114,13 @@ i32.shr_u i32.const 15 i32.and - i32.const 1676 + i32.const 3612 i32.add i32.load8_u local.get $7 i32.const 15 i32.and - i32.const 1676 + i32.const 3612 i32.add i32.load8_u i32.const 16 @@ -1929,13 +2149,13 @@ i32.shr_u i32.const 15 i32.and - i32.const 1676 + i32.const 3612 i32.add i32.load8_u local.get $6 i32.const 15 i32.and - i32.const 1676 + i32.const 3612 i32.add i32.load8_u i32.const 16 @@ -1964,13 +2184,13 @@ i32.shr_u i32.const 15 i32.and - i32.const 1676 + i32.const 3612 i32.add i32.load8_u local.get $6 i32.const 15 i32.and - i32.const 1676 + i32.const 3612 i32.add i32.load8_u i32.const 16 @@ -1993,13 +2213,13 @@ local.tee $6 i32.const 4 i32.shr_u - i32.const 1676 + i32.const 3612 i32.add i32.load8_u local.get $6 i32.const 15 i32.and - i32.const 1676 + i32.const 3612 i32.add i32.load8_u i32.const 16 @@ -2026,13 +2246,13 @@ local.tee $6 i32.const 4 i32.shr_u - i32.const 1676 + i32.const 3612 i32.add i32.load8_u local.get $6 i32.const 15 i32.and - i32.const 1676 + i32.const 3612 i32.add i32.load8_u i32.const 16 @@ -2060,13 +2280,13 @@ local.tee $6 i32.const 4 i32.shr_u - i32.const 1676 + i32.const 3612 i32.add i32.load8_u local.get $6 i32.const 15 i32.and - i32.const 1676 + i32.const 3612 i32.add i32.load8_u i32.const 16 @@ -2092,13 +2312,13 @@ local.tee $6 i32.const 4 i32.shr_u - i32.const 1676 + i32.const 3612 i32.add i32.load8_u local.get $6 i32.const 15 i32.and - i32.const 1676 + i32.const 3612 i32.add i32.load8_u i32.const 16 @@ -2297,8 +2517,8 @@ i32.eq end if - i32.const 1584 - i32.const 1632 + i32.const 3520 + i32.const 3568 i32.const 164 i32.const 7 call $~lib/builtins/abort @@ -2323,7 +2543,7 @@ i32.lt_u if (result i32) local.get $5 - i32.const 3561 + i32.const 5497 i32.add i32.load8_u else @@ -2476,8 +2696,8 @@ i32.eq end if - i32.const 1584 - i32.const 1632 + i32.const 3520 + i32.const 3568 i32.const 187 i32.const 11 call $~lib/builtins/abort @@ -2532,8 +2752,8 @@ i32.and end if - i32.const 1584 - i32.const 1632 + i32.const 3520 + i32.const 3568 i32.const 199 i32.const 9 call $~lib/builtins/abort @@ -2590,7 +2810,7 @@ i32.lt_u if i32.const 0 - i32.const 1632 + i32.const 3568 i32.const 216 i32.const 3 call $~lib/builtins/abort @@ -2609,33 +2829,208 @@ local.get $9 end ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return + (func $~start + call $start:std/uri + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 6292 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6292 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$149 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1056 + local.set $0 + br $__inlined_func$~lib/string/String#concat$149 end - return + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load - call $~lib/rt/itcms/__visit return end + i32.const 39088 + i32.const 39136 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) - (func $~start - call $start:std/uri + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6292 + i32.lt_s + if + i32.const 39088 + i32.const 39136 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1184 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1216 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1248 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1248 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3056 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $~lib/uri/encodeURIComponent (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -2643,11 +3038,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4356 + i32.const 6292 i32.lt_s if - i32.const 37152 - i32.const 37200 + i32.const 39088 + i32.const 39136 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2683,11 +3078,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4356 + i32.const 6292 i32.lt_s if - i32.const 37152 - i32.const 37200 + i32.const 39088 + i32.const 39136 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2786,7 +3181,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$88 + block $__inlined_func$~lib/util/string/compareImpl$91 loop $while-continue|1 local.get $0 local.tee $3 @@ -2806,7 +3201,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$88 + br_if $__inlined_func$~lib/util/string/compareImpl$91 local.get $2 i32.const 2 i32.add @@ -2841,11 +3236,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4356 + i32.const 6292 i32.lt_s if - i32.const 37152 - i32.const 37200 + i32.const 39088 + i32.const 39136 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2864,7 +3259,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - i32.const 3388 + i32.const 5324 call $~lib/util/uri/encode global.get $~lib/memory/__stack_pointer i32.const 4 @@ -2877,11 +3272,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4356 + i32.const 6292 i32.lt_s if - i32.const 37152 - i32.const 37200 + i32.const 39088 + i32.const 39136 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2913,11 +3308,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4356 + i32.const 6292 i32.lt_s if - i32.const 37152 - i32.const 37200 + i32.const 39088 + i32.const 39136 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2950,11 +3345,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4356 + i32.const 6292 i32.lt_s if - i32.const 37152 - i32.const 37200 + i32.const 39088 + i32.const 39136 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2966,34 +3361,34 @@ memory.size i32.const 16 i32.shl - i32.const 37124 + i32.const 39060 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1300 - i32.const 1296 + i32.const 3236 + i32.const 3232 i32.store - i32.const 1304 - i32.const 1296 + i32.const 3240 + i32.const 3232 i32.store - i32.const 1296 + i32.const 3232 global.set $~lib/rt/itcms/pinSpace - i32.const 1332 - i32.const 1328 + i32.const 3268 + i32.const 3264 i32.store - i32.const 1336 - i32.const 1328 + i32.const 3272 + i32.const 3264 i32.store - i32.const 1328 + i32.const 3264 global.set $~lib/rt/itcms/toSpace - i32.const 1476 - i32.const 1472 + i32.const 3412 + i32.const 3408 i32.store - i32.const 1480 - i32.const 1472 + i32.const 3416 + i32.const 3408 i32.store - i32.const 1472 + i32.const 3408 global.set $~lib/rt/itcms/fromSpace i32.const 1056 call $~lib/uri/encodeURIComponent @@ -3007,331 +3402,331 @@ i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 4 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1760 + i32.const 3696 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1760 + i32.const 3696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 5 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1792 + i32.const 3728 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1792 + i32.const 3728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 6 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1824 + i32.const 3760 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1824 + i32.const 3760 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 7 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1856 + i32.const 3792 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1856 + i32.const 3792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 8 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1952 + i32.const 3888 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1984 + i32.const 3920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 12 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2016 + i32.const 3952 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2048 + i32.const 3984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2080 + i32.const 4016 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2112 + i32.const 4048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2160 + i32.const 4096 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2192 + i32.const 4128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2240 + i32.const 4176 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2272 + i32.const 4208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2304 + i32.const 4240 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2336 + i32.const 4272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2384 + i32.const 4320 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2416 + i32.const 4352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2512 + i32.const 4448 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2544 + i32.const 4480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2656 + i32.const 4592 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2688 + i32.const 4624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 20 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2736 + i32.const 4672 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2768 + i32.const 4704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2816 + i32.const 4752 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2848 + i32.const 4784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2928 + i32.const 4864 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2960 + i32.const 4896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3024 + i32.const 4960 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3072 + i32.const 5008 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 26 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3152 + i32.const 5088 call $~lib/uri/encodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3264 + i32.const 5200 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -3349,151 +3744,151 @@ i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 39 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1760 + i32.const 3696 call $~lib/uri/encodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1760 + i32.const 3696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 40 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3504 + i32.const 5440 call $~lib/uri/encodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3504 + i32.const 5440 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 41 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1856 + i32.const 3792 call $~lib/uri/encodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1856 + i32.const 3792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 42 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3552 + i32.const 5488 call $~lib/uri/encodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3584 + i32.const 5520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2656 + i32.const 4592 call $~lib/uri/encodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2688 + i32.const 4624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 47 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2736 + i32.const 4672 call $~lib/uri/encodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2768 + i32.const 4704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 48 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2928 + i32.const 4864 call $~lib/uri/encodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2960 + i32.const 4896 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 50 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3152 + i32.const 5088 call $~lib/uri/encodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3152 + i32.const 5088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 51 i32.const 1 call $~lib/builtins/abort @@ -3511,169 +3906,169 @@ i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 62 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1760 + i32.const 3696 call $~lib/uri/decodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1760 + i32.const 3696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 63 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3648 + i32.const 5584 call $~lib/uri/decodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3680 + i32.const 5616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 64 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3712 + i32.const 5648 call $~lib/uri/decodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3744 + i32.const 5680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 65 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3776 + i32.const 5712 call $~lib/uri/decodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3776 + i32.const 5712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 66 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2736 + i32.const 4672 call $~lib/uri/decodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2736 + i32.const 4672 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 67 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3808 + i32.const 5744 call $~lib/uri/decodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3888 + i32.const 5824 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 68 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3936 + i32.const 5872 call $~lib/uri/decodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3888 + i32.const 5824 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 69 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4016 + i32.const 5952 call $~lib/uri/decodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3152 + i32.const 5088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 70 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2416 + i32.const 4352 call $~lib/uri/decodeURIComponent local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2384 + i32.const 4320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 75 i32.const 1 call $~lib/builtins/abort @@ -3691,211 +4086,211 @@ i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 85 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1760 + i32.const 3696 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1760 + i32.const 3696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 86 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3648 + i32.const 5584 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3648 + i32.const 5584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 87 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4144 + i32.const 6080 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4176 + i32.const 6112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 88 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4208 + i32.const 6144 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4240 + i32.const 6176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 89 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3776 + i32.const 5712 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3776 + i32.const 5712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 90 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2736 + i32.const 4672 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2736 + i32.const 4672 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3808 + i32.const 5744 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3808 + i32.const 5744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 92 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2416 + i32.const 4352 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2384 + i32.const 4320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 93 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4272 + i32.const 6208 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4272 + i32.const 6208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 94 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4320 + i32.const 6256 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4320 + i32.const 6256 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 95 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4016 + i32.const 5952 call $~lib/uri/decodeURI local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4016 + i32.const 5952 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1712 + i32.const 3648 i32.const 96 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 37124 + i32.const 39060 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 @@ -3935,4 +4330,29 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/super-inline.debug.wat b/tests/compiler/super-inline.debug.wat index 1037d7b726..3ee2c07cd0 100644 --- a/tests/compiler/super-inline.debug.wat +++ b/tests/compiler/super-inline.debug.wat @@ -1,14 +1,20 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64) (result i32))) - (type $8 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $6 (func (param i32 i64 i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,32 +23,469 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $super-inline/foo (mut i32) (i32.const 0)) (global $super-inline/bar (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 416)) - (global $~lib/memory/__data_end i32 (i32.const 444)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33212)) - (global $~lib/memory/__heap_base i32 (i32.const 33212)) + (global $~lib/rt/__rtti_base i32 (i32.const 2384)) + (global $~lib/memory/__data_end i32 (i32.const 2412)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35180)) + (global $~lib/memory/__heap_base i32 (i32.const 35180)) (memory $0 1) - (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 416) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $8 (i32.const 764) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 1820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $10 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $12 (i32.const 2044) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 2144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2384) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 364 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 364 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 364 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 784 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1840 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -107,7 +550,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -177,7 +620,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -194,7 +637,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -224,8 +667,8 @@ i32.load i32.gt_u if - i32.const 224 - i32.const 288 + i32.const 2192 + i32.const 2256 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -293,7 +736,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 96 + i32.const 2064 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -445,7 +888,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -465,7 +908,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -528,7 +971,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -681,7 +1124,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -698,7 +1141,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -787,7 +1230,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -830,7 +1273,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -848,7 +1291,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -916,7 +1359,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1033,7 +1476,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1079,7 +1522,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1111,7 +1554,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1355,7 +1798,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1575,7 +2018,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2064 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1683,8 +2126,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 32 - i32.const 368 + i32.const 2000 + i32.const 2336 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1786,7 +2229,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1857,7 +2300,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2014,7 +2457,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2129,7 +2572,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2149,7 +2592,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 2336 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2197,8 +2640,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 32 - i32.const 96 + i32.const 2000 + i32.const 2064 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2269,72 +2712,6 @@ local.get $0 call $super-inline/Foo#a ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $super-inline/foo - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $super-inline/bar - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 224 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 32 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $super-inline/Bar - block $super-inline/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $super-inline/Foo $super-inline/Bar $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - unreachable - ) (func $~start call $start:super-inline ) @@ -2343,14 +2720,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33232 - i32.const 33280 + i32.const 35200 + i32.const 35248 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 128 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 1936 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $super-inline/Foo#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2445,13 +3027,13 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 144 + i32.const 2112 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace - i32.const 176 + i32.const 2144 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace - i32.const 320 + i32.const 2288 call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 @@ -2481,6 +3063,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2536,4 +3265,76 @@ local.get $2 return ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $super-inline/foo + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $super-inline/bar + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1840 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $super-inline/Bar + block $super-inline/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $super-inline/Foo $super-inline/Bar $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/super-inline.release.wat b/tests/compiler/super-inline.release.wat index 0f870aa03f..dee74d1bb8 100644 --- a/tests/compiler/super-inline.release.wat +++ b/tests/compiler/super-inline.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) (type $1 (func (param i32))) - (type $2 (func (param i32) (result i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i64))) (type $6 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -19,21 +19,240 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $super-inline/foo (mut i32) (i32.const 0)) (global $super-inline/bar (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34236)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36204)) (memory $0 1) - (data $0 (i32.const 1036) "<") - (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $1 (i32.const 1100) "<") - (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $4 (i32.const 1228) "<") - (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $5 (i32.const 1292) ",") - (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $7 (i32.const 1372) "<") - (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $8 (i32.const 1440) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\02\00\00\00:") + (data $4 (i32.const 1164) "|") + (data $4.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1356) "\1c") + (data $6.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $8 (i32.const 1788) "\1c\04") + (data $8.1 (i32.const 1800) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $9 (i32.const 2844) "\\") + (data $9.1 (i32.const 2856) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $10 (i32.const 2940) "<") + (data $10.1 (i32.const 2952) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $11 (i32.const 3004) "<") + (data $11.1 (i32.const 3016) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $12 (i32.const 3068) "<") + (data $12.1 (i32.const 3080) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $15 (i32.const 3196) "<") + (data $15.1 (i32.const 3208) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $16 (i32.const 3260) ",") + (data $16.1 (i32.const 3272) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 3408) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3436 + i32.lt_s + if + i32.const 36224 + i32.const 36272 + 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$1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$1 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1388 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -49,9 +268,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1248 + i32.const 3216 call $~lib/rt/itcms/__visit - i32.const 1056 + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 2864 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -72,7 +295,7 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -120,7 +343,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -129,7 +352,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$116 + block $__inlined_func$~lib/rt/itcms/Object#unlink$129 local.get $1 i32.load offset=4 i32.const -4 @@ -141,19 +364,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34236 + i32.const 36204 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$116 + br $__inlined_func$~lib/rt/itcms/Object#unlink$129 end local.get $1 i32.load offset=8 @@ -161,7 +384,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -190,12 +413,12 @@ i32.const 1 else local.get $0 - i32.const 1440 + i32.const 3408 i32.load i32.gt_u if - i32.const 1248 - i32.const 1312 + i32.const 3216 + i32.const 3280 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -204,7 +427,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1444 + i32.const 3412 i32.add i32.load i32.const 32 @@ -256,7 +479,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -270,7 +493,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -316,7 +539,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -399,7 +622,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -413,7 +636,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -474,7 +697,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -507,7 +730,7 @@ i32.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -522,7 +745,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -573,7 +796,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -645,7 +868,7 @@ i64.lt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -670,7 +893,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -697,7 +920,7 @@ i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -769,10 +992,10 @@ if unreachable end - i32.const 34240 + i32.const 36208 i32.const 0 i32.store - i32.const 35808 + i32.const 37776 i32.const 0 i32.store loop $for-loop|0 @@ -783,7 +1006,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34240 + i32.const 36208 i32.add i32.const 0 i32.store offset=4 @@ -801,7 +1024,7 @@ i32.add i32.const 2 i32.shl - i32.const 34240 + i32.const 36208 i32.add i32.const 0 i32.store offset=96 @@ -819,14 +1042,14 @@ br $for-loop|0 end end - i32.const 34240 - i32.const 35812 + i32.const 36208 + i32.const 37780 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34240 + i32.const 36208 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -911,7 +1134,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34236 + i32.const 36204 i32.lt_u if local.get $0 @@ -1000,14 +1223,14 @@ i32.ne if i32.const 0 - i32.const 1120 + i32.const 3088 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34236 + i32.const 36204 i32.lt_u if local.get $0 @@ -1030,7 +1253,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34236 + i32.const 36204 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1059,7 +1282,7 @@ end if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1089,18 +1312,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 3360 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1108,32 +1398,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1146,23 +1440,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 3024 + i32.const 3088 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$71 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 @@ -1176,9 +1482,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$71 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1201,31 +1507,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.const 1073741820 + i32.gt_u if - memory.size - local.tee $1 - i32.const 4 + i32.const 3024 + i32.const 3360 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 local.get $2 - 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 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1241,8 +1602,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1250,119 +1611,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1392 + i32.const 3360 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 3360 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1370,45 +1748,14 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $super-inline/Bar - block $super-inline/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $super-inline/Foo $super-inline/Bar $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable + memory.fill + local.get $1 ) (func $~start (local $0 i32) @@ -1418,7 +1765,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3436 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1427,34 +1774,34 @@ memory.size i32.const 16 i32.shl - i32.const 34236 + i32.const 36204 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 + i32.const 3140 + i32.const 3136 i32.store - i32.const 1176 - i32.const 1168 + i32.const 3144 + i32.const 3136 i32.store - i32.const 1168 + i32.const 3136 global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 + i32.const 3172 + i32.const 3168 i32.store - i32.const 1208 - i32.const 1200 + i32.const 3176 + i32.const 3168 i32.store - i32.const 1200 + i32.const 3168 global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.const 3316 + i32.const 3312 i32.store - i32.const 1352 - i32.const 1344 + i32.const 3320 + i32.const 3312 i32.store - i32.const 1344 + i32.const 3312 global.set $~lib/rt/itcms/fromSpace i32.const 0 call $super-inline/Foo#constructor @@ -1478,13 +1825,14 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3436 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 5 call $~lib/rt/itcms/__new local.tee $0 @@ -1515,13 +1863,213 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34256 - i32.const 34304 + i32.const 36224 + i32.const 36272 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3436 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3436 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$134 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$134 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36224 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3436 + i32.lt_s + if + i32.const 36224 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1152 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 2960 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $super-inline/Foo#constructor (param $0 i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -1530,7 +2078,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3436 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1540,6 +2088,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 @@ -1554,7 +2103,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3436 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1565,6 +2114,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1582,8 +2132,8 @@ local.get $0 return end - i32.const 34256 - i32.const 34304 + i32.const 36224 + i32.const 36272 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1595,11 +2145,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1468 + i32.const 3436 i32.lt_s if - i32.const 34256 - i32.const 34304 + i32.const 36224 + i32.const 36272 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1616,4 +2166,35 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $super-inline/Bar + block $super-inline/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $super-inline/Foo $super-inline/Bar $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/switch.debug.wat b/tests/compiler/switch.debug.wat index 29504e6521..9080390254 100644 --- a/tests/compiler/switch.debug.wat +++ b/tests/compiler/switch.debug.wat @@ -6,16 +6,17 @@ (type $4 (func)) (type $5 (func (param i32 i32 i32))) (type $6 (func (param i64) (result i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $9 (func (param i32 i32 i64) (result i32))) - (type $10 (func (result i32))) - (type $11 (func (param f32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $13 (func (param f32) (result i32))) + (type $14 (func (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/native/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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -27,41 +28,52 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $switch/Foo.A i32 (i32.const 1)) (global $switch/Foo.B i32 (i32.const 2)) (global $switch/Foo.C i32 (i32.const 3)) (global $switch/Foo.D i32 (i32.const 4)) (global $switch/foo1 (mut i32) (i32.const 0)) (global $switch/foo2 (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 912)) - (global $~lib/memory/__data_end i32 (i32.const 940)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33708)) - (global $~lib/memory/__heap_base i32 (i32.const 33708)) + (global $~lib/rt/__rtti_base i32 (i32.const 2848)) + (global $~lib/memory/__data_end i32 (i32.const 2876)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35644)) + (global $~lib/memory/__heap_base i32 (i32.const 35644)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 60) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00o\00n\00e\00\00\00\00\00\00\00") - (data $2 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00t\00w\00o\00\00\00\00\00\00\00") - (data $3 (i32.const 124) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00t\00h\00r\00e\00e\00\00\00") - (data $4 (i32.const 156) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00f\00o\00u\00r\00\00\00\00\00") - (data $5 (i32.const 188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00o\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 220) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00n\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 284) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $9 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 540) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 592) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 620) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00e\00\00\00\00\00\00\00\00\00\00\00") - (data $17 (i32.const 716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00t\00\00\00\00\00\00\00\00\00\00\00") - (data $18 (i32.const 748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00w\00\00\00\00\00\00\00\00\00\00\00") - (data $19 (i32.const 780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00h\00\00\00\00\00\00\00\00\00\00\00") - (data $20 (i32.const 812) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00r\00\00\00\00\00\00\00\00\00\00\00") - (data $21 (i32.const 844) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00f\00\00\00\00\00\00\00\00\00\00\00") - (data $22 (i32.const 876) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00u\00\00\00\00\00\00\00\00\00\00\00") - (data $23 (i32.const 912) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2428) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00o\00n\00e\00\00\00\00\00\00\00") + (data $21 (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00t\00w\00o\00\00\00\00\00\00\00") + (data $22 (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00t\00h\00r\00e\00e\00\00\00") + (data $23 (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00f\00o\00u\00r\00\00\00\00\00") + (data $24 (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00o\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00n\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 2620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00e\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2652) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00t\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00w\00\00\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 2716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00h\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 2748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00r\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 2780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00f\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 2812) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00u\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 2848) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) @@ -104,154 +116,6 @@ i32.const 23 return ) - (func $switch/doSwitchDefaultFirst (param $n i32) (result i32) - (local $1 i32) - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $n - local.set $1 - local.get $1 - i32.const 1 - i32.eq - br_if $case1|0 - local.get $1 - i32.const 2 - i32.eq - br_if $case2|0 - local.get $1 - i32.const 3 - i32.eq - br_if $case3|0 - br $case0|0 - end - i32.const 0 - return - end - i32.const 1 - return - end - end - i32.const 23 - return - ) - (func $switch/doSwitchDefaultOmitted (param $n i32) (result i32) - (local $1 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $n - local.set $1 - local.get $1 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $1 - i32.const 3 - i32.eq - br_if $case2|0 - br $break|0 - end - i32.const 1 - return - end - end - i32.const 23 - return - end - i32.const 0 - return - ) - (func $switch/doSwitchBreakCase (param $n i32) (result i32) - (local $1 i32) - block $break|0 - block $case1|0 - block $case0|0 - local.get $n - local.set $1 - local.get $1 - i32.const 1 - i32.eq - br_if $case0|0 - br $case1|0 - end - br $break|0 - end - i32.const 2 - return - end - i32.const 1 - return - ) - (func $switch/doSwitchBreakDefault (param $n i32) (result i32) - (local $1 i32) - block $break|0 - block $case1|0 - block $case0|0 - local.get $n - local.set $1 - local.get $1 - i32.const 1 - i32.eq - br_if $case0|0 - br $case1|0 - end - i32.const 1 - return - end - br $break|0 - end - i32.const 2 - return - ) - (func $switch/doSwitchFallThroughCase (param $n i32) (result i32) - (local $1 i32) - block $case1|0 - block $case0|0 - local.get $n - local.set $1 - local.get $1 - i32.const 1 - i32.eq - br_if $case1|0 - br $case0|0 - end - i32.const 2 - return - end - i32.const 1 - return - ) - (func $switch/doSwitchFallThroughDefault (param $n i32) (result i32) - (local $1 i32) - block $case1|0 - block $case0|0 - local.get $n - local.set $1 - local.get $1 - i32.const 1 - i32.eq - br_if $case0|0 - br $case1|0 - end - i32.const 1 - return - end - i32.const 2 - return - ) - (func $switch/doSwitchEmpty (param $n i32) (result i32) - local.get $n - drop - i32.const 2 - return - ) (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) local.get $this i32.load offset=16 @@ -265,110 +129,6 @@ i32.shr_u return ) - (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) - (local $ptr1 i32) - (local $ptr2 i32) - (local $7 i32) - (local $a i32) - (local $b i32) - local.get $str1 - local.get $index1 - i32.const 1 - i32.shl - i32.add - local.set $ptr1 - local.get $str2 - local.get $index2 - i32.const 1 - i32.shl - i32.add - local.set $ptr2 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $len - i32.const 4 - i32.ge_u - if (result i32) - local.get $ptr1 - i32.const 7 - i32.and - local.get $ptr2 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-loop|0 - local.get $ptr1 - i64.load - local.get $ptr2 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $ptr1 - i32.const 8 - i32.add - local.set $ptr1 - local.get $ptr2 - i32.const 8 - i32.add - local.set $ptr2 - local.get $len - i32.const 4 - i32.sub - local.set $len - local.get $len - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - loop $while-continue|1 - local.get $len - local.tee $7 - i32.const 1 - i32.sub - local.set $len - local.get $7 - if - local.get $ptr1 - i32.load16_u - local.set $a - local.get $ptr2 - i32.load16_u - local.set $b - local.get $a - local.get $b - i32.ne - if - local.get $a - local.get $b - i32.sub - return - end - local.get $ptr1 - i32.const 2 - i32.add - local.set $ptr1 - local.get $ptr2 - i32.const 2 - i32.add - local.set $ptr2 - br $while-continue|1 - end - end - i32.const 0 - return - ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -433,7 +193,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 192 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -503,7 +263,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 192 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -520,7 +280,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 192 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -550,8 +310,8 @@ i32.load i32.gt_u if - i32.const 496 - i32.const 560 + i32.const 320 + i32.const 384 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -619,7 +379,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 368 + i32.const 192 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -771,7 +531,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 464 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -791,7 +551,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 464 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -854,7 +614,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 464 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -1007,7 +767,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 464 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -1024,7 +784,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 464 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -1113,7 +873,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 464 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -1156,7 +916,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 464 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -1174,7 +934,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 464 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -1242,7 +1002,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 464 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1359,7 +1119,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 464 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1405,7 +1165,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 464 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1437,7 +1197,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 464 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1681,7 +1441,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 464 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1901,7 +1661,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 192 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -2009,8 +1769,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 304 - i32.const 640 + i32.const 128 + i32.const 464 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -2112,7 +1872,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 464 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -2183,7 +1943,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 464 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2340,7 +2100,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 464 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2455,7 +2215,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 464 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2475,7 +2235,7 @@ i32.eqz if i32.const 0 - i32.const 640 + i32.const 464 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2523,8 +2283,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 304 - i32.const 368 + i32.const 128 + i32.const 192 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2569,6 +2329,674 @@ local.get $ptr return ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $switch/doSwitchDefaultFirst (param $n i32) (result i32) + (local $1 i32) + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + local.get $1 + i32.const 3 + i32.eq + br_if $case3|0 + br $case0|0 + end + i32.const 0 + return + end + i32.const 1 + return + end + end + i32.const 23 + return + ) + (func $switch/doSwitchDefaultOmitted (param $n i32) (result i32) + (local $1 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + i32.const 1 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 3 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + return + end + end + i32.const 23 + return + end + i32.const 0 + return + ) + (func $switch/doSwitchBreakCase (param $n i32) (result i32) + (local $1 i32) + block $break|0 + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + i32.const 1 + i32.eq + br_if $case0|0 + br $case1|0 + end + br $break|0 + end + i32.const 2 + return + end + i32.const 1 + return + ) + (func $switch/doSwitchBreakDefault (param $n i32) (result i32) + (local $1 i32) + block $break|0 + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + i32.const 1 + i32.eq + br_if $case0|0 + br $case1|0 + end + i32.const 1 + return + end + br $break|0 + end + i32.const 2 + return + ) + (func $switch/doSwitchFallThroughCase (param $n i32) (result i32) + (local $1 i32) + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + br $case0|0 + end + i32.const 2 + return + end + i32.const 1 + return + ) + (func $switch/doSwitchFallThroughDefault (param $n i32) (result i32) + (local $1 i32) + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + i32.const 1 + i32.eq + br_if $case0|0 + br $case1|0 + end + i32.const 1 + return + end + i32.const 2 + return + ) + (func $switch/doSwitchEmpty (param $n i32) (result i32) + local.get $n + drop + i32.const 2 + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) (func $switch/doSwitchBoolean (param $b i32) (result i32) (local $1 i32) block $break|0 @@ -2794,81 +3222,15 @@ local.get $this i32.load ) - (func $switch/BarClass#get:value (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $switch/BarClass#set:value (param $this i32) (param $value i32) - local.get $this - local.get $value - i32.store - ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $switch/foo1 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $switch/foo2 - local.tee $1 - if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 496 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 304 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $switch/BarClass - block $switch/FooClass - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $switch/FooClass $switch/BarClass $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - unreachable - ) + (func $switch/BarClass#get:value (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $switch/BarClass#set:value (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store + ) (func $~start call $start:switch ) @@ -2877,14 +3239,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33728 - i32.const 33776 + i32.const 35664 + i32.const 35712 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) (local $leftLength i32) (local $3 i32) @@ -3006,7 +3573,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 80 + i32.const 2448 call $~lib/string/String.__eq br_if $case0|0 local.get $1 @@ -3015,7 +3582,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 112 + i32.const 2480 call $~lib/string/String.__eq br_if $case1|0 local.get $1 @@ -3024,7 +3591,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 144 + i32.const 2512 call $~lib/string/String.__eq br_if $case2|0 br $case3|0 @@ -3065,113 +3632,6 @@ local.get $2 return ) - (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) - (local $thisSize i32) - (local $otherSize i32) - (local $outSize i32) - (local $out i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $this - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $thisSize - local.get $other - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $otherSize - local.get $thisSize - local.get $otherSize - i32.add - local.set $outSize - local.get $outSize - i32.const 0 - i32.eq - if - i32.const 272 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - global.get $~lib/memory/__stack_pointer - local.get $outSize - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $out - i32.store offset=4 - local.get $out - local.get $this - local.get $thisSize - memory.copy - local.get $out - local.get $thisSize - i32.add - local.get $other - local.get $otherSize - memory.copy - local.get $out - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - ) - (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $left - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $right - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/string/String#concat - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - ) (func $switch/doSwitchNullableString (param $s i32) (result i32) (local $1 i32) (local $2 i32) @@ -3207,7 +3667,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 80 + i32.const 2448 call $~lib/string/String.__eq br_if $case1|0 local.get $1 @@ -3216,7 +3676,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 112 + i32.const 2480 call $~lib/string/String.__eq br_if $case2|0 local.get $1 @@ -3225,7 +3685,7 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 144 + i32.const 2512 call $~lib/string/String.__eq br_if $case3|0 br $case4|0 @@ -3600,6 +4060,23 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=8 + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 0 call $switch/doSwitch i32.const 0 @@ -3607,7 +4084,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -3620,7 +4097,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -3633,7 +4110,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -3646,7 +4123,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -3659,7 +4136,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 14 i32.const 1 call $~lib/builtins/abort @@ -3672,7 +4149,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -3685,7 +4162,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -3698,7 +4175,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -3711,7 +4188,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -3724,7 +4201,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -3737,7 +4214,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -3750,7 +4227,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 39 i32.const 1 call $~lib/builtins/abort @@ -3763,7 +4240,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -3776,7 +4253,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -3789,7 +4266,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -3802,7 +4279,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 51 i32.const 1 call $~lib/builtins/abort @@ -3815,7 +4292,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 52 i32.const 1 call $~lib/builtins/abort @@ -3828,7 +4305,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 53 i32.const 1 call $~lib/builtins/abort @@ -3841,7 +4318,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 62 i32.const 1 call $~lib/builtins/abort @@ -3854,7 +4331,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 63 i32.const 1 call $~lib/builtins/abort @@ -3867,7 +4344,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 64 i32.const 1 call $~lib/builtins/abort @@ -3880,7 +4357,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 73 i32.const 1 call $~lib/builtins/abort @@ -3893,7 +4370,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 74 i32.const 1 call $~lib/builtins/abort @@ -3906,7 +4383,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 75 i32.const 1 call $~lib/builtins/abort @@ -3919,7 +4396,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 84 i32.const 1 call $~lib/builtins/abort @@ -3932,7 +4409,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 85 i32.const 1 call $~lib/builtins/abort @@ -3945,7 +4422,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 86 i32.const 1 call $~lib/builtins/abort @@ -3958,7 +4435,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 92 i32.const 1 call $~lib/builtins/abort @@ -3971,7 +4448,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 93 i32.const 1 call $~lib/builtins/abort @@ -3984,90 +4461,73 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 94 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 80 + i32.const 2448 call $switch/doSwitchString i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 106 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 112 + i32.const 2480 call $switch/doSwitchString i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 107 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 144 + i32.const 2512 call $switch/doSwitchString i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 108 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 176 + i32.const 2544 call $switch/doSwitchString i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 109 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 416 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 448 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 592 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - i32.const 208 - i32.const 240 + i32.const 2576 + i32.const 2608 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 704 + i32.const 2640 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer @@ -4080,21 +4540,21 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 112 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 736 - i32.const 768 + i32.const 2672 + i32.const 2704 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 208 + i32.const 2576 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer @@ -4107,35 +4567,35 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 113 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 736 - i32.const 800 + i32.const 2672 + i32.const 2736 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=12 local.get $0 - i32.const 832 + i32.const 2768 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.const 704 + i32.const 2640 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 704 + i32.const 2640 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer @@ -4148,28 +4608,28 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 114 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 208 + i32.const 2800 + i32.const 2576 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.const 896 + i32.const 2832 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 832 + i32.const 2768 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer @@ -4182,7 +4642,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 115 i32.const 1 call $~lib/builtins/abort @@ -4195,73 +4655,73 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 128 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 80 + i32.const 2448 call $switch/doSwitchNullableString i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 129 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 112 + i32.const 2480 call $switch/doSwitchNullableString i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 130 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 144 + i32.const 2512 call $switch/doSwitchNullableString i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 131 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 176 + i32.const 2544 call $switch/doSwitchNullableString i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 132 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 208 - i32.const 240 + i32.const 2576 + i32.const 2608 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 704 + i32.const 2640 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer @@ -4274,21 +4734,21 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 135 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 736 - i32.const 768 + i32.const 2672 + i32.const 2704 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 208 + i32.const 2576 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer @@ -4301,35 +4761,35 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 136 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 736 - i32.const 800 + i32.const 2672 + i32.const 2736 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=12 local.get $0 - i32.const 832 + i32.const 2768 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.const 704 + i32.const 2640 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 704 + i32.const 2640 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer @@ -4342,28 +4802,28 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 137 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 208 + i32.const 2800 + i32.const 2576 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.const 896 + i32.const 2832 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 832 + i32.const 2768 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer @@ -4376,7 +4836,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 138 i32.const 1 call $~lib/builtins/abort @@ -4389,7 +4849,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 148 i32.const 1 call $~lib/builtins/abort @@ -4402,7 +4862,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 149 i32.const 1 call $~lib/builtins/abort @@ -4415,7 +4875,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 159 i32.const 1 call $~lib/builtins/abort @@ -4428,7 +4888,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 160 i32.const 1 call $~lib/builtins/abort @@ -4441,7 +4901,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 161 i32.const 1 call $~lib/builtins/abort @@ -4454,7 +4914,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 162 i32.const 1 call $~lib/builtins/abort @@ -4467,7 +4927,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 163 i32.const 1 call $~lib/builtins/abort @@ -4480,7 +4940,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 180 i32.const 1 call $~lib/builtins/abort @@ -4493,7 +4953,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 181 i32.const 1 call $~lib/builtins/abort @@ -4506,7 +4966,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 182 i32.const 1 call $~lib/builtins/abort @@ -4519,7 +4979,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 183 i32.const 1 call $~lib/builtins/abort @@ -4532,7 +4992,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 193 i32.const 1 call $~lib/builtins/abort @@ -4545,7 +5005,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 194 i32.const 1 call $~lib/builtins/abort @@ -4558,7 +5018,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 195 i32.const 1 call $~lib/builtins/abort @@ -4571,7 +5031,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 196 i32.const 1 call $~lib/builtins/abort @@ -4584,7 +5044,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 197 i32.const 1 call $~lib/builtins/abort @@ -4597,7 +5057,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 206 i32.const 1 call $~lib/builtins/abort @@ -4610,7 +5070,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 207 i32.const 1 call $~lib/builtins/abort @@ -4623,7 +5083,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 208 i32.const 1 call $~lib/builtins/abort @@ -4636,7 +5096,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 217 i32.const 1 call $~lib/builtins/abort @@ -4649,7 +5109,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 218 i32.const 1 call $~lib/builtins/abort @@ -4662,7 +5122,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 219 i32.const 1 call $~lib/builtins/abort @@ -4675,7 +5135,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 230 i32.const 1 call $~lib/builtins/abort @@ -4688,7 +5148,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 231 i32.const 1 call $~lib/builtins/abort @@ -4701,7 +5161,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 232 i32.const 1 call $~lib/builtins/abort @@ -4721,7 +5181,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 251 i32.const 1 call $~lib/builtins/abort @@ -4741,7 +5201,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 252 i32.const 1 call $~lib/builtins/abort @@ -4761,7 +5221,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 253 i32.const 1 call $~lib/builtins/abort @@ -4787,7 +5247,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 266 i32.const 1 call $~lib/builtins/abort @@ -4805,7 +5265,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 267 i32.const 1 call $~lib/builtins/abort @@ -4825,7 +5285,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 268 i32.const 1 call $~lib/builtins/abort @@ -4838,7 +5298,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 293 i32.const 1 call $~lib/builtins/abort @@ -4858,7 +5318,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 294 i32.const 1 call $~lib/builtins/abort @@ -4878,7 +5338,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 295 i32.const 1 call $~lib/builtins/abort @@ -4898,7 +5358,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 296 i32.const 1 call $~lib/builtins/abort @@ -4909,6 +5369,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $switch/doSwitchClassInstance (param $foo i32) (result i32) (local $1 i32) (local $2 i32) @@ -4964,4 +5571,76 @@ local.get $2 return ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $switch/foo1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $switch/foo2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $switch/BarClass + block $switch/FooClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $switch/FooClass $switch/BarClass $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/switch.release.wat b/tests/compiler/switch.release.wat index 95b2826eb3..2cddc63f2c 100644 --- a/tests/compiler/switch.release.wat +++ b/tests/compiler/switch.release.wat @@ -4,10 +4,9 @@ (type $2 (func)) (type $3 (func (param i32))) (type $4 (func (param i32 i32))) - (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -20,49 +19,68 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $switch/foo1 (mut i32) (i32.const 0)) (global $switch/foo2 (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34732)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36668)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s") - (data $1 (i32.const 1084) "\1c") - (data $1.1 (i32.const 1096) "\02\00\00\00\06\00\00\00o\00n\00e") - (data $2 (i32.const 1116) "\1c") - (data $2.1 (i32.const 1128) "\02\00\00\00\06\00\00\00t\00w\00o") - (data $3 (i32.const 1148) "\1c") - (data $3.1 (i32.const 1160) "\02\00\00\00\n\00\00\00t\00h\00r\00e\00e") - (data $4 (i32.const 1180) "\1c") - (data $4.1 (i32.const 1192) "\02\00\00\00\08\00\00\00f\00o\00u\00r") - (data $5 (i32.const 1212) "\1c") - (data $5.1 (i32.const 1224) "\02\00\00\00\02\00\00\00o") - (data $6 (i32.const 1244) "\1c") - (data $6.1 (i32.const 1256) "\02\00\00\00\02\00\00\00n") - (data $7 (i32.const 1276) "\1c") - (data $7.1 (i32.const 1288) "\02") - (data $8 (i32.const 1308) "<") - (data $8.1 (i32.const 1320) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $9 (i32.const 1372) "<") - (data $9.1 (i32.const 1384) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $12 (i32.const 1500) "<") - (data $12.1 (i32.const 1512) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $13 (i32.const 1564) ",") - (data $13.1 (i32.const 1576) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $15 (i32.const 1644) "<") - (data $15.1 (i32.const 1656) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $16 (i32.const 1708) "\1c") - (data $16.1 (i32.const 1720) "\02\00\00\00\02\00\00\00e") - (data $17 (i32.const 1740) "\1c") - (data $17.1 (i32.const 1752) "\02\00\00\00\02\00\00\00t") - (data $18 (i32.const 1772) "\1c") - (data $18.1 (i32.const 1784) "\02\00\00\00\02\00\00\00w") - (data $19 (i32.const 1804) "\1c") - (data $19.1 (i32.const 1816) "\02\00\00\00\02\00\00\00h") - (data $20 (i32.const 1836) "\1c") - (data $20.1 (i32.const 1848) "\02\00\00\00\02\00\00\00r") - (data $21 (i32.const 1868) "\1c") - (data $21.1 (i32.const 1880) "\02\00\00\00\02\00\00\00f") - (data $22 (i32.const 1900) "\1c") - (data $22.1 (i32.const 1912) "\02\00\00\00\02\00\00\00u") - (data $23 (i32.const 1936) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s") + (data $20 (i32.const 3452) "\1c") + (data $20.1 (i32.const 3464) "\02\00\00\00\06\00\00\00o\00n\00e") + (data $21 (i32.const 3484) "\1c") + (data $21.1 (i32.const 3496) "\02\00\00\00\06\00\00\00t\00w\00o") + (data $22 (i32.const 3516) "\1c") + (data $22.1 (i32.const 3528) "\02\00\00\00\n\00\00\00t\00h\00r\00e\00e") + (data $23 (i32.const 3548) "\1c") + (data $23.1 (i32.const 3560) "\02\00\00\00\08\00\00\00f\00o\00u\00r") + (data $24 (i32.const 3580) "\1c") + (data $24.1 (i32.const 3592) "\02\00\00\00\02\00\00\00o") + (data $25 (i32.const 3612) "\1c") + (data $25.1 (i32.const 3624) "\02\00\00\00\02\00\00\00n") + (data $26 (i32.const 3644) "\1c") + (data $26.1 (i32.const 3656) "\02\00\00\00\02\00\00\00e") + (data $27 (i32.const 3676) "\1c") + (data $27.1 (i32.const 3688) "\02\00\00\00\02\00\00\00t") + (data $28 (i32.const 3708) "\1c") + (data $28.1 (i32.const 3720) "\02\00\00\00\02\00\00\00w") + (data $29 (i32.const 3740) "\1c") + (data $29.1 (i32.const 3752) "\02\00\00\00\02\00\00\00h") + (data $30 (i32.const 3772) "\1c") + (data $30.1 (i32.const 3784) "\02\00\00\00\02\00\00\00r") + (data $31 (i32.const 3804) "\1c") + (data $31.1 (i32.const 3816) "\02\00\00\00\02\00\00\00f") + (data $32 (i32.const 3836) "\1c") + (data $32.1 (i32.const 3848) "\02\00\00\00\02\00\00\00u") + (data $33 (i32.const 3872) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots @@ -80,9 +98,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1520 + i32.const 1344 call $~lib/rt/itcms/__visit - i32.const 1328 + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -103,7 +125,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -151,7 +173,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -160,7 +182,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$186 + block $__inlined_func$~lib/rt/itcms/Object#unlink$194 local.get $1 i32.load offset=4 i32.const -4 @@ -172,19 +194,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34732 + i32.const 36668 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$186 + br $__inlined_func$~lib/rt/itcms/Object#unlink$194 end local.get $1 i32.load offset=8 @@ -192,7 +214,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -221,12 +243,12 @@ i32.const 1 else local.get $0 - i32.const 1936 + i32.const 3872 i32.load i32.gt_u if - i32.const 1520 - i32.const 1584 + i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -235,7 +257,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1940 + i32.const 3876 i32.add i32.load i32.const 32 @@ -287,7 +309,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -301,7 +323,7 @@ i32.lt_u if i32.const 0 - i32.const 1664 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -347,7 +369,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -430,7 +452,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -444,7 +466,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -505,7 +527,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -538,7 +560,7 @@ i32.lt_u if i32.const 0 - i32.const 1664 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -553,7 +575,7 @@ i32.ne if i32.const 0 - i32.const 1664 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -604,7 +626,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -676,7 +698,7 @@ i64.lt_u if i32.const 0 - i32.const 1664 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -701,7 +723,7 @@ i32.gt_u if i32.const 0 - i32.const 1664 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -728,7 +750,7 @@ i32.gt_u if i32.const 0 - i32.const 1664 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -800,10 +822,10 @@ if unreachable end - i32.const 34736 + i32.const 36672 i32.const 0 i32.store - i32.const 36304 + i32.const 38240 i32.const 0 i32.store loop $for-loop|0 @@ -814,7 +836,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34736 + i32.const 36672 i32.add i32.const 0 i32.store offset=4 @@ -832,7 +854,7 @@ i32.add i32.const 2 i32.shl - i32.const 34736 + i32.const 36672 i32.add i32.const 0 i32.store offset=96 @@ -850,14 +872,14 @@ br $for-loop|0 end end - i32.const 34736 - i32.const 36308 + i32.const 36672 + i32.const 38244 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34736 + i32.const 36672 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -942,7 +964,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34732 + i32.const 36668 i32.lt_u if local.get $0 @@ -1031,14 +1053,14 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34732 + i32.const 36668 i32.lt_u if local.get $0 @@ -1061,7 +1083,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34732 + i32.const 36668 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1090,7 +1112,7 @@ end if i32.const 0 - i32.const 1664 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1174,7 +1196,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1488 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1226,7 +1248,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -1258,8 +1280,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1328 - i32.const 1392 + i32.const 1152 + i32.const 1216 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -1323,8 +1345,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 1328 - i32.const 1664 + i32.const 1152 + i32.const 1488 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1426,7 +1448,7 @@ i32.eqz if i32.const 0 - i32.const 1664 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -1441,7 +1463,7 @@ i32.gt_u if i32.const 0 - i32.const 1664 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -1460,7 +1482,7 @@ i32.and if i32.const 0 - i32.const 1664 + i32.const 1488 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -1565,40 +1587,407 @@ memory.fill local.get $1 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $switch/BarClass - block $switch/FooClass - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $switch/FooClass $switch/BarClass $invalid - end - return - end - return - end - return - end + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3900 + i32.lt_s + if + i32.const 36688 + i32.const 36736 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end - return end - return + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end - unreachable + local.get $0 ) (func $~start call $start:switch ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$199 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$199 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36688 + i32.const 36736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3900 + i32.lt_s + if + i32.const 36688 + i32.const 36736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1609,11 +1998,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1964 + i32.const 3900 i32.lt_s if - i32.const 34752 - i32.const 34800 + i32.const 36688 + i32.const 36736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1712,7 +2101,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$76 + block $__inlined_func$~lib/util/string/compareImpl$79 loop $while-continue|1 local.get $0 local.tee $3 @@ -1732,7 +2121,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$76 + br_if $__inlined_func$~lib/util/string/compareImpl$79 local.get $2 i32.const 2 i32.add @@ -1767,11 +2156,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1964 + i32.const 3900 i32.lt_s if - i32.const 34752 - i32.const 34800 + i32.const 36688 + i32.const 36736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1790,7 +2179,7 @@ block $case2|0 block $case1|0 local.get $0 - i32.const 1104 + i32.const 3472 call $~lib/string/String.__eq i32.eqz if @@ -1798,14 +2187,14 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 1136 + i32.const 3504 call $~lib/string/String.__eq br_if $case1|0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 1168 + i32.const 3536 call $~lib/string/String.__eq br_if $case2|0 br $case3|0 @@ -1837,120 +2226,17 @@ global.set $~lib/memory/__stack_pointer i32.const 4 ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1964 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1964 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.tee $2 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $__inlined_func$~lib/string/String#concat$191 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $4 - local.get $3 - i32.add - local.tee $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1296 - local.set $0 - br $__inlined_func$~lib/string/String#concat$191 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $3 - memory.copy - local.get $0 - local.get $3 - i32.add - local.get $1 - local.get $4 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34752 - i32.const 34800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) (func $switch/doSwitchNullableString (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1964 + i32.const 3900 i32.lt_s if - i32.const 34752 - i32.const 34800 + i32.const 36688 + i32.const 36736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1978,21 +2264,21 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 1104 + i32.const 3472 call $~lib/string/String.__eq br_if $case1|0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 1136 + i32.const 3504 call $~lib/string/String.__eq br_if $case2|0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 1168 + i32.const 3536 call $~lib/string/String.__eq br_if $case3|0 br $case4|0 @@ -2038,11 +2324,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1964 + i32.const 3900 i32.lt_s if - i32.const 34752 - i32.const 34800 + i32.const 36688 + i32.const 36736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2081,11 +2367,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1964 + i32.const 3900 i32.lt_s if - i32.const 34752 - i32.const 34800 + i32.const 36688 + i32.const 36736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2137,11 +2423,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1964 + i32.const 3900 i32.lt_s if - i32.const 34752 - i32.const 34800 + i32.const 36688 + i32.const 36736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2197,11 +2483,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1964 + i32.const 3900 i32.lt_s if - i32.const 34752 - i32.const 34800 + i32.const 36688 + i32.const 36736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2241,11 +2527,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1964 + i32.const 3900 i32.lt_s if - i32.const 34752 - i32.const 34800 + i32.const 36688 + i32.const 36736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2333,11 +2619,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1964 + i32.const 3900 i32.lt_s if - i32.const 34752 - i32.const 34800 + i32.const 36688 + i32.const 36736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2349,95 +2635,95 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=8 - i32.const 1104 + memory.size + i32.const 16 + i32.shl + i32.const 36668 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + i32.const 3472 call $switch/doSwitchString i32.const 1 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 106 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1136 + i32.const 3504 call $switch/doSwitchString i32.const 2 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 107 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1168 + i32.const 3536 call $switch/doSwitchString i32.const 3 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 108 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1200 + i32.const 3568 call $switch/doSwitchString i32.const 4 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 109 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - i32.const 34732 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1444 - i32.const 1440 - i32.store - i32.const 1448 - i32.const 1440 - i32.store - i32.const 1440 - global.set $~lib/rt/itcms/pinSpace - i32.const 1476 - i32.const 1472 - i32.store - i32.const 1480 - i32.const 1472 - i32.store - i32.const 1472 - global.set $~lib/rt/itcms/toSpace - i32.const 1620 - i32.const 1616 - i32.store - i32.const 1624 - i32.const 1616 - i32.store - i32.const 1616 - global.set $~lib/rt/itcms/fromSpace - i32.const 1232 - i32.const 1264 + i32.const 3600 + i32.const 3632 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 1728 + i32.const 3664 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer @@ -2449,21 +2735,21 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 112 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1760 - i32.const 1792 + i32.const 3696 + i32.const 3728 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 1232 + i32.const 3600 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer @@ -2475,35 +2761,35 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 113 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1760 - i32.const 1824 + i32.const 3696 + i32.const 3760 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=12 local.get $0 - i32.const 1856 + i32.const 3792 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.const 1728 + i32.const 3664 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 1728 + i32.const 3664 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer @@ -2515,28 +2801,28 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 114 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 1232 + i32.const 3824 + i32.const 3600 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.const 1920 + i32.const 3856 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 1856 + i32.const 3792 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer @@ -2548,7 +2834,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 115 i32.const 1 call $~lib/builtins/abort @@ -2558,69 +2844,69 @@ call $switch/doSwitchNullableString if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 128 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1104 + i32.const 3472 call $switch/doSwitchNullableString i32.const 1 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 129 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1136 + i32.const 3504 call $switch/doSwitchNullableString i32.const 2 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 130 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1168 + i32.const 3536 call $switch/doSwitchNullableString i32.const 3 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 131 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1200 + i32.const 3568 call $switch/doSwitchNullableString i32.const 4 i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 132 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1232 - i32.const 1264 + i32.const 3600 + i32.const 3632 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 1728 + i32.const 3664 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer @@ -2632,21 +2918,21 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 135 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1760 - i32.const 1792 + i32.const 3696 + i32.const 3728 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 1232 + i32.const 3600 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer @@ -2658,35 +2944,35 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 136 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1760 - i32.const 1824 + i32.const 3696 + i32.const 3760 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=12 local.get $0 - i32.const 1856 + i32.const 3792 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.const 1728 + i32.const 3664 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 1728 + i32.const 3664 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer @@ -2698,28 +2984,28 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 137 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 1232 + i32.const 3824 + i32.const 3600 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.const 1920 + i32.const 3856 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 1856 + i32.const 3792 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer @@ -2731,7 +3017,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 138 i32.const 1 call $~lib/builtins/abort @@ -2749,7 +3035,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 251 i32.const 1 call $~lib/builtins/abort @@ -2767,7 +3053,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 252 i32.const 1 call $~lib/builtins/abort @@ -2785,7 +3071,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 253 i32.const 1 call $~lib/builtins/abort @@ -2807,7 +3093,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 266 i32.const 1 call $~lib/builtins/abort @@ -2823,7 +3109,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 267 i32.const 1 call $~lib/builtins/abort @@ -2841,7 +3127,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 268 i32.const 1 call $~lib/builtins/abort @@ -2851,7 +3137,7 @@ call $switch/doSwitchClassInstanceWithOverload if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 293 i32.const 1 call $~lib/builtins/abort @@ -2869,7 +3155,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 294 i32.const 1 call $~lib/builtins/abort @@ -2887,7 +3173,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 295 i32.const 1 call $~lib/builtins/abort @@ -2905,7 +3191,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 296 i32.const 1 call $~lib/builtins/abort @@ -2922,11 +3208,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1964 + i32.const 3900 i32.lt_s if - i32.const 34752 - i32.const 34800 + i32.const 36688 + i32.const 36736 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2970,4 +3256,35 @@ global.set $~lib/memory/__stack_pointer i32.const 3 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $switch/BarClass + block $switch/FooClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $switch/FooClass $switch/BarClass $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/tablebase.debug.wat b/tests/compiler/tablebase.debug.wat index be867f2190..fabd8f0666 100644 --- a/tests/compiler/tablebase.debug.wat +++ b/tests/compiler/tablebase.debug.wat @@ -1,16 +1,60 @@ (module - (type $0 (func)) - (type $1 (func (param i32) (result i32))) - (type $2 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $tablebase/staticFunction i32 (i32.const 32)) (global $~lib/native/ASC_TABLE_BASE i32 (i32.const 32)) - (global $~lib/memory/__data_end i32 (i32.const 92)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32860)) - (global $~lib/memory/__heap_base i32 (i32.const 32860)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2464)) + (global $~lib/memory/__data_end i32 (i32.const 2488)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35256)) + (global $~lib/memory/__heap_base i32 (i32.const 35256)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00t\00a\00b\00l\00e\00b\00a\00s\00e\00.\00t\00s\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $5 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 572) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 796) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $17 (i32.const 1196) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2252) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $19 (i32.const 2348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00t\00a\00b\00l\00e\00b\00a\00s\00e\00.\00t\00s\00\00\00\00\00") + (data $21 (i32.const 2464) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00") (table $0 33 33 funcref) (elem $0 (i32.const 32) $tablebase/foo) (export "memory" (memory $0)) @@ -22,6 +66,2635 @@ i32.load return ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 352 + i32.const 416 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 224 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 160 + i32.const 496 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 160 + i32.const 224 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 796 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 796 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~start call $start:tablebase ) @@ -30,14 +2703,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 32880 - i32.const 32928 + i32.const 35280 + i32.const 35328 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 128 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2368 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $start:tablebase (local $0 i32) global.get $~lib/memory/__stack_pointer @@ -52,6 +2930,23 @@ i32.const 32 i32.eq drop + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 304 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 448 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $tablebase/staticFunction local.set $0 global.get $~lib/memory/__stack_pointer @@ -64,7 +2959,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -75,4 +2970,245 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 592 + i32.const 720 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 784 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 352 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 160 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1216 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2272 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + unreachable + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/tablebase.release.wat b/tests/compiler/tablebase.release.wat index 6ed678709b..547fbdd3aa 100644 --- a/tests/compiler/tablebase.release.wat +++ b/tests/compiler/tablebase.release.wat @@ -1,26 +1,1762 @@ (module - (type $0 (func (param i32 i32 i32 i32))) - (type $1 (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33884)) + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36280)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00 ") - (data $1 (i32.const 1068) ",") - (data $1.1 (i32.const 1080) "\02\00\00\00\18\00\00\00t\00a\00b\00l\00e\00b\00a\00s\00e\00.\00t\00s") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02") + (data $4 (i32.const 1164) "<") + (data $4.1 (i32.const 1176) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1228) "<") + (data $5.1 (i32.const 1240) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1356) "<") + (data $8.1 (i32.const 1368) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1420) ",") + (data $9.1 (i32.const 1432) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1500) "<") + (data $11.1 (i32.const 1512) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1564) "\1c") + (data $12.1 (i32.const 1576) "\02\00\00\00\02\00\00\00:") + (data $13 (i32.const 1596) "|") + (data $13.1 (i32.const 1608) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $14 (i32.const 1724) "<") + (data $14.1 (i32.const 1736) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $15 (i32.const 1788) "\1c") + (data $15.1 (i32.const 1800) "\02\00\00\00\02\00\00\000") + (data $16 (i32.const 1820) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $17 (i32.const 2220) "\1c\04") + (data $17.1 (i32.const 2232) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $18 (i32.const 3276) "\\") + (data $18.1 (i32.const 3288) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $19 (i32.const 3372) "<") + (data $19.1 (i32.const 3384) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $20 (i32.const 3436) ",") + (data $20.1 (i32.const 3448) "\02\00\00\00\18\00\00\00t\00a\00b\00l\00e\00b\00a\00s\00e\00.\00t\00s") + (data $21 (i32.const 3488) "\05\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1376 + call $~lib/rt/itcms/__visit + i32.const 1184 + call $~lib/rt/itcms/__visit + i32.const 2240 + call $~lib/rt/itcms/__visit + i32.const 3296 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1248 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$126 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36280 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$126 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3488 + i32.load + i32.gt_u + if + i32.const 1376 + i32.const 1440 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3492 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36288 + i32.const 0 + i32.store + i32.const 37856 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36288 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36288 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36288 + i32.const 37860 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36288 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36280 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1248 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36280 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36280 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1520 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1184 + i32.const 1248 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1184 + i32.const 1520 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1520 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3512 + i32.lt_s + if + i32.const 36304 + i32.const 36352 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1808 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $~start global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1116 + i32.const 3512 i32.lt_s if - i32.const 33904 - i32.const 33952 + i32.const 36304 + i32.const 36352 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29,6 +1765,38 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + memory.size + i32.const 16 + i32.shl + i32.const 36280 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/pinSpace + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/toSpace + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store @@ -38,7 +1806,7 @@ i32.ne if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -49,4 +1817,259 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$131 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1152 + local.set $0 + br $__inlined_func$~lib/string/String#concat$131 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3512 + i32.lt_s + if + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1088 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1120 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3392 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3512 + i32.lt_s + if + i32.const 36304 + i32.const 36352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) ) diff --git a/tests/compiler/templateliteral.debug.wat b/tests/compiler/templateliteral.debug.wat index 18a9c000d4..477704da04 100644 --- a/tests/compiler/templateliteral.debug.wat +++ b/tests/compiler/templateliteral.debug.wat @@ -7,17 +7,16 @@ (type $5 (func (param i32 i32 i32))) (type $6 (func (param i32 i32 i32) (result i32))) (type $7 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $8 (func (param i32 i32 i32 i32))) - (type $9 (func (param i32 i32 i64) (result i32))) - (type $10 (func (result i32))) - (type $11 (func (param i32 i64 i32))) - (type $12 (func (param i64 i32) (result i32))) - (type $13 (func (param i32 i64 i32 i32))) - (type $14 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $15 (func (param i32 f64 i32) (result i32))) - (type $16 (func (param f64 i32) (result i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (result i32))) + (type $10 (func (param i32 i64 i32))) + (type $11 (func (param i64 i32) (result i32))) + (type $12 (func (param i32 i64 i32 i32))) + (type $13 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $14 (func (param i32 f64 i32) (result i32))) + (type $15 (func (param f64 i32) (result i32))) + (type $16 (func (param i32 i32 i32 i32))) (type $17 (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)) @@ -39,75 +38,78 @@ (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 4848)) - (global $~lib/memory/__data_end i32 (i32.const 4880)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37648)) - (global $~lib/memory/__heap_base i32 (i32.const 37648)) + (global $~lib/rt/__rtti_base i32 (i32.const 4976)) + (global $~lib/memory/__data_end i32 (i32.const 5008)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37776)) + (global $~lib/memory/__heap_base i32 (i32.const 37776)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00t\00e\00m\00p\00l\00a\00t\00e\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $5 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 336) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 428) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 480) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00(\00A\00=\00\00\00\00\00\00\00") - (data $14 (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00,\00 \00B\00=\00\00\00\00\00") - (data $15 (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00)\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 700) ",\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\14\00\00\00p\02\00\00\00\00\00\00\90\02\00\00\00\00\00\00\b0\02\00\00\00\00\00\00\00\00\00\00") - (data $17 (i32.const 748) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00(\00A\00=\00a\00,\00 \00B\00=\00b\00)\00\00\00\00\00\00\00\00\00") - (data $18 (i32.const 796) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") - (data $19 (i32.const 924) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data $20 (i32.const 988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data $21 (i32.const 1020) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data $22 (i32.const 1420) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $23 (i32.const 2476) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") - (data $24 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") - (data $25 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\002\00\00\00\00\00\00\00\00\00") - (data $26 (i32.const 2636) ",\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\14\00\00\00p\02\00\00\00\00\00\00\90\02\00\00\00\00\00\00\b0\02\00\00\00\00\00\00\00\00\00\00") - (data $27 (i32.const 2684) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00(\00A\00=\001\00,\00 \00B\00=\002\00)\00\00\00\00\00\00\00\00\00") - (data $28 (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") - (data $29 (i32.const 2764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") - (data $30 (i32.const 2796) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") - (data $31 (i32.const 2844) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $32 (i32.const 2896) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $33 (i32.const 2952) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8#__uset (param $this i32) (param $index i32) (param $value i32) - local.get $this - local.get $index - i32.const 2 - i32.shl - i32.add - local.get $value - i32.store - i32.const 1 - drop - local.get $this - local.get $value - i32.const 1 - call $~lib/rt/itcms/__link - ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#get:length (param $this i32) (result i32) - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.const 2 - i32.shr_u - return - ) (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) local.get $value i32.const 100000 @@ -2611,14 +2521,14 @@ i32.const 100 i32.rem_u local.set $d2 - i32.const 1020 + i32.const 828 local.get $d1 i32.const 2 i32.shl i32.add i64.load32_u local.set $digits1 - i32.const 1020 + i32.const 828 local.get $d2 i32.const 2 i32.shl @@ -2661,7 +2571,7 @@ i32.const 2 i32.sub local.set $offset - i32.const 1020 + i32.const 828 local.get $d1|10 i32.const 2 i32.shl @@ -2684,7 +2594,7 @@ i32.const 2 i32.sub local.set $offset - i32.const 1020 + i32.const 828 local.get $num i32.const 2 i32.shl @@ -2731,7 +2641,7 @@ i32.const 1 i32.shl i32.add - i32.const 1440 + i32.const 1248 local.get $num i32.wrap_i64 i32.const 255 @@ -2753,7 +2663,7 @@ i32.and if local.get $buffer - i32.const 1440 + i32.const 1248 local.get $num i32.wrap_i64 i32.const 6 @@ -2876,7 +2786,7 @@ i32.const 1 i32.shl i32.add - i32.const 2496 + i32.const 2304 local.get $num local.get $mask i64.and @@ -2910,7 +2820,7 @@ i32.const 1 i32.shl i32.add - i32.const 2496 + i32.const 2304 local.get $num local.get $q local.get $base @@ -2931,6 +2841,104 @@ end end ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 256 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#__uset (param $this i32) (param $index i32) (param $value i32) + local.get $this + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 2 + i32.shr_u + return + ) (func $~lib/number/I32#toString (param $this i32) (param $radix i32) (result i32) local.get $this local.get $radix @@ -3210,7 +3218,7 @@ local.set $delta|21 local.get $tmp local.set $rest - i32.const 3824 + i32.const 3984 local.get $kappa i32.const 2 i32.shl @@ -3347,7 +3355,7 @@ i32.add global.set $~lib/util/number/_K local.get $wp_w_frc - i32.const 3824 + i32.const 3984 i32.const 0 local.get $kappa i32.sub @@ -4026,14 +4034,14 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 2952 + i32.const 3112 local.get $index i32.const 3 i32.shl i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 3648 + i32.const 3808 local.get $index i32.const 1 i32.shl @@ -4373,159 +4381,33 @@ call $templateliteral/test_null call $templateliteral/test_recursive ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 384 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 192 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 1440 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 2496 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:templateliteral ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 37808 + i32.const 37856 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#__visit (param $this i32) (param $cookie i32) - (local $cur i32) - (local $end i32) - (local $val i32) - i32.const 1 - drop - local.get $this - local.set $cur - local.get $cur - local.get $this - i32.const 20 - i32.sub - call $~lib/rt/common/OBJECT#get:rtSize - i32.add - local.set $end - loop $while-continue|0 - local.get $cur - local.get $end - i32.lt_u - if - local.get $cur - i32.load - local.set $val - local.get $val - if - local.get $val - local.get $cookie - call $~lib/rt/itcms/__visit - end - local.get $cur - i32.const 4 - i32.add - local.set $cur - br $while-continue|0 - end - end - ) - (func $~lib/staticarray/StaticArray<~lib/string/String>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray<~lib/string/String>#__visit - ) - (func $templateliteral/RecursiveObject~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $templateliteral/RecursiveObject - block $templateliteral/Ref - block $~lib/staticarray/StaticArray<~lib/string/String> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray<~lib/string/String> $templateliteral/Ref $templateliteral/RecursiveObject $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray<~lib/string/String>~visit - return - end - return - end - local.get $0 - local.get $1 - call $templateliteral/RecursiveObject~visit - return - end - unreachable - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:templateliteral - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 37680 - i32.const 37728 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) - (local $leftLength i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -4693,6 +4575,135 @@ local.get $6 return ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 96 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 128 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 592 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 592 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2400 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/util/string/joinStringArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) (local $lastIndex i32) (local $4 i32) @@ -5002,7 +5013,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 4 i32.const 3 call $~lib/builtins/abort @@ -5026,12 +5037,12 @@ local.get $4 i32.store offset=8 local.get $4 - i32.const 592 + i32.const 2528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 5 i32.const 3 call $~lib/builtins/abort @@ -5045,7 +5056,7 @@ local.get $b local.tee $3 i32.store offset=24 - i32.const 720 + i32.const 2656 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -5059,7 +5070,7 @@ i32.store offset=16 local.get $4 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 720 + i32.const 2656 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -5073,7 +5084,7 @@ i32.store offset=16 local.get $4 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 720 + i32.const 2656 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -5086,12 +5097,12 @@ local.get $4 i32.store offset=8 local.get $4 - i32.const 768 + i32.const 2704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 6 i32.const 3 call $~lib/builtins/abort @@ -5129,12 +5140,12 @@ local.get $4 i32.store local.get $4 - i32.const 2592 + i32.const 2752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 13 i32.const 3 call $~lib/builtins/abort @@ -5162,12 +5173,12 @@ local.get $4 i32.store local.get $4 - i32.const 2624 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 14 i32.const 3 call $~lib/builtins/abort @@ -5185,7 +5196,7 @@ call $~lib/number/I32#toString local.tee $3 i32.store offset=16 - i32.const 2656 + i32.const 2816 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -5199,7 +5210,7 @@ i32.store offset=8 local.get $4 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 2656 + i32.const 2816 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -5213,7 +5224,7 @@ i32.store offset=8 local.get $4 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 2656 + i32.const 2816 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -5226,12 +5237,12 @@ local.get $4 i32.store local.get $4 - i32.const 2704 + i32.const 2864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 15 i32.const 3 call $~lib/builtins/abort @@ -5269,12 +5280,12 @@ local.get $4 i32.store local.get $4 - i32.const 3888 + i32.const 4048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 22 i32.const 3 call $~lib/builtins/abort @@ -5302,12 +5313,12 @@ local.get $4 i32.store local.get $4 - i32.const 3920 + i32.const 4080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 23 i32.const 3 call $~lib/builtins/abort @@ -5325,7 +5336,7 @@ call $~lib/number/F64#toString local.tee $3 i32.store offset=16 - i32.const 3952 + i32.const 4112 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -5339,7 +5350,7 @@ i32.store offset=8 local.get $4 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 3952 + i32.const 4112 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -5353,7 +5364,7 @@ i32.store offset=8 local.get $4 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 3952 + i32.const 4112 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -5366,12 +5377,12 @@ local.get $4 i32.store local.get $4 - i32.const 4000 + i32.const 4160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 24 i32.const 3 call $~lib/builtins/abort @@ -5411,12 +5422,12 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 4048 + i32.const 4208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 31 i32.const 3 call $~lib/builtins/abort @@ -5433,13 +5444,13 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 32 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 4080 + i32.const 4240 local.get $a i32.const 10 call $~lib/number/I32#toString @@ -5454,18 +5465,18 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 4112 + i32.const 4272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 33 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 4080 + i32.const 4240 local.get $b local.set $2 global.get $~lib/memory/__stack_pointer @@ -5478,12 +5489,12 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 4144 + i32.const 4304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 34 i32.const 3 call $~lib/builtins/abort @@ -5497,19 +5508,19 @@ local.get $2 i32.store offset=8 local.get $2 - i32.const 4176 + i32.const 4336 call $~lib/string/String#concat local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 - i32.const 4208 + i32.const 4368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -5521,19 +5532,19 @@ local.get $2 i32.store offset=8 local.get $2 - i32.const 4176 + i32.const 4336 call $~lib/string/String#concat local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 - i32.const 4240 + i32.const 4400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -5559,12 +5570,12 @@ local.get $2 i32.store offset=4 local.get $2 - i32.const 4272 + i32.const 4432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -5611,8 +5622,8 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) - (local $2 i32) + (func $templateliteral/Ref#toString (param $this i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -5621,42 +5632,11 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $left - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $right - local.set $2 + i32.const 4464 + local.get $this + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/string/String#concat - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - ) - (func $templateliteral/Ref#toString (param $this i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - i32.const 4304 - local.get $this - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $1 i32.store offset=4 local.get $1 call $templateliteral/Ref#get:value @@ -5715,12 +5695,12 @@ local.get $4 i32.store offset=8 local.get $4 - i32.const 4336 + i32.const 4496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 51 i32.const 3 call $~lib/builtins/abort @@ -5756,12 +5736,12 @@ local.get $4 i32.store offset=8 local.get $4 - i32.const 4368 + i32.const 4528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 52 i32.const 3 call $~lib/builtins/abort @@ -5787,7 +5767,7 @@ call $templateliteral/Ref#toString local.tee $3 i32.store offset=28 - i32.const 4416 + i32.const 4576 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -5801,7 +5781,7 @@ i32.store offset=16 local.get $4 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4416 + i32.const 4576 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -5815,7 +5795,7 @@ i32.store offset=16 local.get $4 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4416 + i32.const 4576 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -5828,12 +5808,12 @@ local.get $4 i32.store offset=8 local.get $4 - i32.const 4464 + i32.const 4624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 53 i32.const 3 call $~lib/builtins/abort @@ -5893,11 +5873,11 @@ local.get $5 call $templateliteral/Ref#toString else - i32.const 4640 + i32.const 4800 end local.tee $3 i32.store offset=20 - i32.const 4592 + i32.const 4752 local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 @@ -5911,7 +5891,7 @@ i32.store offset=24 local.get $5 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4592 + i32.const 4752 local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 @@ -5925,7 +5905,7 @@ i32.store offset=24 local.get $5 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4592 + i32.const 4752 local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 @@ -5938,12 +5918,12 @@ local.get $5 i32.store offset=4 local.get $5 - i32.const 4672 + i32.const 4832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -6073,7 +6053,7 @@ call $templateliteral/RecursiveObject#toString local.tee $3 i32.store offset=12 - i32.const 4800 + i32.const 4928 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -6087,7 +6067,7 @@ i32.store offset=16 local.get $4 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4800 + i32.const 4928 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -6101,7 +6081,7 @@ i32.store offset=16 local.get $4 call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - i32.const 4800 + i32.const 4928 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -6133,7 +6113,7 @@ memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 4736 + i32.const 4896 i32.const 0 call $templateliteral/RecursiveObject#constructor local.tee $c @@ -6174,12 +6154,12 @@ local.get $3 i32.store offset=4 local.get $3 - i32.const 4832 + i32.const 4960 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 2464 i32.const 125 i32.const 3 call $~lib/builtins/abort @@ -6190,6 +6170,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 624 + i32.const 752 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 816 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) (local $sign i32) (local $out i32) @@ -6223,8 +6350,8 @@ i32.gt_s end if - i32.const 816 - i32.const 944 + i32.const 624 + i32.const 752 i32.const 373 i32.const 5 call $~lib/builtins/abort @@ -6233,7 +6360,7 @@ local.get $value i32.eqz if - i32.const 1008 + i32.const 816 local.set $14 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -6395,7 +6522,7 @@ f64.const 0 f64.eq if - i32.const 2752 + i32.const 2912 br $~lib/util/number/dtoa_impl|inlined.0 end local.get $value|1 @@ -6409,18 +6536,18 @@ local.get $value|1 f64.ne if - i32.const 2784 + i32.const 2944 br $~lib/util/number/dtoa_impl|inlined.0 end - i32.const 2816 - i32.const 2864 + i32.const 2976 + i32.const 3024 local.get $value|1 f64.const 0 f64.lt select br $~lib/util/number/dtoa_impl|inlined.0 end - i32.const 2896 + i32.const 3056 local.get $value|1 local.get $isSingle call $~lib/util/number/dtoa_core @@ -6434,7 +6561,7 @@ local.tee $result i32.store local.get $result - i32.const 2896 + i32.const 3056 local.get $size memory.copy local.get $result @@ -6448,4 +6575,130 @@ local.get $5 return ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 384 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1248 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2304 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + i32.const 1 + drop + local.get $this + local.set $cur + local.get $cur + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__visit + ) + (func $templateliteral/RecursiveObject~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $templateliteral/RecursiveObject + block $templateliteral/Ref + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray<~lib/string/String> $templateliteral/Ref $templateliteral/RecursiveObject $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>~visit + return + end + return + end + local.get $0 + local.get $1 + call $templateliteral/RecursiveObject~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/templateliteral.release.wat b/tests/compiler/templateliteral.release.wat index bb5e8a5e46..0ab81a7d31 100644 --- a/tests/compiler/templateliteral.release.wat +++ b/tests/compiler/templateliteral.release.wat @@ -6,12 +6,11 @@ (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32))) (type $6 (func (param f64) (result i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64))) - (type $9 (func (result i32))) - (type $10 (func (param i64 i64 i32 i64 i32) (result i32))) - (type $11 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (result i32))) + (type $9 (func (param i64 i64 i32 i64 i32) (result i32))) + (type $10 (func (param i32 i32 i32) (result i32))) + (type $11 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -28,116 +27,122 @@ (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 38672)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 38800)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02\00\00\00\02\00\00\00a") (data $1 (i32.const 1068) "\1c") (data $1.1 (i32.const 1080) "\02\00\00\00\02\00\00\00b") - (data $2 (i32.const 1100) "<") - (data $2.1 (i32.const 1112) "\02\00\00\00$\00\00\00t\00e\00m\00p\00l\00a\00t\00e\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") - (data $3 (i32.const 1164) "\1c") - (data $3.1 (i32.const 1176) "\02") - (data $4 (i32.const 1196) "<") - (data $4.1 (i32.const 1208) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $5 (i32.const 1260) "<") - (data $5.1 (i32.const 1272) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $8 (i32.const 1388) "<") - (data $8.1 (i32.const 1400) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $9 (i32.const 1452) ",") - (data $9.1 (i32.const 1464) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $11 (i32.const 1532) "<") - (data $11.1 (i32.const 1544) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $12 (i32.const 1596) "\1c") - (data $12.1 (i32.const 1608) "\02\00\00\00\04\00\00\00a\00b") - (data $13 (i32.const 1628) "\1c") - (data $13.1 (i32.const 1640) "\02\00\00\00\06\00\00\00(\00A\00=") - (data $14 (i32.const 1660) "\1c") - (data $14.1 (i32.const 1672) "\02\00\00\00\08\00\00\00,\00 \00B\00=") - (data $15 (i32.const 1692) "\1c") - (data $15.1 (i32.const 1704) "\02\00\00\00\02\00\00\00)") - (data $16 (i32.const 1724) ",\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\14\00\00\00p\06\00\00\00\00\00\00\90\06\00\00\00\00\00\00\b0\06") - (data $17 (i32.const 1772) ",") - (data $17.1 (i32.const 1784) "\02\00\00\00\14\00\00\00(\00A\00=\00a\00,\00 \00B\00=\00b\00)") - (data $18 (i32.const 1820) "|") - (data $18.1 (i32.const 1832) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data $19 (i32.const 1948) "<") - (data $19.1 (i32.const 1960) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data $20 (i32.const 2012) "\1c") - (data $20.1 (i32.const 2024) "\02\00\00\00\02\00\00\000") - (data $21 (i32.const 2044) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data $22 (i32.const 2444) "\1c\04") - (data $22.1 (i32.const 2456) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data $23 (i32.const 3500) "\\") - (data $23.1 (i32.const 3512) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $4 (i32.const 1164) "\1c") + (data $4.1 (i32.const 1176) "\02") + (data $5 (i32.const 1196) "<") + (data $5.1 (i32.const 1208) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $6 (i32.const 1260) "<") + (data $6.1 (i32.const 1272) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $9 (i32.const 1388) "<") + (data $9.1 (i32.const 1400) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $10 (i32.const 1452) ",") + (data $10.1 (i32.const 1464) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $12 (i32.const 1532) "<") + (data $12.1 (i32.const 1544) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $13 (i32.const 1596) "\1c") + (data $13.1 (i32.const 1608) "\02\00\00\00\02\00\00\00:") + (data $14 (i32.const 1628) "|") + (data $14.1 (i32.const 1640) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $15 (i32.const 1756) "<") + (data $15.1 (i32.const 1768) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $16 (i32.const 1820) "\1c") + (data $16.1 (i32.const 1832) "\02\00\00\00\02\00\00\000") + (data $17 (i32.const 1852) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $18 (i32.const 2252) "\1c\04") + (data $18.1 (i32.const 2264) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $19 (i32.const 3308) "\\") + (data $19.1 (i32.const 3320) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $20 (i32.const 3404) "<") + (data $20.1 (i32.const 3416) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $21 (i32.const 3468) "<") + (data $21.1 (i32.const 3480) "\02\00\00\00$\00\00\00t\00e\00m\00p\00l\00a\00t\00e\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") + (data $22 (i32.const 3532) "\1c") + (data $22.1 (i32.const 3544) "\02\00\00\00\04\00\00\00a\00b") + (data $23 (i32.const 3564) "\1c") + (data $23.1 (i32.const 3576) "\02\00\00\00\06\00\00\00(\00A\00=") (data $24 (i32.const 3596) "\1c") - (data $24.1 (i32.const 3608) "\02\00\00\00\02\00\00\001") + (data $24.1 (i32.const 3608) "\02\00\00\00\08\00\00\00,\00 \00B\00=") (data $25 (i32.const 3628) "\1c") - (data $25.1 (i32.const 3640) "\02\00\00\00\04\00\00\001\002") - (data $26 (i32.const 3660) ",\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\14\00\00\00p\06\00\00\00\00\00\00\90\06\00\00\00\00\00\00\b0\06") + (data $25.1 (i32.const 3640) "\02\00\00\00\02\00\00\00)") + (data $26 (i32.const 3660) ",\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\14\00\00\00\00\0e\00\00\00\00\00\00 \0e\00\00\00\00\00\00@\0e") (data $27 (i32.const 3708) ",") - (data $27.1 (i32.const 3720) "\02\00\00\00\14\00\00\00(\00A\00=\001\00,\00 \00B\00=\002\00)") + (data $27.1 (i32.const 3720) "\02\00\00\00\14\00\00\00(\00A\00=\00a\00,\00 \00B\00=\00b\00)") (data $28 (i32.const 3756) "\1c") - (data $28.1 (i32.const 3768) "\02\00\00\00\06\00\00\000\00.\000") + (data $28.1 (i32.const 3768) "\02\00\00\00\02\00\00\001") (data $29 (i32.const 3788) "\1c") - (data $29.1 (i32.const 3800) "\02\00\00\00\06\00\00\00N\00a\00N") - (data $30 (i32.const 3820) ",") - (data $30.1 (i32.const 3832) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data $29.1 (i32.const 3800) "\02\00\00\00\04\00\00\001\002") + (data $30 (i32.const 3820) ",\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\14\00\00\00\00\0e\00\00\00\00\00\00 \0e\00\00\00\00\00\00@\0e") (data $31 (i32.const 3868) ",") - (data $31.1 (i32.const 3880) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data $33 (i32.const 3976) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.const 1792 + i32.const 3728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 6 i32.const 3 call $~lib/builtins/abort @@ -3177,7 +3280,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6032 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3191,12 +3294,12 @@ local.get $0 i32.store local.get $0 - i32.const 3616 + i32.const 3776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 13 i32.const 3 call $~lib/builtins/abort @@ -3222,12 +3325,12 @@ local.get $0 i32.store local.get $0 - i32.const 3648 + i32.const 3808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 14 i32.const 3 call $~lib/builtins/abort @@ -3244,47 +3347,47 @@ local.tee $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 3680 + i32.const 3840 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - i32.const 3684 + i32.const 3844 local.get $0 i32.store - i32.const 3680 + i32.const 3840 local.get $0 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 3680 + i32.const 3840 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - i32.const 3692 + i32.const 3852 local.get $1 i32.store - i32.const 3680 + i32.const 3840 local.get $1 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 3680 + i32.const 3840 i32.store offset=4 - i32.const 3680 + i32.const 3840 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3728 + i32.const 3888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 15 i32.const 3 call $~lib/builtins/abort @@ -3299,7 +3402,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6032 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3313,12 +3416,12 @@ local.get $0 i32.store local.get $0 - i32.const 4912 + i32.const 5072 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 22 i32.const 3 call $~lib/builtins/abort @@ -3344,12 +3447,12 @@ local.get $0 i32.store local.get $0 - i32.const 4944 + i32.const 5104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 23 i32.const 3 call $~lib/builtins/abort @@ -3366,47 +3469,47 @@ local.tee $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 4976 + i32.const 5136 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - i32.const 4980 + i32.const 5140 local.get $0 i32.store - i32.const 4976 + i32.const 5136 local.get $0 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 4976 + i32.const 5136 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - i32.const 4988 + i32.const 5148 local.get $1 i32.store - i32.const 4976 + i32.const 5136 local.get $1 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 4976 + i32.const 5136 i32.store offset=4 - i32.const 4976 + i32.const 5136 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 5024 + i32.const 5184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 24 i32.const 3 call $~lib/builtins/abort @@ -3421,7 +3524,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6032 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3440,12 +3543,12 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 5072 + i32.const 5232 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 31 i32.const 3 call $~lib/builtins/abort @@ -3460,7 +3563,7 @@ i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 32 i32.const 3 call $~lib/builtins/abort @@ -3472,7 +3575,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - i32.const 5104 + i32.const 5264 local.get $0 call $~lib/string/String#concat local.set $0 @@ -3480,12 +3583,12 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 5136 + i32.const 5296 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -3494,7 +3597,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1088 i32.store offset=8 - i32.const 5104 + i32.const 5264 i32.const 1088 call $~lib/string/String#concat local.set $0 @@ -3502,12 +3605,12 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 5168 + i32.const 5328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 34 i32.const 3 call $~lib/builtins/abort @@ -3520,19 +3623,19 @@ local.get $0 i32.store offset=8 local.get $0 - i32.const 5200 + i32.const 5360 call $~lib/string/String#concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 5232 + i32.const 5392 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -3542,19 +3645,19 @@ i32.const 1088 i32.store offset=8 i32.const 1088 - i32.const 5200 + i32.const 5360 call $~lib/string/String#concat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 5264 + i32.const 5424 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 36 i32.const 3 call $~lib/builtins/abort @@ -3577,12 +3680,12 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 5296 + i32.const 5456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -3597,7 +3700,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6032 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3624,12 +3727,12 @@ local.get $1 i32.store offset=8 local.get $1 - i32.const 5360 + i32.const 5520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 51 i32.const 3 call $~lib/builtins/abort @@ -3661,12 +3764,12 @@ local.get $1 i32.store offset=8 local.get $1 - i32.const 5392 + i32.const 5552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 52 i32.const 3 call $~lib/builtins/abort @@ -3689,47 +3792,47 @@ local.tee $0 i32.store offset=28 global.get $~lib/memory/__stack_pointer - i32.const 5440 + i32.const 5600 i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - i32.const 5444 + i32.const 5604 local.get $1 i32.store - i32.const 5440 + i32.const 5600 local.get $1 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5440 + i32.const 5600 i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - i32.const 5452 + i32.const 5612 local.get $0 i32.store - i32.const 5440 + i32.const 5600 local.get $0 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5440 + i32.const 5600 i32.store offset=12 - i32.const 5440 + i32.const 5600 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.const 5488 + i32.const 5648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 53 i32.const 3 call $~lib/builtins/abort @@ -3744,7 +3847,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6032 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3768,50 +3871,50 @@ i32.const 0 i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 5664 + i32.const 5824 i32.store offset=20 global.get $~lib/memory/__stack_pointer - i32.const 5616 + i32.const 5776 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=24 - i32.const 5620 + i32.const 5780 local.get $0 i32.store - i32.const 5616 + i32.const 5776 local.get $0 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5616 + i32.const 5776 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 5664 + i32.const 5824 i32.store offset=24 - i32.const 5628 - i32.const 5664 + i32.const 5788 + i32.const 5824 i32.store - i32.const 5616 - i32.const 5664 + i32.const 5776 + i32.const 5824 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5616 + i32.const 5776 i32.store offset=8 - i32.const 5616 + i32.const 5776 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 5696 + i32.const 5856 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 60 i32.const 3 call $~lib/builtins/abort @@ -3826,7 +3929,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6032 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -3834,7 +3937,7 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 5760 + i32.const 5920 i32.const 0 call $templateliteral/RecursiveObject#constructor local.tee $0 @@ -3867,12 +3970,12 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 5856 + i32.const 5984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 + i32.const 3488 i32.const 125 i32.const 3 call $~lib/builtins/abort @@ -3884,81 +3987,13 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 38704 - i32.const 38752 + i32.const 38832 + i32.const 38880 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - block $invalid - block $templateliteral/RecursiveObject - block $templateliteral/Ref - block $~lib/staticarray/StaticArray<~lib/string/String> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray<~lib/string/String> $templateliteral/Ref $templateliteral/RecursiveObject $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.add - local.set $1 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $~lib/rt/itcms/__visit - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - return - end - unreachable - ) (func $~start global.get $~started if @@ -3978,11 +4013,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6032 i32.lt_s if - i32.const 38704 - i32.const 38752 + i32.const 38832 + i32.const 38880 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4081,7 +4116,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$91 + block $__inlined_func$~lib/util/string/compareImpl$88 loop $while-continue|1 local.get $0 local.tee $3 @@ -4101,7 +4136,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$91 + br_if $__inlined_func$~lib/util/string/compareImpl$88 local.get $2 i32.const 2 i32.add @@ -4139,11 +4174,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6032 i32.lt_s if - i32.const 38704 - i32.const 38752 + i32.const 38832 + i32.const 38880 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4206,6 +4241,136 @@ global.set $~lib/memory/__stack_pointer local.get $4 ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6032 + i32.lt_s + if + i32.const 38832 + i32.const 38880 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/string/String#concat + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6032 + i32.lt_s + if + i32.const 38832 + i32.const 38880 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1120 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1152 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1616 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1616 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3424 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -4217,11 +4382,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6032 i32.lt_s if - i32.const 38704 - i32.const 38752 + i32.const 38832 + i32.const 38880 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4429,11 +4594,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6032 i32.lt_s if - i32.const 38704 - i32.const 38752 + i32.const 38832 + i32.const 38880 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4470,11 +4635,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6032 i32.lt_s if - i32.const 38704 - i32.const 38752 + i32.const 38832 + i32.const 38880 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4506,60 +4671,37 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 5328 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 5328 - local.get $0 - call $~lib/string/String#concat - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return + global.get $~lib/memory/__stack_pointer + i32.const 6032 + i32.lt_s + if + i32.const 38832 + i32.const 38880 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 38704 - i32.const 38752 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5488 + local.get $0 + call $~lib/string/String.__concat + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $templateliteral/RecursiveObject#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -4568,11 +4710,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6032 i32.lt_s if - i32.const 38704 - i32.const 38752 + i32.const 38832 + i32.const 38880 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4629,11 +4771,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 5904 + i32.const 6032 i32.lt_s if - i32.const 38704 - i32.const 38752 + i32.const 38832 + i32.const 38880 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4682,39 +4824,107 @@ local.tee $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 5824 + i32.const 5952 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - i32.const 5824 + i32.const 5952 local.get $0 i32.store - i32.const 5824 + i32.const 5952 local.get $0 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5824 + i32.const 5952 i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - i32.const 5832 + i32.const 5960 local.get $1 i32.store - i32.const 5824 + i32.const 5952 local.get $1 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5824 + i32.const 5952 i32.store - i32.const 5824 + i32.const 5952 call $~lib/staticarray/StaticArray<~lib/string/String>#join global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + block $invalid + block $templateliteral/RecursiveObject + block $templateliteral/Ref + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray<~lib/string/String> $templateliteral/Ref $templateliteral/RecursiveObject $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/ternary.debug.wat b/tests/compiler/ternary.debug.wat index 91a380b1f5..e5129c7973 100644 --- a/tests/compiler/ternary.debug.wat +++ b/tests/compiler/ternary.debug.wat @@ -1,15 +1,38 @@ (module - (type $0 (func)) + (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32 i32 i32) (result i32))) + (type $2 (func)) (type $3 (func (param i32))) - (type $4 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param i32 i32 i32 i32))) (global $ternary/a (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 44)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32812)) (global $~lib/memory/__heap_base i32 (i32.const 32812)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 1 funcref) @@ -79,13 +102,13 @@ global.set $~argumentsLength local.get $nop i32.load - call_indirect (type $0) + call_indirect (type $2) else i32.const 0 global.set $~argumentsLength local.get $nop i32.load - call_indirect (type $0) + call_indirect (type $2) end local.get $cond if @@ -93,7 +116,7 @@ global.set $~argumentsLength local.get $nop i32.load - call_indirect (type $0) + call_indirect (type $2) else i32.const 1 drop @@ -107,24 +130,3005 @@ global.set $~argumentsLength local.get $nop i32.load - call_indirect (type $0) + call_indirect (type $2) end ) (func $~start call $start:ternary ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33040 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33040 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 33040 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 33168 + i32.const 33232 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 33040 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 33040 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32976 + i32.const 33312 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 33312 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32976 + i32.const 33040 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 33612 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 33612 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 33612 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 33612 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 34032 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 34032 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 35088 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 35088 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $~stack_check global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__data_end i32.lt_s if i32.const 32832 - i32.const 32880 + i32.const 35248 + i32.const 1 i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 32944 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32880 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 32912 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 33376 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 33376 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 35184 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 33408 + i32.const 33536 + i32.const 350 + i32.const 5 call $~lib/builtins/abort unreachable end + local.get $value + i32.eqz + if + i32.const 33600 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return ) (func $export:ternary/testVoidInclTypeMismatch (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer @@ -143,4 +3147,56 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 33168 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32976 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 34032 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 35088 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/ternary.release.wat b/tests/compiler/ternary.release.wat index fda76df259..6ae4a3ab37 100644 --- a/tests/compiler/ternary.release.wat +++ b/tests/compiler/ternary.release.wat @@ -1,11 +1,21 @@ (module (type $0 (func)) - (type $1 (func (param i32 i32 i32) (result i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32 i32 i32))) - (type $4 (func (param i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33836)) + (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)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02\00\00\00\02\00\00\00a") @@ -30,7 +40,7 @@ i32.lt_s if i32.const 33856 - i32.const 33904 + i32.const 36272 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -47,6 +57,1867 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 34192 + call $~lib/rt/itcms/__visit + i32.const 34000 + call $~lib/rt/itcms/__visit + i32.const 35056 + call $~lib/rt/itcms/__visit + i32.const 36112 + call $~lib/rt/itcms/__visit + i32.const 4 + i32.load + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 34064 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + 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 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 34064 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$118 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 33836 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34064 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$118 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 34064 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.load + i32.gt_u + if + i32.const 34192 + i32.const 34256 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.load offset=4 + i32.const 32 + i32.and + end + local.set $1 + i32.const 8 + i32.load + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $1 + select + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + i32.const 8 + local.get $0 + i32.store + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34336 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 34336 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34336 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 34336 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34336 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 34336 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 34336 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 34336 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34336 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 34336 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 34336 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 34336 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 33840 + i32.const 0 + i32.store + i32.const 35408 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 33840 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 33840 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 33840 + i32.const 35412 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 33840 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + i32.const 0 + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 33836 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + local.get $1 + global.set $~lib/rt/itcms/white + i32.const 4 + i32.load + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + 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 34064 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 33836 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 33836 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 34336 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + i32.const 4 + i32.const 0 + i32.store + i32.const 8 + i32.const 0 + i32.store + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 34336 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 34336 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 34000 + i32.const 34064 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 34000 + i32.const 34336 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 34336 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 34336 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 34336 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + i32.const 8 + i32.load + local.set $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + i32.const 8 + local.get $1 + i32.store + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 1068 + i32.lt_s + if + i32.const 33856 + i32.const 36272 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 34624 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 34636 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 34636 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 34636 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 34636 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$123 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 33968 + local.set $0 + br $__inlined_func$~lib/string/String#concat$123 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 33856 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + if + i32.const 33856 + i32.const 36272 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 33904 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 33936 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 34400 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 34400 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 36208 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $export:ternary/testVoidInclTypeMismatch (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -57,7 +1928,7 @@ i32.lt_s if i32.const 33856 - i32.const 33904 + i32.const 36272 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -87,4 +1958,29 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) ) diff --git a/tests/compiler/throw-invalid-type.json b/tests/compiler/throw-invalid-type.json new file mode 100644 index 0000000000..2b26ae17bc --- /dev/null +++ b/tests/compiler/throw-invalid-type.json @@ -0,0 +1,9 @@ +{ + "asc_flags": [ + "--enable", "exception-handling" + ], + "stderr": [ + "AS241: Only Error or its subclasses can be thrown, but found type '~lib/string/String'.", + "EOF" + ] +} diff --git a/tests/compiler/throw-invalid-type.ts b/tests/compiler/throw-invalid-type.ts new file mode 100644 index 0000000000..03c168eea5 --- /dev/null +++ b/tests/compiler/throw-invalid-type.ts @@ -0,0 +1,6 @@ +// Test that throwing non-Error types results in a compile error + +// This should fail - throwing a string is not allowed +throw "string error"; + +ERROR("EOF"); diff --git a/tests/compiler/throw.debug.wat b/tests/compiler/throw.debug.wat index 0b8420d409..3535d5ee1c 100644 --- a/tests/compiler/throw.debug.wat +++ b/tests/compiler/throw.debug.wat @@ -1,159 +1,82 @@ (module - (type $0 (func (param i32 i32))) - (type $1 (func (param i32) (result i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) (type $2 (func (param i32))) (type $3 (func)) - (type $4 (func (param i32 i32 i32 i32))) + (type $4 (func (param i32 i32) (result i32))) (type $5 (func (param i32 i32 i32))) (type $6 (func (param i32 i32 i64) (result i32))) (type $7 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (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)) (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) (global $~lib/rt/itcms/pinSpace (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/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)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 704)) - (global $~lib/memory/__data_end i32 (i32.const 724)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33492)) - (global $~lib/memory/__heap_base i32 (i32.const 33492)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2736)) + (global $~lib/memory/__data_end i32 (i32.const 2756)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35524)) + (global $~lib/memory/__heap_base i32 (i32.const 35524)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\002\003\00\00\00\00\00\00\00") (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\002\003\004\00\00\00\00\00\00\00") - (data $2 (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 124) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00t\00h\00r\00o\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\003\004\005\00\00\00\00\00\00\00") - (data $5 (i32.const 204) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00L\00o\00o\00p\00\00\00") - (data $6 (i32.const 252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\004\005\006\00\00\00\00\00\00\00") - (data $7 (i32.const 284) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\005\006\007\00\00\00\00\00\00\00") - (data $8 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $10 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 508) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 560) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 588) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 652) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00d\00o\00T\00h\00r\00o\00w\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 704) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $4 (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $6 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 336) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 428) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 480) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 604) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 732) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $16 (i32.const 796) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 828) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $18 (i32.const 1228) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2284) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $20 (i32.const 2380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2444) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00t\00h\00r\00o\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\003\004\005\00\00\00\00\00\00\00") + (data $24 (i32.const 2572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00L\00o\00o\00p\00\00\00") + (data $25 (i32.const 2620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\004\005\006\00\00\00\00\00\00\00") + (data $26 (i32.const 2652) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\005\006\007\00\00\00\00\00\00\00") + (data $27 (i32.const 2684) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00d\00o\00T\00h\00r\00o\00w\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2736) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "doThrow" (func $throw/doThrow)) (export "memory" (memory $0)) (start $~start) - (func $throw/doThrowIf (param $cond i32) - (local $a i32) - (local $b i32) - (local $c i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 32 - local.tee $a - i32.store - local.get $cond - if - global.get $~lib/memory/__stack_pointer - i32.const 64 - local.tee $b - i32.store offset=4 - i32.const 96 - i32.const 144 - i32.const 10 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 192 - local.tee $c - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 ) - (func $throw/doThrowIfLoop (param $max i32) - (local $a i32) - (local $i i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - global.get $~lib/memory/__stack_pointer + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this i32.const 20 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 32 - local.tee $a - i32.store - i32.const 0 - local.set $i - loop $while-continue|0 - local.get $i - i32.const 1 - i32.add - local.tee $i - local.get $max - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 64 - local.tee $b - i32.store offset=4 - local.get $i - local.get $max - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 192 - local.tee $c - i32.store offset=8 - i32.const 224 - i32.const 144 - i32.const 23 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 272 - local.tee $d - i32.store offset=12 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 304 - local.tee $e - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this @@ -219,7 +142,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 256 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -289,7 +212,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 256 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -306,7 +229,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 256 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -336,8 +259,8 @@ i32.load i32.gt_u if - i32.const 464 - i32.const 528 + i32.const 384 + i32.const 448 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -405,7 +328,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 368 + i32.const 256 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -557,7 +480,7 @@ i32.eqz if i32.const 0 - i32.const 608 + i32.const 528 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -577,7 +500,7 @@ i32.eqz if i32.const 0 - i32.const 608 + i32.const 528 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -640,7 +563,7 @@ i32.eqz if i32.const 0 - i32.const 608 + i32.const 528 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -793,7 +716,7 @@ i32.eqz if i32.const 0 - i32.const 608 + i32.const 528 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -810,7 +733,7 @@ i32.eqz if i32.const 0 - i32.const 608 + i32.const 528 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -899,7 +822,7 @@ i32.eqz if i32.const 0 - i32.const 608 + i32.const 528 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -942,7 +865,7 @@ i32.eqz if i32.const 0 - i32.const 608 + i32.const 528 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -960,7 +883,7 @@ i32.eqz if i32.const 0 - i32.const 608 + i32.const 528 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -1028,7 +951,7 @@ i32.eqz if i32.const 0 - i32.const 608 + i32.const 528 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1145,7 +1068,7 @@ i32.eqz if i32.const 0 - i32.const 608 + i32.const 528 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1191,7 +1114,7 @@ i32.eqz if i32.const 0 - i32.const 608 + i32.const 528 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1223,7 +1146,7 @@ i32.eqz if i32.const 0 - i32.const 608 + i32.const 528 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1467,7 +1390,7 @@ i32.eqz if i32.const 0 - i32.const 608 + i32.const 528 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1687,7 +1610,7 @@ i32.eqz if i32.const 0 - i32.const 368 + i32.const 256 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1711,104 +1634,1647 @@ i32.const 0 return ) - (func $~lib/rt/itcms/__collect + (func $~lib/rt/itcms/interrupt + (local $budget i32) i32.const 0 drop - global.get $~lib/rt/itcms/state i32.const 0 - i32.gt_s - if - loop $while-continue|0 - global.get $~lib/rt/itcms/state - i32.const 0 - i32.ne - if - call $~lib/rt/itcms/step - drop - br $while-continue|0 - end - end - end - call $~lib/rt/itcms/step drop - loop $while-continue|1 + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget global.get $~lib/rt/itcms/state i32.const 0 - i32.ne + i32.eq if - call $~lib/rt/itcms/step + i32.const 0 drop - br $while-continue|1 + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 end + i32.const 0 + drop global.get $~lib/rt/itcms/total - i64.extend_i32_u - i32.const 200 - i64.extend_i32_u - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul i32.add global.set $~lib/rt/itcms/threshold i32.const 0 drop - i32.const 0 - drop ) - (func $start:throw - i32.const 0 - call $throw/doThrowIf - i32.const 10 - call $throw/doThrowIfLoop - i32.const 320 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 416 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 560 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - call $~lib/rt/itcms/__collect + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return ) - (func $throw/doThrow - (local $a i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 32 - local.tee $a - i32.store - i32.const 672 - i32.const 144 - i32.const 3 - i32.const 3 - call $~lib/builtins/abort - unreachable + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 192 + i32.const 528 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 464 - local.get $0 - call $~lib/rt/itcms/__visit + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 192 + i32.const 256 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 828 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 828 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 828 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 828 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1248 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1248 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2304 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2304 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $throw/doThrowIf (param $cond i32) + (local $a i32) + (local $b i32) + (local $c i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 32 + local.tee $a + i32.store + local.get $cond + if + global.get $~lib/memory/__stack_pointer + i32.const 64 + local.tee $b + i32.store offset=4 + i32.const 2464 + i32.const 2512 + i32.const 10 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2560 + local.tee $c + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $throw/doThrowIfLoop (param $max i32) + (local $a i32) + (local $i i32) + (local $b i32) + (local $c i32) + (local $d i32) + (local $e i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 32 + local.tee $a + i32.store + i32.const 0 + local.set $i + loop $while-continue|0 + local.get $i + i32.const 1 + i32.add + local.tee $i + local.get $max + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 64 + local.tee $b + i32.store offset=4 + local.get $i + local.get $max + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 2560 + local.tee $c + i32.store offset=8 + i32.const 2592 + i32.const 2512 + i32.const 23 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2640 + local.tee $d + i32.store offset=12 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 2672 + local.tee $e + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + 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 + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $start:throw + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 304 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 336 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 480 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $throw/doThrowIf + i32.const 10 + call $throw/doThrowIfLoop + call $~lib/rt/itcms/__collect + ) + (func $throw/doThrow + (local $a i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 32 + local.tee $a + i32.store + i32.const 2704 + i32.const 2512 + i32.const 3 + i32.const 3 + call $~lib/builtins/abort + unreachable + ) + (func $~start + call $start:throw + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35552 + i32.const 35600 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 160 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 96 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 128 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 592 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 592 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2400 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 624 + i32.const 752 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 816 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 384 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1248 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2304 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -1845,20 +3311,4 @@ end unreachable ) - (func $~start - call $start:throw - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 33520 - i32.const 33568 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) ) diff --git a/tests/compiler/throw.release.wat b/tests/compiler/throw.release.wat index d1427154ca..51f638b987 100644 --- a/tests/compiler/throw.release.wat +++ b/tests/compiler/throw.release.wat @@ -2,8 +2,13 @@ (type $0 (func)) (type $1 (func (param i32))) (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) @@ -11,44 +16,72 @@ (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (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)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34516)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36548)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02\00\00\00\06\00\00\001\002\003") (data $1 (i32.const 1068) "\1c") (data $1.1 (i32.const 1080) "\02\00\00\00\06\00\00\002\003\004") - (data $2 (i32.const 1100) ",") - (data $2.1 (i32.const 1112) "\02\00\00\00\12\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f") - (data $3 (i32.const 1148) ",") - (data $3.1 (i32.const 1160) "\02\00\00\00\10\00\00\00t\00h\00r\00o\00w\00.\00t\00s") - (data $4 (i32.const 1196) "\1c") - (data $4.1 (i32.const 1208) "\02\00\00\00\06\00\00\003\004\005") - (data $5 (i32.const 1228) ",") - (data $5.1 (i32.const 1240) "\02\00\00\00\1a\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00L\00o\00o\00p") - (data $6 (i32.const 1276) "\1c") - (data $6.1 (i32.const 1288) "\02\00\00\00\06\00\00\004\005\006") - (data $7 (i32.const 1308) "\1c") - (data $7.1 (i32.const 1320) "\02\00\00\00\06\00\00\005\006\007") - (data $9 (i32.const 1372) "<") - (data $9.1 (i32.const 1384) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $11 (i32.const 1468) "<") - (data $11.1 (i32.const 1480) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $12 (i32.const 1532) ",") - (data $12.1 (i32.const 1544) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $14 (i32.const 1612) "<") - (data $14.1 (i32.const 1624) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $15 (i32.const 1676) ",") - (data $15.1 (i32.const 1688) "\02\00\00\00\0e\00\00\00d\00o\00T\00h\00r\00o\00w") - (data $16 (i32.const 1728) "\04\00\00\00 \00\00\00 \00\00\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $4 (i32.const 1164) "\1c") + (data $4.1 (i32.const 1176) "\02") + (data $5 (i32.const 1196) "<") + (data $5.1 (i32.const 1208) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $6 (i32.const 1260) "<") + (data $6.1 (i32.const 1272) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $9 (i32.const 1388) "<") + (data $9.1 (i32.const 1400) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $10 (i32.const 1452) ",") + (data $10.1 (i32.const 1464) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $12 (i32.const 1532) "<") + (data $12.1 (i32.const 1544) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $13 (i32.const 1596) "\1c") + (data $13.1 (i32.const 1608) "\02\00\00\00\02\00\00\00:") + (data $14 (i32.const 1628) "|") + (data $14.1 (i32.const 1640) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $15 (i32.const 1756) "<") + (data $15.1 (i32.const 1768) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $16 (i32.const 1820) "\1c") + (data $16.1 (i32.const 1832) "\02\00\00\00\02\00\00\000") + (data $17 (i32.const 1852) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $18 (i32.const 2252) "\1c\04") + (data $18.1 (i32.const 2264) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $19 (i32.const 3308) "\\") + (data $19.1 (i32.const 3320) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $20 (i32.const 3404) "<") + (data $20.1 (i32.const 3416) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $21 (i32.const 3468) ",") + (data $21.1 (i32.const 3480) "\02\00\00\00\12\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f") + (data $22 (i32.const 3516) ",") + (data $22.1 (i32.const 3528) "\02\00\00\00\10\00\00\00t\00h\00r\00o\00w\00.\00t\00s") + (data $23 (i32.const 3564) "\1c") + (data $23.1 (i32.const 3576) "\02\00\00\00\06\00\00\003\004\005") + (data $24 (i32.const 3596) ",") + (data $24.1 (i32.const 3608) "\02\00\00\00\1a\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00L\00o\00o\00p") + (data $25 (i32.const 3644) "\1c") + (data $25.1 (i32.const 3656) "\02\00\00\00\06\00\00\004\005\006") + (data $26 (i32.const 3676) "\1c") + (data $26.1 (i32.const 3688) "\02\00\00\00\06\00\00\005\006\007") + (data $27 (i32.const 3708) ",") + (data $27.1 (i32.const 3720) "\02\00\00\00\0e\00\00\00d\00o\00T\00h\00r\00o\00w") + (data $28 (i32.const 3760) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "doThrow" (func $throw/doThrow)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1488 + i32.const 1408 + call $~lib/rt/itcms/__visit + i32.const 1216 + call $~lib/rt/itcms/__visit + i32.const 2272 + call $~lib/rt/itcms/__visit + i32.const 3328 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -69,7 +102,7 @@ i32.ne if i32.const 0 - i32.const 1392 + i32.const 1280 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -117,7 +150,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1280 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -126,7 +159,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$92 + block $__inlined_func$~lib/rt/itcms/Object#unlink$125 local.get $1 i32.load offset=4 i32.const -4 @@ -138,19 +171,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34516 + i32.const 36548 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1280 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$92 + br $__inlined_func$~lib/rt/itcms/Object#unlink$125 end local.get $1 i32.load offset=8 @@ -158,7 +191,7 @@ i32.eqz if i32.const 0 - i32.const 1392 + i32.const 1280 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -187,12 +220,12 @@ i32.const 1 else local.get $0 - i32.const 1728 + i32.const 3760 i32.load i32.gt_u if - i32.const 1488 - i32.const 1552 + i32.const 1408 + i32.const 1472 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -201,7 +234,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1732 + i32.const 3764 i32.add i32.load i32.const 32 @@ -253,7 +286,7 @@ i32.eqz if i32.const 0 - i32.const 1632 + i32.const 1552 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -267,7 +300,7 @@ i32.lt_u if i32.const 0 - i32.const 1632 + i32.const 1552 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -313,7 +346,7 @@ i32.eqz if i32.const 0 - i32.const 1632 + i32.const 1552 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -396,7 +429,7 @@ i32.eqz if i32.const 0 - i32.const 1632 + i32.const 1552 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -410,7 +443,7 @@ i32.eqz if i32.const 0 - i32.const 1632 + i32.const 1552 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -471,7 +504,7 @@ i32.eqz if i32.const 0 - i32.const 1632 + i32.const 1552 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -504,7 +537,7 @@ i32.lt_u if i32.const 0 - i32.const 1632 + i32.const 1552 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -519,7 +552,7 @@ i32.ne if i32.const 0 - i32.const 1632 + i32.const 1552 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -570,7 +603,7 @@ i32.eqz if i32.const 0 - i32.const 1632 + i32.const 1552 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -632,12 +665,204 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/itcms/step - (local $0 i32) - (local $1 i32) - (local $2 i64) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1552 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1552 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1552 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36560 + i32.const 0 + i32.store + i32.const 38128 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36560 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36560 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36560 + i32.const 38132 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36560 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) block $break|0 block $case2|0 block $case1|0 @@ -652,6 +877,7 @@ call $~lib/rt/itcms/visitRoots global.get $~lib/rt/itcms/toSpace global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount return end global.get $~lib/rt/itcms/white @@ -672,13 +898,13 @@ local.get $1 local.get $0 i32.load offset=4 - local.tee $3 + local.tee $2 i32.const 3 i32.and i32.ne if local.get $0 - local.get $3 + local.get $2 i32.const -4 i32.and local.get $1 @@ -690,6 +916,7 @@ i32.const 20 i32.add call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount return end local.get $0 @@ -714,7 +941,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34516 + i32.const 36548 i32.lt_u if local.get $0 @@ -740,13 +967,13 @@ local.get $1 local.get $0 i32.load offset=4 - local.tee $3 + local.tee $2 i32.const 3 i32.and i32.ne if local.get $0 - local.get $3 + local.get $2 i32.const -4 i32.and local.get $1 @@ -781,6 +1008,7 @@ i32.const 2 global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount return end global.get $~lib/rt/itcms/iter @@ -790,26 +1018,26 @@ if local.get $0 i32.load offset=4 - local.tee $3 + local.tee $1 i32.const -4 i32.and global.set $~lib/rt/itcms/iter global.get $~lib/rt/itcms/white i32.eqz - local.get $3 + local.get $1 i32.const 3 i32.and i32.ne if i32.const 0 - i32.const 1392 + i32.const 1280 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34516 + i32.const 36548 i32.lt_u if local.get $0 @@ -831,212 +1059,53 @@ local.get $0 i32.const 4 i32.add - local.tee $3 - i32.const 34516 + local.tee $0 + i32.const 36548 i32.ge_u if global.get $~lib/rt/tlsf/ROOT i32.eqz if - memory.size - local.tee $0 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $0 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34528 - i32.const 0 - i32.store - i32.const 36096 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $1 - i32.const 23 - i32.lt_u - if - local.get $1 - i32.const 2 - i32.shl - i32.const 34528 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - i32.const 16 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shl - local.get $0 - i32.add - i32.const 2 - i32.shl - i32.const 34528 - i32.add - i32.const 0 - i32.store offset=96 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - local.tee $2 - i32.wrap_i64 - local.get $2 - i64.const 36100 - i64.lt_u - if - i32.const 0 - i32.const 1632 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 36108 - local.set $1 - i32.const 36096 - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.const 4 - i32.add - i32.const 36108 - i32.gt_u - if - i32.const 0 - i32.const 1632 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 36092 - i32.eq - if (result i32) - i32.const 36092 - local.set $1 - local.get $0 - i32.load - else - i32.const 0 - end - else - i32.const 0 - end - local.set $0 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $4 - i32.const 20 - i32.ge_u - if - local.get $1 - local.get $0 - i32.const 2 - i32.and - local.get $4 - i32.const 8 - i32.sub - local.tee $0 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.add - local.tee $0 - i32.const 2 - i32.store - i32.const 36096 - local.get $0 - i32.store - i32.const 34528 - local.get $1 - call $~lib/rt/tlsf/insertBlock - end - i32.const 34528 - global.set $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $3 + local.get $0 i32.const 4 i32.sub - local.set $1 - local.get $3 + local.set $2 + local.get $0 i32.const 15 i32.and i32.const 1 - local.get $3 + local.get $0 select if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and end if i32.const 0 - i32.const 1632 + i32.const 1552 i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $1 + local.get $2 call $~lib/rt/tlsf/insertBlock end end + i32.const 10 return end global.get $~lib/rt/itcms/toSpace @@ -1048,71 +1117,721 @@ i32.const 0 global.set $~lib/rt/itcms/state end + i32.const 0 ) - (func $throw/doThrow - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1696 - i32.const 1168 - i32.const 3 - i32.const 3 - call $~lib/builtins/abort - unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1216 + i32.const 1280 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 end - return + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1216 + i32.const 1552 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1552 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1552 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3780 + i32.lt_s + if + i32.const 36576 + i32.const 36624 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1840 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1852 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1852 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end - return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1852 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1852 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $throw/doThrow + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3780 + i32.lt_s + if + i32.const 36576 + i32.const 36624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 3728 + i32.const 3536 + i32.const 3 + i32.const 3 + call $~lib/builtins/abort unreachable ) (func $~start (local $0 i32) - block $__inlined_func$start:throw$1 + block $__inlined_func$start:throw + memory.size + i32.const 16 + i32.shl + i32.const 36548 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/pinSpace + i32.const 1364 + i32.const 1360 + i32.store + i32.const 1368 + i32.const 1360 + i32.store + i32.const 1360 + global.set $~lib/rt/itcms/toSpace + i32.const 1508 + i32.const 1504 + i32.store + i32.const 1512 + i32.const 1504 + i32.store + i32.const 1504 + global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3780 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1125,7 +1844,7 @@ i32.const 1056 i32.store global.get $~lib/memory/__stack_pointer - i32.const 1216 + i32.const 3584 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -1136,7 +1855,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1748 + i32.const 3780 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1162,54 +1881,28 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - i32.const 1216 + i32.const 3584 i32.store offset=8 - i32.const 1248 - i32.const 1168 + i32.const 3616 + i32.const 3536 i32.const 23 i32.const 7 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1296 + i32.const 3664 i32.store offset=12 br $while-continue|0 end end global.get $~lib/memory/__stack_pointer - i32.const 1328 + i32.const 3696 i32.store offset=16 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/pinSpace - i32.const 1444 - i32.const 1440 - i32.store - i32.const 1448 - i32.const 1440 - i32.store - i32.const 1440 - global.set $~lib/rt/itcms/toSpace - i32.const 1588 - i32.const 1584 - i32.store - i32.const 1592 - i32.const 1584 - i32.store - i32.const 1584 - global.set $~lib/rt/itcms/fromSpace - memory.size - drop global.get $~lib/rt/itcms/state i32.const 0 i32.gt_s @@ -1218,26 +1911,263 @@ global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step + drop br $while-continue|05 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 - br $__inlined_func$start:throw$1 + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$start:throw + end + i32.const 36576 + i32.const 36624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3780 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3780 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$130 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1184 + local.set $0 + br $__inlined_func$~lib/string/String#concat$130 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - i32.const 34544 - i32.const 34592 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36576 + i32.const 36624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3780 + i32.lt_s + if + i32.const 36576 + i32.const 36624 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1120 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1152 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1616 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1616 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3424 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable ) ) diff --git a/tests/compiler/typealias.debug.wat b/tests/compiler/typealias.debug.wat index a32c177783..2bb4822096 100644 --- a/tests/compiler/typealias.debug.wat +++ b/tests/compiler/typealias.debug.wat @@ -1,23 +1,62 @@ (module - (type $0 (func)) - (type $1 (func (param i32) (result i32))) - (type $2 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $3 (func (param i32 i32 i32 i32))) - (type $4 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (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/native/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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/memory/__data_end i32 (i32.const 156)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32924)) - (global $~lib/memory/__heap_base i32 (i32.const 32924)) + (global $~lib/rt/__rtti_base i32 (i32.const 2528)) + (global $~lib/memory/__data_end i32 (i32.const 2560)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35328)) + (global $~lib/memory/__heap_base i32 (i32.const 35328)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\006\004\00\00\00\00\00\00\00") - (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00t\00y\00p\00e\00a\00l\00i\00a\00s\00.\00t\00s\00\00\00\00\00") - (data $2 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00f\006\004\00\00\00\00\00\00\00") - (data $3 (i32.const 124) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $5 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 572) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 796) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $17 (i32.const 1196) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2252) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $19 (i32.const 2348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00t\00y\00p\00e\00a\00l\00i\00a\00s\00.\00t\00s\00\00\00\00\00") + (data $21 (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00f\006\004\00\00\00\00\00\00\00") + (data $22 (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2528) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\02\n\00\00") (table $0 2 2 funcref) (elem $0 (i32.const 1) $typealias/outer_function~inner_function) (export "alias" (func $typealias/alias)) @@ -140,17 +179,2633 @@ i32.const 0 return ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 352 + i32.const 416 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 224 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + 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/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 160 + i32.const 496 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 160 + i32.const 224 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 796 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 796 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) (func $typealias/outer_function~inner_function (local $alias f64) f64.const 1 local.set $alias - i32.const 112 - i32.const 112 + i32.const 2480 + i32.const 2480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 17 i32.const 5 call $~lib/builtins/abort @@ -176,14 +2831,14 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 13 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 144 + i32.const 2512 local.tee $inner_function i32.store local.get $inner_function @@ -192,7 +2847,7 @@ global.set $~argumentsLength local.get $inner_function i32.load - call_indirect (type $0) + call_indirect (type $2) global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -211,6 +2866,23 @@ drop ) (func $start:typealias + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 304 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 448 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $typealias/outer_function call $typealias/generic_type_alias call $typealias/alias_in_type_arguments @@ -227,8 +2899,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 32944 - i32.const 32992 + i32.const 35360 + i32.const 35408 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -331,4 +3003,538 @@ local.get $3 return ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 128 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2368 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 592 + i32.const 720 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 784 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 352 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 160 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1216 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2272 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/typealias.release.wat b/tests/compiler/typealias.release.wat index 997ab9cfcc..94ff027fe1 100644 --- a/tests/compiler/typealias.release.wat +++ b/tests/compiler/typealias.release.wat @@ -1,32 +1,1767 @@ (module (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func (param i32) (result i32))) - (type $3 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33948)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (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)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (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/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36352)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02\00\00\00\06\00\00\00i\006\004") - (data $1 (i32.const 1068) ",") - (data $1.1 (i32.const 1080) "\02\00\00\00\18\00\00\00t\00y\00p\00e\00a\00l\00i\00a\00s\00.\00t\00s") - (data $2 (i32.const 1116) "\1c") - (data $2.1 (i32.const 1128) "\02\00\00\00\06\00\00\00f\006\004") - (data $3 (i32.const 1148) "\1c") - (data $3.1 (i32.const 1160) "\04\00\00\00\08\00\00\00\01") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02") + (data $4 (i32.const 1164) "<") + (data $4.1 (i32.const 1176) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1228) "<") + (data $5.1 (i32.const 1240) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1356) "<") + (data $8.1 (i32.const 1368) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1420) ",") + (data $9.1 (i32.const 1432) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1500) "<") + (data $11.1 (i32.const 1512) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1564) "\1c") + (data $12.1 (i32.const 1576) "\02\00\00\00\02\00\00\00:") + (data $13 (i32.const 1596) "|") + (data $13.1 (i32.const 1608) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $14 (i32.const 1724) "<") + (data $14.1 (i32.const 1736) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $15 (i32.const 1788) "\1c") + (data $15.1 (i32.const 1800) "\02\00\00\00\02\00\00\000") + (data $16 (i32.const 1820) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $17 (i32.const 2220) "\1c\04") + (data $17.1 (i32.const 2232) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $18 (i32.const 3276) "\\") + (data $18.1 (i32.const 3288) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $19 (i32.const 3372) "<") + (data $19.1 (i32.const 3384) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $20 (i32.const 3436) ",") + (data $20.1 (i32.const 3448) "\02\00\00\00\18\00\00\00t\00y\00p\00e\00a\00l\00i\00a\00s\00.\00t\00s") + (data $21 (i32.const 3484) "\1c") + (data $21.1 (i32.const 3496) "\02\00\00\00\06\00\00\00f\006\004") + (data $22 (i32.const 3516) "\1c") + (data $22.1 (i32.const 3528) "\04\00\00\00\08\00\00\00\01") + (data $23 (i32.const 3552) "\07\00\00\00 \00\00\00 \00\00\00 ") + (data $23.1 (i32.const 3576) "\02\t\00\00\02\n") (table $0 2 2 funcref) (elem $0 (i32.const 1) $typealias/outer_function~inner_function) (export "alias" (func $typealias/alias)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1376 + call $~lib/rt/itcms/__visit + i32.const 1184 + call $~lib/rt/itcms/__visit + i32.const 2240 + call $~lib/rt/itcms/__visit + i32.const 3296 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1248 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$135 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36352 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$135 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3552 + i32.load + i32.gt_u + if + i32.const 1376 + i32.const 1440 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3556 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36352 + i32.const 0 + i32.store + i32.const 37920 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36352 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36352 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36352 + i32.const 37924 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36352 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36352 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1248 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36352 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36352 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1520 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1184 + i32.const 1248 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.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$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1184 + i32.const 1520 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $4 + end + else + local.get $4 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1520 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $4 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $4 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $4 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3584 + i32.lt_s + if + i32.const 36384 + i32.const 36432 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1808 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) (func $typealias/outer_function~inner_function - i32.const 1136 - i32.const 1136 + i32.const 3504 + i32.const 3504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 17 i32.const 5 call $~lib/builtins/abort @@ -37,16 +1772,48 @@ local.get $0 ) (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36352 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/pinSpace + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/toSpace + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + 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 1180 + i32.const 3584 i32.lt_s if - i32.const 33968 - i32.const 34016 + i32.const 36384 + i32.const 36432 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -61,16 +1828,16 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 13 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1168 + i32.const 3536 i32.store - i32.const 1168 + i32.const 3536 i32.load call_indirect (type $0) global.get $~lib/memory/__stack_pointer @@ -88,11 +1855,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1180 + i32.const 3584 i32.lt_s if - i32.const 33968 - i32.const 34016 + i32.const 36384 + i32.const 36432 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -191,7 +1958,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$5 + block $__inlined_func$~lib/util/string/compareImpl$79 loop $while-continue|1 local.get $0 local.tee $3 @@ -211,7 +1978,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$5 + br_if $__inlined_func$~lib/util/string/compareImpl$79 local.get $2 i32.const 2 i32.add @@ -240,4 +2007,299 @@ global.set $~lib/memory/__stack_pointer i32.const 0 ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3584 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3584 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$141 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1152 + local.set $0 + br $__inlined_func$~lib/string/String#concat$141 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36384 + i32.const 36432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3584 + i32.lt_s + if + i32.const 36384 + i32.const 36432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1088 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1120 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3392 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array~visit (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3584 + i32.lt_s + if + i32.const 36384 + i32.const 36432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3584 + i32.lt_s + if + i32.const 36384 + i32.const 36432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + unreachable + ) ) diff --git a/tests/compiler/typeof.debug.wat b/tests/compiler/typeof.debug.wat index 7b04cbca73..003773515b 100644 --- a/tests/compiler/typeof.debug.wat +++ b/tests/compiler/typeof.debug.wat @@ -1,27 +1,21 @@ (module (type $0 (func (param i32) (result i32))) (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func)) - (type $4 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) (type $5 (func (param i32 i32 i32))) (type $6 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (type $9 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (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/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $typeof/SomeNamespace.a i32 (i32.const 1)) - (global $typeof/b (mut i32) (i32.const 1)) - (global $typeof/i (mut i32) (i32.const 1)) - (global $typeof/f (mut f32) (f32.const 1)) - (global $typeof/I (mut i64) (i64.const 1)) - (global $typeof/F (mut f64) (f64.const 1)) - (global $typeof/s (mut i32) (i32.const 240)) - (global $typeof/fn (mut i32) (i32.const 304)) (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)) @@ -33,31 +27,50 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $typeof/SomeNamespace.a i32 (i32.const 1)) + (global $typeof/b (mut i32) (i32.const 1)) + (global $typeof/i (mut i32) (i32.const 1)) + (global $typeof/f (mut f32) (f32.const 1)) + (global $typeof/I (mut i64) (i64.const 1)) + (global $typeof/F (mut f64) (f64.const 1)) + (global $typeof/s (mut i32) (i32.const 2608)) + (global $typeof/fn (mut i32) (i32.const 2672)) (global $typeof/c (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 768)) - (global $~lib/memory/__data_end i32 (i32.const 796)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33564)) - (global $~lib/memory/__heap_base i32 (i32.const 33564)) + (global $~lib/rt/__rtti_base i32 (i32.const 2736)) + (global $~lib/memory/__data_end i32 (i32.const 2764)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35532)) + (global $~lib/memory/__heap_base i32 (i32.const 35532)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r\00") - (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (data $2 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t\00") - (data $3 (i32.const 124) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 172) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00b\00o\00o\00l\00e\00a\00n\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 220) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") - (data $7 (i32.const 284) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $9 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $5 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") (data $10 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $11 (i32.const 480) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $12 (i32.const 508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $13 (i32.const 572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $14 (i32.const 624) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $15 (i32.const 652) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $16 (i32.const 716) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d\00\00\00\00\00\00\00\00\00\00\00") - (data $17 (i32.const 768) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00 \00\00\00") + (data $11 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 572) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 796) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $17 (i32.const 1196) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2252) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $19 (i32.const 2348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t\00") + (data $22 (i32.const 2492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2540) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00b\00o\00o\00l\00e\00a\00n\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") + (data $26 (i32.const 2652) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2684) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2736) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00 \00\00\00") (table $0 2 2 funcref) (elem $0 (i32.const 1) $start:typeof~anonymous|0) (export "memory" (memory $0)) @@ -179,8 +192,6 @@ i32.const 0 return ) - (func $start:typeof~anonymous|0 - ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this local.get $nextWithColor @@ -245,7 +256,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 224 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -315,7 +326,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 224 i32.const 128 i32.const 18 call $~lib/builtins/abort @@ -332,7 +343,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 224 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -362,8 +373,8 @@ i32.load i32.gt_u if - i32.const 528 - i32.const 592 + i32.const 352 + i32.const 416 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -431,7 +442,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 400 + i32.const 224 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -583,7 +594,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 496 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -603,7 +614,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 496 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -666,7 +677,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 496 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -819,7 +830,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 496 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -836,7 +847,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 496 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -925,7 +936,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 496 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -968,7 +979,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 496 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -986,7 +997,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 496 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -1054,7 +1065,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 496 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1171,7 +1182,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 496 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -1217,7 +1228,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 496 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -1249,7 +1260,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 496 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -1493,7 +1504,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 496 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1713,7 +1724,7 @@ i32.eqz if i32.const 0 - i32.const 400 + i32.const 224 i32.const 229 i32.const 20 call $~lib/builtins/abort @@ -1821,8 +1832,8 @@ i32.const 1073741820 i32.gt_u if - i32.const 336 - i32.const 672 + i32.const 160 + i32.const 496 i32.const 461 i32.const 29 call $~lib/builtins/abort @@ -1924,7 +1935,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 496 i32.const 334 i32.const 14 call $~lib/builtins/abort @@ -1995,7 +2006,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 496 i32.const 347 i32.const 18 call $~lib/builtins/abort @@ -2152,7 +2163,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 496 i32.const 361 i32.const 14 call $~lib/builtins/abort @@ -2267,7 +2278,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 496 i32.const 499 i32.const 16 call $~lib/builtins/abort @@ -2287,7 +2298,7 @@ i32.eqz if i32.const 0 - i32.const 672 + i32.const 496 i32.const 501 i32.const 14 call $~lib/builtins/abort @@ -2335,8 +2346,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 336 - i32.const 400 + i32.const 160 + i32.const 224 i32.const 261 i32.const 31 call $~lib/builtins/abort @@ -2381,86 +2392,423 @@ local.get $ptr return ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $typeof/s - local.tee $1 + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable end - global.get $typeof/c - local.tee $1 + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 796 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 796 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 796 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 end - i32.const 528 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 336 - local.get $0 - call $~lib/rt/itcms/__visit ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1216 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2272 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end ) - (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) local.get $this - i32.load offset=4 - ) - (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>void>#__visit + local.get $radix + call $~lib/util/number/utoa32 + return ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $typeof/SomeClass - block $~lib/function/Function<%28%29=>void> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $typeof/SomeClass $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>void>~visit - return - end - return - end - unreachable + (func $start:typeof~anonymous|0 ) (func $~start global.get $~started @@ -2476,8 +2824,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33584 - i32.const 33632 + i32.const 35552 + i32.const 35600 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2580,6 +2928,211 @@ local.get $3 return ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 128 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 64 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 96 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 560 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2368 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $typeof/SomeClass#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -2628,6 +3181,23 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 304 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 448 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 1 drop i32.const 32 @@ -2636,67 +3206,67 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 112 - i32.const 112 + i32.const 2480 + i32.const 2480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 112 - i32.const 112 + i32.const 2480 + i32.const 2480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 12 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 112 - i32.const 112 + i32.const 2480 + i32.const 2480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 144 - i32.const 144 + i32.const 2512 + i32.const 2512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 144 - i32.const 144 + i32.const 2512 + i32.const 2512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -2704,25 +3274,25 @@ end i32.const 1 drop - i32.const 192 - i32.const 192 + i32.const 2560 + i32.const 2560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 112 - i32.const 112 + i32.const 2480 + i32.const 2480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -2736,7 +3306,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -2750,7 +3320,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -2764,21 +3334,21 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 240 + i32.const 2608 drop - i32.const 272 - i32.const 272 + i32.const 2640 + i32.const 2640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -2786,18 +3356,18 @@ end global.get $typeof/b drop - i32.const 192 + i32.const 2560 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 192 + i32.const 2560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -2816,7 +3386,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -2835,7 +3405,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -2854,7 +3424,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -2873,7 +3443,7 @@ i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -2881,18 +3451,18 @@ end global.get $typeof/s drop - i32.const 272 + i32.const 2640 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 272 + i32.const 2640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -2900,81 +3470,64 @@ end global.get $typeof/fn drop - i32.const 144 + i32.const 2512 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 144 + i32.const 2512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 37 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 448 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 480 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 624 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace i32.const 0 call $typeof/SomeClass#constructor global.set $typeof/c global.get $typeof/c drop - i32.const 112 + i32.const 2480 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 112 + i32.const 2480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 39 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 144 - i32.const 144 + i32.const 2512 + i32.const 2512 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 40 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 736 - i32.const 736 + i32.const 2704 + i32.const 2704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -2982,18 +3535,18 @@ end global.get $typeof/c drop - i32.const 736 + i32.const 2704 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 736 + i32.const 2704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 45 i32.const 1 call $~lib/builtins/abort @@ -3001,18 +3554,18 @@ end global.get $typeof/c drop - i32.const 736 + i32.const 2704 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 736 + i32.const 2704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 64 + i32.const 2432 i32.const 46 i32.const 1 call $~lib/builtins/abort @@ -3023,8 +3576,18 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) - (local $2 i32) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3033,19 +3596,132 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $this - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/function/Function<%28%29=>void>#get:_env - local.get $cookie - call $~lib/rt/itcms/__visit + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 592 + i32.const 720 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 784 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $12 + return ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) @@ -3075,4 +3751,115 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $typeof/s + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $typeof/c + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 352 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 160 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1216 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2272 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $typeof/SomeClass + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $typeof/SomeClass $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + return + end + unreachable + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/typeof.release.wat b/tests/compiler/typeof.release.wat index a1cf98f400..74937c9a86 100644 --- a/tests/compiler/typeof.release.wat +++ b/tests/compiler/typeof.release.wat @@ -1,13 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32) (result i32))) - (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32 i64))) + (type $5 (func (result i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -19,45 +18,66 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $typeof/c (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34588)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36556)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r") - (data $1 (i32.const 1068) ",") - (data $1.1 (i32.const 1080) "\02\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s") - (data $2 (i32.const 1116) "\1c") - (data $2.1 (i32.const 1128) "\02\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t") - (data $3 (i32.const 1148) ",") - (data $3.1 (i32.const 1160) "\02\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n") - (data $4 (i32.const 1196) ",") - (data $4.1 (i32.const 1208) "\02\00\00\00\0e\00\00\00b\00o\00o\00l\00e\00a\00n") - (data $5 (i32.const 1244) "\1c") - (data $5.1 (i32.const 1256) "\02\00\00\00\02\00\00\001") - (data $6 (i32.const 1276) "\1c") - (data $6.1 (i32.const 1288) "\02\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") - (data $7 (i32.const 1308) "\1c") - (data $7.1 (i32.const 1320) "\04\00\00\00\08\00\00\00\01") - (data $8 (i32.const 1340) "<") - (data $8.1 (i32.const 1352) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $9 (i32.const 1404) "<") - (data $9.1 (i32.const 1416) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $12 (i32.const 1532) "<") - (data $12.1 (i32.const 1544) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $13 (i32.const 1596) ",") - (data $13.1 (i32.const 1608) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $15 (i32.const 1676) "<") - (data $15.1 (i32.const 1688) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $16 (i32.const 1740) ",") - (data $16.1 (i32.const 1752) "\02\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d") - (data $17 (i32.const 1792) "\06\00\00\00 \00\00\00 \00\00\00 ") - (data $17.1 (i32.const 1816) " ") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02") + (data $4 (i32.const 1164) "<") + (data $4.1 (i32.const 1176) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1228) "<") + (data $5.1 (i32.const 1240) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1356) "<") + (data $8.1 (i32.const 1368) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1420) ",") + (data $9.1 (i32.const 1432) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1500) "<") + (data $11.1 (i32.const 1512) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1564) "\1c") + (data $12.1 (i32.const 1576) "\02\00\00\00\02\00\00\00:") + (data $13 (i32.const 1596) "|") + (data $13.1 (i32.const 1608) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $14 (i32.const 1724) "<") + (data $14.1 (i32.const 1736) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $15 (i32.const 1788) "\1c") + (data $15.1 (i32.const 1800) "\02\00\00\00\02\00\00\000") + (data $16 (i32.const 1820) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $17 (i32.const 2220) "\1c\04") + (data $17.1 (i32.const 2232) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $18 (i32.const 3276) "\\") + (data $18.1 (i32.const 3288) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $19 (i32.const 3372) "<") + (data $19.1 (i32.const 3384) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $20 (i32.const 3436) ",") + (data $20.1 (i32.const 3448) "\02\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s") + (data $21 (i32.const 3484) "\1c") + (data $21.1 (i32.const 3496) "\02\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t") + (data $22 (i32.const 3516) ",") + (data $22.1 (i32.const 3528) "\02\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n") + (data $23 (i32.const 3564) ",") + (data $23.1 (i32.const 3576) "\02\00\00\00\0e\00\00\00b\00o\00o\00l\00e\00a\00n") + (data $24 (i32.const 3612) "\1c") + (data $24.1 (i32.const 3624) "\02\00\00\00\02\00\00\001") + (data $25 (i32.const 3644) "\1c") + (data $25.1 (i32.const 3656) "\02\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") + (data $26 (i32.const 3676) "\1c") + (data $26.1 (i32.const 3688) "\04\00\00\00\08\00\00\00\01") + (data $27 (i32.const 3708) ",") + (data $27.1 (i32.const 3720) "\02\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d") + (data $28 (i32.const 3760) "\06\00\00\00 \00\00\00 \00\00\00 ") + (data $28.1 (i32.const 3784) " ") (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1264 + i32.const 3632 call $~lib/rt/itcms/__visit global.get $typeof/c local.tee $0 @@ -65,9 +85,13 @@ local.get $0 call $~lib/rt/itcms/__visit end - i32.const 1552 + i32.const 1376 call $~lib/rt/itcms/__visit - i32.const 1360 + i32.const 1184 + call $~lib/rt/itcms/__visit + i32.const 2240 + call $~lib/rt/itcms/__visit + i32.const 3296 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -88,7 +112,7 @@ i32.ne if i32.const 0 - i32.const 1424 + i32.const 1248 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -136,7 +160,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1248 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -145,7 +169,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$119 + block $__inlined_func$~lib/rt/itcms/Object#unlink$131 local.get $1 i32.load offset=4 i32.const -4 @@ -157,19 +181,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34588 + i32.const 36556 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1248 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$119 + br $__inlined_func$~lib/rt/itcms/Object#unlink$131 end local.get $1 i32.load offset=8 @@ -177,7 +201,7 @@ i32.eqz if i32.const 0 - i32.const 1424 + i32.const 1248 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -206,12 +230,12 @@ i32.const 1 else local.get $0 - i32.const 1792 + i32.const 3760 i32.load i32.gt_u if - i32.const 1552 - i32.const 1616 + i32.const 1376 + i32.const 1440 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -220,7 +244,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1796 + i32.const 3764 i32.add i32.load i32.const 32 @@ -272,7 +296,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1520 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -286,7 +310,7 @@ i32.lt_u if i32.const 0 - i32.const 1696 + i32.const 1520 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -332,7 +356,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1520 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -415,7 +439,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1520 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -429,7 +453,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1520 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -490,7 +514,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1520 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -523,7 +547,7 @@ i32.lt_u if i32.const 0 - i32.const 1696 + i32.const 1520 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -538,7 +562,7 @@ i32.ne if i32.const 0 - i32.const 1696 + i32.const 1520 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -589,7 +613,7 @@ i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1520 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -661,7 +685,7 @@ i64.lt_u if i32.const 0 - i32.const 1696 + i32.const 1520 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -686,7 +710,7 @@ i32.gt_u if i32.const 0 - i32.const 1696 + i32.const 1520 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -713,7 +737,7 @@ i32.gt_u if i32.const 0 - i32.const 1696 + i32.const 1520 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -785,10 +809,10 @@ if unreachable end - i32.const 34592 + i32.const 36560 i32.const 0 i32.store - i32.const 36160 + i32.const 38128 i32.const 0 i32.store loop $for-loop|0 @@ -799,7 +823,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34592 + i32.const 36560 i32.add i32.const 0 i32.store offset=4 @@ -817,7 +841,7 @@ i32.add i32.const 2 i32.shl - i32.const 34592 + i32.const 36560 i32.add i32.const 0 i32.store offset=96 @@ -835,14 +859,14 @@ br $for-loop|0 end end - i32.const 34592 - i32.const 36164 + i32.const 36560 + i32.const 38132 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34592 + i32.const 36560 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -927,7 +951,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34588 + i32.const 36556 i32.lt_u if local.get $0 @@ -1016,14 +1040,14 @@ i32.ne if i32.const 0 - i32.const 1424 + i32.const 1248 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34588 + i32.const 36556 i32.lt_u if local.get $0 @@ -1046,7 +1070,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34588 + i32.const 36556 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1075,7 +1099,7 @@ end if i32.const 0 - i32.const 1696 + i32.const 1520 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1105,18 +1129,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1124,32 +1215,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1520 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1162,23 +1257,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1184 + i32.const 1248 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if block $__inlined_func$~lib/rt/itcms/interrupt$70 i32.const 2048 - local.set $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 @@ -1194,7 +1301,7 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt$70 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1217,31 +1324,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1184 + i32.const 1520 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if memory.size - local.tee $1 + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end i32.const 4 - local.get $2 + local.get $4 i32.load offset=1568 - local.get $1 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1257,8 +1419,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1266,119 +1428,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1696 + i32.const 1520 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1696 + i32.const 1520 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1520 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1386,73 +1565,212 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 + memory.fill + local.get $1 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $typeof/SomeClass - block $~lib/function/Function<%28%29=>void> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $typeof/SomeClass $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1820 - i32.lt_s - if - i32.const 34608 - i32.const 34656 + (func $~lib/number/U32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $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 3788 + i32.lt_s + if + i32.const 36576 + i32.const 36624 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1808 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 0 + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load i32.store + else local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - return + local.get $1 + i32.const 48 + i32.add + i32.store16 end - return + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end - unreachable + local.get $0 ) (func $~start global.get $~started @@ -1473,11 +1791,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1820 + i32.const 3788 i32.lt_s if - i32.const 34608 - i32.const 34656 + i32.const 36576 + i32.const 36624 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -1576,7 +1894,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$78 + block $__inlined_func$~lib/util/string/compareImpl$76 loop $while-continue|1 local.get $0 local.tee $3 @@ -1596,7 +1914,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$78 + br_if $__inlined_func$~lib/util/string/compareImpl$76 local.get $2 i32.const 2 i32.add @@ -1625,6 +1943,206 @@ global.set $~lib/memory/__stack_pointer i32.const 0 ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3788 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3788 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$136 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1152 + local.set $0 + br $__inlined_func$~lib/string/String#concat$136 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36576 + i32.const 36624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3788 + i32.lt_s + if + i32.const 36576 + i32.const 36624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1088 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1120 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1584 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3392 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $start:typeof (local $0 i32) (local $1 i32) @@ -1634,103 +2152,135 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1820 + i32.const 3788 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + memory.size + i32.const 16 + i32.shl + i32.const 36556 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/pinSpace + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/toSpace + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + global.set $~lib/rt/itcms/fromSpace i32.const 1056 i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1136 - i32.const 1136 + i32.const 3504 + i32.const 3504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1136 - i32.const 1136 + i32.const 3504 + i32.const 3504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 12 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1136 - i32.const 1136 + i32.const 3504 + i32.const 3504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1168 - i32.const 1168 + i32.const 3536 + i32.const 3536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1168 - i32.const 1168 + i32.const 3536 + i32.const 3536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1216 - i32.const 1216 + i32.const 3584 + i32.const 3584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1136 - i32.const 1136 + i32.const 3504 + i32.const 3504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -1742,7 +2292,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -1754,7 +2304,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -1766,34 +2316,34 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1296 - i32.const 1296 + i32.const 3664 + i32.const 3664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1216 + i32.const 3584 i32.store - i32.const 1216 - i32.const 1216 + i32.const 3584 + i32.const 3584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -1808,7 +2358,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -1823,7 +2373,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -1838,7 +2388,7 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -1853,86 +2403,55 @@ i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 33 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1296 + i32.const 3664 i32.store - i32.const 1296 - i32.const 1296 + i32.const 3664 + i32.const 3664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 35 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1168 + i32.const 3536 i32.store - i32.const 1168 - i32.const 1168 + i32.const 3536 + i32.const 3536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 37 i32.const 1 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - i32.const 34588 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1476 - i32.const 1472 - i32.store - i32.const 1480 - i32.const 1472 - i32.store - i32.const 1472 - global.set $~lib/rt/itcms/pinSpace - i32.const 1508 - i32.const 1504 - i32.store - i32.const 1512 - i32.const 1504 - i32.store - i32.const 1504 - global.set $~lib/rt/itcms/toSpace - i32.const 1652 - i32.const 1648 - i32.store - i32.const 1656 - i32.const 1648 - i32.store - i32.const 1648 - global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1820 + i32.const 3788 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 5 call $~lib/rt/itcms/__new local.tee $0 @@ -1946,7 +2465,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1820 + i32.const 3788 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1957,6 +2476,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1974,69 +2494,69 @@ local.get $0 global.set $typeof/c global.get $~lib/memory/__stack_pointer - i32.const 1136 + i32.const 3504 i32.store - i32.const 1136 - i32.const 1136 + i32.const 3504 + i32.const 3504 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 39 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1168 - i32.const 1168 + i32.const 3536 + i32.const 3536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 40 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1760 - i32.const 1760 + i32.const 3728 + i32.const 3728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 44 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1760 + i32.const 3728 i32.store - i32.const 1760 - i32.const 1760 + i32.const 3728 + i32.const 3728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 45 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1760 + i32.const 3728 i32.store - i32.const 1760 - i32.const 1760 + i32.const 3728 + i32.const 3728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1088 + i32.const 3456 i32.const 46 i32.const 1 call $~lib/builtins/abort @@ -2048,11 +2568,70 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 34608 - i32.const 34656 + i32.const 36576 + i32.const 36624 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $typeof/SomeClass + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $typeof/SomeClass $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3788 + i32.lt_s + if + i32.const 36576 + i32.const 36624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/unary.release.wat b/tests/compiler/unary.release.wat index 202341c088..6c711e0cb2 100644 --- a/tests/compiler/unary.release.wat +++ b/tests/compiler/unary.release.wat @@ -8,8 +8,6 @@ (export "memory" (memory $0)) (start $~start) (func $~start - (local $0 i32) - (local $1 i64) global.get $unary/i i32.const 1 i32.add diff --git a/tests/compiler/while.debug.wat b/tests/compiler/while.debug.wat index 1dfafed2d8..7d6726bf64 100644 --- a/tests/compiler/while.debug.wat +++ b/tests/compiler/while.debug.wat @@ -3,13 +3,18 @@ (type $1 (func)) (type $2 (func (param i32 i32))) (type $3 (func (param i32))) - (type $4 (func (result i32))) - (type $5 (func (param i32 i32) (result i32))) - (type $6 (func (param i32 i32 i32))) - (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i64 i32) (result i32))) + (type $10 (func (param i32 i64 i32 i32))) + (type $11 (func (param i32 i32 i32 i32))) (global $while/ran (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/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)) @@ -18,1268 +23,1741 @@ (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/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 464)) - (global $~lib/memory/__data_end i32 (i32.const 488)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33256)) - (global $~lib/memory/__heap_base i32 (i32.const 33256)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2432)) + (global $~lib/memory/__data_end i32 (i32.const 2456)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35224)) + (global $~lib/memory/__heap_base i32 (i32.const 35224)) (memory $0 1) - (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $3 (i32.const 192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $5 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data $6 (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data $7 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $8 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data $9 (i32.const 464) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00o\00r\00t\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00i\00n\00 \00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 540) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $16 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $18 (i32.const 2316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2432) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") (table $0 1 1 funcref) (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) - (func $while/testSimple - (local $i i32) - (local $j i32) - i32.const 10 - local.set $i - i32.const 0 - local.set $j - loop $while-continue|0 - local.get $i - if - local.get $i - i32.const 1 - i32.sub - local.set $i - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $i - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $j - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize i32.const 1 - global.set $while/ran + i32.shr_u + return ) - (func $while/testNested - (local $i i32) - (local $j i32) - (local $k i32) - i32.const 10 - local.set $i - i32.const 0 - local.set $j - i32.const 0 - local.set $k + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter loop $while-continue|0 - local.get $i + local.get $iter + local.get $pn + i32.ne if - local.get $i - i32.const 1 - i32.sub - local.set $i - local.get $j i32.const 1 - i32.add - local.set $j - loop $while-continue|1 - local.get $i - if - local.get $i - i32.const 1 - i32.sub - local.set $i - local.get $k - i32.const 1 - i32.add - local.set $k - br $while-continue|1 - end - end - local.get $i - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 29 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $k - i32.const 9 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 30 - i32.const 5 + i32.const 192 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter br $while-continue|0 end end - local.get $i + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next i32.const 0 i32.eq - i32.eqz if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev i32.const 0 - i32.const 32 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return end - local.get $j + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev i32.const 1 - i32.eq + drop + local.get $prev i32.eqz if i32.const 0 - i32.const 32 - i32.const 33 - i32.const 3 + i32.const 192 + i32.const 132 + i32.const 16 call $~lib/builtins/abort unreachable end - local.get $k - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 34 - i32.const 3 + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $while/ran + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return ) - (func $while/testEmpty - (local $i i32) - (local $j i32) - (local $2 i32) - i32.const 1 - local.set $i - i32.const 0 - local.set $j - loop $while-continue|0 - local.get $i - local.tee $2 + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) i32.const 1 - i32.sub - local.set $i - local.get $2 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz if (result i32) - local.get $j - i32.const 1 - i32.add - local.tee $j - else i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 end - if - br $while-continue|0 - end + global.set $~lib/rt/itcms/iter end - local.get $i - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end - local.get $j - i32.const 1 - i32.eq + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr i32.eqz if - i32.const 0 - i32.const 32 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end - i32.const 1 - global.set $while/ran - ) - (func $while/testAlwaysTrue - (local $i i32) + local.get $ptr + i32.const 20 + i32.sub + local.set $obj i32.const 0 - local.set $i - block $while-break|0 - loop $while-continue|0 - i32.const 1 - if - local.get $i - i32.const 1 - i32.add - local.tee $i - i32.const 10 - i32.eq - if - br $while-break|0 - end - br $while-continue|0 - end - end - end - local.get $i - i32.const 10 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white i32.eq - i32.eqz if - i32.const 0 - i32.const 32 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - i32.const 1 - global.set $while/ran ) - (func $while/testAlwaysTrueNeverBreaks (result i32) - (local $i i32) - i32.const 0 - local.set $i + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr loop $while-continue|0 - i32.const 1 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u if - local.get $i - i32.const 1 + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 i32.add - local.tee $i - i32.const 10 - i32.eq - if - local.get $i - return - end + local.set $ptr br $while-continue|0 end end - unreachable ) - (func $while/testAlwaysFalse - (local $i i32) - i32.const 0 - local.set $i - i32.const 0 - drop - local.get $i - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 80 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load ) - (func $while/testAlwaysBreaks - (local $i i32) - i32.const 0 - local.set $i - block $while-break|0 - loop $while-continue|0 - local.get $i - i32.const 1 - i32.add - local.tee $i - if - br $while-break|0 - end - end - end - local.get $i + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo i32.const 1 - i32.eq + drop + local.get $blockInfo + i32.const 1 + i32.and i32.eqz if i32.const 0 - i32.const 32 - i32.const 92 - i32.const 3 + i32.const 464 + i32.const 268 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size i32.const 1 - global.set $while/ran - ) - (func $while/testAlwaysReturns - (local $i i32) - i32.const 0 - local.set $i - loop $while-continue|0 - local.get $i - i32.const 1 - i32.add - local.tee $i - if - i32.const 1 - global.set $while/ran - return - end - end - i32.const 0 + drop + local.get $size + i32.const 12 + i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 105 - i32.const 3 + i32.const 464 + i32.const 270 + i32.const 14 call $~lib/builtins/abort unreachable end - ) - (func $while/testContinue - (local $i i32) - i32.const 10 - local.set $i - loop $while-continue|0 - local.get $i - if - local.get $i - i32.const 1 - i32.sub - local.set $i - br $while-continue|0 - end - end - local.get $i - i32.const 0 - i32.eq - i32.eqz + local.get $size + i32.const 256 + i32.lt_u if i32.const 0 - i32.const 32 - i32.const 117 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl end i32.const 1 - global.set $while/ran - ) - (func $while/testNestedContinue - (local $i i32) - (local $j i32) - i32.const 10 - local.set $i - i32.const 10 - local.set $j - loop $while-continue|0 - local.get $i - if - loop $while-continue|1 - local.get $j - if - local.get $j - i32.const 1 - i32.sub - local.set $j - br $while-continue|1 - end - end - local.get $i - i32.const 1 - i32.sub - local.set $i - br $while-continue|0 - end + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 end - local.get $i - i32.const 0 - i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 135 - i32.const 3 + i32.const 464 + i32.const 284 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $j - i32.const 0 - i32.eq - i32.eqz + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev if - i32.const 0 - i32.const 32 - i32.const 136 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next end - i32.const 1 - global.set $while/ran - ) - (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) - local.get $this - local.get $nextWithColor - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) - local.get $this - local.get $prev - i32.store offset=8 - ) - (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) - local.get $space - local.get $space - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $space - local.get $space - call $~lib/rt/itcms/Object#set:prev - local.get $space - return - ) - (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.const -1 - i32.xor - i32.and - return - ) - (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.and - return - ) - (func $~lib/rt/itcms/visitRoots (param $cookie i32) - (local $pn i32) - (local $iter i32) - local.get $cookie - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.set $pn - local.get $pn - call $~lib/rt/itcms/Object#get:next - local.set $iter - loop $while-continue|0 - local.get $iter - local.get $pn - i32.ne + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap i32.const 1 - drop - local.get $iter - call $~lib/rt/itcms/Object#get:color - i32.const 3 - i32.eq + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap i32.eqz if - i32.const 0 - i32.const 144 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap end - local.get $iter - i32.const 20 - i32.add - local.get $cookie - call $~lib/rt/__visit_members - local.get $iter - call $~lib/rt/itcms/Object#get:next - local.set $iter - br $while-continue|0 end end ) - (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) - local.get $this - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 - i32.const -1 - i32.xor + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 i32.and - local.get $color - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) - local.get $this - i32.load offset=8 - ) - (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) - local.get $this - local.get $obj - local.get $this - call $~lib/rt/itcms/Object#get:nextWithColor - i32.const 3 + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - ) - (func $~lib/rt/itcms/Object#unlink (param $this i32) - (local $next i32) - (local $prev i32) - local.get $this - call $~lib/rt/itcms/Object#get:next - local.set $next - local.get $next - i32.const 0 - i32.eq + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz if - i32.const 1 - drop - local.get $this - call $~lib/rt/itcms/Object#get:prev i32.const 0 - i32.eq - if (result i32) - local.get $this - global.get $~lib/memory/__heap_base - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $this - call $~lib/rt/itcms/Object#get:prev - local.set $prev i32.const 1 drop - local.get $prev + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq i32.eqz if i32.const 0 - i32.const 144 - i32.const 132 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $next - local.get $prev - call $~lib/rt/itcms/Object#set:prev - local.get $prev - local.get $next - call $~lib/rt/itcms/Object#set:next - ) - (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) - local.get $this - i32.load offset=12 - ) - (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) - local.get $this - i32.load + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 ) - (func $~lib/rt/__typeinfo (param $id i32) (result i32) - (local $ptr i32) - global.get $~lib/rt/__rtti_base - local.set $ptr - local.get $id - local.get $ptr - i32.load - i32.gt_u + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz if - i32.const 272 - i32.const 336 - i32.const 21 - i32.const 28 + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $ptr + local.get $start i32.const 4 i32.add - local.get $id + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and i32.const 4 - i32.mul - i32.add - call $~lib/shared/typeinfo/Typeinfo#get:flags - return - ) - (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) - (local $rtId i32) - local.get $this - call $~lib/rt/itcms/Object#get:rtId - local.set $rtId - local.get $rtId - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $rtId - call $~lib/rt/__typeinfo - i32.const 32 - i32.and - i32.const 0 - i32.ne + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 end - return - ) - (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) - (local $prev i32) - local.get $list - call $~lib/rt/itcms/Object#get:prev - local.set $prev - local.get $this - local.get $list - local.get $withColor - i32.or - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $this - local.get $prev - call $~lib/rt/itcms/Object#set:prev - local.get $prev - local.get $this - call $~lib/rt/itcms/Object#set:next - local.get $list - local.get $this - call $~lib/rt/itcms/Object#set:prev - ) - (func $~lib/rt/itcms/Object#makeGray (param $this i32) - (local $1 i32) - local.get $this - global.get $~lib/rt/itcms/iter - i32.eq + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail if - local.get $this - call $~lib/rt/itcms/Object#get:prev - local.tee $1 + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u i32.eqz - if (result i32) + if i32.const 0 - i32.const 144 - i32.const 148 - i32.const 30 + i32.const 464 + i32.const 389 + i32.const 16 call $~lib/builtins/abort unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo else - local.get $1 end - global.set $~lib/rt/itcms/iter - end - local.get $this - call $~lib/rt/itcms/Object#unlink - local.get $this - global.get $~lib/rt/itcms/toSpace - local.get $this - call $~lib/rt/itcms/Object#get:isPointerfree - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) - (local $obj i32) - local.get $ptr - i32.eqz - if - return - end - local.get $ptr - i32.const 20 - i32.sub - local.set $obj - i32.const 0 - drop - local.get $obj - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eq - if - local.get $obj - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/itcms/visitStack (param $cookie i32) - (local $ptr i32) - global.get $~lib/memory/__stack_pointer - local.set $ptr - loop $while-continue|0 - local.get $ptr - global.get $~lib/memory/__heap_base - i32.lt_u + i32.ge_u + i32.eqz if - local.get $ptr - i32.load - local.get $cookie - call $~lib/rt/itcms/__visit - local.get $ptr - i32.const 4 - i32.add - local.set $ptr - br $while-continue|0 + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end end - ) - (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) - local.get $this - i32.load - ) - (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size i32.const 4 - local.get $this - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 i32.add - return - ) - (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) - local.get $this - local.get $flMap - i32.store - ) - (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) - local.get $this - local.get $mmInfo - i32.store - ) - (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) - local.get $this - local.get $prev - i32.store offset=4 - ) - (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) - local.get $this - local.get $next - i32.store offset=8 - ) - (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) - local.get $this - i32.load offset=4 - ) - (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) - local.get $this - i32.load offset=8 - ) - (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) - local.get $this - i32.load + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return ) - (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) - (local $blockInfo i32) - (local $size i32) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) (local $sl i32) - (local $6 i32) - (local $7 i32) - (local $boundedSize i32) - (local $prev i32) - (local $next i32) (local $root|11 i32) (local $fl|12 i32) (local $sl|13 i32) - (local $root|14 i32) - (local $fl|15 i32) - (local $sl|16 i32) (local $head i32) - (local $root|18 i32) - (local $fl|19 i32) - (local $slMap i32) - (local $root|21 i32) - (local $fl|22 i32) - (local $slMap|23 i32) - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - local.set $blockInfo - i32.const 1 + (local $memStart i32) + i32.const 0 drop - local.get $blockInfo - i32.const 1 + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor i32.and - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $blockInfo - i32.const 3 + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 i32.const -1 i32.xor i32.and - local.set $size - i32.const 1 - drop - local.get $size - i32.const 12 - i32.ge_u - i32.eqz - if + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else i32.const 0 - i32.const 416 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable end - local.get $size - i32.const 256 - i32.lt_u if - i32.const 0 - local.set $fl - local.get $size - i32.const 4 - i32.shr_u - local.set $sl - else - local.get $size - local.tee $6 - i32.const 1073741820 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_u - select - local.set $boundedSize - i32.const 31 - local.get $boundedSize - i32.clz - i32.sub - local.set $fl - local.get $boundedSize - local.get $fl - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $sl + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 local.get $fl - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end end - i32.const 1 + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 drop - local.get $fl - i32.const 23 - i32.lt_u + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne if (result i32) - local.get $sl - i32.const 16 - i32.lt_u + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz else i32.const 0 end i32.eqz if i32.const 0 - i32.const 416 - i32.const 284 - i32.const 14 + i32.const 464 + i32.const 562 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $block - call $~lib/rt/tlsf/Block#get:prev - local.set $prev + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop local.get $block - call $~lib/rt/tlsf/Block#get:next - local.set $next - local.get $prev + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u if - local.get $prev - local.get $next - call $~lib/rt/tlsf/Block#set:next + return end - local.get $next + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - local.get $next - local.get $prev - call $~lib/rt/tlsf/Block#set:prev - end - local.get $block - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) - local.get $root - local.set $root|11 - local.get $fl - local.set $fl|12 - local.get $sl - local.set $sl|13 - local.get $root|11 - local.get $fl|12 - i32.const 4 - i32.shl - local.get $sl|13 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - br $~lib/rt/tlsf/GETHEAD|inlined.0 + call $~lib/rt/tlsf/initialize end - i32.eq + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u if - local.get $root - local.set $root|14 - local.get $fl - local.set $fl|15 - local.get $sl - local.set $sl|16 - local.get $next - local.set $head - local.get $root|14 - local.get $fl|15 + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj i32.const 4 - i32.shl - local.get $sl|16 - i32.add - i32.const 2 - i32.shl i32.add - local.get $head - i32.store offset=96 - local.get $next - i32.eqz - if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $root - local.set $root|18 - local.get $fl - local.set $fl|19 - local.get $root|18 - local.get $fl|19 + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter i32.const 2 - i32.shl - i32.add - i32.load offset=4 - br $~lib/rt/tlsf/GETSL|inlined.0 + global.set $~lib/rt/itcms/state end - local.set $slMap - local.get $root - local.set $root|21 - local.get $fl - local.set $fl|22 - local.get $slMap + global.get $~lib/rt/itcms/visitCount i32.const 1 - local.get $sl - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $slMap - local.set $slMap|23 - local.get $root|21 - local.get $fl|22 - i32.const 2 - i32.shl - i32.add - local.get $slMap|23 - i32.store offset=4 - local.get $slMap + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq i32.eqz if - local.get $root - local.get $root - call $~lib/rt/tlsf/Root#get:flMap - i32.const 1 - local.get $fl - i32.shl - i32.const -1 - i32.xor - i32.and - call $~lib/rt/tlsf/Root#set:flMap + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 end + i32.const 0 + return ) - (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) - (local $blockInfo i32) - (local $block|3 i32) - (local $right i32) - (local $rightInfo i32) - (local $block|6 i32) - (local $block|7 i32) - (local $left i32) - (local $leftInfo i32) - (local $size i32) - (local $fl i32) - (local $sl i32) - (local $13 i32) - (local $14 i32) - (local $boundedSize i32) - (local $root|16 i32) - (local $fl|17 i32) - (local $sl|18 i32) - (local $head i32) - (local $root|20 i32) - (local $fl|21 i32) - (local $sl|22 i32) - (local $head|23 i32) - (local $root|24 i32) - (local $fl|25 i32) - (local $root|26 i32) - (local $fl|27 i32) - (local $slMap i32) - i32.const 1 + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 drop - local.get $block - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - local.set $blockInfo - i32.const 1 + i32.const 0 drop - local.get $blockInfo - i32.const 1 - i32.and - i32.eqz - if + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state i32.const 0 - i32.const 416 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $block - local.set $block|3 - local.get $block|3 - i32.const 4 - i32.add - local.get $block|3 - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - br $~lib/rt/tlsf/GETRIGHT|inlined.0 - end - local.set $right - local.get $right - call $~lib/rt/common/BLOCK#get:mmInfo - local.set $rightInfo - local.get $rightInfo - i32.const 1 - i32.and - if - local.get $root - local.get $right - call $~lib/rt/tlsf/removeBlock - local.get $block - local.get $blockInfo - i32.const 4 - i32.add - local.get $rightInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.tee $blockInfo - call $~lib/rt/common/BLOCK#set:mmInfo - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $block - local.set $block|6 - local.get $block|6 - i32.const 4 - i32.add - local.get $block|6 - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - br $~lib/rt/tlsf/GETRIGHT|inlined.1 - end - local.set $right - local.get $right - call $~lib/rt/common/BLOCK#get:mmInfo - local.set $rightInfo - end - local.get $blockInfo - i32.const 2 - i32.and - if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $block - local.set $block|7 - local.get $block|7 - i32.const 4 - i32.sub - i32.load - br $~lib/rt/tlsf/GETFREELEFT|inlined.0 - end - local.set $left - local.get $left - call $~lib/rt/common/BLOCK#get:mmInfo - local.set $leftInfo - i32.const 1 - drop - local.get $leftInfo - i32.const 1 - i32.and - i32.eqz + i32.eq if i32.const 0 - i32.const 416 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return end - local.get $root - local.get $left - call $~lib/rt/tlsf/removeBlock - local.get $left - local.set $block - local.get $block - local.get $leftInfo + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size i32.const 4 i32.add - local.get $blockInfo - i32.const 3 + i32.const 15 + i32.add + i32.const 15 i32.const -1 i32.xor i32.and - i32.add - local.tee $blockInfo - call $~lib/rt/common/BLOCK#set:mmInfo + i32.const 4 + i32.sub end - local.get $right - local.get $rightInfo - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $blockInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $size - i32.const 1 - drop + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) local.get $size - i32.const 12 - i32.ge_u - i32.eqz + i32.const 1073741820 + i32.gt_u if - i32.const 0 - i32.const 416 - i32.const 233 - i32.const 14 + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - i32.const 1 - drop - local.get $block - i32.const 4 - i32.add local.get $size - i32.add - local.get $right - i32.eq - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size end - local.get $right - i32.const 4 - i32.sub - local.get $block - i32.store + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) local.get $size i32.const 256 i32.lt_u @@ -1292,20 +1770,18 @@ local.set $sl else local.get $size - local.tee $13 - i32.const 1073741820 - local.tee $14 - local.get $13 - local.get $14 - i32.lt_u - select - local.set $boundedSize - i32.const 31 - local.get $boundedSize + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize i32.clz i32.sub local.set $fl - local.get $boundedSize + local.get $requestSize local.get $fl i32.const 4 i32.sub @@ -1321,318 +1797,186 @@ i32.sub i32.sub local.set $fl - end - i32.const 1 - drop - local.get $fl - i32.const 23 - i32.lt_u - if (result i32) - local.get $sl - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $root - local.set $root|16 - local.get $fl - local.set $fl|17 - local.get $sl - local.set $sl|18 - local.get $root|16 - local.get $fl|17 - i32.const 4 - i32.shl - local.get $sl|18 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - br $~lib/rt/tlsf/GETHEAD|inlined.1 - end - local.set $head - local.get $block - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $block - local.get $head - call $~lib/rt/tlsf/Block#set:next - local.get $head - if - local.get $head - local.get $block - call $~lib/rt/tlsf/Block#set:prev - end - local.get $root - local.set $root|20 - local.get $fl - local.set $fl|21 - local.get $sl - local.set $sl|22 - local.get $block - local.set $head|23 - local.get $root|20 - local.get $fl|21 - i32.const 4 - i32.shl - local.get $sl|22 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $head|23 - i32.store offset=96 - local.get $root - local.get $root - call $~lib/rt/tlsf/Root#get:flMap - i32.const 1 - local.get $fl - i32.shl - i32.or - call $~lib/rt/tlsf/Root#set:flMap - local.get $root - local.set $root|26 - local.get $fl - local.set $fl|27 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $root - local.set $root|24 - local.get $fl - local.set $fl|25 - local.get $root|24 - local.get $fl|25 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - br $~lib/rt/tlsf/GETSL|inlined.1 - end - i32.const 1 - local.get $sl - i32.shl - i32.or - local.set $slMap - local.get $root|26 - local.get $fl|27 - i32.const 2 - i32.shl - i32.add - local.get $slMap - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) - (local $end i32) - (local $root|4 i32) - (local $tail i32) - (local $tailInfo i32) - (local $size i32) - (local $leftSize i32) - (local $left i32) - (local $root|10 i32) - (local $tail|11 i32) - local.get $endU64 - i32.wrap_i64 - local.set $end - i32.const 1 - drop - local.get $start - i64.extend_i32_u - local.get $endU64 - i64.le_u + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end i32.eqz if i32.const 0 - i32.const 416 - i32.const 382 + i32.const 464 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $start - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.sub - local.set $start - local.get $end - i32.const 15 + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 i32.const -1 i32.xor + local.get $sl + i32.shl i32.and - local.set $end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $root - local.set $root|4 - local.get $root|4 - i32.load offset=1568 - br $~lib/rt/tlsf/GETTAIL|inlined.0 - end - local.set $tail + local.set $slMap i32.const 0 - local.set $tailInfo - local.get $tail + local.set $head + local.get $slMap + i32.eqz if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl i32.const 1 - drop - local.get $start - local.get $tail - i32.const 4 i32.add - i32.ge_u + i32.shl + i32.and + local.set $flMap + local.get $flMap i32.eqz if i32.const 0 - i32.const 416 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $start - i32.const 16 - i32.sub - local.get $tail - i32.eq - if - local.get $start - i32.const 16 - i32.sub - local.set $start - local.get $tail - call $~lib/rt/common/BLOCK#get:mmInfo - local.set $tailInfo + local.set $head else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head end else - i32.const 1 - drop - local.get $start - local.get $root - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 416 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 end + local.set $head end - local.get $end - local.get $start - i32.sub - local.set $size - local.get $size - i32.const 4 - i32.const 12 - i32.add - i32.const 4 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $size - i32.const 2 - i32.const 4 - i32.mul - i32.sub - local.set $leftSize - local.get $start - local.set $left - local.get $left - local.get $leftSize - i32.const 1 - i32.or - local.get $tailInfo - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $left - i32.const 0 - call $~lib/rt/tlsf/Block#set:prev - local.get $left - i32.const 0 - call $~lib/rt/tlsf/Block#set:next - local.get $start - i32.const 4 - i32.add - local.get $leftSize - i32.add - local.set $tail - local.get $tail - i32.const 0 - i32.const 2 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $root - local.set $root|10 - local.get $tail - local.set $tail|11 - local.get $root|10 - local.get $tail|11 - i32.store offset=1568 - local.get $root - local.get $left - call $~lib/rt/tlsf/insertBlock - i32.const 1 + local.get $head return ) - (func $~lib/rt/tlsf/initialize - (local $rootOffset i32) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) (local $pagesBefore i32) + (local $root|3 i32) (local $pagesNeeded i32) - (local $root i32) - (local $root|4 i32) - (local $tail i32) - (local $fl i32) - (local $root|7 i32) - (local $fl|8 i32) - (local $slMap i32) - (local $sl i32) - (local $root|11 i32) - (local $fl|12 i32) - (local $sl|13 i32) - (local $head i32) - (local $memStart i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) i32.const 0 drop - global.get $~lib/memory/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $rootOffset + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end memory.size local.set $pagesBefore - local.get $rootOffset - i32.const 1572 + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl i32.add + local.set $size + local.get $size i32.const 65535 i32.add i32.const 65535 @@ -1642,1027 +1986,1126 @@ i32.const 16 i32.shr_u local.set $pagesNeeded - local.get $pagesNeeded local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 i32.gt_s - if (result i32) + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if local.get $pagesNeeded - local.get $pagesBefore - i32.sub memory.grow i32.const 0 i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $rootOffset - local.set $root - local.get $root - i32.const 0 - call $~lib/rt/tlsf/Root#set:flMap - local.get $root - local.set $root|4 - i32.const 0 - local.set $tail - local.get $root|4 - local.get $tail - i32.store offset=1568 - i32.const 0 - local.set $fl - loop $for-loop|0 - local.get $fl - i32.const 23 - i32.lt_u if - local.get $root - local.set $root|7 - local.get $fl - local.set $fl|8 - i32.const 0 - local.set $slMap - local.get $root|7 - local.get $fl|8 - i32.const 2 - i32.shl - i32.add - local.get $slMap - i32.store offset=4 - i32.const 0 - local.set $sl - loop $for-loop|1 - local.get $sl - i32.const 16 - i32.lt_u - if - local.get $root - local.set $root|11 - local.get $fl - local.set $fl|12 - local.get $sl - local.set $sl|13 - i32.const 0 - local.set $head - local.get $root|11 - local.get $fl|12 - i32.const 4 - i32.shl - local.get $sl|13 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $head - i32.store offset=96 - local.get $sl - i32.const 1 - i32.add - local.set $sl - br $for-loop|1 - end - end - local.get $fl - i32.const 1 - i32.add - local.set $fl - br $for-loop|0 + unreachable end end - local.get $rootOffset - i32.const 1572 - i32.add - local.set $memStart - i32.const 0 - drop - local.get $root - local.get $memStart memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory drop - local.get $root - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) - (local $block i32) - local.get $ptr + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size i32.sub - local.set $block - local.get $ptr - i32.const 0 - i32.ne - if (result i32) - local.get $ptr - i32.const 15 + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor i32.and - i32.eqz - else - i32.const 0 + call $~lib/rt/common/BLOCK#set:mmInfo end - if (result i32) - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block i32.const 1 - i32.and + drop + local.get $block i32.eqz - else - i32.const 0 + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u i32.eqz if i32.const 0 - i32.const 416 - i32.const 562 - i32.const 3 + i32.const 464 + i32.const 501 + i32.const 14 call $~lib/builtins/abort unreachable end + local.get $root local.get $block - return - ) - (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock i32.const 0 drop local.get $block - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $root - local.get $block - call $~lib/rt/tlsf/insertBlock + return ) - (func $~lib/rt/tlsf/__free (param $ptr i32) - local.get $ptr - global.get $~lib/memory/__heap_base - i32.lt_u - if - return - end + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $ptr - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return ) - (func $~lib/rt/itcms/free (param $obj i32) - local.get $obj - global.get $~lib/memory/__heap_base - i32.lt_u - if - local.get $obj - i32.const 0 - call $~lib/rt/itcms/Object#set:nextWithColor - local.get $obj - i32.const 0 - call $~lib/rt/itcms/Object#set:prev - else - global.get $~lib/rt/itcms/total - local.get $obj - call $~lib/rt/itcms/Object#get:size - i32.sub - global.set $~lib/rt/itcms/total - i32.const 0 - drop - local.get $obj - i32.const 4 - i32.add - call $~lib/rt/tlsf/__free - end + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 ) - (func $~lib/rt/itcms/step (result i32) - (local $obj i32) - (local $1 i32) - (local $black i32) - (local $from i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - local.set $1 - local.get $1 - i32.const 0 - i32.eq - br_if $case0|0 - local.get $1 - i32.const 1 - i32.eq - br_if $case1|0 - local.get $1 - i32.const 2 - i32.eq - br_if $case2|0 - br $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - i32.const 0 - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.mul - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $black - global.get $~lib/rt/itcms/iter - call $~lib/rt/itcms/Object#get:next - local.set $obj - loop $while-continue|1 - local.get $obj - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $obj - global.set $~lib/rt/itcms/iter - local.get $obj - call $~lib/rt/itcms/Object#get:color - local.get $black - i32.ne - if - local.get $obj - local.get $black - call $~lib/rt/itcms/Object#set:color - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $obj - i32.const 20 - i32.add - i32.const 0 - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.mul - return - end - local.get $obj - call $~lib/rt/itcms/Object#get:next - local.set $obj - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - i32.const 0 - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/iter - call $~lib/rt/itcms/Object#get:next - local.set $obj - local.get $obj - global.get $~lib/rt/itcms/toSpace - i32.eq - if - i32.const 0 - call $~lib/rt/itcms/visitStack - global.get $~lib/rt/itcms/iter - call $~lib/rt/itcms/Object#get:next - local.set $obj - loop $while-continue|2 - local.get $obj - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $obj - call $~lib/rt/itcms/Object#get:color - local.get $black - i32.ne - if - local.get $obj - local.get $black - call $~lib/rt/itcms/Object#set:color - local.get $obj - i32.const 20 - i32.add - i32.const 0 - call $~lib/rt/__visit_members - end - local.get $obj - call $~lib/rt/itcms/Object#get:next - local.set $obj - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $from - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $from - global.set $~lib/rt/itcms/toSpace - local.get $black - global.set $~lib/rt/itcms/white - local.get $from - call $~lib/rt/itcms/Object#get:next - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if i32.const 1 - i32.mul + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add return end - global.get $~lib/rt/itcms/iter - local.set $obj - local.get $obj - global.get $~lib/rt/itcms/toSpace - i32.ne + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u if - local.get $obj - call $~lib/rt/itcms/Object#get:next - global.set $~lib/rt/itcms/iter - i32.const 1 - drop - local.get $obj - call $~lib/rt/itcms/Object#get:color - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $obj - call $~lib/rt/itcms/free - i32.const 10 + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - call $~lib/rt/itcms/Object#set:nextWithColor - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - call $~lib/rt/itcms/Object#set:prev - i32.const 0 - global.set $~lib/rt/itcms/state - br $break|0 + unreachable end - i32.const 0 - return + unreachable ) - (func $~lib/rt/itcms/interrupt - (local $budget i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 1024 - i32.const 200 - i32.mul + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 764 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 764 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num i32.const 100 - i32.div_u - local.set $budget - loop $do-loop|0 - local.get $budget - call $~lib/rt/itcms/step + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 i32.sub - local.set $budget - global.get $~lib/rt/itcms/state - i32.const 0 + local.set $offset + i32.const 764 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 764 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1184 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u if - i32.const 0 - drop - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i32.const 200 - i64.extend_i32_u + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b i64.mul - i64.const 100 + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub i32.wrap_i64 - i32.const 1024 + i32.const 1 + i32.shl i32.add - global.set $~lib/rt/itcms/threshold - i32.const 0 - drop - return + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 end - local.get $budget - i32.const 0 - i32.gt_s - br_if $do-loop|0 end - i32.const 0 - drop - global.get $~lib/rt/itcms/total - i32.const 1024 - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.mul - i32.add - global.set $~lib/rt/itcms/threshold - i32.const 0 - drop ) - (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) - local.get $size - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $size - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.sub - end + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 return ) - (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) - local.get $size - i32.const 1073741820 - i32.gt_u + (func $while/testSimple + (local $i i32) + (local $j i32) + i32.const 10 + local.set $i + i32.const 0 + local.set $j + loop $while-continue|0 + local.get $i + if + local.get $i + i32.const 1 + i32.sub + local.set $i + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $i + i32.const 0 + i32.eq + i32.eqz if - i32.const 80 - i32.const 416 - i32.const 461 - i32.const 29 + i32.const 0 + i32.const 2400 + i32.const 10 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $size - call $~lib/rt/tlsf/computeSize - return - ) - (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) - local.get $size - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $size - i32.const 1 - i32.const 27 - local.get $size - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $size + local.get $j + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable end - return + i32.const 1 + global.set $while/ran ) - (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) - (local $fl i32) - (local $sl i32) - (local $requestSize i32) - (local $root|5 i32) - (local $fl|6 i32) - (local $slMap i32) - (local $head i32) - (local $flMap i32) - (local $root|10 i32) - (local $fl|11 i32) - (local $root|12 i32) - (local $fl|13 i32) - (local $sl|14 i32) - (local $root|15 i32) - (local $fl|16 i32) - (local $sl|17 i32) - local.get $size - i32.const 256 - i32.lt_u + (func $while/testNested + (local $i i32) + (local $j i32) + (local $k i32) + i32.const 10 + local.set $i + i32.const 0 + local.set $j + i32.const 0 + local.set $k + loop $while-continue|0 + local.get $i + if + local.get $i + i32.const 1 + i32.sub + local.set $i + local.get $j + i32.const 1 + i32.add + local.set $j + loop $while-continue|1 + local.get $i + if + local.get $i + i32.const 1 + i32.sub + local.set $i + local.get $k + i32.const 1 + i32.add + local.set $k + br $while-continue|1 + end + end + local.get $i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 29 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 30 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + br $while-continue|0 + end + end + local.get $i + i32.const 0 + i32.eq + i32.eqz if i32.const 0 - local.set $fl - local.get $size - i32.const 4 - i32.shr_u - local.set $sl - else - local.get $size - call $~lib/rt/tlsf/roundSize - local.set $requestSize - i32.const 4 - i32.const 8 - i32.mul - i32.const 1 - i32.sub - local.get $requestSize - i32.clz - i32.sub - local.set $fl - local.get $requestSize - local.get $fl - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $sl - local.get $fl - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $fl + i32.const 2400 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 1 - drop - local.get $fl - i32.const 23 - i32.lt_u - if (result i32) - local.get $sl - i32.const 16 - i32.lt_u - else + local.get $j + i32.const 1 + i32.eq + i32.eqz + if i32.const 0 + i32.const 2400 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $k + i32.const 9 + i32.eq i32.eqz if i32.const 0 - i32.const 416 - i32.const 334 - i32.const 14 + i32.const 2400 + i32.const 34 + i32.const 3 call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $root - local.set $root|5 - local.get $fl - local.set $fl|6 - local.get $root|5 - local.get $fl|6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - br $~lib/rt/tlsf/GETSL|inlined.2 - end + i32.const 1 + global.set $while/ran + ) + (func $while/testEmpty + (local $i i32) + (local $j i32) + (local $2 i32) + i32.const 1 + local.set $i i32.const 0 + local.set $j + loop $while-continue|0 + local.get $i + local.tee $2 + i32.const 1 + i32.sub + local.set $i + local.get $2 + if (result i32) + local.get $j + i32.const 1 + i32.add + local.tee $j + else + i32.const 0 + end + if + br $while-continue|0 + end + end + local.get $i i32.const -1 - i32.xor - local.get $sl - i32.shl - i32.and - local.set $slMap - i32.const 0 - local.set $head - local.get $slMap + i32.eq i32.eqz if - local.get $root - call $~lib/rt/tlsf/Root#get:flMap i32.const 0 - i32.const -1 - i32.xor - local.get $fl - i32.const 1 - i32.add - i32.shl - i32.and - local.set $flMap - local.get $flMap - i32.eqz - if - i32.const 0 - local.set $head - else - local.get $flMap - i32.ctz - local.set $fl - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $root - local.set $root|10 - local.get $fl - local.set $fl|11 - local.get $root|10 - local.get $fl|11 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - br $~lib/rt/tlsf/GETSL|inlined.3 - end - local.set $slMap + i32.const 2400 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $j + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $while/ran + ) + (func $while/testAlwaysTrue + (local $i i32) + i32.const 0 + local.set $i + block $while-break|0 + loop $while-continue|0 i32.const 1 - drop - local.get $slMap - i32.eqz if - i32.const 0 - i32.const 416 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $root - local.set $root|12 - local.get $fl - local.set $fl|13 - local.get $slMap - i32.ctz - local.set $sl|14 - local.get $root|12 - local.get $fl|13 - i32.const 4 - i32.shl - local.get $sl|14 - i32.add - i32.const 2 - i32.shl + local.get $i + i32.const 1 i32.add - i32.load offset=96 - br $~lib/rt/tlsf/GETHEAD|inlined.2 + local.tee $i + i32.const 10 + i32.eq + if + br $while-break|0 + end + br $while-continue|0 end - local.set $head - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $root - local.set $root|15 - local.get $fl - local.set $fl|16 - local.get $slMap - i32.ctz - local.set $sl|17 - local.get $root|15 - local.get $fl|16 - i32.const 4 - i32.shl - local.get $sl|17 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - br $~lib/rt/tlsf/GETHEAD|inlined.3 end - local.set $head end - local.get $head - return - ) - (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) - (local $pagesBefore i32) - (local $root|3 i32) - (local $pagesNeeded i32) - (local $5 i32) - (local $6 i32) - (local $pagesWanted i32) - (local $pagesAfter i32) - i32.const 0 - drop - local.get $size - i32.const 256 - i32.ge_u + local.get $i + i32.const 10 + i32.eq + i32.eqz if - local.get $size - call $~lib/rt/tlsf/roundSize - local.set $size - end - memory.size - local.set $pagesBefore - local.get $size - i32.const 4 - local.get $pagesBefore - i32.const 16 - i32.shl - i32.const 4 - i32.sub - block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) - local.get $root - local.set $root|3 - local.get $root|3 - i32.load offset=1568 - br $~lib/rt/tlsf/GETTAIL|inlined.1 + i32.const 0 + i32.const 2400 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.ne - i32.shl - i32.add - local.set $size - local.get $size - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $pagesNeeded - local.get $pagesBefore - local.tee $5 - local.get $pagesNeeded - local.tee $6 - local.get $5 - local.get $6 - i32.gt_s - select - local.set $pagesWanted - local.get $pagesWanted - memory.grow + i32.const 1 + global.set $while/ran + ) + (func $while/testAlwaysTrueNeverBreaks (result i32) + (local $i i32) i32.const 0 - i32.lt_s - if - local.get $pagesNeeded - memory.grow - i32.const 0 - i32.lt_s + local.set $i + loop $while-continue|0 + i32.const 1 if - unreachable + local.get $i + i32.const 1 + i32.add + local.tee $i + i32.const 10 + i32.eq + if + local.get $i + return + end + br $while-continue|0 end end - memory.size - local.set $pagesAfter - local.get $root - local.get $pagesBefore - i32.const 16 - i32.shl - local.get $pagesAfter - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - drop + unreachable ) - (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) - (local $blockInfo i32) - (local $remaining i32) - (local $spare i32) - (local $block|6 i32) - (local $block|7 i32) - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - local.set $blockInfo - i32.const 1 + (func $while/testAlwaysFalse + (local $i i32) + i32.const 0 + local.set $i + i32.const 0 drop - local.get $size - i32.const 4 - i32.add - i32.const 15 - i32.and - i32.eqz + local.get $i + i32.const 0 + i32.eq i32.eqz if i32.const 0 - i32.const 416 - i32.const 361 - i32.const 14 + i32.const 2400 + i32.const 80 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $blockInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $size - i32.sub - local.set $remaining - local.get $remaining - i32.const 4 - i32.const 12 - i32.add - i32.ge_u - if - local.get $block - local.get $size - local.get $blockInfo - i32.const 2 - i32.and - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $block - i32.const 4 - i32.add - local.get $size - i32.add - local.set $spare - local.get $spare - local.get $remaining - i32.const 4 - i32.sub - i32.const 1 - i32.or - call $~lib/rt/common/BLOCK#set:mmInfo - local.get $root - local.get $spare - call $~lib/rt/tlsf/insertBlock - else - local.get $block - local.get $blockInfo - i32.const 1 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $block - local.set $block|7 - local.get $block|7 - i32.const 4 - i32.add - local.get $block|7 - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - br $~lib/rt/tlsf/GETRIGHT|inlined.3 - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $block - local.set $block|6 - local.get $block|6 - i32.const 4 - i32.add - local.get $block|6 - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and + i32.const 1 + global.set $while/ran + ) + (func $while/testAlwaysBreaks + (local $i i32) + i32.const 0 + local.set $i + block $while-break|0 + loop $while-continue|0 + local.get $i + i32.const 1 i32.add - br $~lib/rt/tlsf/GETRIGHT|inlined.2 + local.tee $i + if + br $while-break|0 + end end - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 2 - i32.const -1 - i32.xor - i32.and - call $~lib/rt/common/BLOCK#set:mmInfo end - ) - (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) - (local $payloadSize i32) - (local $block i32) - local.get $size - call $~lib/rt/tlsf/prepareSize - local.set $payloadSize - local.get $root - local.get $payloadSize - call $~lib/rt/tlsf/searchBlock - local.set $block - local.get $block + local.get $i + i32.const 1 + i32.eq i32.eqz if - local.get $root - local.get $payloadSize - call $~lib/rt/tlsf/growMemory - local.get $root - local.get $payloadSize - call $~lib/rt/tlsf/searchBlock - local.set $block + i32.const 0 + i32.const 2400 + i32.const 92 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $while/ran + ) + (func $while/testAlwaysReturns + (local $i i32) + i32.const 0 + local.set $i + loop $while-continue|0 + local.get $i i32.const 1 - drop - local.get $block - i32.eqz + i32.add + local.tee $i if - i32.const 0 - i32.const 416 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + global.set $while/ran + return + end + end + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $while/testContinue + (local $i i32) + i32.const 10 + local.set $i + loop $while-continue|0 + local.get $i + if + local.get $i + i32.const 1 + i32.sub + local.set $i + br $while-continue|0 + end + end + local.get $i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 117 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $while/ran + ) + (func $while/testNestedContinue + (local $i i32) + (local $j i32) + i32.const 10 + local.set $i + i32.const 10 + local.set $j + loop $while-continue|0 + local.get $i + if + loop $while-continue|1 + local.get $j + if + local.get $j + i32.const 1 + i32.sub + local.set $j + br $while-continue|1 + end + end + local.get $i + i32.const 1 + i32.sub + local.set $i + br $while-continue|0 end end - i32.const 1 - drop - local.get $block - call $~lib/rt/common/BLOCK#get:mmInfo - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $payloadSize - i32.ge_u + local.get $i + i32.const 0 + i32.eq i32.eqz if i32.const 0 - i32.const 416 - i32.const 501 - i32.const 14 + i32.const 2400 + i32.const 135 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $root - local.get $block - call $~lib/rt/tlsf/removeBlock - local.get $root - local.get $block - local.get $payloadSize - call $~lib/rt/tlsf/prepareBlock + local.get $j i32.const 0 - drop - local.get $block - return - ) - (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) - global.get $~lib/rt/tlsf/ROOT + i32.eq i32.eqz if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $size - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - return - ) - (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) - local.get $this - local.get $rtId - i32.store offset=12 - ) - (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) - local.get $this - local.get $rtSize - i32.store offset=16 - ) - (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) - (local $obj i32) - (local $ptr i32) - local.get $size - i32.const 1073741804 - i32.ge_u - if - i32.const 80 - i32.const 144 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 2400 + i32.const 136 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - call $~lib/rt/itcms/interrupt - end - i32.const 16 - local.get $size - i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.set $obj - local.get $obj - local.get $id - call $~lib/rt/itcms/Object#set:rtId - local.get $obj - local.get $size - call $~lib/rt/itcms/Object#set:rtSize - local.get $obj - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $obj - call $~lib/rt/itcms/Object#get:size - i32.add - global.set $~lib/rt/itcms/total - local.get $obj - i32.const 20 - i32.add - local.set $ptr - local.get $ptr - i32.const 0 - local.get $size - memory.fill - local.get $ptr - return + i32.const 1 + global.set $while/ran ) (func $while/testRef (local $i i32) @@ -2710,7 +3153,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 151 i32.const 3 call $~lib/builtins/abort @@ -2721,7 +3164,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 152 i32.const 3 call $~lib/builtins/abort @@ -2782,7 +3225,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 171 i32.const 3 call $~lib/builtins/abort @@ -2793,7 +3236,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 172 i32.const 3 call $~lib/builtins/abort @@ -2881,7 +3324,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 217 i32.const 3 call $~lib/builtins/abort @@ -2939,12 +3382,29 @@ (func $start:while i32.const 0 global.set $while/ran + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $while/testSimple global.get $while/ran i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -2957,7 +3417,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 39 i32.const 1 call $~lib/builtins/abort @@ -2970,7 +3430,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 51 i32.const 1 call $~lib/builtins/abort @@ -2983,7 +3443,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 63 i32.const 1 call $~lib/builtins/abort @@ -2995,7 +3455,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 72 i32.const 1 call $~lib/builtins/abort @@ -3008,7 +3468,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 85 i32.const 1 call $~lib/builtins/abort @@ -3021,7 +3481,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 97 i32.const 1 call $~lib/builtins/abort @@ -3034,7 +3494,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 109 i32.const 1 call $~lib/builtins/abort @@ -3047,7 +3507,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 122 i32.const 1 call $~lib/builtins/abort @@ -3060,7 +3520,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 141 i32.const 1 call $~lib/builtins/abort @@ -3068,29 +3528,12 @@ end i32.const 0 global.set $while/ran - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 192 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 224 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 368 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace call $while/testRef global.get $while/ran i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 157 i32.const 1 call $~lib/builtins/abort @@ -3103,101 +3546,52 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 2400 i32.const 177 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - call $while/testIfImplicitContinueThen - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 193 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - call $while/testIfImplicitContinueElse - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 209 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - call $while/testConditionalContinue - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 222 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/itcms/__collect - ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - i32.const 272 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 80 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $~lib/object/Object~visit - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $while/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $while/Ref $invalid - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return + call $~lib/builtins/abort + unreachable end - unreachable + i32.const 0 + global.set $while/ran + call $while/testIfImplicitContinueThen + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 193 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + call $while/testIfImplicitContinueElse + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 209 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + call $while/testConditionalContinue + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 2400 + i32.const 222 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $~lib/rt/itcms/__collect ) (func $~start call $start:while @@ -3207,14 +3601,219 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 33280 - i32.const 33328 + i32.const 35248 + i32.const 35296 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 96 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/builtins/abort (param $message i32) (param $fileName i32) (param $lineNumber i32) (param $columnNumber i32) + (local $fullMessage i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $message + if (result i32) + local.get $message + else + i32.const 32 + end + local.tee $fullMessage + i32.store + local.get $fileName + if + global.get $~lib/memory/__stack_pointer + local.get $fullMessage + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 64 + local.get $fileName + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + local.get $lineNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.const 528 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $columnNumber + i32.const 10 + call $~lib/number/U32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__concat + local.tee $fullMessage + i32.store + end + local.get $fullMessage + i32.const 2336 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) (func $while/Ref#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -3253,6 +3852,153 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 560 + i32.const 688 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 752 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) (func $~lib/object/Object#constructor (param $this i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -3281,4 +4027,59 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $while/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $while/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) ) diff --git a/tests/compiler/while.release.wat b/tests/compiler/while.release.wat index c5b0c20429..13363e924e 100644 --- a/tests/compiler/while.release.wat +++ b/tests/compiler/while.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) - (type $4 (func (param i32) (result i32))) - (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (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)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -17,29 +17,54 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34280)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36248)) (memory $0 1) - (data $0 (i32.const 1036) ",") - (data $0.1 (i32.const 1048) "\02\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s") - (data $1 (i32.const 1084) "<") - (data $1.1 (i32.const 1096) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data $2 (i32.const 1148) "<") - (data $2.1 (i32.const 1160) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data $5 (i32.const 1276) "<") - (data $5.1 (i32.const 1288) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data $6 (i32.const 1340) ",") - (data $6.1 (i32.const 1352) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data $8 (i32.const 1420) "<") - (data $8.1 (i32.const 1432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data $9 (i32.const 1488) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00a\00b\00o\00r\00t") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00 \00i\00n\00 ") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1468) "<") + (data $10.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1532) "\1c") + (data $11.1 (i32.const 1544) "\02\00\00\00\02\00\00\00:") + (data $12 (i32.const 1564) "|") + (data $12.1 (i32.const 1576) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $13 (i32.const 1692) "<") + (data $13.1 (i32.const 1704) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $14 (i32.const 1756) "\1c") + (data $14.1 (i32.const 1768) "\02\00\00\00\02\00\00\000") + (data $15 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2188) "\1c\04") + (data $16.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3244) "\\") + (data $17.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3340) "<") + (data $18.1 (i32.const 3352) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s") + (data $20 (i32.const 3456) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1296 + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 call $~lib/rt/itcms/__visit - i32.const 1104 + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -60,7 +85,7 @@ i32.ne if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 160 i32.const 16 call $~lib/builtins/abort @@ -108,7 +133,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 148 i32.const 30 call $~lib/builtins/abort @@ -117,7 +142,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$128 + block $__inlined_func$~lib/rt/itcms/Object#unlink$141 local.get $1 i32.load offset=4 i32.const -4 @@ -129,19 +154,19 @@ i32.load offset=8 i32.eqz local.get $1 - i32.const 34280 + i32.const 36248 i32.lt_u i32.and i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$128 + br $__inlined_func$~lib/rt/itcms/Object#unlink$141 end local.get $1 i32.load offset=8 @@ -149,7 +174,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 132 i32.const 16 call $~lib/builtins/abort @@ -178,12 +203,12 @@ i32.const 1 else local.get $0 - i32.const 1488 + i32.const 3456 i32.load i32.gt_u if - i32.const 1296 - i32.const 1360 + i32.const 1344 + i32.const 1408 i32.const 21 i32.const 28 call $~lib/builtins/abort @@ -192,7 +217,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 1492 + i32.const 3460 i32.add i32.load i32.const 32 @@ -244,7 +269,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -258,7 +283,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -304,7 +329,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -387,7 +412,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -401,7 +426,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -462,7 +487,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -495,7 +520,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -510,7 +535,7 @@ i32.ne if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -561,7 +586,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -633,7 +658,7 @@ i64.lt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 382 i32.const 14 call $~lib/builtins/abort @@ -658,7 +683,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 389 i32.const 16 call $~lib/builtins/abort @@ -685,7 +710,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 402 i32.const 5 call $~lib/builtins/abort @@ -757,10 +782,10 @@ if unreachable end - i32.const 34288 + i32.const 36256 i32.const 0 i32.store - i32.const 35856 + i32.const 37824 i32.const 0 i32.store loop $for-loop|0 @@ -771,7 +796,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 34288 + i32.const 36256 i32.add i32.const 0 i32.store offset=4 @@ -789,7 +814,7 @@ i32.add i32.const 2 i32.shl - i32.const 34288 + i32.const 36256 i32.add i32.const 0 i32.store offset=96 @@ -807,14 +832,14 @@ br $for-loop|0 end end - i32.const 34288 - i32.const 35860 + i32.const 36256 + i32.const 37828 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 34288 + i32.const 36256 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -899,7 +924,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 34280 + i32.const 36248 i32.lt_u if local.get $0 @@ -988,14 +1013,14 @@ i32.ne if i32.const 0 - i32.const 1168 + i32.const 1216 i32.const 229 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34280 + i32.const 36248 i32.lt_u if local.get $0 @@ -1018,7 +1043,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 34280 + i32.const 36248 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1047,7 +1072,7 @@ end if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -1077,18 +1102,85 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -2 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -1096,32 +1188,36 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) local.get $0 local.get $1 i32.ctz - local.tee $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load offset=4 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz local.get $2 + i32.ctz + local.get $1 i32.const 4 i32.shl i32.add @@ -1134,23 +1230,35 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 + block $__inlined_func$~lib/rt/itcms/interrupt$70 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 @@ -1164,9 +1272,9 @@ i32.const 1024 i32.add global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + br $__inlined_func$~lib/rt/itcms/interrupt$70 end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1189,31 +1297,86 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if memory.size - local.tee $1 + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end i32.const 4 - local.get $2 + local.get $4 i32.load offset=1568 - local.get $1 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.const 65563 + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u local.tee $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -1229,8 +1392,8 @@ unreachable end end + local.get $4 local.get $2 - local.get $1 i32.const 16 i32.shl memory.size @@ -1238,119 +1401,136 @@ i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $4 + local.get $5 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $1 + local.get $5 + local.get $2 i32.load i32.const -4 i32.and - i32.const 28 - i32.lt_u + i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1488 i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.tee $3 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 i32.const -4 i32.and - i32.const 28 + local.get $5 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 i32.const 2 i32.and - i32.const 28 i32.or i32.store - local.get $1 - i32.const 32 + local.get $2 + i32.const 4 i32.add - local.tee $3 - local.get $4 + local.get $5 + i32.add + local.tee $5 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end + local.get $2 local.get $1 - local.get $0 i32.store offset=12 - local.get $1 - i32.const 0 + local.get $2 + local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $0 + local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 + local.get $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 local.get $2 + local.get $3 i32.store offset=8 + local.get $3 local.get $2 - local.get $1 - local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1358,39 +1538,269 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add - local.tee $0 - i32.const 0 + local.tee $1 i32.const 0 - memory.fill local.get $0 + memory.fill + local.get $1 ) - (func $start:while - (local $0 i32) + (func $~lib/number/U32#toString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - i32.const 10 - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|0 - end - end + (local $3 i32) + local.get $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 3480 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + 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$74 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1776 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $start:while + (local $0 i32) + (local $1 i32) + (local $2 i32) + memory.size + i32.const 16 + i32.shl + i32.const 36248 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + i32.const 10 + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 + end + end local.get $0 if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -1401,7 +1811,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -1439,7 +1849,7 @@ local.get $0 if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 29 i32.const 5 call $~lib/builtins/abort @@ -1450,7 +1860,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 30 i32.const 5 call $~lib/builtins/abort @@ -1462,7 +1872,7 @@ local.get $0 if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 32 i32.const 3 call $~lib/builtins/abort @@ -1473,7 +1883,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 33 i32.const 3 call $~lib/builtins/abort @@ -1484,7 +1894,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 34 i32.const 3 call $~lib/builtins/abort @@ -1516,7 +1926,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 45 i32.const 3 call $~lib/builtins/abort @@ -1527,7 +1937,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -1549,7 +1959,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 58 i32.const 3 call $~lib/builtins/abort @@ -1571,7 +1981,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 72 i32.const 1 call $~lib/builtins/abort @@ -1592,7 +2002,7 @@ local.get $0 if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 117 i32.const 3 call $~lib/builtins/abort @@ -1625,7 +2035,7 @@ local.get $0 if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 135 i32.const 3 call $~lib/builtins/abort @@ -1634,51 +2044,19 @@ local.get $1 if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 136 i32.const 3 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - i32.const 34280 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 - i32.store - i32.const 1224 - i32.const 1216 - i32.store - i32.const 1216 - global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 - i32.store - i32.const 1256 - i32.const 1248 - i32.store - i32.const 1248 - global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1512 + i32.const 3480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1716,7 +2094,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 151 i32.const 3 call $~lib/builtins/abort @@ -1725,7 +2103,7 @@ local.get $0 if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 152 i32.const 3 call $~lib/builtins/abort @@ -1740,7 +2118,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1512 + i32.const 3480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1776,7 +2154,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 171 i32.const 3 call $~lib/builtins/abort @@ -1785,7 +2163,7 @@ local.get $1 if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 172 i32.const 3 call $~lib/builtins/abort @@ -1833,7 +2211,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 3424 i32.const 217 i32.const 3 call $~lib/builtins/abort @@ -1874,43 +2252,215 @@ global.set $~lib/rt/itcms/threshold return end - i32.const 34304 - i32.const 34352 + i32.const 36272 + i32.const 36320 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $while/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $while/Ref $invalid - end - return - end - return - end - return + (func $~start + call $start:while + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$146 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $0 + br $__inlined_func$~lib/string/String#concat$146 end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 return end + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) - (func $~start - call $start:while + (func $~lib/builtins/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3480 + i32.lt_s + if + i32.const 36272 + i32.const 36320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1056 + local.get $0 + select + local.tee $0 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + i32.const 1088 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $2 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 1552 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $3 + call $~lib/number/U32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store + end + local.get $0 + i32.const 3360 + i32.const 2626 + i32.const 5 + call $~lib/builtins/abort + unreachable ) (func $while/Ref#constructor (result i32) (local $0 i32) @@ -1921,13 +2471,14 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 1512 + i32.const 3480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 @@ -1941,7 +2492,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1512 + i32.const 3480 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -1952,6 +2503,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 0 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1969,11 +2521,39 @@ local.get $0 return end - i32.const 34304 - i32.const 34352 + i32.const 36272 + i32.const 36320 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $while/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $while/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) ) diff --git a/tests/features.json b/tests/features.json index 5c47772500..bbbe4f8992 100644 --- a/tests/features.json +++ b/tests/features.json @@ -27,7 +27,8 @@ "--enable exception-handling" ], "v8_flags": [ - ] + ], + "enabled": true }, "simd": { "asc_flags": [ @@ -43,5 +44,12 @@ "v8_flags": [ "--experimental-wasm-relaxed-simd" ] + }, + "closures": { + "asc_flags": [ + "--enable closures" + ], + "v8_flags": [ + ] } }